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 的有关规则
。。。。。。
更多请关注:
作者: Shell
链接: https://notes.z-dd.online/2024/07/20/Linux%E4%B9%8B%E8%AE%BE%E5%A4%87%E7%AE%A1%E7%90%86%E5%99%A8%E5%8F%8A%E7%83%AD%E6%8F%92%E6%8B%94%E5%A4%84%E7%90%86/
来源: DD'Notes
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。