linux内核如何处理驱动程序?

乌代·库玛(Uday kumar)

我刚刚阅读了Linux处理硬件驱动程序的方式。显然,大多数硬件驱动程序都已预编译到Linux内核中。我对此有一些疑问...

如果Linux内核包含几乎所有硬件设备的硬件驱动程序,并且如果在Linux上运行的笔记本电脑只有一定数量的硬件设备,那么Linux内核具有的所有冗余硬件驱动程序又如何呢?将所有这些驱动程序保留在内核中并在我们不使用它们的情况下将其保持在系统中并运行仍在浪费资源吗?

库尔特·菲茨纳(Kurt Fitzner)

首先介绍一些历史。在Linux的早期,确实将设备驱动程序直接编译到内核中。实际上,仍然可以直接在其中编译驱动程序,并且许多内核可能仍包含一些非常通用的驱动程序。它的工作方式是早期发行版(例如SLS或Slackware)附带的通用内核实际上将内核支持的每个驱动程序直接编译到其中,因此它可以在尽可能广泛的各种硬件上运行。即使那样,也无法将它们全部放进去,因为其中有些是相互不兼容的。然后,在安装完系统后,您将构建自己的内核,仔细检查配置,以确保为计算机所包含的所有内容提供了正确的驱动程序。有时,您必须在驱动程序中手动编辑头文件,以包括对奇数硬件的支持-使用特定芯片组的以太网卡使用了该芯片组的驱动程序,但有时有一些有趣的实现方式。然后,您将进行编译,安装,并希望在重新启动后即可为自己的计算机构建一个自定义内核。精益求精。实际上,您通常会重复此过程几次,包括错过的事情,添加对遗忘的文件系统的支持或以某种方式调整设置。冲洗并重复。并希望在重新启动后,您可以为您的计算机构建一个自定义内核。精益求精。实际上,您通常会重复此过程几次,包括错过的事情,添加对遗忘的文件系统的支持或以某种方式调整设置。冲洗并重复。并希望在重新启动后,您可以为您的计算机构建一个自定义内核。精益求精。实际上,您通常会重复此过程几次,包括错过的事情,添加对遗忘的文件系统的支持或以某种方式调整设置。冲洗并重复。

幸运的是,那些日子已经过去了。内核很长一段时间以来一直支持可加载模块。这些是内核驱动程序,经过编译后成为一种可以按需加载或卸载的共享库。现在,内核启动的方式是拥有内核文件本身和一个小的压缩文件系统(请参阅Wikipedia上的initramfs),其中包含内核支持的所有内核模块。内核加载,找到其初始文件系统,然后可以开始加载所需的所有驱动程序。

那一点点的历史沿途跳过了很多工作和汗水。在一个巨大的整体内核中使用所有内置驱动程序以及拥有一个全自动驱动程序加载系统之间,我们今天要走的那一步就是必须明确加载模块,对某些模块进行半自动加载等。 ETC。

因此,由于现代内核需要加载他们所需的绝大多数驱动程序,因此在任何现代Linux发行版的内核中都没有大量的冗余硬件驱动程序占用资源。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Linux内核中的USB鼠标使用哪些驱动程序?

ARM Linux内核驱动程序中的关键时序

Linux内核/驱动程序开发的新手

Linux内核驱动程序模块:使用单个驱动程序处理多个设备文件

Zigbee内核驱动程序

Cassandra如何处理Datastax Java驱动程序中的阻塞执行语句

如何处理异常:运行spark-submit时出现“没有合适的驱动程序”

Linux内核:从驱动程序中删除输入处理程序

如何修复在Linux内核SPI驱动程序中始终无法通过验证的SPI驱动程序

如何手动安装linux usbserial内核驱动程序?

如何移植在2.6内核中编译的linux驱动程序,而不在其他新版本的内核中编译

Linux内核-检查当前使用的驱动程序

Linux驱动程序在内核级别受支持吗?

如何处理LAN驱动程序文件以接受Windows Server 2012?

如何处理与芯片组驱动程序捆绑在一起的集成图形驱动程序

如何处理专有旧版驱动程序中的错误?

如何为USB-HID设备使用Linux内核驱动程序绑定/取消绑定接口?

Linux:以独立方式编译内核设备驱动程序

SATA:基本支持需要哪些linux内核驱动程序?

如何在Linux内核的暂存树中编译所有驱动程序?

如何禁用Nouveau内核驱动程序

如何为4.2.0 Linux内核安装BlackMagic驱动程序

linux内核驱动程序调试日志

Linux内核驱动程序-SPI如何识别SPI设备?

在Linux内核中如何处理信号

Linux内核中的WS2812设备驱动程序

如何为我的处理器更新Debian Linux内核使用的驱动程序?

如何获得静态内置在Linux内核中的活动驱动程序的列表?

如何为 USB 网络的 81ry52 芯片启用 Linux 内核驱动程序