units: introduce new timers.target and paths.target to hook timer/path units into for boot

This commit is contained in:
Lennart Poettering 2013-03-25 21:20:08 +01:00
parent 1b036593b7
commit e3d84721dc
13 changed files with 319 additions and 160 deletions

View File

@ -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

View File

@ -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>

View File

@ -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
@ -440,6 +473,29 @@
should be used. </para>
</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>
@ -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,14 +789,37 @@
<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>
@ -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>

View File

@ -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)

View File

@ -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 */

View File

@ -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;
}

View File

@ -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"

View File

@ -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;

View File

@ -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

10
units/paths.target Normal file
View File

@ -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)

View File

@ -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]

View File

@ -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

10
units/timers.target Normal file
View File

@ -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)