内核中内置了哪些设备驱动程序?

mat*_*975 16 hardware kernel drivers

我最近在硬件设备上安装了供应商提供的嵌入式 linux。当我lsmod在设备命令行上运行时,响应为空。我相信这意味着设备上运行的硬件的驱动程序已内置到内核中,而不是作为 .ko 文件。我的问题是:这个过程是如何发生的?

对流行硬件的支持是否会在后续版本中逐渐集成到内核中从而取代 .ko 文件?.ko 文件是否仅用于支持在发布时没有内核集成驱动程序支持的新硬件?以我有限的知识,我认为所有硬件驱动程序都是 .ko 文件的形式,但显然这是错误的。

我对整个过程感到有些困惑,希望得到澄清,因为我觉得我可能以错误的方式看待这种情况。

ish*_*ish 11

被认为对内核加载至关重要的核心驱动程序通常内置于内核中,而其他硬件驱动程序等则内置为模块或.ko文件。

.ko模块通常在存储/lib上的目录的根分区。要使用其中任何一个,内核必须首先能够检测和访问底层存储设备,然后访问其文件系统。因此可以安全地假设一个没有内置 SATA/SCSI 和 ext2/3/4 支持的内核不会真正启动;)

您可以选择将大多数内置内核驱动程序转换为模块形式。Ubuntu 内核团队决定是否修改 Linux 内核团队的默认配置,并为您下载的库存内核映像包含/排除其他内置驱动程序。

如果您构建自己的内核,则可以执行相同的操作:

在此处输入图片说明

  • 在上面的屏幕截图中,*表示内置驱动程序,而M表示模块。
  • 默认情况下内置了环回设备支持,这对于启动系统通常是必不可少的。
  • 低速 USB 驱动程序 (USB 1.0) 也是默认内置的,允许您从 U 盘启动,但这里我将其更改为模块。