]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
99base/init: predefine path to init
authorHarald Hoyer <harald@redhat.com>
Tue, 7 Feb 2012 17:45:54 +0000 (18:45 +0100)
committerHarald Hoyer <harald@redhat.com>
Tue, 7 Feb 2012 17:48:03 +0000 (18:48 +0100)
if you add realinitpath="<path1> <path2>" to dracut.conf, then it will
be written to $initdir/etc/cmdline.d/distroinit.conf with
"rd.distroinit=<path1> rd.distroinit=<path2>" and evaluated by
99base/init, when it searches for init.

dracut.conf.d/fedora.conf.example
modules.d/99base/init
modules.d/99base/module-setup.sh

index eddbf0fc1ecfcde3907b1fc13796a52696065257..11c78caec3ea221dad22f67892e700f4121b577e 100644 (file)
@@ -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"
index abfa3c501ac01ca3b9da3bed9a039bcd97f97d82..bc4ad2c983afd3caef5812920719e76316c6687d 100755 (executable)
@@ -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}")
index fad6c5087b9cac53885eb27932392127f110a712..738af6b573465126cf595df38e75411086d0770d 100755 (executable)
@@ -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
+
 }