You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

内核模块无法内置、设备树探测失效及自动加载配置错误排查

内核模块编译与自动加载问题排查

问题背景

我正在开发两个内核模块:一个类模块、一个设备驱动模块。当前遇到的问题是:

  • 两个.ko模块无法被编译为内置模块,也不会触发设备树中的设备探测;
  • 只有通过insmod手动先插入类模块、再插入驱动模块时,才会创建设备文件。

文件结构与配置

文件放置在package/kernel/mypackage目录下,该目录的Makefile内容如下:

define KernelPackage/mypackage
 ...
 FILES:= $(PKG_BUILD_DIR)/mydriver.ko $(PKG_BUILD_DIR)/myclass.ko
 AUTOLOAD:=$(call AutoLoad,30,mypackage,1)
 ...
endef

src目录下存放源码文件,其Makefile内容为:

obj-m += myclass.o
obj-m += mydriver.o

错误现象

  • 执行make V=s package/kernel/mypackage/{clean,compile}时,屏幕显示need-built-in=1,但仅执行make V=s时无该提示;
  • 若将obj-m改为obj-y,编译完全失败,提示缺少.ko文件(工作目录中确实不存在这些文件)。

问题根源(更新)

此前的分析方向正确,但真正的问题出在AUTOLOAD配置项:
原来的配置使用了包名mypackage:

AUTOLOAD:=$(call AutoLoad,30,mypackage,1)

正确的配置应该指定要自动加载的模块/驱动名称:

AUTOLOAD:=$(call AutoLoad,30,mydriver,1)

内容的提问来源于stack exchange,提问作者Anonymous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 08:57:13