linux内核模块不能自动加载

时间:2015-05-09 14:59:04

标签: c linux kernel

我正在研究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)**

任何建议将不胜感激

2 个答案:

答案 0 :(得分:1)

有时在发出printk和在dmesg中显示消息之间会有一些延迟。您可以从dmesg输出中看到:" hello world"的时间戳。对于"再见"

,小于80秒

不知道为什么,但消息的级别越多,延迟越小。您可以尝试KERN_INFO甚至KERN_ALERT。

答案 1 :(得分:1)

您所描述的内容听起来像是在printk的末尾没有包含换行符(“\ n”)。

由于您没有共享您的实际代码,因此您的insmod显然不是来自示例。 (insmod akmod.ko?为什么akmod?akmod是一个完全不同的东西。)调试这是一个完整的猜测。