内建固件

固件可以构建到内核中,这意味着直接将固件构建到 vmlinux 中,从而避免从文件系统中查找固件。相反,可以直接在内核内部查找固件。您可以使用内核配置选项启用内建固件

  • CONFIG_EXTRA_FIRMWARE

  • CONFIG_EXTRA_FIRMWARE_DIR

您可能希望考虑使用 CONFIG_EXTRA_FIRMWARE 将固件构建到内核中的原因有以下几个:

  • 速度

  • 访问启动设备需要固件,并且用户不想将固件塞入启动 initramfs 中。

即使您有这些需求,也可能有一些原因导致您无法使用内建固件

  • 法律问题 - 固件与 GPL 不兼容

  • 某些固件可能是可选的

  • 固件可以升级,因此新的固件将意味着完整的内核重建。

  • 某些固件文件可能非常大。remote-proc 子系统就是一个处理这些类型固件的子系统示例

  • 固件可能需要动态地从某些设备特定的位置抓取出来,例如某些 WiFi 芯片组的校准数据。此校准数据对于每个售出的设备可能是唯一的。