Pass init argument(s) to real init

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>
master
Andrey Borzenkov 2010-03-04 14:02:43 +01:00 committed by Harald Hoyer
parent 01b8cdffca
commit b63fd4d905
1 changed files with 11 additions and 1 deletions

View File

@ -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