![Linux 术语中的“固件”是什么?](https://linux22.com/image/109912/Linux%20%E6%9C%AF%E8%AF%AD%E4%B8%AD%E7%9A%84%E2%80%9C%E5%9B%BA%E4%BB%B6%E2%80%9D%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我对使用感到困惑固件在Linux环境下。
我对固件和驱动程序的理解是,固件是在设备的裸机上运行的代码,例如蓝牙 IC、键盘控制器、显卡或单一用途微控制器。固件公开一个接口供操作系统使用其服务。
相比之下,驱动程序是内核用来与前面提到的固件提供的接口进行通信的软件。因此,有视频驱动程序、键盘驱动程序、蓝牙无线电驱动程序。
那么为什么我一直在阅读有关必须安装 Linux 固件文件的信息(例如这里)。这些会上传到硬件中吗?这些文件是内核使用的吗?是什么意思固件在这种情况下?
答案1
在 Linux 内核上下文中,固件是在系统中的另一个处理器上运行的软件,例如无线控制器、GPU、SCSI控制器……这些软件过去存储在相关控制器附带的ROM(各种类型)中,但为了降低成本和使升级更简单,控制器现在倾向于依赖主机操作系统为他们加载固件。
因此,固件文件不被内核使用,它们被内核加载到其他硬件上。这也是 FLOSS 系统中没有源代码的软件被模糊地接受的原因:争论的焦点是它不是在主 CPU 上运行,而是在另一台设备上运行。