diff --git a/sh/init.sh.Linux.in b/sh/init.sh.Linux.in index 25a3ecb7..5aa5031e 100644 --- a/sh/init.sh.Linux.in +++ b/sh/init.sh.Linux.in @@ -96,6 +96,9 @@ if ${mountproc}; then fi unset mountproc +# Re-load RC_SYS if empty now we have /proc mounted +[ -z "${RC_SYS}" ] && export RC_SYS="$(rc --sys)" + # Read off the kernel commandline to see if there's any special settings # especially check to see if we need to set the CDBOOT environment variable # Note: /proc MUST be mounted diff --git a/src/rc/rc.c b/src/rc/rc.c index b305b2d1..5ae7e1f1 100644 --- a/src/rc/rc.c +++ b/src/rc/rc.c @@ -935,11 +935,13 @@ static void handle_bad_signal(int sig) static const struct option longopts[] = { { "override", 1, NULL, 'o' }, { "service", 1, NULL, 's' }, + { "sys", 0, NULL, 'S' }, longopts_COMMON }; static const char * const longopts_help[] = { "override the next runlevel to change into\nwhen leaving single user or boot runlevels", "runs the service specified with the rest\nof the arguments", + "output the RC system type, if any", longopts_help_COMMON }; #include "_usage.c" @@ -1028,6 +1030,12 @@ int main(int argc, char **argv) execv(*argv, argv); eerrorx("%s: %s", applet, strerror(errno)); /* NOTREACHED */ + case 'S': + bootlevel = rc_sys(); + if (bootlevel) + printf("%s\n", bootlevel); + exit(EXIT_SUCCESS); + /* NOTREACHED */ case_RC_COMMON_GETOPT } }