内核在启动时已经检测到了系统的硬件设备,并把硬件设备信息通过sysfs内核虚拟文件 系统导出。sysfs文件系统由系统初始化脚本挂载到/sys上。udev扫描sysfs文件系统,根据硬件设备信息生成热插拔(hotplug)事 件,udev再读取这些事件,生成对应的硬件设备文件。由于没有实际的硬件插拔动作,所以这一过程被称为coldplug。我们的initramfs就是 利用这一机制,加载硬件设备的驱动程序模块。
udev完成coldplug操作,需要下面三个程序:
在initramfs的init脚本中可以执行下面的语句实现coldplug功能:
mkdir -p /dev/.udev/db udevd --daemon mkdir -p /dev/.udev/queue udevtrigger udevsettle
许多文档提到的在udevd --daemon 命令前要执行
echo > /proc/sys/kernel/hotplug
命令,经验证,在我们的initramfs环境下的coldplug功能中并不需要。