Linux驱动程序如何工作?在哪里可以找到它们?(特别是NIC驱动程序)


11

我想知道驱动程序如何在Linux下运行。驱动程序是可以编辑的单个文件吗?是否有正在使用的当前驱动程序列表,或者在每个设备的其他位置都可以找到它们?

我对了解我的网络适配器的驱动程序特别感兴趣。

如果您知道一些好的文档在哪里,我也想阅读。

Answers:


6

驱动程序与任何其他程序都非常相似,它们可以包含多个源文件。Linux设备驱动程序可以直接编译到内核或内核模块中。内核模块的优点是能够动态加载(即,您无需编译新内核即可使用它们)。

您显然总是可以查看Linux源代码,但是起初这可能是艰巨的任务。但是,与Linux驱动程序一样,驱动程序都是文件。这意味着其他程序可以通过VFS接口访问它们。例如,您可以ioctl()使用设备文件通过调用来控制CDROM 。

我强烈建议您查看Linux设备驱动程序。它是免费提供的,将回答您的问题。特别是,您可以通读第2章,它向您展示了如何创建一个简单的“ Hello,Kernel”模块。它可能远远超出您的要求,但是您可以阅读您感兴趣的点点滴滴。而且它是免费的。; P


3

Linux驱动程序是使用内核构建的,可以在其中编译或作为模块编译。或者,可以根据源树中的内核头构建驱动程序。您可以通过键入查看当前已安装内核模块的列表lsmod,如果已安装,则可以使用来查看通过总线连接的大多数设备lspci

如果当前的内核版本不支持NIC的驱动程序,则需要在供应商处找到驱动程序,并且需要从源代码编译内核模块(针对内核标头)。


1

大多数时候,如果诸如NIC之类的东西没有自动显示,则需要转到硬件制造商的站点,并查看它们是否具有linux版本。

一般而言,Linux驱动程序倾向于采用库或模块的形式。

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.