diff --git a/src/conf.c b/src/conf.c index 44b958f6..ff3eb02a 100644 --- a/src/conf.c +++ b/src/conf.c @@ -87,6 +87,7 @@ fallback: /* * finit.debug = [on,off] * finit.show_status = [on,off] + * finit.status_style = [old,classic,modern] */ static void parse_finit_opts(char *opt) { @@ -170,6 +171,29 @@ static void parse_kernel_cmdline(void) #define parse_kernel_cmdline() #endif +static void parse_kernel_loglevel(void) +{ + char line[LINE_SIZE], *ptr; + FILE *fp; + int val; + + fp = fopen("/proc/sys/kernel/printk", "r"); + if (!fp) + return; + + if (!fgets(line, sizeof(line), fp)) { + fclose(fp); + return; + } + fclose(fp); + + ptr = chomp(line); + _d("%s", ptr); + val = atoi(ptr); + if (val >= 7) + kerndebug = 1; +} + /* * Kernel gives us all non-kernel options on our cmdline */ @@ -179,6 +203,7 @@ void conf_parse_cmdline(int argc, char *argv[]) parse_arg(argv[i]); parse_kernel_cmdline(); + parse_kernel_loglevel(); log_init(); } diff --git a/src/finit.c b/src/finit.c index 59f0accf..5c2ea956 100644 --- a/src/finit.c +++ b/src/finit.c @@ -65,6 +65,7 @@ int debug = 0; /* debug mode from kernel cmdline */ int rescue = 0; /* rescue mode from kernel cmdline */ int single = 0; /* single user mode from kernel cmdline */ int bootstrap = 1; /* set while bootrapping (for TTYs) */ +int kerndebug = 0; /* set if /proc/sys/kernel/printk > 7 */ char *sdown = NULL; char *network = NULL; char *hostname = NULL; @@ -86,7 +87,7 @@ static void banner(void) * similar enabled to start emptying /dev/kmsg, but for * our progress we want to own the console. */ - if (!debug) + if (!debug && !kerndebug) klogctl(6, NULL, 0); /* diff --git a/src/finit.h b/src/finit.h index e2a4d625..a0dc559b 100644 --- a/src/finit.h +++ b/src/finit.h @@ -114,6 +114,7 @@ extern int debug; extern int rescue; extern int single; extern int bootstrap; +extern int kerndebug; extern char *rcsd; extern char *sdown; extern char *network;