diff options
Diffstat (limited to 'src/rc/rc.c')
-rw-r--r-- | src/rc/rc.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/rc/rc.c b/src/rc/rc.c index 0a970b4e..87c4913f 100644 --- a/src/rc/rc.c +++ b/src/rc/rc.c @@ -281,8 +281,12 @@ open_shell(void) struct passwd *pw; #ifdef __linux__ - char *sys = get_systype(); + const char *sys = NULL; + sys = detect_container(); + if (!sys) + sys = detect_vm(); + /* VSERVER and OPENVZ systems cannot really drop to shells */ if (sys && (strcmp(sys, "VSERVER") == 0 || strcmp(sys, "OPENVZ") == 0)) @@ -466,7 +470,7 @@ static void do_sysinit() { struct utsname uts; - char *sys = get_systype(); + const char *sys; /* exec init-early.sh if it exists * This should just setup the console to use the correct @@ -487,6 +491,9 @@ do_sysinit() uts.machine); #endif + sys = detect_container(); + if (!sys) + sys = detect_vm(); if (sys) printf(" [%s]", sys); @@ -502,7 +509,9 @@ do_sysinit() /* init may have mounted /proc so we can now detect or real * sys */ - sys = get_systype(); + sys = detect_container(); + if (!sys) + sys = detect_vm(); if (sys) setenv("RC_SYS", sys, 1); } @@ -823,7 +832,9 @@ int main(int argc, char **argv) eerrorx("%s: %s", applet, strerror(errno)); /* NOTREACHED */ case 'S': - systype = get_systype(); + systype = detect_container(); + if (!systype) + systype = detect_vm(); if (systype) printf("%s\n", systype); exit(EXIT_SUCCESS); |