diff options
author | Lennart Poettering <lennart@poettering.net> | 2013-03-25 21:20:08 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2013-03-25 21:28:30 +0100 |
commit | e3d84721dc9bcf9008f72dae03ff0f7842d0bb4b (patch) | |
tree | 2f62446a9d8961872060346793f788e3cac366fd | |
parent | 1b036593b76614dd05942a78120c151161cccc0f (diff) |
units: introduce new timers.target and paths.target to hook timer/path units into for boot
-rw-r--r-- | Makefile.am | 10 | ||||
-rw-r--r-- | man/bootup.xml | 143 | ||||
-rw-r--r-- | man/systemd.special.xml | 258 | ||||
-rw-r--r-- | src/core/path.c | 10 | ||||
-rw-r--r-- | src/core/service.c | 10 | ||||
-rw-r--r-- | src/core/socket.c | 10 | ||||
-rw-r--r-- | src/core/special.h | 2 | ||||
-rw-r--r-- | src/core/timer.c | 8 | ||||
-rw-r--r-- | units/basic.target | 4 | ||||
-rw-r--r-- | units/paths.target | 10 | ||||
-rw-r--r-- | units/systemd-ask-password-console.path | 2 | ||||
-rw-r--r-- | units/systemd-ask-password-wall.path | 2 | ||||
-rw-r--r-- | units/timers.target | 10 |
13 files changed, 319 insertions, 160 deletions
diff --git a/Makefile.am b/Makefile.am index 2a1a08ce9b..8569983a15 100644 --- a/Makefile.am +++ b/Makefile.am @@ -193,8 +193,8 @@ SHUTDOWN_TARGET_WANTS = LOCAL_FS_TARGET_WANTS = MULTI_USER_TARGET_WANTS = SYSINIT_TARGET_WANTS = -BASIC_TARGET_WANTS = SOCKETS_TARGET_WANTS = +TIMERS_TARGET_WANTS = SYSTEM_UNIT_ALIASES = USER_UNIT_ALIASES = @@ -211,8 +211,8 @@ install-target-wants-hook: what="$(LOCAL_FS_TARGET_WANTS)" && wants=local-fs.target && $(add-wants) what="$(MULTI_USER_TARGET_WANTS)" && wants=multi-user.target && $(add-wants) what="$(SYSINIT_TARGET_WANTS)" && wants=sysinit.target && $(add-wants) - what="$(BASIC_TARGET_WANTS)" && wants=basic.target && $(add-wants) what="$(SOCKETS_TARGET_WANTS)" && wants=sockets.target && $(add-wants) + what="$(TIMERS_TARGET_WANTS)" && wants=timers.target && $(add-wants) define add-wants [ -z "$$what" ] || ( \ @@ -371,6 +371,8 @@ dist_systemunit_DATA = \ units/sigpwr.target \ units/sleep.target \ units/sockets.target \ + units/timers.target \ + units/paths.target \ units/suspend.target \ units/swap.target \ units/systemd-initctl.socket \ @@ -3916,7 +3918,7 @@ SYSINIT_TARGET_WANTS += \ systemd-tmpfiles-setup.service \ systemd-sysctl.service \ systemd-ask-password-console.path -BASIC_TARGET_WANTS += \ +TIMERS_TARGET_WANTS += \ systemd-tmpfiles-clean.timer if HAVE_SYSV_COMPAT @@ -3938,6 +3940,8 @@ SYSTEM_UNIT_ALIASES += \ USER_UNIT_ALIASES += \ $(systemunitdir)/shutdown.target shutdown.target \ $(systemunitdir)/sockets.target sockets.target \ + $(systemunitdir)/timers.target timers.target \ + $(systemunitdir)/paths.target paths.target \ $(systemunitdir)/bluetooth.target bluetooth.target \ $(systemunitdir)/printer.target printer.target \ $(systemunitdir)/sound.target sound.target diff --git a/man/bootup.xml b/man/bootup.xml index 65923528d4..a596e85b70 100644 --- a/man/bootup.xml +++ b/man/bootup.xml @@ -50,18 +50,20 @@ <refsect1> <title>Description</title> - <para>A number of different components are involved in the - system boot. Immediately after power-up, the system - BIOS will do minimal hardware initialization, and hand - control over to a boot loader stored on a persistent - storage device. This boot loader will then invoke an - OS kernel from disk (or the network). In the Linux - case this kernel now (optionally) extracts and + <para>A number of different components are involved in + the system boot. Immediately after power-up, the + system BIOS will do minimal hardware initialization, + and hand control over to a boot loader stored on a + persistent storage device. This boot loader will then + invoke an OS kernel from disk (or the network). In the + Linux case this kernel (optionally) extracts and executes an initial RAM disk image (initrd) such as <citerefentry><refentrytitle>dracut</refentrytitle><manvolnum>8</manvolnum></citerefentry> - which looks for the root file system. After the root - file system is found and mounted the initrd hands over - control to the system manager (such as + which looks for the root file system (possibly using + <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry> + for this). After the root file system is found and + mounted the initrd hands over control to the host's + system manager (such as <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>) stored on the OS image which is then responsible for probing all remaining hardware, mounting all necessary @@ -132,35 +134,35 @@ v sysinit.target | - _________________/|\___________________ - / | \ - | | | - v | v - (various | rescue.service - sockets...) | | - | | v - v | <emphasis>rescue.target</emphasis> - sockets.target | - | | - \_________________ | - \| + ____________________________________/|\________________________________________ + / | | | \ + | | | | | + v v | v v + (various (various | (various rescue.service + timers...) paths...) | sockets...) | + | | | | v + v v | v <emphasis>rescue.target</emphasis> + timers.target paths.target | sockets.target + | | | | + \__________________|_________________ | ___________________/ + \|/ v basic.target | - __________________________________/| emergency.service - / | | | - | | | v - v v v <emphasis>emergency.target</emphasis> - display- (various system (various system - manager.service services services) - | required for | - | graphical UIs) v - | | <emphasis>multi-user.target</emphasis> - | | | - \_______________ | _________________/ + ____________________________________/| emergency.service + / | | | + | | | v + v v v <emphasis>emergency.target</emphasis> + display- (various system (various system + manager.service services services) + | required for | + | graphical UIs) v + | | <emphasis>multi-user.target</emphasis> + | | | + \_________________ | _________________/ \|/ v - <emphasis>graphical.target</emphasis></programlisting> + <emphasis>graphical.target</emphasis></programlisting> <para>Target units that are commonly used as boot targets are <emphasis>emphasized</emphasis>. These @@ -174,23 +176,41 @@ </refsect1> <refsect1> - <title>Initrd System Manager Bootup</title> - <para>The default target in the initrd is the initrd.target. The bootup process is - identical to the System Manager Bootup until it reaches basic.target. From there, - systemd approaches the special initrd.target. If the root device can be mounted at - /sysroot, the sysroot.mount unit becomes active and the initrd-root-fs.target is - reached. - The initrd-parse-etc.service scans /sysroot/etc/fstab for a possible /usr mountpoint - and additional entries marked with the <emphasis>x-initrd.mount</emphasis> option. - All entries found are mounted below /sysroot, and the initrd-fs.target is reached. - The initrd-cleanup.service isolates to the initrd-switch-root.target, where cleanup - services can run. As the very last step, the initrd-switch-root.service is activated, - which will cause the system to switch its root to /sysroot. + <title>Bootup in the Initial RAM Disk (initrd)</title> + <para>The initial RAM disk implementation (initrd) can + be set up using systemd as well. In this case boot up + inside the initrd follows the following + structure.</para> + + <para>The default target in the initrd is + <filename>initrd.target</filename>. The bootup process + begins identical to the system manager bootup (see + above) until it reaches + <filename>basic.target</filename>. From there, systemd + approaches the special target + <filename>initrd.target</filename>. If the root device + can be mounted at <filename>/sysroot</filename>, the + <filename>sysroot.mount</filename> unit becomes active + and <filename>initrd-root-fs.target</filename> is + reached. The service + <filename>initrd-parse-etc.service</filename> scans + <filename>/sysroot/etc/fstab</filename> for a possible + <filename>/usr</filename> mount point and additional + entries marked with the + <emphasis>x-initrd.mount</emphasis> option. All + entries found are mounted below + <filename>/sysroot</filename>, and + <filename>initrd-fs.target</filename> is reached. The + service <filename>initrd-cleanup.service</filename> + isolates to the + <filename>initrd-switch-root.target</filename>, where + cleanup services can run. As the very last step, the + <filename>initrd-switch-root.service</filename> is + activated, which will cause the system to switch its + root to <filename>/sysroot</filename>. </para> -<programlisting> - (identical to System Manager Bootup) - : +<programlisting> : (beginning identical to above) : v basic.target @@ -203,13 +223,13 @@ | initrd-root-fs.target | | | v - | initrd-parse-etc.service - (custom initrd services) | - | v + v initrd-parse-etc.service + (custom initrd | + services...) v | (sysroot-usr.mount and | various mounts marked | with fstab option - | x-initrd.mount) + | x-initrd.mount...) | | | v | initrd-fs.target @@ -225,11 +245,11 @@ | v ______________________/| - / | + / v | initrd-udevadm-cleanup-db.service - | | - (custom initrd services) | - | | + v | + (custom initrd | + services...) | \______________________ | \| v @@ -239,17 +259,16 @@ initrd-switch-root.service | v - switch-root -</programlisting> + Transition to Host OS</programlisting> </refsect1> <refsect1> <title>System Manager Shutdown</title> - <para>System shutdown also consists of various target - units with some minimal ordering structure - applied:</para> + <para>System shutdown with systemd also consists of + various target units with some minimal ordering + structure applied:</para> diff --git a/man/systemd.special.xml b/man/systemd.special.xml index 67a81b639b..8a7242662d 100644 --- a/man/systemd.special.xml +++ b/man/systemd.special.xml @@ -73,6 +73,7 @@ <filename>network.target</filename>, <filename>nss-lookup.target</filename>, <filename>nss-user-lookup.target</filename>, + <filename>paths.target</filename>, <filename>poweroff.target</filename>, <filename>printer.target</filename>, <filename>reboot.target</filename>, @@ -97,6 +98,7 @@ <filename>syslog.socket</filename>, <filename>system-update.target</filename>, <filename>time-sync.target</filename>, + <filename>timers.target</filename>, <filename>umount.target</filename></para> </refsynopsisdiv> @@ -116,22 +118,23 @@ <term><filename>basic.target</filename></term> <listitem> <para>A special target unit - covering early boot-up.</para> + covering basic boot-up.</para> <para>systemd automatically adds dependencies of the types - Requires and After for this - target unit to all SysV - service units configured for - runlevel 1 to 5.</para> - <para>Usually this should pull-in - all sockets, mount points, - swap devices and other basic + <varname>Requires=</varname> + and <varname>After=</varname> + for this target unit to all + services (except for those + with + <varname>DefaultDependencies=no</varname>).</para> + + <para>Usually this should + pull-in all mount points, swap + devices, sockets, timers, and + path units and other basic initialization necessary for - the general purpose - daemons. Most normal daemons - should have dependencies of - type After and Requires on - this unit.</para> + general purpose + daemons.</para> </listitem> </varlistentry> <varlistentry> @@ -139,9 +142,15 @@ <listitem> <para>This target is started automatically as soon as a - bluetooth controller is + Bluetooth controller is plugged in or becomes available at boot.</para> + + <para>This may be used to pull + in Bluetooth management + daemons dynamically when + Bluetooth hardware is + found.</para> </listitem> </varlistentry> <varlistentry> @@ -169,7 +178,7 @@ <term><filename>dbus.service</filename></term> <listitem> <para>A special unit for the - D-Bus system bus. As soon as + D-Bus bus daemon. As soon as this service is fully started up systemd will connect to it and register its @@ -182,7 +191,7 @@ <para>A special unit for the D-Bus system bus socket. All units with - <literal>Type=dbus</literal> + <varname>Type=dbus</varname> automatically gain a dependency on this unit.</para> @@ -198,6 +207,7 @@ <filename>multi-user.target</filename> or <filename>graphical.target</filename>.</para> + <para>The default unit systemd starts at bootup can be overridden with the @@ -247,8 +257,10 @@ <term><filename>getty.target</filename></term> <listitem> <para>A special target unit - that pulls in all local TTY - <filename>getty</filename> instances. + that pulls in statically + configured local TTY + <filename>getty</filename> + instances. </para> </listitem> </varlistentry> @@ -261,11 +273,17 @@ <filename>multi-user.target</filename>.</para> <para>Units that are needed - for graphical login shall add - Wants dependencies for their - unit to this unit (or + for graphical logins shall add + <varname>Wants=</varname> + dependencies for their unit to + this unit (or <filename>multi-user.target</filename>) - during installation.</para> + during installation. This is + best configured via + <varname>WantedBy=graphical.target</varname> + in the unit's + <literal>[Install]</literal> + section.</para> </listitem> </varlistentry> <varlistentry> @@ -290,7 +308,13 @@ <term><filename>halt.target</filename></term> <listitem> <para>A special target unit - for shutting down and halting the system.</para> + for shutting down and halting + the system. Note that this + target is distinct from + <filename>poweroff.target</filename> + in that it generally really + just halts the system rather + than powering it down.</para> <para>Applications wanting to halt the system should start @@ -300,16 +324,17 @@ <varlistentry> <term><filename>initrd-fs.target</filename></term> <listitem> - <para>systemd automatically - adds dependencies of type - Before to sysroot-usr.mount and - all mount points fround in + <para><citerefentry><refentrytitle>systemd-fstab-generator</refentrytitle><manvolnum>3</manvolnum></citerefentry> + automatically adds + dependencies of type + <varname>Before=</varname> to + <filename>sysroot-usr.mount</filename> + and all mount points fround in <filename>/etc/fstab</filename> that have the <option>auto</option> and <option>x-initrd.mount</option> mount options set. - See also <literal>systemd-fstab-generator</literal>. </para> </listitem> </varlistentry> @@ -338,20 +363,21 @@ <varlistentry> <term><filename>local-fs.target</filename></term> <listitem> - <para>systemd automatically + <para><citerefentry><refentrytitle>systemd-fstab-generator</refentrytitle><manvolnum>3</manvolnum></citerefentry> + automatically adds + dependencies of type + <varname>Before=</varname> to + all mount units that refer to + local mount points for this + target unit. In addition, it adds dependencies of type - After to all mount units that - refer to local mount points - for this target unit. In - addition, systemd adds - dependencies of type Wants to + <varname>Wants=</varname> to this target unit for those mounts listed in <filename>/etc/fstab</filename> that have the - <option>auto</option> and - <option>comment=systemd.mount</option> - mount options set.</para> + <option>auto</option> mount + option set.</para> </listitem> </varlistentry> <varlistentry> @@ -377,9 +403,15 @@ <para>Units that are needed for a multi-user system shall - add Wants dependencies to - this unit for their unit during - installation.</para> + add <varname>Wants=</varname> + dependencies for their unit to + this unit during + installation. This is best + configured via + <varname>WantedBy=multi-uer.target</varname> + in the unit's + <literal>[Install]</literal> + section.</para> </listitem> </varlistentry> <varlistentry> @@ -387,10 +419,10 @@ <listitem> <para>systemd automatically adds dependencies of type - After for this target unit to - all SysV init script service - units with an LSB header - referring to the + <varname>After=</varname> for + this target unit to all SysV + init script service units with + an LSB header referring to the <literal>$network</literal> facility.</para> @@ -418,7 +450,8 @@ <filename>nss-user-lookup.target</filename> should be used. systemd automatically adds - dependencies of type After for + dependencies of type + <varname>After=</varname> for this target unit to all SysV init script service units with an LSB header referring to the @@ -441,6 +474,29 @@ </listitem> </varlistentry> <varlistentry> + <term><filename>paths.target</filename></term> + <listitem> + <para>A special target unit + that sets up all path units + (see + <citerefentry><refentrytitle>systemd.path</refentrytitle><manvolnum>5</manvolnum></citerefentry> + for details) that shall be + active after boot.</para> + + <para>It is recommended that + path units installed by + applications get pulled in via + <varname>Wants=</varname> + dependencies from this + unit. This is best configured + via a + <varname>WantedBy=paths.target</varname> + in the path unit's + <literal>[Install]</literal> + section.</para> + </listitem> + </varlistentry> + <varlistentry> <term><filename>poweroff.target</filename></term> <listitem> <para>A special target unit @@ -463,6 +519,12 @@ printer is plugged in or becomes available at boot.</para> + + <para>This may be used to pull + in printer management + daemons dynamically when + printer hardware is + found.</para> </listitem> </varlistentry> <varlistentry> @@ -490,10 +552,10 @@ <para>systemd automatically adds dependencies of type - After for this target unit to - all SysV init script service - units with an LSB header - referring to the + <varname>After=</varname> for + this target unit to all SysV + init script service units with + an LSB header referring to the <literal>$remote_fs</literal> facility.</para> </listitem> @@ -525,11 +587,14 @@ <varlistentry> <term><filename>initrd-root-fs.target</filename></term> <listitem> - <para>systemd automatically - adds dependencies of type - Before to the sysroot.mount unit, - which is generated from the kernel command - line by the <literal>systemd-fstab-generator</literal>. + <para><citerefentry><refentrytitle>systemd-fstab-generator</refentrytitle><manvolnum>3</manvolnum></citerefentry> + automatically adds + dependencies of type + <varname>Before=</varname> to + the + <filename>sysroot.mount</filename> + unit, which is generated from + the kernel command line. </para> </listitem> </varlistentry> @@ -538,10 +603,10 @@ <listitem> <para>systemd automatically adds dependencies of type - After for this target unit to - all SysV init script service - units with an LSB header - referring to the + <varname>After=</varname> for + this target unit to all SysV + init script service units with + an LSB header referring to the <literal>$portmap</literal> facility.</para> </listitem> @@ -574,20 +639,12 @@ <para>Services that shall be terminated on system shutdown - shall add Conflicts + shall add <varname>Conflicts=</varname> dependencies to this unit for their service unit, which is implicitly done when <varname>DefaultDependencies=yes</varname> is set (the default).</para> - - <para>systemd automatically - adds dependencies of type - Conflicts to this target unit - for all SysV init script - service units that shall be - terminated in SysV runlevels 0 - or 6.</para> </listitem> </varlistentry> <varlistentry> @@ -607,7 +664,9 @@ <para>A special target unit that is pulled in by <filename>suspend.target</filename>, - <filename>hibernate.target</filename> and <filename>hybrid-sleep.target</filename> + <filename>hibernate.target</filename> + and + <filename>hybrid-sleep.target</filename> and may be used to hook units into the sleep state logic.</para> @@ -621,20 +680,35 @@ smartcard controller is plugged in or becomes available at boot.</para> + + <para>This may be used to pull + in printer management + daemons dynamically when + smartcard hardware is + found.</para> </listitem> </varlistentry> <varlistentry> <term><filename>sockets.target</filename></term> <listitem> <para>A special target unit - that sets up all service - sockets.</para> + that sets up all socket + units.(see + <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry> + for details) that shall be + active after boot.</para> <para>Services that can be socket-activated shall add - Wants dependencies to this - unit for their socket unit - during installation.</para> + <varname>Wants=</varname> + dependencies to this unit for + their socket unit during + installation. This is best + configured via a + <varname>WantedBy=sockets.target</varname> + in the socket unit's + <literal>[Install]</literal> + section.</para> </listitem> </varlistentry> <varlistentry> @@ -645,6 +719,11 @@ sound card is plugged in or becomes available at boot.</para> + + <para>This may be used to pull + in audio management daemons + dynamically when printer + hardware is found.</para> </listitem> </varlistentry> <varlistentry> @@ -710,15 +789,38 @@ <listitem> <para>systemd automatically adds dependencies of type - After for this target unit to - all SysV init script service - units with an LSB header - referring to the + <varname>After=</varname> for + this target unit to all SysV + init script service units with + an LSB header referring to the <literal>$time</literal> facility.</para> </listitem> </varlistentry> <varlistentry> + <term><filename>timers.target</filename></term> + <listitem> + <para>A special target unit + that sets up all timer + units (see + <citerefentry><refentrytitle>systemd.timer</refentrytitle><manvolnum>5</manvolnum></citerefentry> + for details) that shall be + active after boot.</para> + + <para>It is recommended that + timer units installed by + applications get pulled in via + <varname>Wants=</varname> + dependencies from this + unit. This is best configured + via + <varname>WantedBy=timers.target</varname> + in the timer unit's + <literal>[Install]</literal> + section.</para> + </listitem> + </varlistentry> + <varlistentry> <term><filename>umount.target</filename></term> <listitem> <para>A special target unit @@ -788,7 +890,7 @@ <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>, <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>, <citerefentry><refentrytitle>systemd.target</refentrytitle><manvolnum>5</manvolnum></citerefentry>, - <citerefentry><refentrytitle>bootup</refentrytitle><manvolnum>7</manvolnum></citerefentry> + <citerefentry><refentrytitle>bootup</refentrytitle><manvolnum>7</manvolnum></citerefentry>, <citerefentry><refentrytitle>systemd-fstab-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry> </para> </refsect1> diff --git a/src/core/path.c b/src/core/path.c index 295e5cdf0e..ff49c069ee 100644 --- a/src/core/path.c +++ b/src/core/path.c @@ -361,12 +361,12 @@ static int path_add_default_dependencies(Path *p) { assert(p); - if (UNIT(p)->manager->running_as == SYSTEMD_SYSTEM) { - r = unit_add_dependency_by_name(UNIT(p), UNIT_BEFORE, - SPECIAL_BASIC_TARGET, NULL, true); - if (r < 0) - return r; + r = unit_add_dependency_by_name(UNIT(p), UNIT_BEFORE, + SPECIAL_PATHS_TARGET, NULL, true); + if (r < 0) + return r; + if (UNIT(p)->manager->running_as == SYSTEMD_SYSTEM) { r = unit_add_two_dependencies_by_name(UNIT(p), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SYSINIT_TARGET, NULL, true); if (r < 0) diff --git a/src/core/service.c b/src/core/service.c index fa8a1cb039..98266a5a90 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -1148,6 +1148,16 @@ static int service_add_default_dependencies(Service *s) { SPECIAL_SOCKETS_TARGET, NULL, true); if (r < 0) return r; + + r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_AFTER, UNIT_REQUIRES, + SPECIAL_TIMERS_TARGET, NULL, true); + if (r < 0) + return r; + + r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_AFTER, UNIT_REQUIRES, + SPECIAL_PATHS_TARGET, NULL, true); + if (r < 0) + return r; } /* Second, activate normal shutdown */ diff --git a/src/core/socket.c b/src/core/socket.c index a3e3631dac..31f4bf49b6 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -331,11 +331,13 @@ static int socket_add_default_dependencies(Socket *s) { int r; assert(s); - if (UNIT(s)->manager->running_as == SYSTEMD_SYSTEM) { - if ((r = unit_add_dependency_by_name(UNIT(s), UNIT_BEFORE, SPECIAL_SOCKETS_TARGET, NULL, true)) < 0) - return r; + r = unit_add_dependency_by_name(UNIT(s), UNIT_BEFORE, SPECIAL_SOCKETS_TARGET, NULL, true); + if (r < 0) + return r; - if ((r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SYSINIT_TARGET, NULL, true)) < 0) + if (UNIT(s)->manager->running_as == SYSTEMD_SYSTEM) { + r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SYSINIT_TARGET, NULL, true); + if (r < 0) return r; } diff --git a/src/core/special.h b/src/core/special.h index c7b856e2bd..ad873a9c31 100644 --- a/src/core/special.h +++ b/src/core/special.h @@ -46,6 +46,8 @@ /* Early boot targets */ #define SPECIAL_SYSINIT_TARGET "sysinit.target" #define SPECIAL_SOCKETS_TARGET "sockets.target" +#define SPECIAL_TIMERS_TARGET "timers.target" +#define SPECIAL_PATHS_TARGET "paths.target" #define SPECIAL_LOCAL_FS_TARGET "local-fs.target" #define SPECIAL_LOCAL_FS_PRE_TARGET "local-fs-pre.target" #define SPECIAL_INITRD_FS_TARGET "initrd-fs.target" diff --git a/src/core/timer.c b/src/core/timer.c index d98468fd9e..16b49174d3 100644 --- a/src/core/timer.c +++ b/src/core/timer.c @@ -96,11 +96,11 @@ static int timer_add_default_dependencies(Timer *t) { assert(t); - if (UNIT(t)->manager->running_as == SYSTEMD_SYSTEM) { - r = unit_add_dependency_by_name(UNIT(t), UNIT_BEFORE, SPECIAL_BASIC_TARGET, NULL, true); - if (r < 0) - return r; + r = unit_add_dependency_by_name(UNIT(t), UNIT_BEFORE, SPECIAL_TIMERS_TARGET, NULL, true); + if (r < 0) + return r; + if (UNIT(t)->manager->running_as == SYSTEMD_SYSTEM) { r = unit_add_two_dependencies_by_name(UNIT(t), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SYSINIT_TARGET, NULL, true); if (r < 0) return r; diff --git a/units/basic.target b/units/basic.target index f9d03fa16f..b67c996b39 100644 --- a/units/basic.target +++ b/units/basic.target @@ -8,6 +8,6 @@ [Unit] Description=Basic System Documentation=man:systemd.special(7) -Requires=sysinit.target sockets.target -After=sysinit.target sockets.target +Requires=sysinit.target sockets.target timers.target paths.target +After=sysinit.target sockets.target timers.target paths.target RefuseManualStart=yes diff --git a/units/paths.target b/units/paths.target new file mode 100644 index 0000000000..25c7fd031e --- /dev/null +++ b/units/paths.target @@ -0,0 +1,10 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Paths +Documentation=man:systemd.special(7) diff --git a/units/systemd-ask-password-console.path b/units/systemd-ask-password-console.path index 80f6cc4c18..2949635fea 100644 --- a/units/systemd-ask-password-console.path +++ b/units/systemd-ask-password-console.path @@ -11,7 +11,7 @@ Documentation=man:systemd-ask-password-console.service(8) DefaultDependencies=no Conflicts=shutdown.target After=plymouth-start.service -Before=basic.target shutdown.target +Before=paths.target shutdown.target ConditionPathExists=!/run/plymouth/pid [Path] diff --git a/units/systemd-ask-password-wall.path b/units/systemd-ask-password-wall.path index 62dee80552..95ec9bc8a0 100644 --- a/units/systemd-ask-password-wall.path +++ b/units/systemd-ask-password-wall.path @@ -10,7 +10,7 @@ Description=Forward Password Requests to Wall Directory Watch Documentation=man:systemd-ask-password-console.service(8) DefaultDependencies=no Conflicts=shutdown.target -Before=basic.target shutdown.target +Before=paths.target shutdown.target [Path] DirectoryNotEmpty=/run/systemd/ask-password diff --git a/units/timers.target b/units/timers.target new file mode 100644 index 0000000000..07fda3d9d0 --- /dev/null +++ b/units/timers.target @@ -0,0 +1,10 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Timers +Documentation=man:systemd.special(7) |