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

时间:2013-05-29 08:49:17

标签: linux kernel-module

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

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

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

3 个答案:

答案 0 :(得分:4)

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

objdump -sj.modinfo yourModule.ko

答案 1 :(得分:4)

我刚刚遇到了同样的问题,只有在我在模块的makefile引用的每个 c文件的开头(包含之后)编写MODULE_LICENSE("GPL")之后才解决这个问题。 / p>

答案 2 :(得分:2)

好的,我已经弄清楚我做错了什么。我试图为模块的编译启用-Werror标志。在这样做时,我将以下行添加到makefile:

CFLAGS_MODULE = -Werror

我认为这搞砸了内核的模块许可。删除此行使模块再次工作。如果您遇到此类问题,请确保您没有在makefile中搞乱环境变量。