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

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

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

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

如果您知道哪里有一些好的文档,我也很乐意阅读。

答案1

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

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

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

答案2

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

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

答案3

大多数时候,如果您的网卡之类的东西没有自动显示,您需要访问硬件制造商的网站,看看他们是否有 Linux 版本。

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

相关内容