loading out-of-tree module taints kernel

当加载driver_icm42686.ko模块时遇到内核污染警告,通常是由于驱动与设备树不匹配或未加入Kconfig树。解决方法包括重新编译驱动以匹配当前设备树,确保驱动在Kconfig中配置,并考虑内核签名机制。若模块签名机制未开启,也可能导致此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        调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

不是这么回事!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值