Linux firmware is a package distributed alongside the Linux kernel that contains firmware binary blobs necessary for partial or full functionality of certain hardware devices. These binary blobs are usually proprietary because some hardware manufacturers do not release source code necessary to build the firmware itself.
Starting at Broxton (a Skylake-based micro-architecture) Intel CPUs require binary blobs for additional low-power idle states (DMC), graphics workload scheduling on the various graphics parallel engines (GuC), and offloading some media functions from the CPU to GPU (HuC).
For security reasons, hotloading firmware into a running kernel has been shunned upon. Modern init systems such as systemd have strongly discouraged loading firmware from userspace.
Including firmware files into binary kernel images that are not available under the terms of the GPL, may result in a violation of the GPL if the image is distributed. It is wise to consult a lawyer before distributing images that contain firmware files from .
A few kernel options are important to consider when building in firmware support for certain devices in the Linux kernel (for kernels beginning with 4.18):
- Firmware loading facility (CONFIG_FW_LOADER)
- This option is provided for the case where none of the in-tree modules require userspace firmware loading support, but a module built out-of-tree does.
- Build named firmware blobs into the kernel binary (CONFIG_EXTRA_FIRMWARE)
- This option is a string and takes the (space-separated) names of firmware files to be built into the kernel. These files will then be accessible to the kernel at runtime.
Device Drivers --->
Generic Driver Options --->
Firmware loader --->
-*- Firmware loading facility
() Build named firmware blobs into the kernel binary
# Optional: Enable compressed firmware support
[*] Enable compressed firmware support
[*] Enable XZ-compressed firmware support
[*] Enable ZSTD-compressed firmware support
USE flags for sys-kernel/linux-firmware Linux firmware files
|Compress firmware using xz (app-arch/xz-utils) before installation
|Compress firmware using zstd (app-arch/zstd) before installation
|Create symlinks for all firmware that is duplicate using rdfind
|Create and install initramfs for early microcode loading in /boot (only AMD for now)
|Install also non-free (but redistributable) firmware files
|Allows individual selection of firmware files
|Install firmware files whose license is unknown
emerge --ask sys-kernel/linux-firmware
After emerging /etc/portage/savedconfig/sys-kernel/linux-firmware-ddmmyyyy. This file can be edited and the unwanted lines be commented out or deleted. Edit and save the file and re-emerge with the
savedconfig USE flag:
echo sys-kernel/linux-firmware savedconfig >> /etc/portage/package.use/kernel
emerge --ask sys-kernel/linux-firmware
Firmware to be loaded into the kernel can be compressed in order to achieve greater space efficiency and faster read speeds (at the expense of processing time). See the CONFIG_FW_LOADER_COMPRESS kernel symbol for additional information.
xz or zstd (starting from Linux kernel 5.19) compression via appropriate USE-flags. The kernel configuration should include CONFIG_FW_LOADER_COMPRESS_XZ and/or CONFIG_FW_LOADER_COMPRESS_ZSTD options to support these compression formats.supports either
Searching for loaded firmware
dmesg can be grepped to determine what firmware has been loaded:
dmesg | grep -i firmware
emerge --ask --depclean --verbose sys-kernel/linux-firmware
- Fwupd — a daemon that provides a safe, reliable way of applying firmware updates on Linux.
- Kernel — the core of the operating system.
- Iwlwifi — the wireless driver for Intel's current wireless chips.
- Microcode — describes various ways to update a CPU's microcode in Gentoo.
- AMDGPU — the next generation family of open source graphics drivers using the new Display Core (DC) framework for Vega, Raven Ridge and later GPUs. It is however also capable of handling newer AMD/ATI Radeon graphics cards based on GCN1.0+, namely the Southern Islands, Sea Islands, Volcanic Islands, and Arctic Islands chipsets.
- Intel — the open source graphics driver for Intel GMA on-board graphics cards and Intel Arc dedicated graphics cards, starting with the Intel 810.