在 Linux中我们经常用到U盘、SD卡的挂载问题,每次都手动挂载或卸载非常麻烦,我们可以采取以下方法实现自动挂载或卸载U盘、SD卡
1、首先在/etc/init.d/rsC中加入以下语句
echo /sbin/mdev > /proc/sys/kernel/hotplug
2、在/etc/下简历medv.conf的文件,包含以下内容
sd[a-z][0-9] 0:0 666 @(/etc/hotplug/insert.sh $MDEV $SUBSYSTEM)
sd[a-z] 0:0 666 $(/etc/hotplug/remove.sh $MDEV $SUBSYSTEM)
ub[a-z][0-9] 0:0 666 @(/etc/hotplug/insert.sh $MDEV $SUBSYSTEM)
ub[a-z] 0:0 666 $(/etc/hotplug/remove.sh $MDEV $SUBSYSTEM)
mmcblk[0-9]p[0-9] 0:0 666 @(/etc/hotplug/insert.sh $MDEV $SUBSYSTEM)
mmcblk[0-9] 0:0 666 $(/etc/hotplug/remove.sh $MDEV $SUBSYSTEM)
3、在/etc/下建立以下文件夹hotplug,并在hotplug目录下建立以下文件,包含以下内容
insert.sh:
if [ -n "$1" ] ; then
if [ -b /dev/$1 ]; then
if [ ! -d /media ]; then
mkdir -p /media
fi
if [ ! -d /media/$1 ]; then
mkdir -p /media/$1
fi
mount /dev/$1 /media/$1
if [ $? -ne 0 ]; then
rm -rf /media/$1
fi
fi
fi
remove.sh:
MOUNTS=$(mount | grep $1 | cut -d' ' -f3)
umount $MOUNTS
rm -rf $MOUNTS
插入U盘、SD等设备,即可在根目录的/media目录下建立相应的文件夹,挂载对用的磁盘文件
////////////////////////////另外一篇相关文章/////////////////////////////////////////////////
mdev是busybox自带的一个简化版的udev
作用是在系统启动和热插拔 或动态加载驱动程序时,自动产生驱动程序所需的节点文件,在文件系统中的/dev目录下的设备节点都是由mdev创建的。
mdev扫描/sys/class和/sys/block中所有的类设备目录,如果在目录中含有名为"dev"的文件,且文件中包含的是设备号,则mdev就利用这些信息为这个设备在/dev下创建设备节点
u盘自动挂载功能实现步骤如下:
1、配置内核
a)配置内核支持热插拔:
#cd linux.2.6.21
#vi .config
CONFIG_KALLSYMS=y
CONFIG_HOTPLUG=y //确保此项为y
CONFIG_PRINTK=y
CONFIG_NET=y //确保此项为y
确保以上两项均设置为y,否则/proc/sys/kernel/目录下不会出现huotplug文件。
b)配置内核支持
#make menuconfig
选择Device Drivers -->
USB support -->
<*> Support for Host-side USB
<*> OHIC HCD support
<*> UHCI HCD (most Intel and VIA) support
<*> SL811HS HCD support
<*> USB Mass Storage support
2、配置busybox
#make menuconfig
选择Linux System Utilities --->
[*]mdev
[*] Support /etc/mdev.conf
[*] Support subdirs/symlinks
[*] Support regular expressions substitutions when renaming device
[*] Support command execution at device addition/removal
[*] Support loading of firmwares
3、添加对热插拔事件响应,实现u盘自动挂载与卸载
用法:
1. 执行mdev前要挂载 /sys
mount -t tmpfs mdev /dev
mount -t sysfs sysfs /sys
2.命令内核在增删设备时执行/sbin/mdev,使设备节点会被创建和删除
echo /sbin/mdev > /proc/sys/kernel/hotplug
3.设置mdev,让它在系统启动时创建所有的设备节点
mdev -s
关于热插拔:
需要内核中支持hotplug
编写mdev配置文件:/etc/mdev.conf
该文件的作用是:mdev在找到匹配设备时自动执行自定义命令
格式为:
<device regex> <uid>:<gid> <octal permissions> [<@$*><cmd>]
@ 创建节点后执行的
$ 删除节点前执行的
* 创建后和删除前都运行的
如自动挂载U盘和SD卡脚本:
sd[a-z][0-9] 0:0 0660 @/etc/hotplug/usb/udisk_insert
sd[a-z] 0:0 0660 $/etc/hotplug/usb/udisk_remove
mmcblk[0-9]p[0-9] 0:0 0660 @/etc/hotplug/sd/sd_insert
mmcblk[0-9] 0:0 0660 $/etc/hotplug/sd/sd_remove
当检测到类似sda1这样的设备时,执行/etc/hotplug/usb/里的脚本,脚本的内容就是挂载和卸载U盘。
udisk_insert
#!/bin/sh
if[ -p /sys/block/*/$MDEV]; then
if[ ! -f $MDEV ];then
mkdir -p /mnt/usb
mount /dev/$MDEV /mnt/usb
if[ -f /mnt/usb ];then
echo "mount usbdisk successfully!"
fi
fi
udisk_remove
#!/bin/sh
sync
umount -l /mnt/usb
rm -rf /mnt/usb
echo "remove your usbdisk safely!"
////////////////////////////////////////////////////////////
#mdev.conf
sd[a-z] 0:0 0660 @/etc/mdev/udisk_insert
sd[a-z] 0:0 0660 $/etc/mdev/udisk_remove
sdb[0-9] 0:6 660
hda[0-9] 0:6 660
|
Udisk自动挂载脚本和卸载脚分别为:
#!/bin/sh
echo "this is $MDEV"
if [ -d /sys/block/$MDEV ] ; then
echo mount udisk to /mnt/udisk
mkdir -p /mnt/udisk
mount /dev/$MDEV /mnt/udisk -t vfat -o utf8=1
if [ -f /mnt/udisk ];then
echo "mount udisk successfully"
fi
fi
#!/bin/sh
echo remove udisk
umount -t /mnt/udisk
rm -rf /mnt/udisk
echo "remove your udisk safely!"
////////////////////////////////////////////////
1.在使用busybox制作根文件系统的时候,选择支持mdev