如何将内核配置添加到Yocto自定义meta层并纳入构建流程
针对cl-som-imx7 + Yocto gatesgarth分支内核配置永久生效的操作方案
你当前操作的核心问题是修改后的defconfig没有被内核构建配方识别,且未清理原有构建缓存,导致配置不生效。另外注意你列出的第一步命令存在拼写错误:
bitbake -c memuconfig virtual/kernel应为bitbake -c menuconfig virtual/kernel,若实际执行时输入错误也会导致配置生成异常。
方案1:使用配置片段(官方推荐,适配性强)
该方案仅增量修改原厂默认配置,后续内核版本升级不受影响,无需全量替换defconfig。
- 执行正确命令进入内核配置界面修改参数:
bitbake -c menuconfig virtual/kernel - 保存退出后,执行命令生成配置差异片段:
bitbake -c diffconfig virtual/kernel - 生成的
.cfg后缀片段文件默认路径为:tmp/work/<平台架构>/linux/<内核版本>/fragment.cfg - 在你的自定义层(请勿修改原厂BSP层)创建
recipes-kernel/linux/files目录,将上述生成的片段文件放入该目录 - 同目录下创建内核配方的append文件,例如
linux-cl-som-imx7_%.bbappend,写入以下内容:
FILESEXTRAPATHS:prepend := "${THISDIR}/files:" SRC_URI += "file://fragment.cfg"
- 清理内核旧构建缓存并重新编译:
bitbake -c cleanall virtual/kernel && bitbake virtual/kernel
方案2:全量替换defconfig(适合完全重写内核配置场景)
- 完成menuconfig配置修改后,进入内核构建目录:
tmp/work/<平台架构>/linux/<内核版本>/build,将该目录下的.config重命名为defconfig - 将重命名后的
defconfig放入自定义层的recipes-kernel/linux/files目录 - 在内核bbappend文件中写入以下内容:
FILESEXTRAPATHS:prepend := "${THISDIR}/files:" SRC_URI += "file://defconfig" KBUILD_DEFCONFIG = "defconfig"
- 注意gatesgarth分支使用冒号
:作为变量覆盖分隔符,请勿使用旧版本的下划线_,否则配置不会被识别 - 清理缓存并重新编译:
bitbake -c cleanall virtual/kernel && bitbake virtual/kernel
配置生效验证方法
- 编译完成后可直接查看内核构建目录下的
.config文件,确认你修改的配置项参数正确 - 镜像烧录到开发板后,执行
zcat /proc/config.gz即可查看运行中内核的实际生效配置
内容的提问来源于stack exchange,提问作者J.P
相关产品推荐
相关产品推荐

