【问题标题】:Insmod is not workingInsmod 不工作
【发布时间】:2016-10-22 23:43:09
【问题描述】:

insmod/rmmod 无法识别参数。即使没有任何参数的insmod 也会被执行。系统似乎只识别命令。

通过insmod 命令可以动态插入内核模块,但是当我执行insmod testStub.ko 时,什么也没有发生。我在lsmod 结果中看不到我的模块,也看不到我在testStub.cdmesg 中写的任何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


【解决方案1】:

您的源文件缺少模块许可证,这会在您尝试插入模块时污染内核。将以下行添加到您的源代码中以使其工作。

MODULE_LICENSE("GPL");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多