diff options
Diffstat (limited to 'loader/loader.c')
-rw-r--r-- | loader/loader.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/loader/loader.c b/loader/loader.c index d690a4f59..b3b064e26 100644 --- a/loader/loader.c +++ b/loader/loader.c @@ -139,6 +139,8 @@ static void spawnShell(int flags) { pid_t pid; int fd; + if (FL_SERIAL(flags)) + return; if (!FL_TESTING(flags)) { fd = open("/dev/tty2", O_RDWR); if (fd < 0) { @@ -1660,6 +1662,7 @@ int main(int argc, char ** argv) { moduleInfoSet modInfo; char * where; struct moduleInfo * mi; + char twelve = 12; char * ksFile = NULL, * ksSource = NULL; struct poptOption optionTable[] = { { "cmdline", '\0', POPT_ARG_STRING, &cmdLine, 0 }, @@ -1688,6 +1691,11 @@ int main(int argc, char ** argv) { return probe_main(argc, argv); #endif + if (ioctl (0, TIOCLINUX, &twelve) < 0) { + /* Obviously we cannot run in GUI mode on serial console. */ + flags |= LOADER_FLAGS_SERIAL | LOADER_FLAGS_TEXT; + } + optCon = poptGetContext(NULL, argc, argv, optionTable, 0); if ((rc = poptGetNextOpt(optCon)) < -1) { @@ -1875,6 +1883,8 @@ int main(int argc, char ** argv) { *argptr++ = "-m"; *argptr++ = url; + if (FL_SERIAL(flags)) + *argptr++ = "--serial"; if (FL_TEXT(flags)) *argptr++ = "-T"; if (FL_EXPERT(flags)) |