我正在编写一个内核模块,我希望能够在使用insmod module.ko
.
我尝试使用
printk(KERN_EMERG "test kernel emergency\n");
但我的控制台上什么也没有出现。然而,它确实出现在dmesg
.
额外信息:
我正在使用带有 linux-3.0.0 的 Intel x86 32 位
并cat /proc/sys/kernel/printk
给出4 4 1 7
我正在编写一个内核模块,我希望能够在使用insmod module.ko
.
我尝试使用
printk(KERN_EMERG "test kernel emergency\n");
但我的控制台上什么也没有出现。然而,它确实出现在dmesg
.
额外信息:
我正在使用带有 linux-3.0.0 的 Intel x86 32 位
并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");
延斯,
printk 输出被发送到内核并由 syslogd 守护进程收集。dmesg 回显 syslogd 守护程序收集的数据。
如果您使用的是图形版本的 linux,您的控制台(从您调用 insmod 的位置)可能不会打印此消息。我已经在 ubuntu 中尝试过了,即使日志级别是 ALERT 或 EMERGENCY,它也不会打印 printk 消息。
您需要修改系统日志以将紧急内核消息打印到控制台(或特定用户或 tty)。
有许多 syslog 守护程序,如果您不控制您使用的守护程序并且您不是 root,那么您就不走运了。如果你确实控制了你使用的那个,syslog-ng 非常好,并且在它的手册中有如何做到这一点的例子。