| # rc-sysinit - System V initialisation compatibility | |
| # | |
| # This task runs the old System V-style system initialisation scripts, | |
| # and enters the default runlevel when finished. | |
| description "System V initialisation compatibility" | |
| author "Scott James Remnant <scott@netsplit.com>" | |
| start on startup | |
| stop on runlevel | |
| # Default runlevel, this may be overriden on the kernel command-line | |
| # or by faking an old /etc/inittab entry | |
| env DEFAULT_RUNLEVEL=2 | |
| emits runlevel | |
| # There can be no previous runlevel here, but there might be old | |
| # information in /var/run/utmp that we pick up, and we don't want | |
| # that. | |
| # | |
| # These override that | |
| env RUNLEVEL= | |
| env PREVLEVEL= | |
| task | |
| console owner | |
| script | |
| # Check for default runlevel in /etc/inittab | |
| if [ -r /etc/inittab ] | |
| then | |
| eval "$(sed -nre 's/^[^#][^:]*:([0-6sS]):initdefault:.*/DEFAULT_RUNLEVEL="\1";/p' /etc/inittab || true)" | |
| fi | |
| # Check kernel command-line for typical arguments | |
| for ARG in $(cat /proc/cmdline) | |
| do | |
| case "${ARG}" in | |
| -b|emergency) | |
| # Emergency shell | |
| [ -n "${FROM_SINGLE_USER_MODE}" ] || sulogin | |
| ;; | |
| [0123456sS]) | |
| # Override runlevel | |
| DEFAULT_RUNLEVEL="${ARG}" | |
| ;; | |
| -s|single) | |
| # Single user mode | |
| [ -n "${FROM_SINGLE_USER_MODE}" ] || DEFAULT_RUNLEVEL=S | |
| ;; | |
| esac | |
| done | |
| # Run the system initialisation scripts | |
| [ -n "${FROM_SINGLE_USER_MODE}" ] || /etc/init.d/rcS | |
| # Switch into the default runlevel | |
| telinit "${DEFAULT_RUNLEVEL}" | |
| end script |