Linux下实现U盘、SD卡自动挂载功能

1.mdev支持

①用busybox制作根文件系统的时候,要选择支持mdev机制

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

②在文件系统/etc/init.d/rsC文件中添加如下内容 

Vi  /etc/init.d/rcS
        mount -t tmpfs mdev /dev 
        mount -t sysfs sysfs /sys
        mkdir /dev/pts
        mount -t devpts devpts /dev/pts

        echo /sbin/mdev>/proc/sys/kernel/hotplug//启动热插拔事件;
        mdev –s

这些语句的添加在busybox的/doc/mdev.txt中可以找到。 

 

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

Vi /etc/mdev.conf


mmcblk0p1(设备名) 0:0(id号) 0600(以八进制表示的设备属性)   =sdcard */bin/hotplug.sh
sda1  0:0 0600            =udisk */bin/hotplug.sh

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

注:@表示是在插入(创建设备结点)后执行后面的脚本,$表示在拔出(删除设备结点)前执行后面的脚本。

4.在bin/下写一个hotplug.sh脚本程序:

#!/bin/sh

case $MDEV in
udisk | sda1)
 DEVNAME=udisk
 MOUNTPOINT=/udisk
 ;;
sdcard | mmcblk0p1)
 DEVNAME=sdcard
 MOUNTPOINT=/sdcard
 ;;
*)
 exit 0
 ;;
esac

test ! -c /dev/null && mknod -m 0666 /dev/null c 1 3

case $ACTION in
remove)
 /bin/umount $MOUNTPOINT || true
 rmdir $MOUNTPOINT >/dev/null 2>&1 || true
 ;;
*)
 /bin/mkdir $MOUNTPOINT > /dev/null 2>&1 || true
 /bin/mount -o sync -o noatime -o nodiratime -t vfat /dev/$DEVNAME $MOUNTPOINT > /dev/null 2>&1 || true
 ;;
esac

exit 0

插入U盘、SD等设备,即可在根目录下建立相应的文件夹,挂载对用的磁盘文件

以上两个脚本需要可执行权限:chmod +x  /bin/hotplug.sh

你可能感兴趣的:(linux,文件系统)