Linux 术语中的“固件”是什么?

wop*_*wop 30 firmware terminology

我对在 Linux 环境中使用固件感到困惑。

我对固件和驱动程序的理解是,固件是在设备的裸机上运行的代码,例如蓝牙 IC、键盘控制器、视频卡或单一用途的微控制器。固件公开了操作系统使用其服务的接口。

相比之下,驱动程序是内核用来与固件提供的前面提到的接口进行通信的软件。因此,视频驱动程序、键盘驱动程序、蓝牙无线电驱动程序。

那么为什么我一直在阅读有关必须安装的 Linux 固件文件的信息(例如在这里)。这些会上传到硬件中吗?这些文件是否被内核使用?在这种情况下固件的含义是什么?

Ste*_*itt 41

在 Linux 内核上下文中,固件是在系统中的另一个处理器上运行的软件,例如无线控制器、GPU、SCSI 控制器……该软件曾经存储在连接到相关控制器的 ROM(各种类型)中,但为了降低成本并使升级更简单,控制器现在倾向于依靠主机操作系统为其加载固件。

因此内核不使用固件文件,它们由内核加载到其他硬件上。这也是在 FLOSS 系统中使用没有源代码的软件模糊可接受的原因:争论认为它不是在主 CPU 上运行,而是在另一个设备上运行。

  • @defalt 是的,`/lib/firmware`(单数,没有 `/etc`)包含其他设备使用的固件。许多设备(包括无线控制器和 GPU)需要主机系统提供的固件,即使它们可能有自己的包含固件的 ROM(或闪存)。 (5认同)
  • 不是每个人都可以成为 RMS。 (3认同)
  • 这不仅仅是在 Linux 内核上下文中,它是多处理器系统上下文中“固件”的一个相当一般的定义。 (2认同)
  • 为了清晰起见,投票赞成。尽管我建议在第一句中说“通常运行”,因为某些固件是由 CPU 本身执行的,例如 CPU 微代码和 PC 平台的系统固件、BIOS 及其后继 UEFI。 (2认同)