loading out-of-tree module taints kernel

        调IMC42686驱动时,遇到此问题,加载的树外模块污染了内核。

        insmod driver_icm42686.ko

        [   21.047635] driver_icm42686: loading out-of-tree module taints kernel.

        这种错误可以不用理会,但看见此提示,不解决它又觉得不适。

        解决方法

        因此驱动用到了设备树,编译驱动的linux内核与insmod模块的linux的内核设备树不相同导致的,把驱动使用当前linux设备树重新编译一下,可以解决。

        如果以上方法不能解决,那就是另外一个问题了。

          还有一个原因就是没有把此驱动模块加入到 Kconfig 树导致的,即 make menuconfig 的配置选项中没有此驱动。把驱动信息加入到Kconfig树中,普可以通过配置内核来决定哪些驱动需要加载,系统也就不会再报loading out-of-tree module taints kernel的错误了。

         如何把动模块加入到 Kconfig 树,找个驱动目录,打开 Kconfig 文件仿照着写就行,需要修改的还有 Makefile 文件,同样照着添加。

        在驱动代码最后添加一句 MODULE_INFO(intree, "Y"); ,以欺骗内核本模块为树内模块,带欺骗性的东西都不太好,所以最好不要这样搞。

       

/*
 * 内核签名机制配置项:
 */

CONFIG_MODULE_SIG=y
表示开启了签名机制。

CONFIG_MODULE_SIG_FORCE=y
则模块必须有正确的签名才能正常使用。

CONFIG_MODULE_SIG_ALL=y
内核在编译的时候,会主动去给模块签名。

        在网上看到还说与内核在编译的时候选择支持内核签名机制有关,于是搜索了我用的内核,发现这机制并没有开启。

        .config:633:# CONFIG_MODULE_SIG is not set

不是这么回事!

你可能感兴趣的:(Embedded,linux)