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

Linux之设备管理器及热插拔处理 | DD'NotesLinux之设备管理器及热插拔处理前言Linux内核设备管理器主要来管理/dev 中的设备节点,并在添加或删除设备时处理所有用户空间操作,比如U盘SD卡等热插拔的处理–自动挂载与卸载。 Linux内核设备管理器主要有mdev,udev和eudev等,今天就简单来看看它们。 mdev是udev的简化版本,是busybox的一部分,最适合用在简单的嵌入式系统,使用 busybox 的地方。 udevicon-default.png?t=N7T8https://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/

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
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
将可移动设备连入系统时,系统的后台中会依次发生如下事件: l 内核检测到新硬件插入,然后分别通知hotplug和udev。前者用来装入相应的内核模块(如usb-storage),而后者用来在/dev中创建相应的设备节点(如/dev/sda1)。 l udev创建了相应的设备节点之后,会将这一消息通知hal的守护程序(hald)。当然udev还得保证新创建的设备节点可以被普通用户访问。 l hotplug装入了相应的内核模块之后,会把这一消息通知给hald。 l hald在受到hotplug和udev发出的消息之后,认为新硬件已经正式被系统认可了。此时它会通过一系列精心编写的规则文件(就是传说中的xxx-policy.fdi),把发现新硬件的消息通过dbus发送出去,同时还会调用update-fstab或fstab-sync来更新/etc/fstab,为相应的设备节点创建适合的挂载点。 l 卷管理器会监听dbus中发现新硬件的消息。根据所插入的硬件(区分U盘和数码相机等)不同,卷管理器会先将相应的设备节点挂载到hald创建的挂载点上,然后再打开不同的应用程序。 当然,如果是在CDROM中插入光盘,过程可能比较简单。因为CDROM本身就是一个固定的硬件,无需hotplug和udev的协助: l hald会自己监视CDROM,并且将光盘托架开合的消息通过dbus发出去。 l 卷管理器负责检查CDROM中的盘片内容,进行挂载,并调用合适的应用程序。 要注意,hald的工作是从上游得到硬件就绪的消息,然后将这个消息转发到dbus中。尽管它会调用程序来更新fstab,但实际上它自己并不执行挂载的工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值