diff options
-rw-r--r-- | event.d/rc1 | 8 | ||||
-rw-r--r-- | event.d/rcS | 7 | ||||
-rw-r--r-- | event.d/rcS-sulogin | 11 |
3 files changed, 18 insertions, 8 deletions
diff --git a/event.d/rc1 b/event.d/rc1 index 35de4d3e..5153c8c2 100644 --- a/event.d/rc1 +++ b/event.d/rc1 @@ -1,6 +1,9 @@ # rc1 - runlevel 1 compatibility # # This task runs the old sysv-rc runlevel 1 ("single-user") scripts. +# /etc/rc.d/rc 1 will run the /etc/rc.d/rc1.d scripts. +# telinit S will run whichever task has "start on runlevel S", +# normally /etc/event.d/rcS-sulogin start on runlevel 1 @@ -17,3 +20,8 @@ script exec /etc/rc.d/rc 1 end script +post-stop script + clear + echo "Telling INIT to go to single user mode." + exec telinit S +end script diff --git a/event.d/rcS b/event.d/rcS index 728ae396..619e1e6d 100644 --- a/event.d/rcS +++ b/event.d/rcS @@ -15,14 +15,15 @@ script /etc/rc.d/rc.sysinit runlevel --reboot || true - +end script +post-stop script runlevel=$(/bin/awk -F ':' '$3 == "initdefault" { print $2 }' /etc/inittab) [ -z "$runlevel" ] && runlevel="3" for t in $(cat /proc/cmdline); do case $t in - -s|single|S) runlevel="S" ;; + -s|single|S|s) runlevel="S" ;; [1-9]) runlevel="$t" ;; esac done - telinit $runlevel + exec telinit $runlevel end script diff --git a/event.d/rcS-sulogin b/event.d/rcS-sulogin index 1a2f49e2..d74620db 100644 --- a/event.d/rcS-sulogin +++ b/event.d/rcS-sulogin @@ -1,18 +1,19 @@ # rcS-sulogin - "single-user" runlevel compatibility # -# This task runs the sulogin binary during "single-user" mode. +# This task runs /bin/bash during "single-user" mode, +# then continues to the default runlevel. start on runlevel S stop on runlevel console owner - script runlevel --set S >/dev/null || true - /bin/bash - + /bin/bash || true +end script +post-stop script runlevel=$(/bin/awk -F ':' '$3 == "initdefault" { print $2 }' /etc/inittab) [ -z "$runlevel" ] && runlevel="3" - telinit $runlevel + exec telinit $runlevel end script |