From 49c55abcbefd737bcd47b3ae6105e9bdf831cc6b Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 4 Jul 2023 22:31:11 +0200 Subject: [PATCH] units: condition out a few services in the initrd Let's make our units more robust to being added to an initrd: 1. systemd-boot-update only makes sense if sd-boot is available in /usr/ to copy into the ESP. This is generally not the case in initrds, and even if it was, we shouldn't update the ESP from the initrd, but from the host instead. 2. The rfkill services save/restore rfkill state, but that information is only available once /var/ is mounted, which generally happens after the initrd transition. 3. utmp management is partly in /var/, and legacy anyway, hence don't bother with it in the initrd. --- units/systemd-boot-update.service | 1 + units/systemd-rfkill.service.in | 2 ++ units/systemd-rfkill.socket | 1 + units/systemd-update-utmp-runlevel.service.in | 2 ++ units/systemd-update-utmp.service.in | 1 + 5 files changed, 7 insertions(+) diff --git a/units/systemd-boot-update.service b/units/systemd-boot-update.service index ce9187bbfe..f234184d78 100644 --- a/units/systemd-boot-update.service +++ b/units/systemd-boot-update.service @@ -10,6 +10,7 @@ [Unit] Description=Automatic Boot Loader Update Documentation=man:bootctl(1) +ConditionPathExists=!/etc/initrd-release DefaultDependencies=no After=local-fs.target diff --git a/units/systemd-rfkill.service.in b/units/systemd-rfkill.service.in index 56de1a1537..4034d7a557 100644 --- a/units/systemd-rfkill.service.in +++ b/units/systemd-rfkill.service.in @@ -10,6 +10,8 @@ [Unit] Description=Load/Save RF Kill Switch Status Documentation=man:systemd-rfkill.service(8) +ConditionPathExists=!/etc/initrd-release + DefaultDependencies=no BindsTo=sys-devices-virtual-misc-rfkill.device Conflicts=shutdown.target diff --git a/units/systemd-rfkill.socket b/units/systemd-rfkill.socket index 81c0e8c9c6..588ecd26f4 100644 --- a/units/systemd-rfkill.socket +++ b/units/systemd-rfkill.socket @@ -10,6 +10,7 @@ [Unit] Description=Load/Save RF Kill Switch Status /dev/rfkill Watch Documentation=man:systemd-rfkill.socket(8) +ConditionPathExists=!/etc/initrd-release DefaultDependencies=no BindsTo=sys-devices-virtual-misc-rfkill.device diff --git a/units/systemd-update-utmp-runlevel.service.in b/units/systemd-update-utmp-runlevel.service.in index 11177dc621..18c92f9b5a 100644 --- a/units/systemd-update-utmp-runlevel.service.in +++ b/units/systemd-update-utmp-runlevel.service.in @@ -10,6 +10,8 @@ [Unit] Description=Record Runlevel Change in UTMP Documentation=man:systemd-update-utmp-runlevel.service(8) man:utmp(5) +ConditionPathExists=!/etc/initrd-release + DefaultDependencies=no RequiresMountsFor=/var/log/wtmp Conflicts=shutdown.target diff --git a/units/systemd-update-utmp.service.in b/units/systemd-update-utmp.service.in index f1278fae32..73a848390e 100644 --- a/units/systemd-update-utmp.service.in +++ b/units/systemd-update-utmp.service.in @@ -10,6 +10,7 @@ [Unit] Description=Record System Boot/Shutdown in UTMP Documentation=man:systemd-update-utmp.service(8) man:utmp(5) +ConditionPathExists=!/etc/initrd-release DefaultDependencies=no After=systemd-remount-fs.service systemd-tmpfiles-setup.service auditd.service