【Linux内核】Ubuntu下printk函数无法在终端显示

前端之家收集整理的这篇文章主要介绍了【Linux内核】Ubuntu下printk函数无法在终端显示前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在Ubuntu下使用insmod安装模块的时候,发现预设的调试信息并没有输出,但是使用dmesg命令可以看到在日志中确实有调试信息,下面分析一下可能的情况。

printk信息的输出去向

这是在内核的命令行参数console=ttyXXX里指定死了,比如console=tty1表示printk的信息输出到终端1。如果是这种情况,你需要使用Ctrl+Alt+(F1-F6)来切换终端。

日志输出级别过低

用printk,内核会根据日志级别,可能把消息打印到当前控制台上,这个控制台通常是一个字符模式的终端、一个串口打印机或是一个并口打印机。这些消息正常输出的前提是──日志输出级别高于console_loglevel(在内核中数字越小优先级越高)。

日志级别一共有8个级别,printk的日志级别定义如下(在include/linux/kernel.h中):

0 #define KERN_EMERG
1 #define KERN_ALERT
2 #define KERN_CRIT
3 #define KERN_ERR
4 #define KERN_WARNING
5 #define KERN_NOTICE
6 #define KERN_INFO
7 #define KERN_DEBUG

查看当前控制台的打印级别

cat /proc/sys/kernel/printk 6 4 1 7

上面显示的4个数据分别对应控制台日志级别默认的消息日志级别最低的控制台日志级别默认的控制台日志级别

修改printk当前控制台日志级别(三个方法): 1. dmesg -n 8 2. echo 8 > /proc/sys/kernel/printk 3. 修改kernel/printk.c,把MINIMUM_CONSOLE_LOGLEVEL定义为7

原文链接:https://www.f2er.com/ubuntu/352436.html

猜你在找的Ubuntu相关文章