From: Zbigniew Jędrzejewski-Szmek Date: Sun, 9 Oct 2022 17:02:27 +0000 (+0200) Subject: units: create /dev with --graceful first, allow sysusers to run later X-Git-Tag: v254-rc1~411^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b42482af904ae0b94a6e4501ec595448f0ba1c06;p=thirdparty%2Fsystemd.git units: create /dev with --graceful first, allow sysusers to run later We want to call systemd-tmpfiles-setup-dev.service to create /dev/fuse and other device nodes so that module probing will work. But it is possible that when we're in first boot, some users or groups need to be created by systemd-sysusers first. But it is also possible that systemd-sysusers cannot actually execute configuration because the root partition is not fully writable yet. So let systemd-tmpfiles-setup-dev.service run earlier, possibly without all users and groups in place. Since systemd-tmpfiles-setup-dev.service writes to /dev only, it doesn't care how the root partition is mounted. In this early run, some some nodes might be created with default permissions (i.e. not accessible to non-root users or groups). This should be OK for the early boot phase. Afterwards, we let systemd-tmpfiles-setup.service execute full configuration. We will configure any files in /dev twice, but considering that there's only a few of them and that the second run should only adjust ownership and permissions, this should be OK. This way, we avoid the dependency loop. --- diff --git a/units/systemd-tmpfiles-setup-dev.service b/units/systemd-tmpfiles-setup-dev.service index c65539aa797..d9cb3de5547 100644 --- a/units/systemd-tmpfiles-setup-dev.service +++ b/units/systemd-tmpfiles-setup-dev.service @@ -12,7 +12,6 @@ Description=Create Static Device Nodes in /dev Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8) DefaultDependencies=no -After=systemd-sysusers.service Before=sysinit.target local-fs-pre.target systemd-udevd.service Conflicts=shutdown.target initrd-switch-root.target Before=shutdown.target initrd-switch-root.target @@ -20,6 +19,6 @@ Before=shutdown.target initrd-switch-root.target [Service] Type=oneshot RemainAfterExit=yes -ExecStart=systemd-tmpfiles --prefix=/dev --create --boot +ExecStart=systemd-tmpfiles --prefix=/dev --create --boot --graceful SuccessExitStatus=DATAERR CANTCREAT LoadCredential=tmpfiles.extra diff --git a/units/systemd-tmpfiles-setup.service b/units/systemd-tmpfiles-setup.service index a4204655349..506f53eaa2f 100644 --- a/units/systemd-tmpfiles-setup.service +++ b/units/systemd-tmpfiles-setup.service @@ -21,7 +21,7 @@ RefuseManualStop=yes [Service] Type=oneshot RemainAfterExit=yes -ExecStart=systemd-tmpfiles --create --remove --boot --exclude-prefix=/dev +ExecStart=systemd-tmpfiles --create --remove --boot SuccessExitStatus=DATAERR CANTCREAT LoadCredential=tmpfiles.extra LoadCredential=login.motd