Linux firmware

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

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

Additionally, modern Intel 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.

For kernels before 4.18:

For kernels beginning with 4.18:

Savedconfig
After emerging, the configuration file is made into. You can edit and comment out the line which you don't want to install. Edit and save the file and re-emerge with the   USE flag:

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