1 用busybox制作根文件系统的时候,要选择支持mdev机制
Linux System Utilities --->
[*] mdev
[*] Support /etc/mdev.conf
[*] Support command execution at device addition/removal
2 内核配置时要支持hotplug
3 在/etc/init.d/rcS中加入以下语句
mount -t usbfs none /proc/bus/usb/
mount -t tmpfs mdev /dev
mount -t sysfs sysfs /sys
mkdir /dev/pts
mount -t devpts devpts /dev/pts
#mdev for /dev
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
这些语句的添加在busybox的/doc/mdev.txt中可以找到
执行mdev -s:以‘-s’为参数调用位于/sbin目录写的mdev,其实是个链接,作用是传递参数给/bin目录下的busybox程序并调用它,mdev扫描 /sys/class 和/sys/block中所有的类设备目录,如果在目录中含有名为“dev”的文件,且文件中包含的是设备号,则mdev就利用这些信息为这个设备在/dev下创建设备节点文件。一般只在启动时才执行一次 “mdev -s”。
热插拔事件:由于启动时运行了命令:echo /sbin/mdev > /proc/sys/kernel/hotplug ,那么当有热插拔事件产生时,内核就会调用位于/sbin目录的mdev。这时mdev通过环境变量中的 ACTION 和DEVPATH,这两个变量是系
统自带的,来确定此次热插拔事件的动作以及影响了/sys中的那个目录。接着会看看这个目录中是否有“dev”的属性文件,如果有就利用这些信息为这个设备在/dev 下创建设备节点文件。
4 在/etc/mdev.conf文件中加入以下内容:
sd[a-z][0-9] 0:0 666 @/etc/mdev/insert_usb.sh
sd[a-z] 0:0 666 $/etc/mdev/remove_usb.sh
mmcblk[0-9] 0:0 666 @/etc/mdev/insert_sd.sh
mmcblk[0-9] 0:0 666 $/etc/mdev/remove_sd.sh
@表示是在插入(创建设备结点)后执行后面的脚本,$表示在拔出(删除设备结点)前执行后面的脚本。
5 在/etc下建立/medv/insert_usb.sh 和/mdev/remove_usb.sh文件
insert_usb.sh:
if [ -d /sys/block/*/$MDEV ] ; then
mkdir -p /mnt/usb/
mount -t vfat /dev/$MDEV /mnt/usb/
fi
remove_usb.sh:
umount -l /mnt/usb/
rm -rf /mnt/usb
echo "remove your usbdisk safely!"
并修改文件可执行权限
chmod +x insert_usb.sh
chmod +x remove_usb.sh
6 在/etc下建立/medv/insert_sd.sh 和/mdev/remove_sd.sh文件
insert_sd.sh:
mkdir -p /mnt/sd/
mount -t vfat /dev/mmcblk0 /mnt/sd/
remove_sd.sh:
sync
umount -l /mnt/sd/
rm -rf /mnt/sd
echo "remove your sd safely!"
并修改文件可执行权限
chmod +x insert_sd.sh
chmod +x remove_sd.sh
7 插入U盘 在目录/mnt/usb下即可看见U盘内容
插入SD卡 在目录/mnt/sd下即可看见SD卡内容
8 试验测试在卸载SD卡时会发生错误,其他情况均正常使用
卸载SD卡后目录/mnt/sd仍存在 说明remove_sd.sh没有被执行
Linux System Utilities --->
[*] mdev
[*] Support /etc/mdev.conf
[*] Support command execution at device addition/removal
2 内核配置时要支持hotplug
3 在/etc/init.d/rcS中加入以下语句
mount -t usbfs none /proc/bus/usb/
mount -t tmpfs mdev /dev
mount -t sysfs sysfs /sys
mkdir /dev/pts
mount -t devpts devpts /dev/pts
#mdev for /dev
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
这些语句的添加在busybox的/doc/mdev.txt中可以找到
执行mdev -s:以‘-s’为参数调用位于/sbin目录写的mdev,其实是个链接,作用是传递参数给/bin目录下的busybox程序并调用它,mdev扫描 /sys/class 和/sys/block中所有的类设备目录,如果在目录中含有名为“dev”的文件,且文件中包含的是设备号,则mdev就利用这些信息为这个设备在/dev下创建设备节点文件。一般只在启动时才执行一次 “mdev -s”。
热插拔事件:由于启动时运行了命令:echo /sbin/mdev > /proc/sys/kernel/hotplug ,那么当有热插拔事件产生时,内核就会调用位于/sbin目录的mdev。这时mdev通过环境变量中的 ACTION 和DEVPATH,这两个变量是系
统自带的,来确定此次热插拔事件的动作以及影响了/sys中的那个目录。接着会看看这个目录中是否有“dev”的属性文件,如果有就利用这些信息为这个设备在/dev 下创建设备节点文件。
4 在/etc/mdev.conf文件中加入以下内容:
sd[a-z][0-9] 0:0 666 @/etc/mdev/insert_usb.sh
sd[a-z] 0:0 666 $/etc/mdev/remove_usb.sh
mmcblk[0-9] 0:0 666 @/etc/mdev/insert_sd.sh
mmcblk[0-9] 0:0 666 $/etc/mdev/remove_sd.sh
@表示是在插入(创建设备结点)后执行后面的脚本,$表示在拔出(删除设备结点)前执行后面的脚本。
5 在/etc下建立/medv/insert_usb.sh 和/mdev/remove_usb.sh文件
insert_usb.sh:
if [ -d /sys/block/*/$MDEV ] ; then
mkdir -p /mnt/usb/
mount -t vfat /dev/$MDEV /mnt/usb/
fi
remove_usb.sh:
umount -l /mnt/usb/
rm -rf /mnt/usb
echo "remove your usbdisk safely!"
并修改文件可执行权限
chmod +x insert_usb.sh
chmod +x remove_usb.sh
6 在/etc下建立/medv/insert_sd.sh 和/mdev/remove_sd.sh文件
insert_sd.sh:
mkdir -p /mnt/sd/
mount -t vfat /dev/mmcblk0 /mnt/sd/
remove_sd.sh:
sync
umount -l /mnt/sd/
rm -rf /mnt/sd
echo "remove your sd safely!"
并修改文件可执行权限
chmod +x insert_sd.sh
chmod +x remove_sd.sh
7 插入U盘 在目录/mnt/usb下即可看见U盘内容
插入SD卡 在目录/mnt/sd下即可看见SD卡内容
8 试验测试在卸载SD卡时会发生错误,其他情况均正常使用
卸载SD卡后目录/mnt/sd仍存在 说明remove_sd.sh没有被执行
说明,卸载时没有触发条件
这个问题还没解决,希望看到的童鞋给个指点,谢谢了先