【发布时间】:2018-04-13 07:39:34
【问题描述】:
使用 Yocto 项目为 iMX6 开发板构建 linux,我想更改用于构建 u-boot-imx(iMX 开发板的 u-boot)的 .config - 例如例如,将自动启动延迟更改为 1 秒。
我可以编辑配置(例如,找到构建目录并运行 make menuconfig),但是当我运行 bitbake 来重建映像时,它会再次用默认值覆盖 .config。 xxx_defconfig 文件很多,不知道用的是哪个。
我跟随this guide 使用 Yocto 项目进行内核配置。我对 .config 文件进行了更改,并将其复制到我的图层并重命名为“defconfig”。我用 u-boot-imx_2017.03.bbappend 创建了一个新层来扩展 u-boot-imx_2017.03.bb(u-boot-imx 的配方)。
这是我的 u-boot-imx_2017.03.bbappend
FILESEXTRAPATHS_prepend := "${THISDIR}:"
SRC_URI += "file://defconfig"
我还将它添加到我的 layer.conf 中的“BBFILES”
我重建u-boot如下:
bitbake -f -D u-boot-imx -c compile
当我这样做时,构建目录中的 .config 文件将恢复为默认配置(不是我更改的版本),并且生成的 u-boot 二进制文件没有更改(启动延迟仍为 3 秒)。
我认为我的图层正在处理,因为我在输出中看到了这一点:
DEBUG: Appending .bbappend file /home/bob/yocto/morty/sources/meta-mylayer/imx/meta-bsp/recipes-bsp/u-boot/u-boot-imx_2017.03.bbappend to /home/bob/yocto/morty/sources/meta-fsl-bsp-release/imx/meta-bsp/recipes-bsp/u-boot/u-boot-imx_2017.03.bb
我看不到任何调试输出表明存在错误(例如,找不到我的 defconfig 文件)。
如何使用 Yocto 对 u-boot 配置进行这种更改?
===== 编辑 =====
我按照下面 LetoThe2nd 的回答中的说明进行操作。这是我发现的:
bitbake-layers show-appends
有用!在我看到的层中:
u-boot-imx_2017.03.bb:
/home/bob/yocto/morty/sources/meta-mylayer/imx/meta-bsp/recipes-bsp/u-boot/u-boot-imx_2017.03.bbappend
所以看起来它找到了图层。
bitbake -e -c clean u-boot-imx | tee build.log
在 build.log 中寻找“SRC_URI”,我发现了这个:
# $SRC_URI [6 operations]
...
# pre-expansion value:
# "${UBOOT_SRC};branch=${SRCBRANCH} file://defconfig"
SRC_URI="git://git.freescale.com/imx/uboot-imx.git;protocol=git;branch=imx_v2017.03_4.9.11_1.0.0_ga file://defconfig"
file://defconfig 来自我的 bbappend。
寻找UBOOT_MACHINE,我发现:
# $UBOOT_MACHINE [2 operations]
...
UBOOT_MACHINE=" mx6ull_14x14_evk_config"
这看起来是正确的!
我检查了 u-boot-imx 构建目录中的 .config;它仍然不正确。
(我将我层中 defconfig 中 CONFIG_BOOTDELAY 的值与 u-boot-imx 的构建目录中 .config 中的值进行了比较)。
===== 编辑 2 =====
我遵循了下面 LetoThe2nd 答案的附录中的建议 1。 即:
-
为我的 evk 板构建 u-boot-imx 时使用的 xxx_defconfig 文件创建一个补丁(在本例中,[SOURCE DIR]/configs/mx6ull_14x14_evk_defconfig)
使用 .bbappend 将补丁放在我的图层目录中
将 .bbappend 更改为如下所示:
_
FILESEXTRAPATHS_prepend := "${THISDIR}:"
SRC_URI += " file://mx6ull_14x14_evk_defconfig.patch;patchdir=${S}/configs "
- 注意 patchdir=${S}/configs 的使用 - 所以 bitbake 知道在哪里应用补丁,即 [SOURCE DIR]/configs。见this question
这行得通! (即我在补丁中调整的自动启动延迟用于 u-boot-imx)。
我没有尝试过建议 2,因为第一种方法听起来更好。
【问题讨论】:
-
很高兴你成功了!附带说明一下,仅当您的补丁是在要修补的软件包的源树的某个位置创建时,才需要使用 patchdir 设置。如果您在您的情况下执行 diff 一个目录级别,则不再需要该设置。我认为这是最佳实践,但当然在这种特殊情况和情况下它只是次要的。
-
@Jeremy 当您说“.config”时...您的实际意思是什么?哪个文件?
标签: linux embedded yocto bitbake