首页 文章

linux内核模块不能自动加载

提问于
浏览
3

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

我找不到选项 Automatic kernel module loading

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 回答

  • 1

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

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

  • 1

    有时在发出 printk 和在dmesg中显示消息之间会有一些延迟 . 您可以从dmesg输出中看到:"hello world"的时间戳比"goodbye"的80秒小 .

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

相关问题