Built-in firmware

Firmware can be built-in to the kernel, this means building the firmwareinto vmlinux directly, to enable avoiding having to look for firmware fromthe filesystem. Instead, firmware can be looked for inside the kerneldirectly. You can enable built-in firmware using the kernel configurationoptions:

  • CONFIG_EXTRA_FIRMWARE

  • CONFIG_EXTRA_FIRMWARE_DIR

There are a few reasons why you might want to consider building your firmwareinto the kernel with CONFIG_EXTRA_FIRMWARE:

  • Speed

  • Firmware is needed for accessing the boot device, and the user doesn’twant to stuff the firmware into the boot initramfs.

Even if you have these needs there are a few reasons why you may not beable to make use of built-in firmware:

  • Legalese - firmware is non-GPL compatible

  • Some firmware may be optional

  • Firmware upgrades are possible, therefore a new firmware would implicatea complete kernel rebuild.

  • Some firmware files may be really large in size. The remote-proc subsystemis an example subsystem which deals with these sorts of firmware

  • The firmware may need to be scraped out from some device specific locationdynamically, an example is calibration data for some WiFi chipsets. Thiscalibration data can be unique per sold device.