Linux firmware

The Linux firmware package binary blobs of firmware necessary for partial or full functionality of certain hardware devices on Linux systems.]] These binary blobs are usually proprietary because certain hardware manufacturers do not release source code necessary to build the firmware itself.

Modern graphics cards from AMD and NVidia almost certainly require binary blobs to be loaded for the hardware to operate correctly.

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). Intel modern Wi-Fi chipsets almost always require blobs.

Installation
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.

Kernel
A few kernel options are important to consider when building in firmware support for certain devices in the Linux kernel:


 * CONFIG_FW_LOADER : This option is provided for the case where none of the in-tree modules
 * CONFIG_FIRMWARE_IN_KERNEL : Enabling this option will build each required firmware blob specified by EXTRA_FIRMWARE into the kernel directly, where the  function will find them without having to make a call out to userspace.
 * 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.

Searching for loaded firmware
dmesg can be grepped to determine what firmware has been loaded: