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 ce9187bbfed..f234184d780 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 56de1a15379..4034d7a557f 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 81c0e8c9c6c..588ecd26f46 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 11177dc621f..18c92f9b5a4 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 f1278fae32e..73a848390e9 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