对于外部 USB 设备,为什么 Linux 除了驱动程序之外还需要固件?

对于外部 USB 设备,为什么 Linux 除了驱动程序之外还需要固件?

几天前,我试图在旧版 Linux 中安装 USB WiFi 适配器。我成功安装了它。

但我遵循的程序不仅要求我安装驱动程序,还要求我安装该适配器中使用的芯片的固件。

我搜索了固件,并了解到固件是在硬件上运行的软件。但固件不是像路由器中的固件一样预装在适配器中吗?如果它没有预装在芯片中,那为什么呢?

答案1

Ubuntu 维基

许多设备都有两个必不可少的软件部分,使它们在操作系统中运行。第一个是工作驱动程序,它是让您的系统与硬件对话的软件。第二个是固件,通常是一小段代码,直接上传到设备以使其正常运行。您可以将固件视为对设备内部硬件进行编程的一种方式。事实上,在几乎所有情况下,固件都被视为硬件,因为它是一个黑匣子;没有随其免费分发的源代码。

固件通常由开发硬件设备的公司维护。在 Windows 领域,固件通常是您安装的驱动程序的一部分。用户通常看不到它。在 Linux 中,固件可能来自多个来源。一些固件来自 Linux 内核源。其他具有再分发许可证的固件来自上游。不幸的是,有些固件没有允许自由再分发的许可证。

固件与 BIOS 软件有一个共同的重要特征:它无法自我更新。它是完全闭源的(与开源相反),可以通过某些程序重新安装,但下游用户既无法检查也无法更正。

答案2

主要原因是供应商希望在推出产品后能够更改其 USB 设备的固件,因为……

  • ...固件可能有缺陷
  • ...管辖权可能会改变
  • ...供应商希望以后能够支持更多功能
  • ...现场可能会出现兼容性问题

因此,越来越多的USB设备仅配备了引导加载程序并需要上传固件。

相关内容