1、问题描述:
开启Firestarter后Console不断刷出如下内容:
Mar 27 21:25:25 debian kernel: ABORTED IN=wlan0 OUT=
MAC=00:0f:66:a1:89:28:00:12:17:27:5b:71:08:00 SRC=167.104.0.82
DST=192.168.1.103 LEN=40 TOS=0x00 PREC=0x20 TTL=48 ID=34256 PROTO=TCP SPT=443
2、问题原因:
printk的loglevel
3、相关资料:
printk有8个loglevel,定义在中,其中数值范围从0到7,数值越小,优先级越高。
#define KERN_EMERG "<0>" /* system is unusable */ 系统崩溃
#define KERN_ALERT "<1>"/* action must be taken immediately*/必须紧急处理
#define KERN_CRIT "<2>" /* critical conditions */ 临界条件,严重的硬软件错误
#define KERN_ERR "<3>" /* error conditions */ 报告错误
#define KERN_WARNING "<4>" /* warning conditions */警告
#define KERN_NOTICE "<5>" /* normal but significant condition */普通但还是须注意
#define KERN_INFO "<6>" /* informational */ 信息
#define KERN_DEBUG "<7>" /* debug-level messages */ 调试信息
未指定优先级的默认级别定义在/kernel/printk.c中:
/* printk's without a loglevel use this.. */
#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 */默认终端级别
};
当优先级的值小于console_loglevel这个整数变量的值,信息就在Console显示出来。
而console_loglevel的初始值DEFAULT_CONSOLE_LOGLEVEL也定义在/kernel/printk.c中:
$cat /proc/sys/kernel/printk
7 4 1 7
4、问题解决:
这个默认值可以在sysctl.conf中设定,系统启动时就把sysctl.conf中的值写到/proc/sys/kernel/printk。
去掉sysctl.conf中“kernel.printk = 4 4 1 7”的注释。
再使用下面的命令修改其值 ,避免重启系统
#echo 4 > /proc/sys/kernel/printk
#cat /proc/sys/kernel/printk
4 4 1 7