mdev 响应热插拔事件

热插拔事件是从内核空间发送到用户空间的通知,一般这时候系统配置出现了变化,比如插入/移除耳机,插入/移除SD卡或者USB存储设备等。

热插拔事件默认会调用/sbin/hotplug来加载驱动程序,创建设备节点等。

如果执行该动作的不是/sbin/hotplug,比如,很多都用mdev来做热插拔的处理,此时我们需要修改系统调用

方法如下:

echo /sbin/mdev >  /proc/sys/kernel/hotplug

目的就是替换掉默认的/sbin/hotplug

同时我们还要配置/etc/mdev.conf, 改文件是给mdev使用的配置文件,目的是告诉mdev 热插拔时间产生的时候调用对应的工具来处理

比如如下:

sd[a-z][0-9]    0:0 666                 @/etc/mdev/udisk_insert
sd[a-z]         0:0 666                 $/etc/mdev/udisk_remove
mmcblk[0-9]     0:0 666                 */etc/mdev/hotplug.sh

外设插入或者移除的时候mdev会创建或者删除对应的设备节点,然后根据设备节点名称匹配工具来善后,比如上面的

@ 表示设备添加的时候调用 @后面的工具来处理, 

$  表示设备移除的时候调用 $ 后面的工具来处理, 

*  表示有设备的插拔事件(添加或者移除)发生时都调用该工具处理。

所以从脚本中我们可以看到如果有sda0~sda9 或sdz0~sdz9设备插入时调用/etc/mdev/udisk_insert处理

这应该是磁盘分区节点创建成功后会产生的事件,识别到磁盘分区后我们应该去挂载分区,这样上层用户才能使用该分区 udisk_insert应该就是用来挂载分区的

同理udisk_remove则是识别到磁盘移除后调用的工具

如果设备节点是mmcblk0~mmcblk9则调用/hotplug.sh工具

hotplu.sh如下

#!/bin/sh

case $ACTION in
remove)
        /etc/mdev/sdcard_remove
        exit0
esac

/etc/mdev/sdcard_insert

这是一个sdcard插入和拔出调用的工具,用来挂在卡和卸载卡

  

 

posted @ 2019-03-27 16:57  mcdull^0^  阅读(1241)  评论(0编辑  收藏  举报