怎么使用mdev实现自动挂载

mdev是busybox自带的一个简化版的udev。udev是从Linux 2.6 内核系列开始的设备文件系统(DevFS)的替代品,是 Linux 内核的设备管理器。总的来说,它取代了 devfs 和 hotplug,负责管理 /dev 中的设备节点。同时,udev 也处理所有用户空间发生的硬件添加、删除事件,以及某些特定设备所需的固件加载。比如,当我们插入U盘后udev会自动在/dev下创建设备节点,同时将U盘挂载到系统中;当拔掉U盘后,udev又会自动删除/dev下U盘的设备节点以及挂载的目录。mdev是udev的简化版,因此它的工作和udev是相同的。

mdev需要内核sysfs的支持。为了使用动态更新的功能,同要需要配置内核支持热拔插。

要使用mdev功能,应在编译busybox时在menconfig的Linux System Utilities中勾选上支持mdev的选项以及在编译kernel时勾选上支持hotplug。如果你对mdev的配置方法不熟悉,请:

一定要看docs/mdev.txt和examples/mdev.conf

一定要看docs/mdev.txt和examples/mdev.conf

一定要看docs/mdev.txt和examples/mdev.conf

关于初始化脚本的详细内容请参阅busybox的docs/mdev.txt文件,里面有详细的介绍,图片中仅展示部分内容:

如果你想使用完整mdev的功能,比如自动挂载/卸载,那么还应该有一个/etc/mdev.conf文件(此文件是可选的)。该文件在busybox的examples/mdev.conf中有参考例子。我在我的开发板上插入一个usb读卡器,/dev下会创建/dev/sda和/dev/sda1文件;当我拔下这个读卡器,/dev下的这两个文件就会消失,这意味着mdev已经在工作了,但系统并没有自动帮我对这个U盘进行挂载。为了实现这个功能,我直接拷贝了busybox根目录下的examples/mdev.conf文件到根文件系统的/etc目录下,我想实现当插入U盘后系统自动将U盘挂载到/media/$MDEV中。可以看到的是,/etc/mdev.conf中存在sd*的规则:

规则已经存在,但并没有实现相应的动作。这里需要提一下,mdev会遍历/sys/class和/sys/block中所有的类设备目录。在监听到设备变动后会将设备名设置到环境变量$MDEV中,而如果是插入设备的话环境变量$ACTION的值就是add。现在为sd*设备添加自动挂载的脚本/etc/automount:

#!/bin/sh

#echo $MDEV $ACTION

#echo 0 $0
echo 1 $1
echo 2 $2

#if [ $ACTION == "add" ]
if [ $2 == "add" ]
then
    echo add $MDEV
    mkdir -p /media/$MDEV
    mount /dev/$MDEV /media/$MDEV
else
    echo remove $MDEV
    umount /media/$MDEV
    rm -r /media/$MDEV
fi

(别忘了给automount脚本赋予可执行权限!)修改/etc/mdev.conf文件,指定用于处理的脚本:

此时,如果你插入U盘,可以使用df命令看到它已经被自动挂载了:

拔出U盘,再次使用df命令和ls命令:

如果你想为你的设备指定名字,可以在等于号后面附上名称,这样环境变量$MDEV的值就会改变。例如,我为我的sd*设备指定名称为my_sdcard:

保存,退出,插入U盘,可以看到名称由原来的的sd??变成了my_sdcard:

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值