You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Yocto中覆写linux-firmware配方以排除无用固件?

正确排除Yocto linux-firmware中指定固件的方法

问题原因分析

你之前的bbappend将FILES_${PN}-i915设为空值,会导致linux-firmware-i915子包没有任何可安装文件。若你的镜像默认依赖该子包,Yocto的包管理逻辑会判定该子包无效,进而引发连锁问题,导致所有固件包都未被安装。

解决方案

方案1:排除整个i915固件子包

如果不需要任何i915相关固件,有两种实现方式:

方式A:通过bbappend修改依赖

在你的linux-firmware_git.bbappend中添加以下内容:

# 从主包依赖中移除i915子包
RDEPENDS_${PN} = "${@bb.utils.filter_out('${PN}-i915', d.getVar('RDEPENDS_${PN}'), d)}"

# 清空i915子包的文件、依赖与许可证信息,确保它不被构建安装
FILES_${PN}-i915 = ""
RDEPENDS_${PN}-i915 = ""
LICENSE_${PN}-i915 = ""
LICENSE_${PN}-i915-license = ""
FILES_${PN}-i915-license = ""

方式B:直接在镜像配置中移除子包

在local.conf文件中添加:

IMAGE_INSTALL_remove += " linux-firmware-i915 "

方案2:仅排除指定的i915固件文件

如果只想移除bxt_dmc_ver1_07.bin和bxt_guc_ver9_29.bin这两个特定固件,保留其他i915固件,可在bbappend中修改FILES_${PN}-i915,精准过滤不需要的文件:

# 保留i915目录下所有固件,仅排除指定的两个文件
FILES_${PN}-i915 = "${nonarch_base_libdir}/firmware/i915/* !${nonarch_base_libdir}/firmware/i915/bxt_dmc_ver1_07.bin !${nonarch_base_libdir}/firmware/i915/bxt_guc_ver9_29.bin"

这种写法通过!符号排除特定文件,既保留了其他i915固件,又移除了你不需要的目标文件。

内容的提问来源于stack exchange,提问作者Andrew Ellis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 18:25:39