如何在Yocto中实现按机器配置内核?
解决Yocto内核配方按机器加载defconfig的问题
1. 修正FILESEXTRAPATHS路径配置
你的路径配置存在格式问题,可采用两种方式修正:
- 通用写法(无需为每个机器单独配置):
Yocto会自动根据当前构建的FILESEXTRAPATHS:prepend := "${THISDIR}/files/${MACHINE}:"MACHINE变量,匹配对应子目录下的文件。 - 分机器写法(确保路径格式正确):
FILESEXTRAPATHS:prepend:machineA := "${THISDIR}/files/machineA:" FILESEXTRAPATHS:prepend:machineB := "${THISDIR}/files/machineB:"
2. 正确配置机器专属内核参数
针对树内、树外defconfig的差异,需明确区分配置逻辑:
# MachineA:使用内核树内defconfig KBUILD_DEFCONFIG:machineA = "machineA_intree_defconfig" SRC_URI:machineA += "file://machineA.patch" # MachineB:使用树外defconfig,需禁用默认树内配置 SRC_URI:machineB += "file://defconfig \ file://machineB.patch" KERNEL_DEFCONFIG:machineB = ""
关键是给machineB设置KERNEL_DEFCONFIG:machineB = "",让Yocto忽略默认树内defconfig,转而使用你提供的外部文件。
3. 验证文件结构匹配
确保你的文件结构与配置完全对应:
recipe-folder |-files | |-machineA | | |-machineA.patch | |-machineB | | |-defconfig | | |-machineB.patch |-linux-recipe_0.1.bb
4. 清理构建缓存(可选)
若之前构建失败留下缓存导致路径识别异常,执行以下命令清理后重新构建:
bitbake -c clean linux-recipe bitbake -c cleansstate linux-recipe
内容的提问来源于stack exchange,提问作者ThePumkinMelon
相关产品推荐
相关产品推荐

