我正在研究linux内核并在此时开始使用hello world模块一切正常但是在编译之后
$ make
并安装
$ insmod akmod.ko
该模块没有在KERN_DEBUG上显示“hello world”消息
$ dmesg
nothing here
$
只在rmmod上显示
$ rmmod akmod
[4543.3423432] hello world
[5462.5323452] goodbye
代码与此处相同:http://www.makelinux.net/ldd3/chp-2-sect-2
我刚刚为KERN_DEBUG更改了KERN_ALERT
我正在使用Debian 8.
我认为这是因为模块不能在 insmod
上自动加载当我跑步时
$ make menuconfig
我找不到选项自动加载内核模块
Loadable module support --->
[*] Enable loadable module support
[*] Module unloading
[ ] Module versioning support (EXPERIMENTAL)
[*] Automatic kernel module loading **(My menu config don´t show this option)**
任何建议将不胜感激
答案 0 :(得分:1)
有时在发出printk
和在dmesg中显示消息之间会有一些延迟。您可以从dmesg输出中看到:" hello world"的时间戳。对于"再见"
不知道为什么,但消息的级别越多,延迟越小。您可以尝试KERN_INFO甚至KERN_ALERT。
答案 1 :(得分:1)
您所描述的内容听起来像是在printk的末尾没有包含换行符(“\ n”)。
由于您没有共享您的实际代码,因此您的insmod显然不是来自示例。 (insmod akmod.ko?为什么akmod?akmod是一个完全不同的东西。)调试这是一个完整的猜测。