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

Yocto自定义镜像内核defconfig修改未生效问题排查

Yocto内核配置与defconfig问题排查及解决

一、fragment.cfg不生效的原因及修复

你仅通过SRC_URI将fragment.cfg复制到内核源码目录,但Yocto内核构建流程不会自动识别这个配置片段。要让配置片段生效,需在bbappend中明确告知构建脚本:

修改linux-qoriq_5.15.bbappend,添加以下内容:

KERNEL_CONFIG_FRAGMENTS += "${WORKDIR}/fragment.cfg"

注意事项:

  • 确保fragment.cfg的语法符合内核配置标准,比如CONFIG_USB_XHCI_HCD=y或# CONFIG_USB_OHCI_HCD is not set
  • 无需移除SRC_URI中对fragment.cfg的引用,KERNEL_CONFIG_FRAGMENTS才是触发配置合并的关键变量

二、自定义defconfig不覆盖的原因及修复

直接通过SRC_URI添加自定义defconfig无法生效,因为Yocto内核Recipe默认从内核源码的arch/xxx/configs/目录或Recipe指定路径加载defconfig,需按以下步骤调整:

1. 明确指定defconfig来源

在bbappend中设置KERNEL_DEFCONFIG变量,指向你的自定义defconfig:

KERNEL_DEFCONFIG = "defconfig"

确保自定义defconfig文件放在linux-qoriq/ls1046ardb/目录下(与补丁同路径),你已配置FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:",Yocto会优先从该路径查找文件。

2. 清理旧构建缓存

若之前已构建过内核,旧的defconfig可能残存在缓存中,需先清理:

bitbake linux-qoriq -c cleansstate

之后重新构建镜像:

bitbake custom-image

额外提示

  • 若你是基于原有defconfig做增量修改,使用KERNEL_CONFIG_FRAGMENTS会比直接替换defconfig更灵活,能避免后续内核版本升级时丢失自定义配置
  • 确认自定义defconfig的文件名与KERNEL_DEFCONFIG指定的完全一致,比如文件名为ls1046ardb_defconfig时,需将KERNEL_DEFCONFIG设为对应名称

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 00:01:38