尽管设置了MODULE_LICENSE,但获取消息"模块许可证'未指定'taints kernel"

Ori*_*rov 6 linux kernel-module

我目前正在尝试运行内核模块.这个模块似乎在各种Linux机器上运行良好,但是,当我尝试在特定的机器(即内核版本为2.6的CentOS)上运行它时,模块无法启动,声称我没有设置模块许可证,因此,不允许我使用各种必要的内核API.

我在主源文件(包含module_init和module_exit)的底部设置了MODULE_LICENSE("GPL"),就我能找到的所有例子而言,这就够了.我应该注意我的项目有多个文件.

我有点难过,所以任何帮助都会受到赞赏.

Arm*_*ali 5

首先,请验证模块对象文件中是否存在许可证信息。

objdump -sj.modinfo yourModule.ko


Yoa*_*ein 5

我刚刚遇到了同样的问题,只有在我MODULE_LICENSE("GPL")在模块的 makefile 所指的每个c 文件的开头(在包含之后)写入后才修复。


Ori*_*rov 3

好吧,我已经知道我做错了什么了。我尝试为我的模块编译启用 -Werror 标志。为此,我将以下行添加到 makefile 中:

CFLAGS_MODULE=-错误

我认为这扰乱了内核模块许可的某些内容。删除这条线使模块再次工作。如果您遇到此类问题,请确保您没有弄乱 makefile 中的环境变量。