ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2012年8月28日 星期二

printk all out - debug console log level

不是所有的 printk 都會印到 console 上,會有 level 的限制。

系統啟動後,在 /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 就可以。

沒有留言:

標籤

網誌存檔