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
但是,为了获得最佳实践,如果您希望您的修改成为可以轻松从配方中启用或禁用的功能,我建议您这样做:
- 运行:
bitbake busybox -c menuconfig
- 编辑并保存您的修改
- 运行:
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
文件:
- 首先获取Busybox的Build目录路径
bitbake -e busybox | grep ^B=
- CONFIG_DEVMEM
的 Grep
grep CONFIG_DEVMEM <path_of_previous_command>/.config
你应该看到:
CONFIG_DEVMEM=y
我正在尝试将 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
但是,为了获得最佳实践,如果您希望您的修改成为可以轻松从配方中启用或禁用的功能,我建议您这样做:
- 运行:
bitbake busybox -c menuconfig
- 编辑并保存您的修改
- 运行:
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
文件:
- 首先获取Busybox的Build目录路径
bitbake -e busybox | grep ^B=
- CONFIG_DEVMEM 的 Grep
grep CONFIG_DEVMEM <path_of_previous_command>/.config
你应该看到:
CONFIG_DEVMEM=y