Busybox Bitbake 配置不保存

Busybox Bitbake Config does not save

我正在尝试将 devmem 添加到我的 yocto 映像中。我这样做我 运行 命令

bitbake -c menuconfig busybox

我转到其他实用程序并在 devmem 菜单中放置一个 *。退出并保存配置然后执行

bitbake busybox

其次是

bitbake core-image-full-cmdline

当我启动我的设备时,devmem 程序不存在,当我重新运行 busybox 的menuconfig 时,devmem 选项不再被选中!我该怎么做才能解决这个问题?

Busybox 就像其他使用 .config 定义需要编译到最终输出中的功能的项目一样,就像 Linux 内核和 U-boot,等等

所以,这里是如何在 Yocto 中处理它们:

当你运行:

bitbake busybox -c menuconfig

它将 运行 make menuconfig 进入其工作目录并为您打开配置菜单。

现在,如果您保存并退出,只有工作目录中的 .config 会被更改,这意味着如果配方再次解压,您的修改将会丢失。

此外,当您通过 menuconfig 更改 .config 时,您需要强制编译 busybox 配方,因为对于 bitbake 它已经构建好了:

bitbake busybox -c compile -f

但是,为了获得最佳实践,如果您希望您的修改成为可以轻松从配方中启用或禁用的功能,我建议您这样做:

  1. 运行: bitbake busybox -c menuconfig
  2. 编辑并保存您的修改
  3. 运行: bitbake busybox -c diffconfig

diffconfig 命令将为您提供一个 fragment.cfg 文件,其中包含您刚刚所做的修改。

文件应包含:

CONFIG_DEVMEM=y

关于片段的快速解释:

当你打开menuconfig时,它备份.config.config.old,然后diffconfig会在你修改保存到[=19后告诉你它们之间的区别=].

现在,Busybox 和其他使用配置文件的食谱一样,他们明白如果 .cfg 文件存在于他们的工作目录中,他们需要在编译前将它应用到他们的主 .config 文件.

因此,在获得 fragment.cfg 之后,您需要做的是在您的自定义配方中创建一个 .bbappend 配方到 busybox 并指定您的新片段:

meta-custom/
     | recipes-core/
         | busybox/
             | busybox_%.bbappend
             | busybox/
                 | devmem.cfg

现在,busybox_%.bbappend 包含:

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI += "file://devmem.cfg"

现在,当您再次 re-bitbake Busybox 时,它会解压片段并应用它。

要检查片段是否在 bitbake 完成后应用,您可以检查 .config 文件:

  1. 首先获取Busybox的Build目录路径
bitbake -e busybox | grep ^B=
  1. CONFIG_DEVMEM
  2. 的 Grep
grep CONFIG_DEVMEM <path_of_previous_command>/.config

你应该看到:

CONFIG_DEVMEM=y