题
我正在编写一个内核模块,并且希望在使用insmod module.ko
加载时在控制台输出上打印一些内容。
我尝试使用 通用标签
,但我的控制台上没有任何显示。但是,它确实出现在dmesg
中。
其他信息:
我在Linux-3.0.0上使用32位Intel x86
和cat /proc/sys/kernel/printk
给出4 4 1 7
解决方案
1-确保您处于完全终端模式(按Alt + Ctrl + f1)
2-代替printk(KERN_EMERG "test kernel emergency\n");
尝试
printk(KERN_ALERT "test kernel alert\n");
其他提示
Jens
printk输出被发送到内核并由syslogd守护程序收集。 dmesg回显syslogd守护程序收集的数据。
如果您使用的是图形版本的linux,则您的控制台(从您的insmod位置)可能不会打印此消息。我曾在ubuntu中尝试过此方法,即使日志级别为ALERT或EMERGENCY,它也不会打印printk消息。
您需要修改系统日志以将紧急内核消息打印到控制台(或特定用户或ttys)。
有许多syslog守护程序,如果您不控制使用的守护程序并且您不是root用户,那么您就不走运了。如果您确实控制使用的那一台,则syslog-ng相当不错,并且在其手册中提供了有关如何执行此操作的示例。
不隶属于 StackOverflow