Linux 固件是一个广义概念,通常指运行在硬件设备上的底层软件组件,用于驱动硬件或实现特定功能。具体包括以下内容:
1. 内核模块固件
Linux内核通过加载固件文件(如`.fw`或`.bin`)驱动硬件设备,例如显卡(如NVIDIA/AMD GPU固件)、网卡(如Intel WiFi微码)、RAID控制器等。这些固件通常存储在`/lib/firmware`目录,由内核按需加载。
2. 设备微码(Microcode)
CPU和芯片组厂商(如Intel、AMD)发布的微码补丁,用于修复硬件缺陷或提升性能。例如Intel的`microcode.dat`或AMD的`amdgpu`固件,需通过引导加载程序(如GRUB)或内核早期加载。
3. 嵌入式系统固件
嵌入式Linux设备(如路由器、IoT设备)的Bootloader(如U-Boot)、内核和根文件系统镜像,可能包含专有驱动或定制化组件(如OpenWRT的`firmware.bin`)。
4. 外设控制器固件
USB控制器(如雷雳固件)、SSD主控(NVMe固态硬盘的FPGA固件)、蓝牙/WiFi芯片(如Broadcom的BCM43xx系列)等依赖厂商提供的二进制Blob。
5. 开源与闭源混合
部分固件以开源形式发布(如Raspberry Pi的VC4 GPU固件),但多数设备(如高通基带、NVIDIA显卡)仍依赖闭源二进制,需合规分发。
6. 固件更新机制
Linux支持通过工具(如`fwupd`)动态更新固件,涉及LVFS(Linux Vendor Firmware Service)标准,适用于戴尔、联想等厂商的硬件。
7. 安全与验证
现代固件要求签名验证(如UEFI Secure Boot),并可能涉及TPM芯片集成。开源项目如Coreboot可替代部分BIOS/UEFI固件。
Linux固件的复杂性源于硬件多样性,开发者需处理许可证兼容性(如GPL与专有协议冲突)和版本适配问题。