Linux之设备管理器及热插拔处理
前言
Linux内核设备管理器主要来管理/dev 中的设备节点,并在添加或删除设备时处理所有用户空间操作,比如U盘SD卡等热插拔的处理–自动挂载与卸载。

Linux内核设备管理器主要有mdev,udev和eudev等,今天就简单来看看它们。

mdev是udev的简化版本,是busybox的一部分,最适合用在简单的嵌入式系统,使用 busybox 的地方。
udev是systemd的设备管理器,相对mdev来说要复杂些,一般用在PC上的linux或比较高端点的嵌入式系统,使用 systemd 的地方。
eudev是 udev 的fork版本,所以很多规则这些都是和udev类似,主要是为了独立于systemd等initx系统和Linux发行版。
udev 和 mdev 是两个使用 uevent 机制处理热插拔问题的用户空间程序,两者的实现机理不同。

udev 基于 netlink 机制
mdev 基于 uevent_helper 机制
每当设备状态发生变化时,内核都会发出一个 uevent 事件,设备管理器会接收到该事件,根据 uevent 中包含的信息,会去匹配触发制定的规则并执行所需的操作,包括创建或删除设备文件,触发将特定固件文件加载到内核内存中,执行相应的脚本等等。
具体的实现原理就深入展开了,这里只介绍些简单的概念,感兴趣的同学可以去研究下源码。
mdev
mdev源码:https://github.com/mirror/busybox/blob/master/util-linux/mdev.c
busybox官网:http://www.busybox.net/source.html
更多详情可查看上面的源码。

"mdev -s" 会扫描 /sys/class/xxx,查找包含dev文件的目录,然后mdev 会创建 /dev/device_name 节点。
当设备状态发生变化时,比如热插拔,mdev 会去匹配设定的相关规则,去做相应的处理,比如创建节点时,修改节点权限,执行相应命令等。
下面来看看 mdev 的有关规则

。。。。。。

更多请关注:

Linux之设备管理器及热插拔处理_linux


作者: Shell