Compare commits

..

5 Commits

Author SHA1 Message Date
Lennart Poettering 10ad50d38c
Merge pull request #14378 from keszybz/unit-docs
Unit documentation and build-system tweaks
2019-12-19 19:00:14 +01:00
Yu Watanabe 509b06ffdd network: update log message in message_rtnl_process_xyz()
Also lower the log level when the family is not supported.
2019-12-19 18:58:45 +01:00
Zbigniew Jędrzejewski-Szmek 277519db51 man: add section about user manager units 2019-12-19 13:32:31 +01:00
Zbigniew Jędrzejewski-Szmek f71502c49f man: add remote-*.targets to the bootup sequence
I think this makes it easier to see the difference between local and remote
mounts.

Make the graph a bit narrower while at it.
2019-12-19 13:32:31 +01:00
Zbigniew Jędrzejewski-Szmek 4186441bbd Revert "cryptsetup: umount encrypted devices before detaching it during shutdown"
This reverts commit 362c378291.

This commit introduced an ordering loop: remote-cryptsetup.target was both
before and after remote-fs-pre.target. It also globally ordered all cryptsetup
volumes before all mounts. Such global ordering is problematic if people have
stacked storage. Let's look for a different solution.

See https://github.com/systemd/systemd/pull/14378#discussion_r359460109.
2019-12-19 10:42:14 +01:00
4 changed files with 108 additions and 59 deletions

View File

@ -92,56 +92,59 @@
<!-- note: do not use unicode ellipsis here, because docbook will replace that <!-- note: do not use unicode ellipsis here, because docbook will replace that
with three dots anyway, messing up alignment --> with three dots anyway, messing up alignment -->
<programlisting>(various cryptsetup <programlisting> cryptsetup-pre.target
devices...) |
| (various low-level v
v API VFS mounts: (various cryptsetup devices...)
cryptsetup.target mqueue, configfs, | |
| debugfs, ...) v |
v | cryptsetup.target |
local-fs-pre.target | (various swap | | remote-fs-pre.target
| | devices...) | | | |
v | | | | | v
(various mounts and (various swap | v local-fs-pre.target | | | (network file systems)
fsck services...) devices...) (various low-level (various low-level | swap.target | | v v |
| | services: udevd, API VFS mounts: | | v | remote-cryptsetup.target |
v v tmpfiles, random mqueue, configfs, | | (various low-level (various mounts and | | |
local-fs.target swap.target seed, sysctl, ...) debugfs, ...) | | services: udevd, fsck services...) | | remote-fs.target
| | | | | | tmpfiles, random | | | /
\__________________|_________________ _________________|______________________/ | | seed, sysctl, ...) v | | /
\ / | | | local-fs.target | | /
v | | | | | | /
sysinit.target \____|______|_______________ ______|___________/ | /
| \ / | /
____________________________________/|\________________________________________ v | /
/ | | | \ sysinit.target | /
| | | | | | | /
v v | v v ______________________/|\_____________________ | /
(various (various | (various rescue.service / | | | \ | /
timers...) paths...) | sockets...) | | | | | | | /
| | | | v v v | v | | /
v v | v <emphasis>rescue.target</emphasis> (various (various | (various | |/
timers.target paths.target | sockets.target timers...) paths...) | sockets...) | |
| | | | | | | | | |
v \_________________ | ___________________/ v v | v | |
\|/ timers.target paths.target | sockets.target | |
v | | | | v |
basic.target v \_______ | _____/ rescue.service |
| \|/ | |
____________________________________/| emergency.service v v |
/ | | | basic.target <emphasis>rescue.target</emphasis> |
| | | v | |
v v v <emphasis>emergency.target</emphasis> ________v____________________ |
display- (various system (various system / | \ |
manager.service services services) | | | |
| required for | v v v |
| graphical UIs) v display- (various system (various system |
| | <emphasis>multi-user.target</emphasis> manager.service services services) |
| | | | required for | |
\_________________ | _________________/ | graphical UIs) v v
\|/ | | <emphasis>multi-user.target</emphasis>
v emergency.service | | |
<emphasis>graphical.target</emphasis></programlisting> | \_____________ | _____________/
v \|/
<emphasis>emergency.target</emphasis> v
<emphasis>graphical.target</emphasis></programlisting>
<para>Target units that are commonly used as boot targets are <para>Target units that are commonly used as boot targets are
<emphasis>emphasized</emphasis>. These units are good choices as <emphasis>emphasized</emphasis>. These units are good choices as
@ -157,6 +160,45 @@
later in boot.</para> later in boot.</para>
</refsect1> </refsect1>
<refsect1>
<title>User manager startup</title>
<para>The system manager starts the <filename>user@<replaceable>uid</replaceable>.service</filename> unit
for each user, which launches a separate unprivileged instance of <command>systemd</command> for each
user — the user manager. Similarly to the system manager, the user manager starts units which are pulled
in by <filename>default.target</filename>. The following chart is a structural overview of the well-known
user units. For non-graphical sessions, <filename>default.target</filename> is used. Whenever the user
logs into a graphical session, the login manager will start the
<filename>graphical-session.target</filename> target that is used to pull in units required for the
grahpical session. A number of targets (shown on the right side) are started when specific hardware is
available to the user.</para>
<programlisting>
(various (various (various
timers...) paths...) sockets...) (sound devices)
| | | |
v v v v
timers.target paths.target sockets.target sound.target
| | |
\______________ _|_________________/ (bluetooth devices)
\ / |
V v
basic.target bluetooth.target
|
__________/ \_______ (smartcard devices)
/ \ |
| | v
| v smartcard.target
v graphical-session-pre.target
(various user services) | (printers)
| v |
| (services for the graphical sesion) v
| | printer.target
v v
<emphasis>default.target</emphasis> graphical-session.target</programlisting>
</refsect1>
<refsect1> <refsect1>
<title>Bootup in the Initial RAM Disk (initrd)</title> <title>Bootup in the Initial RAM Disk (initrd)</title>
<para>The initial RAM disk implementation (initrd) can be set up <para>The initial RAM disk implementation (initrd) can be set up

View File

@ -330,14 +330,17 @@ int manager_rtnl_process_route(sd_netlink *rtnl, sd_netlink_message *message, vo
return log_oom(); return log_oom();
r = sd_rtnl_message_route_get_family(message, &tmp->family); r = sd_rtnl_message_route_get_family(message, &tmp->family);
if (r < 0 || !IN_SET(tmp->family, AF_INET, AF_INET6)) { if (r < 0) {
log_link_warning(link, "rtnl: received route message with invalid family, ignoring"); log_link_warning(link, "rtnl: received route message without family, ignoring");
return 0;
} else if (!IN_SET(tmp->family, AF_INET, AF_INET6)) {
log_link_debug(link, "rtnl: received route message with invalid family '%i', ignoring", tmp->family);
return 0; return 0;
} }
r = sd_rtnl_message_route_get_protocol(message, &tmp->protocol); r = sd_rtnl_message_route_get_protocol(message, &tmp->protocol);
if (r < 0) { if (r < 0) {
log_warning_errno(r, "rtnl: received route message with invalid route protocol: %m"); log_warning_errno(r, "rtnl: received route message without route protocol: %m");
return 0; return 0;
} }
@ -625,8 +628,11 @@ int manager_rtnl_process_neighbor(sd_netlink *rtnl, sd_netlink_message *message,
} }
r = sd_rtnl_message_neigh_get_family(message, &family); r = sd_rtnl_message_neigh_get_family(message, &family);
if (r < 0 || !IN_SET(family, AF_INET, AF_INET6)) { if (r < 0) {
log_link_warning(link, "rtnl: received neighbor message with invalid family, ignoring."); log_link_warning(link, "rtnl: received neighbor message withot family, ignoring.");
return 0;
} else if (!IN_SET(family, AF_INET, AF_INET6)) {
log_link_debug(link, "rtnl: received neighbor message with invalid family '%i', ignoring.", family);
return 0; return 0;
} }
@ -754,8 +760,11 @@ int manager_rtnl_process_address(sd_netlink *rtnl, sd_netlink_message *message,
} }
r = sd_rtnl_message_addr_get_family(message, &family); r = sd_rtnl_message_addr_get_family(message, &family);
if (r < 0 || !IN_SET(family, AF_INET, AF_INET6)) { if (r < 0) {
log_link_warning(link, "rtnl: received address message with invalid family, ignoring."); log_link_warning(link, "rtnl: received address message without family, ignoring.");
return 0;
} else if (!IN_SET(family, AF_INET, AF_INET6)) {
log_link_debug(link, "rtnl: received address message with invalid family '%i', ignoring.", family);
return 0; return 0;
} }

View File

@ -11,4 +11,3 @@
Description=Local File Systems (Pre) Description=Local File Systems (Pre)
Documentation=man:systemd.special(7) Documentation=man:systemd.special(7)
RefuseManualStart=yes RefuseManualStart=yes
After=cryptsetup.target

View File

@ -11,4 +11,3 @@
Description=Remote File Systems (Pre) Description=Remote File Systems (Pre)
Documentation=man:systemd.special(7) Documentation=man:systemd.special(7)
RefuseManualStart=yes RefuseManualStart=yes
After=remote-cryptsetup.target