我尝试重新配置一些.config变量以生成启用了wifi支持的修改内核。内核的本机层/配方位于以下目录中:
meta-layer/recipes-kernel/linux/linux-yocto_3.19.bb
首先我重新配置本机内核以添加wifi支持(例如,添加CONFIG_WLAN = y):
$ bitbake linux-yocto -c menuconfig
之后,我生成一个" fragment.cfg"文件:
$ bitbake linux-yocto -c diffconfig
我已将此目录创建到我的自定义层:
custom-layer/recipes-kernel/linux/linux-yocto/
我已将" fragment.cfg文件复制到此目录中:
$ cp fragment.cfg custom-layer/recipes-kernel/linux/linux-yocto/
我创建了一个附加文件来自定义本机内核配方:
custom-layer/recipes-kernel/linux/linux-yocto_3.19.bbappend
这是此追加文件的内容:
FILESEXTRAPATHS_prepend:="${THISDIR}/${PN}:"
SRC_URI += "file://fragment.cfg"
之后我执行内核编译:
$ bitbake linux-yocto -c compile -f
在此命令之后," fragment.cfg"文件可以在这个工作目录中找到:
tmp/work/platform/linux-yocto/3.19-r0
但.config文件中没有任何预期变量处于活动状态(例如,未设置CONFIG_WLAN)。
如何调试此问题?我认为我做错了什么?
答案 0 :(得分:2)
在分析了不同资源上提出的不同链接和解决方案之后,我终于发现链接https://community.freescale.com/thread/376369指向一个令人讨厌但正常工作的补丁,包括在追加文件的末尾添加此函数:
do_configure_append() {
cat ${WORKDIR}/*.cfg >> ${B}/.config
}
它有效,但我希望Yocto管理所有这些东西。很高兴知道建议的解决方案有什么问题。提前谢谢!
答案 1 :(得分:2)
添加此配置时,您希望在语句中使用append,例如:
SRC_URI_append = "file://fragment.cfg"
答案 2 :(得分:2)
如果您的配方基于kernel.bbclass,那么片段将无效。您需要继承kernel-yocto.bbclass
您还可以使用内核源中存在的merge_config.sh脚本。我做了这样的事情:
do_configure_append () {
${S}/scripts/kconfig/merge_config.sh -m -O ${WORKDIR}/build ${WORKDIR}/build/.config ${WORKDIR}/*.cfg
}
答案 3 :(得分:1)
嗯,不幸的是,不是一个真正的答案......因为我还没有深入挖掘。
在基于Daisy的构建中,这对我来说是正常的,但是,当将构建系统更新到Jethro或Krogoth时,我会遇到与您相同的问题。
问题: 添加像
这样的片段时custom-layer/recipes-kernel/linux/linux-yocto/cdc-ether.cfg
linux-yocto
版本的配置步骤无法找到它。但是,如果将其移至:
custom-layer/recipes-kernel/linux/linux-yocto/${MACHINE}/cdc-ether.cfg
它将按预期工作。并且它是一种不那么迟钝的方式让它发挥作用。
答案 4 :(得分:0)
如果有人过来,这可以在喷气飞机和相扑飞机上进行:
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI_append = " \
file://fragment.cfg \
"
FILESEXTRAPATHS
文档说:
扩展了OpenEmbedded构建系统在处理配方和追加文件时查找文件和补丁时使用的搜索路径。 BitBake处理配方时使用的目录由FILESPATH变量定义,可以使用FILESEXTRAPATHS进行扩展。