直接文件系统查找

直接文件系统查找是内核执行的最常见的固件查找形式。内核在根文件系统的“固件搜索路径”部分记录的路径中直接查找固件。文件系统查找在 fw_get_filesystem_firmware() 中实现,它使用通用的核心内核文件加载器工具 kernel_read_file_from_path()。允许的最大路径为 PATH_MAX -- 目前为 4096 个字符。

建议您将 /lib/firmware 路径保留在根文件系统上,避免为它们设置单独的分区,以避免可能的查找竞争,并避免使用下面记录的自定义回退机制。

固件和 initramfs

内置于内核的驱动程序应将固件也集成到用于引导内核的 initramfs 中,因为否则可能存在加载驱动程序和真正的根文件系统尚未可用的竞争。将固件塞入 initramfs 可以解决此竞争问题,但请注意,使用 initrd 不足以解决相同的竞争问题。

在某些情况下,有理由不想将固件包含到 initramfs 中,例如处理远程 proc 子系统的大型固件文件。对于这种情况,使用用户空间回退机制是目前唯一可行的解决方案,因为只有用户空间才能确切知道真正的根文件系统何时准备好并已挂载。