From: Zoltán Böszörményi Date: Sun, 7 Feb 2021 14:29:56 +0000 (+0100) Subject: feat(dracut.sh): allow overriding the systemctl command for sysroot X-Git-Tag: 052~102 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=18d36fabf5ab20404e63ae56f166a5a53a874ba9;p=thirdparty%2Fdracut.git feat(dracut.sh): allow overriding the systemctl command for sysroot Allow overriding the systemctl command for sysroot with $SYSTEMCTL Modified every modules' module-setup.sh to use the envvar instead of the hardcoded command name. Signed-off-by: Zoltán Böszörményi --- diff --git a/dracut.8.asc b/dracut.8.asc index ab7d40e4d..9110b4e0d 100644 --- a/dracut.8.asc +++ b/dracut.8.asc @@ -596,6 +596,9 @@ Default: _SYSTEMD_VERSION_:: overrides systemd version. Used for **--sysroot**. +_SYSTEMCTL_:: + overrides the systemctl binary. Used for **--sysroot**. + _DRACUT_INSTALL_PATH_:: overrides **PATH** environment for **dracut-install** to look for binaries relative to **--sysroot**. In a cross-compiled environment diff --git a/dracut.sh b/dracut.sh index c6ff8369c..a6cbc3dd9 100755 --- a/dracut.sh +++ b/dracut.sh @@ -756,6 +756,8 @@ done [[ -z "$dracutsysrootdir" ]] && export PATH="${NPATH#:}" unset NPATH +export SYSTEMCTL=${SYSTEMCTL:-systemctl} + # these options add to the stuff in the config file (( ${#add_dracutmodules_l[@]} )) && add_dracutmodules+=" ${add_dracutmodules_l[@]} " (( ${#force_add_dracutmodules_l[@]} )) && force_add_dracutmodules+=" ${force_add_dracutmodules_l[@]} " diff --git a/modules.d/00systemd/module-setup.sh b/modules.d/00systemd/module-setup.sh index 15ddd0a16..8e6e41d6b 100755 --- a/modules.d/00systemd/module-setup.sh +++ b/modules.d/00systemd/module-setup.sh @@ -244,7 +244,7 @@ install() { systemd-ask-password-plymouth.service \ ; do [[ -f $systemdsystemunitdir/$i ]] || continue - systemctl -q --root "$initdir" add-wants "$i" systemd-vconsole-setup.service + $SYSTEMCTL -q --root "$initdir" add-wants "$i" systemd-vconsole-setup.service done mkdir -p "$initdir/etc/systemd" @@ -256,5 +256,5 @@ install() { echo "RateLimitBurst=0" } >> "$initdir/etc/systemd/journald.conf" - systemctl -q --root "$initdir" set-default multi-user.target + $SYSTEMCTL -q --root "$initdir" set-default multi-user.target } diff --git a/modules.d/01systemd-initrd/module-setup.sh b/modules.d/01systemd-initrd/module-setup.sh index c10e6ade5..1e9f56913 100755 --- a/modules.d/01systemd-initrd/module-setup.sh +++ b/modules.d/01systemd-initrd/module-setup.sh @@ -36,5 +36,5 @@ install() { $systemdsystemunitdir/initrd-udevadm-cleanup-db.service \ $systemdsystemunitdir/initrd-parse-etc.service - systemctl -q --root "$initdir" set-default initrd.target + $SYSTEMCTL -q --root "$initdir" set-default initrd.target } diff --git a/modules.d/01systemd-sysusers/module-setup.sh b/modules.d/01systemd-sysusers/module-setup.sh index 43616d0f1..c0962a9b7 100644 --- a/modules.d/01systemd-sysusers/module-setup.sh +++ b/modules.d/01systemd-sysusers/module-setup.sh @@ -55,6 +55,6 @@ install() { fi # Enable the systemd type service unit for sysusers. - systemctl -q --root "$initdir" enable systemd-sysusers.service + $SYSTEMCTL -q --root "$initdir" enable systemd-sysusers.service } diff --git a/modules.d/02systemd-networkd/module-setup.sh b/modules.d/02systemd-networkd/module-setup.sh index d3e22f51a..03c3a7b56 100755 --- a/modules.d/02systemd-networkd/module-setup.sh +++ b/modules.d/02systemd-networkd/module-setup.sh @@ -65,7 +65,7 @@ install() { systemd-networkd.socket # systemd-timesyncd.service do - systemctl -q --root "$initdir" enable "$i" + $SYSTEMCTL -q --root "$initdir" enable "$i" done } diff --git a/modules.d/06rngd/module-setup.sh b/modules.d/06rngd/module-setup.sh index f07a0cb99..668e39fe4 100644 --- a/modules.d/06rngd/module-setup.sh +++ b/modules.d/06rngd/module-setup.sh @@ -36,5 +36,5 @@ install() { # make sure dependant libs are installed too inst_libdir_file opensc-pkcs11.so - systemctl -q --root "$initdir" add-wants sysinit.target rngd.service + $SYSTEMCTL -q --root "$initdir" add-wants sysinit.target rngd.service } diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh index d66274264..8380b0a4d 100755 --- a/modules.d/90multipath/module-setup.sh +++ b/modules.d/90multipath/module-setup.sh @@ -112,8 +112,8 @@ install() { if dracut_module_included "systemd"; then inst_simple "${moddir}/multipathd-configure.service" "${systemdsystemunitdir}/multipathd-configure.service" inst_simple "${moddir}/multipathd.service" "${systemdsystemunitdir}/multipathd.service" - systemctl -q --root "$initdir" enable multipathd-configure.service - systemctl -q --root "$initdir" enable multipathd.service + $SYSTEMCTL -q --root "$initdir" enable multipathd-configure.service + $SYSTEMCTL -q --root "$initdir" enable multipathd.service else inst_hook pre-trigger 02 "$moddir/multipathd.sh" inst_hook cleanup 02 "$moddir/multipathd-stop.sh" diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh index 20922442b..8bd86d0c7 100755 --- a/modules.d/95iscsi/module-setup.sh +++ b/modules.d/95iscsi/module-setup.sh @@ -228,14 +228,14 @@ install() { iscsid.socket \ iscsiuio.socket \ ; do - systemctl -q --root "$initdir" enable "$i" + $SYSTEMCTL -q --root "$initdir" enable "$i" done for i in \ iscsid.service \ iscsiuio.service \ ; do - systemctl -q --root "$initdir" add-wants basic.target "$i" + $SYSTEMCTL -q --root "$initdir" add-wants basic.target "$i" done # Make sure iscsid is started after dracut-cmdline and ready for the initqueue diff --git a/modules.d/98dracut-systemd/module-setup.sh b/modules.d/98dracut-systemd/module-setup.sh index 41b008e05..9c4e1b3dc 100755 --- a/modules.d/98dracut-systemd/module-setup.sh +++ b/modules.d/98dracut-systemd/module-setup.sh @@ -54,7 +54,7 @@ install() { dracut-pre-udev.service \ ; do inst_simple "$moddir/${i}" "$systemdsystemunitdir/${i}" - systemctl -q --root "$initdir" add-wants initrd.target "$i" + $SYSTEMCTL -q --root "$initdir" add-wants initrd.target "$i" done inst_simple "$moddir/dracut-tmpfiles.conf" "$tmpfilesdir/dracut-tmpfiles.conf" diff --git a/modules.d/99memstrack/module-setup.sh b/modules.d/99memstrack/module-setup.sh index 7c6b1fbf0..b69a73132 100755 --- a/modules.d/99memstrack/module-setup.sh +++ b/modules.d/99memstrack/module-setup.sh @@ -23,5 +23,5 @@ install() { inst_hook cleanup 99 "$moddir/memstrack-report.sh" inst "$moddir/memstrack.service" "$systemdsystemunitdir/memstrack.service" - systemctl -q --root "$initdir" add-wants initrd.target memstrack.service + $SYSTEMCTL -q --root "$initdir" add-wants initrd.target memstrack.service } diff --git a/modules.d/99squash/module-setup.sh b/modules.d/99squash/module-setup.sh index 12dae3791..1bcc5da15 100644 --- a/modules.d/99squash/module-setup.sh +++ b/modules.d/99squash/module-setup.sh @@ -37,5 +37,5 @@ install() { inst $moddir/init.sh /squash/init.sh inst "$moddir/squash-mnt-clear.service" "$systemdsystemunitdir/squash-mnt-clear.service" - systemctl -q --root "$initdir" add-wants initrd-switch-root.target squash-mnt-clear.service + $SYSTEMCTL -q --root "$initdir" add-wants initrd-switch-root.target squash-mnt-clear.service }