系統啟動後,在 /proc/sys/kernel/printk 可以用來控制輸出的level。
$ cat /proc/sys/kernel/printk
7 4 1 7
這是說 printk level 小/等 於 7 的,才會被印到 console。這四個數值是寫在 /kernel/printk.c 中。
#define DEFAULT_MESSAGE_LOGLEVEL 4 /* KERN_WARNING */
/* We show everything that is MORE important than this.. */
#define MINIMUM_CONSOLE_LOGLEVEL 1 /* Minimum loglevel we let people use */
#define DEFAULT_CONSOLE_LOGLEVEL 7 /* anything MORE serious than KERN_DEBUG */
int console_printk[4] = {
DEFAULT_CONSOLE_LOGLEVEL, /* console_loglevel */
DEFAULT_MESSAGE_LOGLEVEL, /* default_message_loglevel */
MINIMUM_CONSOLE_LOGLEVEL, /* minimum_console_loglevel */
DEFAULT_CONSOLE_LOGLEVEL, /* default_console_loglevel */
};
然後在 include/linux/kernel.h 中分別定義:
extern int console_printk[];
#define console_loglevel (console_printk[0])
#define default_message_loglevel (console_printk[1])
#define minimum_console_loglevel (console_printk[2])
#define default_console_loglevel (console_printk[3])
在系統啟動以後,可以:
$ cat "8 4 1 4" > /proc/sys/kernel/printk
改變 console level。但是如果是連 kernel boot time 都要的話,就只有改 console_printk[] 了。
把 DEFAULT_CONSOLE_LOGLEVEL 定義成 8 就可以。
沒有留言:
張貼留言