从 Yocto 配方中设置内核配置片段变量

问题描述 投票:0回答:1

我有一个带有内核 bbappend 文件的 Yocto 层,它添加了我自己的内核配置片段和对

linux-firmware
包的依赖。我想将 i915 固件直接嵌入到 Linux 内核中。我需要做的就是在我的
firmware.cfg
片段文件中设置两个变量:

CONFIG_EXTRA_FIRMWARE="i915/bxt_dmc_ver1_07.bin"
CONFIG_EXTRA_FIRMWARE_DIR="${WORKDIR}${base_libdir}/firmware"

问题在于 Linux 配置片段是在配置步骤中进行预处理的,而不是在配方执行步骤中进行的。路径

${WORKDIR}${base_libdir}/firmware
扩展为
/lib/firmware
,因此看起来此时
${WORKDIR}
变量尚未设置,但
${base_libdir}
变量已包含正确的值。我还尝试使用
${STAGING_FIRMWARE_DIR}
文件中找到的
openembdded-core/meta/conf/bitbake.conf
,但此变量扩展为空值。

是否可以将 bitbake 变量从附加的内核配方传递到 Yocto 中的内核配置片段?如果不是,可以使用什么替代解决方案使用 Yocto 将固件嵌入到内核中?

linux-kernel yocto bitbake yocto-recipe
1个回答
0
投票

看起来 Yocto 不支持直接嵌入固件,这是我的解决方法:

  1. 我需要将附加文件添加到
    linux-firmware
    配方中,并使其将固件安装到sysroot;
  2. 我创建了一个自定义 bbclass,它使用
    .config
    do_configure
    步骤中更改 linux
    sed
    文件,并从 Linux 内核的附加文件中添加了所需的固件。
  3. 我还添加了对内核配方的构建时间依赖性,以便它可以在 sysroot 中找到固件。
    
        
© www.soinside.com 2019 - 2024. All rights reserved.