直接文件系统查找

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

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

固件和 initramfs

构建到内核中的驱动程序也应该将固件集成到用于引导内核的 initramfs 中,否则可能会与加载驱动程序和实际根文件系统尚未准备就绪发生冲突。 将固件塞入 initramfs 可以解决此竞争问题,但请注意,使用 initrd 不足以解决相同的竞争问题。

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