设备的内核总线驱动程序探测。 对于每个检测到的设备,内核都会在驱动程序内核将 uevent 发送到 udev 守护程序时为其创建内部设备结构。总线设备通过特殊格式的 ID 来标识自己,这可以识别设备的类型。 通常,这些 ID 由供应商和产品 ID 以及其他特定于子系统的值组成。 每个总线都有自己对于这些 ID 的方案,称为 MODALIAS。 内核获取设备信息,由此组成一个 MODALIAS ID 字符串,并将该字符串与事件一起发送。对于 USB 鼠标,如下所示:
MODALIAS=usb:v046DpC03Ed2000dc00dsc00dp00ic03isc01ip02
每个设备驱动程序都带有它可以处理的设备的已知别名列表。 这个列表包含在内核模块文件中。 程序 depmod 读取 ID 列表并在内核的 /lib/modules 目录中为所有当前可用的模块创建文件 modules.alias。 使用这种基础结构,模块的装载就如为每个带有 MODALIAS 关键字的事件调用 modprobe 一样简单。 如果调用 modprobe $MODALIAS,它将组成该设备的设备别名与模块提供的别名相匹配。 如果找到匹配的项,则装载该模块。 所有这些操作均由 udev 自动触发。