udev 自动挂载U盘文件系统指定目录

来源:互联网 发布:程序员未来前景怎么样 编辑:程序博客网 时间:2024/06/05 02:47

嵌入式linux文件系统中自动挂载U盘内的文件系统


在海思嵌入式linux文件系统中存在udev目录及下属文件

/etc/udev # pwd/etc/udev/etc/udev # lsdisk-hotplug.sh    rules.d            usbdev-hotplug.shfirmware.sh        udev.conf


在rules.d 文件夹下有udev加载的规则文件,其中11-usb-hotplug.rules 为U盘挂在文件系统的规则文件

/etc/udev/rules.d # pwd/etc/udev/rules.d/etc/udev/rules.d # ls11-usb-hotplug.rules50-firmware.rules54-gphoto.rules60-pcmcia.rules75-cd-aliases-generator.rules.optional75-persistent-net-generator.rules.optional90-hal.rules97-bluetooth-serial.rules99-fuse.rulesdevice-mapper.rules/etc/udev/rules.d # 

查看11-usb-hotplug.rules 中配置脚本

## Create By Czy#KERNEL=="sd*", SUBSYSTEM=="block", RUN+="/etc/udev/disk-hotplug.sh"KERNEL=="usbdev*", SUBSYSTEM=="usb_device", RUN+="/etc/udev/usbdev-hotplug.sh"~

在我的系统中内核将U盘枚举为sda设备,所以需要修改相应的udev/disk-hotplug.sh文件



挂在文件系统时,设想为如果有/dev/sda?的设备插入,就默认挂载到/tmp/sda?相应目录下:


U盘挂载修改内容:

1.vi udev/disk-hotplug.sh修改add_disk ()脚本函数

ORG_NAME = /dev/sd[a-z]   或者 /dev/sda[a-z][0-9] 需要过滤sd[a-z]类型及/dev/字符串前缀  执行mount动作

如果/tmp/sd[a-z][0-9]目录不存在需要,需要创建此挂载目录

################################################################################# new_name orgin_nameadd_disk (){local NEW_NAME=$1local ORG_NAME=$2if [ -e ${ORG_NAME} ]; thencd /dev/; ln -sf ${ORG_NAME} ${NEW_NAME}; cd -if echo ${ORG_NAME} | grep sd[a-z][0-9];thenif [ ! -d /tmp/${ORG_NAME##*/} ];thenmkdir -p /tmp/${ORG_NAME##*/}fimount -t vfat ${ORG_NAME} /tmp/${ORG_NAME##*/}fiecho "${NEW_NAME} -> ${ORG_NAME}" > ${CONSOLE}fi}################################################################################

U盘文件系统卸载

1.修改hotplug_usb ()函数中removecase  添加"${DEVNAME}" 参数以方便卸载挂载目录


case "${ACTION}" in"add"    )add_disk "${NEW_NAME}" "${DEVNAME}";;"remove" )remove_disk "${NEW_NAME}" "${DEVNAME}";;* )echo "ACTION:${ACTION}" > ${CONSOLE}


2.修改remov_disk脚本函数添加卸载动作代码

################################################################################# new_nameremove_disk (){local NEW_NAME=$1local ORG_NAME=$2if [ -L /dev/${NEW_NAME} ]; thenif echo ${ORG_NAME} | grep sd[a-z][0-9];thenif [ -d /tmp/${ORG_NAME##*/} ];thenumount /tmp/${ORG_NAME##*/}rm /tmp/${ORG_NAME##*/} -rffifiecho ${ORG_NAME} > ${CONSOLE}rm -f /dev/${NEW_NAME}fi}################################################################################


完成U盘文件系统的在/tmp目录下的自动挂载。
















0 0