mdev机制(四)————mdev实现U盘或SD卡自动挂载

来源:互联网 发布:java并发 多条数据 编辑:程序博客网 时间:2024/05/29 12:31

前面我们说了udev实现U盘或SD卡的自动挂载,在这里我们再说一下怎样用mdev实现这个功能。

mdev是busybox中的一个udev管理程序的一个精简版,他也可以实现设备节点的自动创建和设备的自动挂载,只是在实现的过程中有点差异,在发生热插拔时间的时候,mdev是被hotplug直接调用,这时mdev通过环境变量中的 ACTION 和 DEVPATH,来确定此次热插拔事件的动作以及影响了/sys中的那个目录。接着会看看这个目录中是否有“dev”的属性文件,如果有就利用这些信息为这个设备在/dev 下创建设备节点文件。

下面是如何让我们的系统支持mdev。

1.在使用busybox制作根文件系统的时候,选择支持mdev

Linux System Utilities —>
[*] mdev
[*] Support /etc/mdev.conf
[*] Support command execution at device addition/removal

2.在文件系统添加如下内容

vim /etc/init.d/rcSmount -t tmpfs mdev /dev mount -t sysfs sysfs /sysmkdir /dev/ptsmount -t devpts devpts /dev/ptsecho /sbin/mdev>/proc/sys/kernel/hotplugmdev –s /*s 为扫描*/

这些语句的添加在mdev的手册中可以找到。

3.添加对热插拔事件的响应,实现U盘和SD卡的自动挂载。

vim /etc/mdev.confmmcblk[0-9]p[0-9] 0:0 666 @ /etc/sd_card_insertingmmcblk[0-9] 0:0 666 $ /etc/sd_card_removingsd[a-z] [0-9] 0:0 666 @ /etc/usb/usb_insertingsd[a-z] 0:0 666 $ /etc/usb/usb_removing

红色部分,是一个脚本,脚本内容可以根据我们的需要定制,可以实现挂载,卸载或其他一些功能。

如下是自动挂载和卸载的脚本:

/etc/sd_card_inserting        #!/bin/sh        mount -t vfat /dev/mmcblk0p1 /mnt/sd/etc/sd_card_removing        #!/bin/sh        sync        umount /mnt/sd

韦东山例子:

我接上U盘,想自动挂载,怎么办?mdev.conf的格式:<device regex> <uid>:<gid> <octal permissions> [<@|$|*> <command>]device regex:正则表达式,表示哪一个设备uid: ownergid: 组IDoctal permissions:以八进制表示的属性@:创建设备节点之后执行命令$:删除设备节点之前执行命令*: 创建设备节点之后 和 删除设备节点之前 执行命令command:要执行的命令写mdev.conf1.leds 0:0 777led1 0:0 777led2 0:0 777led3 0:0 7772.leds?[123]? 0:0 7773.leds?[123]? 0:0 777 @ echo create /dev/$MDEV > /dev/console4.leds?[123]? 0:0 777 * if [ $ACTION = "add" ]; then echo create /dev/$MDEV > /dev/console; else echo remove /dev/$MDEV > /dev/console; fi5. leds?[123]? 0:0 777 * /bin/add_remove_led.sh把命令写入一个脚本:add_remove_led.sh#!/bin/shif [ $ACTION = "add" ]; then     echo create /dev/$MDEV > /dev/console; else     echo remove /dev/$MDEV > /dev/console; fi6. U盘自动加载sda[1-9]+ 0:0 777 * if [ $ACTION = "add" ]; then mount /dev/$MDEV /mnt; else umount /mnt; fi7.sda[1-9]+ 0:0 777 * /bin/add_remove_udisk.shadd_remove_udisk.sh#!/bin/shif [ $ACTION = "add" ]; then     mount /dev/$MDEV /mnt; else     umount /mnt; fi
0 0
原创粉丝点击