我正在编写一个内核模块,并且希望在使用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相当不错,并且在其手册中提供了有关如何执行此操作的示例。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top