Configuration Bitbake附加文件以重新配置内核

Configuration Bitbake附加文件以重新配置内核,configuration,linux-kernel,bitbake,Configuration,Linux Kernel,Bitbake,我正在尝试重新配置一些.config变量,以生成启用wifi支持的修改内核。内核的本机层/配方位于以下目录中: meta-layer/recipes-kernel/linux/linux-yocto_3.19.bb $ cp fragment.cfg custom-layer/recipes-kernel/linux/linux-yocto/ tmp/work/platform/linux-yocto/3.19-r0 首先,我重新配置本机内核以添加wifi支持(例如

我正在尝试重新配置一些.config变量,以生成启用wifi支持的修改内核。内核的本机层/配方位于以下目录中:

    meta-layer/recipes-kernel/linux/linux-yocto_3.19.bb
    $ cp fragment.cfg custom-layer/recipes-kernel/linux/linux-yocto/
    tmp/work/platform/linux-yocto/3.19-r0
首先,我重新配置本机内核以添加wifi支持(例如,添加CONFIG_WLAN=y):

之后,我生成一个“fragment.cfg”文件:

我已将此目录创建到我的自定义图层中:

    custom-layer/recipes-kernel/linux/linux-yocto/
我已将“fragment.cfg”文件复制到以下目录:

    meta-layer/recipes-kernel/linux/linux-yocto_3.19.bb
    $ cp fragment.cfg custom-layer/recipes-kernel/linux/linux-yocto/
    tmp/work/platform/linux-yocto/3.19-r0
我创建了一个附加文件来定制本机内核配方:

    custom-layer/recipes-kernel/linux/linux-yocto_3.19.bbappend
这是此追加文件的内容:

    FILESEXTRAPATHS_prepend:="${THISDIR}/${PN}:"
    SRC_URI += "file://fragment.cfg"
do_configure_append() {
    cat ${WORKDIR}/*.cfg >> ${B}/.config
}
之后,我执行内核编译:

    $ bitbake linux-yocto -c compile -f
执行此命令后,可以在此工作目录中找到“fragment.cfg”文件:

    meta-layer/recipes-kernel/linux/linux-yocto_3.19.bb
    $ cp fragment.cfg custom-layer/recipes-kernel/linux/linux-yocto/
    tmp/work/platform/linux-yocto/3.19-r0
但是,.config文件上没有任何预期变量处于活动状态(例如,未设置config_WLAN)


我如何调试这个问题?我做错了什么?

在分析了不同资源上提出的不同链接和解决方案后,我终于找到了指向一个讨厌但有效的补丁的链接,包括在append文件末尾添加此函数:

    FILESEXTRAPATHS_prepend:="${THISDIR}/${PN}:"
    SRC_URI += "file://fragment.cfg"
do_configure_append() {
    cat ${WORKDIR}/*.cfg >> ${B}/.config
}

这是可行的,但我希望Yocto能管理所有这些东西。如果能知道提议的解决方案有什么问题,那就太好了。提前谢谢你了!

很遗憾,这不是一个真正的答案……因为我挖得不够深

在基于雏菊的构建中,这对我来说很好,但是,当将构建系统更新为Jethro或Krogoth时,我遇到了与您相同的问题

问题: 当添加一个片段时,如

custom-layer/recipes-kernel/linux/linux-yocto/cdc-ether.cfg
linux yocto
build的配置步骤找不到它。但是,如果将其移动到:

 custom-layer/recipes-kernel/linux/linux-yocto/${MACHINE}/cdc-ether.cfg

它将按预期工作。这是一种稍微不太粗俗的工作方式。

添加此配置时,您希望在语句中使用append,例如:


SRC\u URI\u append=”file://fragment.cfg“

如果您的配方基于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
}

如果有人过来,这是jethro和sumo的作品:

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"

SRC_URI_append = " \
  file://fragment.cfg \
"
文件说:


扩展OpenEmbedded build系统在处理配方和附加文件时查找文件和修补程序时使用的搜索路径。BitBake在处理配方时使用的目录由FILEPATH变量定义,并且可以使用FILEEXTRAPATH进行扩展。

哪个版本的OE?您可以向我们展示您的配方吗?我认为您没有rsion与此相关,但如果可能有帮助的话,DISTRO=“poky”和DISTRO_VERSION=“1.8”。配方的内容正好包含在自定义层/recipes kernel/linux/linux-yocto_3.19中。bb附录建议的解决方案在我基于飞思卡尔的poky环境中不起作用(DISTRO=“poky”,DISTRO_VERSION=“1.8”).但至少现在看来很清楚,这是一个损坏的功能,应该在新版本中修复,才能按预期工作。现在我将使用do_configure_append hack修复它。谢谢你的回答,安德斯先生。这就是解决我问题的答案!应用
SRC_URI+=
SRC_URI_append
的顺序显然,ed是不同的。暗示着这一点,但直到现在,我还没有完全意识到我对这一点的不完全理解所带来的后果是多么丑陋。在我的例子中,我是在“附加一个附加”“,我假设的配方是在我的配方调用
SRC_URI+=
后覆盖
SRC_URI
之前解析的。啊!