I'm setting up my own server and I decide to customize my own kernel.
After make install
, a warning message appears on the terminal:
W: Possible missing firmware /lib/firmware/i915/bxt_huc_ver01_8_2893.bin for module i915
I know how to fix it after upgrading the kernel but I want to learn about how to prevent it. I don't know if there is a method can achieve such an effect, please let me know if there is one.
I will be very thankful to you.
Short answer, install or upgrade linux-firmware
to get that firmware.
The warning actually comes from mkinitramfs(8)
hooks. It looks at the modules to be installed in the initramfs, and checks for all the potentially required firmware files listed by the modules using the MODULE_FIRMWARE()
macro in the kernel source, and installs the firmware files in the initramfs alongside the modules. You get the warning if the firmware can't be found.
When the modules installed in the initramfs are probed, there is no rootfs available yet, and you might be missing firmware files required by the modules. Depending on the module and the firmware, there's a risk your newly installed kernel won't work.
If you install the firmware file to rootfs to fix the problem after the kernel install or upgrade, you'll need to run update-initramfs(8)
to also copy the firmware to initramfs.
In this specific case, the i915 module would only use that module if you're running on Broxton platform, and even there it's not used by default.
The best option to prevent the warning is to have the firmware available in rootfs (typically under /lib/firmware
) at kernel install time. Another option is to exclude the relevant module from initramfs, and probe it later from rootfs instead when it becomes available. Obviously you could also patch the tool to skip the warning, or patch the driver to not list the file using MODULE_FIRMWARE()
, but they are hacks better avoided.