假设有一家 A 公司发布了一款新的图形适配器。谁来管理这个新的图形适配器在未来得到 Linux 内核支持的过程?进展如何?我很好奇内核对新硬件的支持是如何处理的; Windows上的公司都自己开发驱动程序,但是Linux是如何获得特定硬件的支持呢?
答案1
驱动程序支持的工作方式与所有开源软件的工作方式相同:有人决定自己挠痒痒。
有时,驱动程序由提供硬件的公司提供,就像在 Windows 上一样。 Intel 为他们的网络芯片做到了这一点,3ware 为他们的 RAID 控制器做到了这一点,等等。这些公司已经决定提供驱动程序符合他们的最大利益:他们的“渴望”是将产品出售给 Linux 用户,这意味着确保有司机。
在最好的情况下,该公司会努力将其驱动程序放入 Linux 发行版附带的适当源代码库中。对于大多数驱动程序来说,这意味着 Linux 内核。对于图形驱动程序来说,这意味着X.org。还有计算机辅助系统对于打印机驱动程序,坚果对于 UPS 司机来说,萨内这样做的明显好处是,在驱动程序被接受后制作的 Linux 发行版将立即支持硬件。最大的缺点是,公司需要做更多的工作来与开源项目协调以获取他们的驱动程序,出于同样的基本原因,两个独立的团队很难协调任何事情。
还有一些公司选择直接提供驱动程序源代码。您通常必须从他们的网站下载驱动程序源代码,在您的系统上构建它,然后手动安装。这些公司通常规模较小或专业制造商,没有足够的员工,因此他们没有精力与适当的开源项目进行协调,以将其驱动程序纳入该项目的源代码库。
极少数公司提供纯二进制驱动程序而不是源代码。一个例子是来自 NVIDIA 等公司的更先进的 3D 驱动程序。通常,这样做的原因是公司不想泄露他们认为专有的信息。此类驱动程序通常无法像前面的情况那样与许多 Linux 发行版兼容,因为提供硬件的公司不会费心重建其驱动程序来跟踪 API 和 ABI 更改。最终用户或 Linux 发行版提供商可以调整作为源代码提供的驱动程序来跟踪此类更改,因此在前两种情况下,通常可以使驱动程序比二进制驱动程序适用于更多的系统。
当公司不提供 Linux 驱动程序时,社区中的某个人就会决定提供。在某些大类硬件中,这种情况很常见,例如 UPS 和打印机。很少有用户能够 a) 拥有硬件; b) 有时间; c) 具有技能; d) 愿意花时间开发驱动程序。对于流行的硬件来说,这通常不是问题,因为对于数百万的 Linux 用户来说,这少数人确实存在。您会因不常见的硬件而陷入麻烦。
答案2
为了详细了解这一点,最近Raspberry Pi 3问世并添加了蓝牙芯片。现在这是 Broadcom BLE 芯片,Raspberry Pi 内核不支持它,因此bluez
Linux 库无法工作。现在理想情况下,应该有该 BLE 芯片的固件补丁,并且需要再次编译内核才能将其提供给用户。是对的吗?