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

Yocto:如何配置使用inherit module的树外内核模块配方?

问题描述

我编写了一个基于inherit module的OpenEmbedded配方,用于编译第三方树外内核模块u-dma-buf,配方代码如下:

SUMMARY = "User space mappable DMA Buffer"
DESCRIPTION = "${SUMMARY}"

LICENSE = "BSD-2-Clause"
LIC_FILES_CHKSUM = "file://LICENSE;md5=bebf0492502927bef0741aa04d1f35f5"

inherit module

SRC_URI = "git://github.com/ikwzm/udmabuf.git"
SRCREV = "9b943d49abc9c92a464e4c71e83d1c479ebbf80e"

S = "${WORKDIR}/git"

RPROVIDES_${PN} += "kernel-module-u-dma-buf"

该配方可正常工作,会在镜像中生成模块文件/lib/modules/[version]/extra/u-dma-buf.ko。

但项目文档显示存在默认禁用的选项CONFIG_U_DMA_BUF_MGR,启用后应同时生成/lib/modules/[version]/extra/u-dma-buf-mgr.ko。项目包含Kconfig文件,但修改Kconfig默认值不可行(因为内核源码需修改才能集成Kbuild)。

另外发现上游Makefile支持通过CONFIG_U_DMA_BUF_MGR=m在Kbuild外启用该功能,但不确定如何传递给make命令行。查看module.bbclass代码后,未发现向oe_runmake传递此类选项的机制,是否需要复制module_do_compile()并添加该配置?这是否是最优方法?

综上,在使用inherit module的前提下,针对现有配方,启用该配置选项的正确方法是什么?

解决方案

在使用inherit module的前提下,最优方法是通过扩展EXTRA_OEMAKE变量传递配置参数,无需重写整个do_compile任务,具体步骤如下:

  1. 在配方中添加EXTRA_OEMAKE变量,将CONFIG_U_DMA_BUF_MGR=m传递给编译命令:
EXTRA_OEMAKE += "CONFIG_U_DMA_BUF_MGR=m"

EXTRA_OEMAKE是OpenEmbedded中专门用于向make命令追加额外参数的变量,module.bbclass在调用oe_runmake时会自动包含该变量的内容。

  1. 更新RPROVIDES以包含新生成的模块:
RPROVIDES_${PN} += "kernel-module-u-dma-buf kernel-module-u-dma-buf-mgr"

最终修改后的完整配方如下:

SUMMARY = "User space mappable DMA Buffer"
DESCRIPTION = "${SUMMARY}"

LICENSE = "BSD-2-Clause"
LIC_FILES_CHKSUM = "file://LICENSE;md5=bebf0492502927bef0741aa04d1f35f5"

inherit module

SRC_URI = "git://github.com/ikwzm/udmabuf.git"
SRCREV = "9b943d49abc9c92a464e4c71e83d1c479ebbf80e"

S = "${WORKDIR}/git"

EXTRA_OEMAKE += "CONFIG_U_DMA_BUF_MGR=m"

RPROVIDES_${PN} += "kernel-module-u-dma-buf kernel-module-u-dma-buf-mgr"

补充说明

  • OpenEmbedded本身不直接集成树外模块的Kconfig到内核配置体系中,因为树外模块的Kconfig属于独立项目,无法直接复用内核的配置流程。
  • 使用EXTRA_OEMAKE是最简洁的方式,既保留了module.bbclass提供的所有编译、安装逻辑,又能传递所需的配置参数,避免重写任务带来的维护成本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 10:56:06