有没有办法防止升级内核时出现 "missing firmware" 问题?

Is there a way to prevent the "missing firmware" problem showing up when upgrading kernel?

我正在设置我自己的服务器,我决定定制我自己的内核。

make install后,终端出现警告信息:
W: Possible missing firmware /lib/firmware/i915/bxt_huc_ver01_8_2893.bin for module i915

我知道如何在升级内核后修复它,但我想了解如何防止它。不知道有没有什么方法可以达到这样的效果,有的话请赐教。

我会非常感谢你的。

简答,安装或升级linux-firmware以获得该固件。

警告实际上来自 mkinitramfs(8) 钩子。它查看要安装在 initramfs 中的模块,并使用内核源代码中的 MODULE_FIRMWARE() 宏检查模块列出的所有可能需要的固件文件,并将固件文件与模块一起安装在 initramfs 中。如果找不到固件,您会收到警告。

当探测安装在 initramfs 中的模块时,还没有可用的 rootfs,您可能缺少模块所需的固件文件。根据模块和固件的不同,您新安装的内核可能无法运行。

如果在内核安装或升级后将固件文件安装到 rootfs 以解决问题,则需要 运行 update-initramfs(8) 将固件也复制到 initramfs。

在这种特定情况下,i915 模块只会在您 运行在 Broxton 平台上使用该模块时才会使用该模块,即使在默认情况下也不会使用它。

防止警告的最佳选择是在内核安装时在 rootfs 中提供固件(通常在 /lib/firmware 下)。另一种选择是从 initramfs 中排除相关模块,然后在它可用时从 rootfs 中探测它。显然,您也可以修补工具以跳过警告,或修补驱动程序以不使用 MODULE_FIRMWARE() 列出文件,但最好避免这些黑客行为。