【发布时间】:2016-10-22 23:43:09
【问题描述】:
insmod/rmmod 无法识别参数。即使没有任何参数的insmod 也会被执行。系统似乎只识别命令。
通过insmod 命令可以动态插入内核模块,但是当我执行insmod testStub.ko 时,什么也没有发生。我在lsmod 结果中看不到我的模块,也看不到我在testStub.c、dmesg 中写的任何printk 消息。
lsmod/modprobe -l 也不显示任何输出。
lsmod 命令应该显示所有正在运行的模块。在我的系统中它没有输出。
这是testStub.c:
#include <linux/module.h> /* Needed by all modules */
#include <linux/kernel.h> /* Needed for KERN_INFO */
int init_module(void)
{
printk(KERN_EMERG "Module Attached");
return 0;
}
void cleanup_module(void)
{
printk(KERN_INFO "Module Detached!\n");
}
这是 Makefile:
obj-m += testStub.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
【问题讨论】:
-
不清楚您在问什么或遇到什么。尝试给出示例命令和响应。这应该有助于克服您的英语限制。
-
@nategoose 。我已经添加了详细信息。现在描述是否让您了解问题?
-
没有。阅读您的问题的人应该能够尝试重复输出。
cat /proc/modules打印什么? -
insmod sample.ko返回什么值? (可以在同一终端执行echo $?查看)。此外,您的发行版的名称和版本会有所帮助,与您加载的内核版本相同。 -
调用函数
init_module/cleanup_module对于Linux >2.6是不够的,你需要使用module_init/module_exit宏像这里:stackoverflow.com/questions/3218320/…
标签: linux-kernel linux-device-driver kernel-module