我有一个带有内核 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 将固件嵌入到内核中?
看起来 Yocto 不支持直接嵌入固件,这是我的解决方法:
linux-firmware
配方中,并使其将固件安装到sysroot;.config
在 do_configure
步骤中更改 linux sed
文件,并从 Linux 内核的附加文件中添加了所需的固件。