I was rather surprised why all my attempts to enter single user were not successful :) Simple patch to collect and pass to real init what _looks_ like init arguments. -andrey
--- Begin Message ---
- Subject: [PATCH] Pass init argument(s) to real init
- From: Andrey Borzenkov <arvidjaar@xxxxxxx>
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@xxxxxxx> --- modules.d/99base/init | 12 +++++++++++- 1 files changed, 11 insertions(+), 1 deletions(-) diff --git a/modules.d/99base/init b/modules.d/99base/init index ab033a7..e5158f8 100755 --- a/modules.d/99base/init +++ b/modules.d/99base/init @@ -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
--- End Message ---
Attachment:
signature.asc
Description: This is a digitally signed message part.