在里面udev 的维基百科文章:
设备驱动程序是Linux内核的一部分,设备发现、状态改变等都是由Linux内核处理的。但是将驱动程序加载到内存后,内核执行的唯一操作就是向用户空间守护进程 udevd 发送一个事件。
看起来内核负责在检测到设备时插入相应的内核模块,并udev
在插入内核模块后接收事件。
然而,在udev 的 ArchWiki 页面:
udev 通过利用编码并行性来加载内核模块,以提供与串行加载这些模块相比的潜在性能优势。
我很困惑。谁负责插入内核模块,内核还是udev
?
答案1
有些设备驱动程序是与内核一起编译的,这意味着它们在内核启动时就已经加载了。还有一些在 中initrd
,并在启动时与内核一起加载。
内核启动后,会将uevent
s 发送到用户空间。udev
看到它们,并根据文件中包含的规则加载适当的模块modules.alias
。
有关 udev 的更多信息(档案, 页面已移动这里)