From 4951a1199d5404b380e4beaf602e67744f82c8d1 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Tue, 7 Feb 2012 18:45:54 +0100 Subject: [PATCH] 99base/init: predefine path to init if you add realinitpath=" " to dracut.conf, then it will be written to $initdir/etc/cmdline.d/distroinit.conf with "rd.distroinit= rd.distroinit=" and evaluated by 99base/init, when it searches for init. --- dracut.conf.d/fedora.conf.example | 1 + modules.d/99base/init | 2 +- modules.d/99base/module-setup.sh | 6 ++++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/dracut.conf.d/fedora.conf.example b/dracut.conf.d/fedora.conf.example index eddbf0fc1..11c78caec 100644 --- a/dracut.conf.d/fedora.conf.example +++ b/dracut.conf.d/fedora.conf.example @@ -5,3 +5,4 @@ i18n_vars="/etc/sysconfig/keyboard:KEYTABLE-KEYMAP /etc/sysconfig/i18n:SYSFONT-F add_dracutmodules+=" rpmversion " stdloglvl=3 prefix=/run/initramfs +realinitpath="/usr/lib/systemd/systemd" diff --git a/modules.d/99base/init b/modules.d/99base/init index abfa3c501..bc4ad2c98 100755 --- a/modules.d/99base/init +++ b/modules.d/99base/init @@ -315,7 +315,7 @@ source_hook pre-pivot # By the time we get here, the root filesystem should be mounted. # Try to find init. -for i in "$(getarg real_init=)" "$(getarg init=)" /sbin/init /etc/init /init /bin/sh; do +for i in "$(getarg real_init=)" "$(getarg init=)" $(getargs rd.distroinit=) /sbin/init; do [ -n "$i" ] || continue __p=$(readlink -f "${NEWROOT}/${i}") diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh index fad6c5087..738af6b57 100755 --- a/modules.d/99base/module-setup.sh +++ b/modules.d/99base/module-setup.sh @@ -47,5 +47,11 @@ install() { inst_hook cmdline 10 "$moddir/parse-root-opts.sh" mkdir -p "${initdir}/var" [ -x /lib/systemd/systemd-timestamp ] && inst /lib/systemd/systemd-timestamp + if [[ $realinitpath ]]; then + for i in $realinitpath; do + echo "rd.distroinit=$i" + done > "${initdir}/etc/cmdline.d/distroinit.conf" + fi + } -- 2.47.3