]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
Pass init argument(s) to real init
authorAndrey Borzenkov <arvidjaar@mail.ru>
Thu, 4 Mar 2010 13:02:43 +0000 (14:02 +0100)
committerHarald Hoyer <harald@redhat.com>
Thu, 4 Mar 2010 13:06:48 +0000 (14:06 +0100)
Common wisdom to enter single user on Linux is to edit command
line and add "single". This was not possible because switch_root
was always called with empty init arguments. Collect them from
command line and pass to real init when switching root.

Signed-off-by: Andrey Borzenkov <arvidjaar@mail.ru>
modules.d/99base/init

index 3b719c28df43e02ae1c42eb4000d27b4882f0135..ab7aafe296458743608f80cf646816a70a5295dc 100755 (executable)
@@ -259,10 +259,10 @@ done
 
 initargs=""
 
+read CLINE </proc/cmdline
 if getarg init= >/dev/null ; then
     ignoreargs="console BOOT_IMAGE"
     # only pass arguments after init= to the init
-    read CLINE </proc/cmdline
     CLINE=${CLINE#*init=}
     set $CLINE
     shift
@@ -273,6 +273,16 @@ if getarg init= >/dev/null ; then
         initargs="$initargs $x"
     done
     unset CLINE
+else
+    set $CLINE
+    shift
+    for x in "$@"; do
+        case "$x" in
+            [0-9]|s|S|single|emergency|auto )
+                initargs="$initargs $x"
+            ;;
+        esac
+    done
 fi
 
 # Debug: Copy state