udev 是否​​加载内核模块?

udev 是否​​加载内核模块?

在里面udev 的维基百科文章

设备驱动程序是Linux内核的一部分,设备发现、状态改变等都是由Linux内核处理的。但是将驱动程序加载到内存后,内核执行的唯一操作就是向用户空间守护进程 udevd 发送一个事件。

看起来内核负责在检测到设备时插入相应的内核模块,并udev在插入内核模块后接收事件。

然而,在udev 的 ArchWiki 页面

udev 通过利用编码并行性来加载内核模块,以提供与串行加载这些模块相比的潜在性能优势。

我很困惑。谁负责插入内核模块,内核还是udev

答案1

有些设备驱动程序是与内核一起编译的,这意味着它们在内核启动时就已经加载了。还有一些在 中initrd,并在启动时与内核一起加载。

内核启动后,会将uevents 发送到用户空间。udev看到它们,并根据文件中包含的规则加载适当的模块modules.alias

有关 udev 的更多信息(档案, 页面已移动这里

相关内容