【问题标题】:Bitbake append file to reconfigure kernelBitbake 附加文件以重新配置内核
【发布时间】:2016-07-18 00:34:38
【问题描述】:

我正在尝试重新配置一些 .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)。

如何调试此问题?应该是我做错了什么?

【问题讨论】:

  • 哪个版本的 OE?你能告诉我们你的食谱吗?
  • 我认为 OE 版本与此无关,但如果有帮助,DISTRO="poky" 和 DISTRO_VERSION="1.8"。配方的内容正是包含在 custom-layer/recipes-kernel/linux/linux-yocto_3.19.bbappend

标签: configuration linux-kernel bitbake


【解决方案1】:

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

SRC_URI_append = "file://fragment.cfg"

【讨论】:

  • 这是解决我问题的答案! SRC_URI +=SRC_URI_append 的应用顺序显然是不同的。Bitbake User Manual 暗示了这一点,但直到现在我还没有完全理解我对这一点的不完全理解的后果是多么丑陋.就我而言,我是“追加到一个追加”,碰巧我假设的配方在我的配方被覆盖之前被解析SRC_URI我的配方调用SRC_URI +=。哇!
【解决方案2】:

在分析了不同资源上提出的不同链接和解决方案后,我终于发现链接https://community.freescale.com/thread/376369指向一个令人讨厌但有效的补丁,包括在附加文件末尾添加此功能:

do_configure_append() {
    cat ${WORKDIR}/*.cfg >> ${B}/.config
}

它有效,但我希望 Yocto 管理所有这些东西。很高兴知道建议的解决方案有什么问题。提前谢谢!

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      好吧,不幸的是,这不是一个真正的答案......因为我没有深入挖掘。

      这对我来说在基于 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
      

      它会按预期工作。而且它是一种稍微不那么骇人听闻的方法。

      【讨论】:

      • 建议的解决方案在我基于飞思卡尔的 Poky 环境(DISTRO="poky", DISTRO_VERSION="1.8")中不起作用。但至少现在看起来很清楚,这是一个损坏的功能,应该在较新的版本中修复以按预期工作。此刻,我将使用 do_configure_append hack 修复它。谢谢安德斯先生的回答。
      【解决方案5】:

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

      FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
      
      SRC_URI_append = " \
        file://fragment.cfg \
      "
      

      FILESEXTRAPATHS 文档说:

      扩展 OpenEmbedded 构建系统在处理配方和附加文件时查找文件和补丁时使用的搜索路径。 BitBake 在处理配方时使用的目录由 FILESPATH 变量定义,并且可以使用 FILESEXTRAPATHS 进行扩展。

      【讨论】:

        猜你喜欢
        • 2021-01-04
        • 2019-09-30
        • 1970-01-01
        • 2018-10-03
        • 2020-01-05
        • 2011-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多