如何在Linux内核中添加新的硬件支持?


19

想象有一家公司A发布了新的图形适配器。谁来管理导致Linux内核将来支持此新图形适配器的过程?如何进行?我很好奇如何处理对任何新硬件的内核支持。Windows公司可以自行开发驱动程序,但是Linux如何获得特定的硬件支持?

Answers:


26

驱动程序支持的工作方式与所有开源程序相同:有人决定挠痒痒。

有时,驱动程序由提供硬件的公司提供,就像在Windows上一样。英特尔为其网络芯片执行此操作,3ware为其RAID控制器执行此操作,等等。这些公司已决定提供驱动程序符合他们的最大利益:他们的“痒”是向Linux用户出售产品,这意味着确保那有司机。

在最佳情况下,该公司会努力将其驱动程序带入Linux发行版附带的适当源库中。对于大多数驱动程序,这意味着Linux内核。对于图形驱动程序,它表示X.org。还有用于打印机驱动程序的CUPS,用于UPS驱动程序的NUT,用于扫描仪驱动程序的SANE等。这样做的明显好处是,在驱动程序被接受后制作的Linux发行版将对现成的硬件提供支持。最大的弊端是,公司要与开源项目进行协调以吸引其驱动程序还需要做更多的工作,基于相同的基本原因,两个独立的小组很难协调任何事情。

然后就是那些选择直接提供驱动程序源代码的公司。通常,您必须从其网站上下载驱动程序源代码,在系统上进行构建,然后手动安装。这样的公司通常是较小的或专业的制造商,没有足够的员工,他们可以不遗余力地与适当的开源项目进行协调,以使他们的驱动程序进入该项目的源码库。

很少有公司提供仅二进制驱动程序而不是源代码。例如NVIDIA之类的公司提供的更高级的3D驱动程序。通常,这样做的原因是该公司不想泄露他们认为专有的信息。此类驱动程序通常无法与以前的案例一起在许多Linux发行版中使用,因为提供硬件的公司不会费心重建驱动程序来跟踪API和ABI更改。最终用户或Linux发行版提供程序可能会调整作为源代码提供的驱动程序以跟踪此类更改,因此在前两种情况下,与二进制驱动程序相比,通常可以使该驱动程序与更多的系统一起使用。

当公司不提供Linux驱动程序时,社区中的某人只是决定这样做。这是一些常见的大型硬件,例如UPSes和打印机。拥有以下硬件的用户很少见:a)具有硬件;b)有时间;c)有技巧;d)倾向于花时间开发驾驶员。对于流行的硬件,这通常不是问题,因为在数百万的Linux用户中,确实很少有人存在。您会遇到不常见的硬件问题。


0

为了详细了解这一点,最近发布了Raspberry Pi 3并添加了蓝牙芯片。现在这是Broadcom BLE芯片,而Raspberry Pi内核不支持它,因此bluezLinux的库不起作用。现在,理想情况下,应该为该BLE芯片安装固件补丁,并且需要再次编译内核以使其对用户可用。那正确吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.