我正在尝试在 debian wheezy 7.5 上制作我的第一个可加载内核模块。我尝试了一些来自网络上不同教程的示例代码,但它并不像我认为的那样对我有用。
这是我的代码:
#include <linux/module.h>
#include <linux/kernel.h>
void cleanup_module(void)
{
printk(KERN_INFO "exit LKM...");
}
int init_module(void)
{
printk(KERN_INFO "loading LKM...");
return 0;
}
我正在用一个看起来像这样的 Makefile 编译它
obj-m += lkm.o
all:
sudo make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
所以它编译得很好,但是当我用"$ sudo insmod lkm.ko"加载 LKM然后查看日志消息时,它会返回"exit LKM...",所以看起来 insmod 调用了 cleanup_module 系统调用而不是 init_module。同样的事情发生了,当我使用"$ sudo rmmod lkm"时,我在日志消息中得到了"loading LKM.." 。所以我真的不知道为什么会这样,我在网上找到的只是,insmod 通过 init_module() 加载 LKM 等等......
我会很感激一些帮助或解释,因为我真的不知道出了什么问题。
谢谢