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

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


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

/etc/udev # pwd
/etc/udev
/etc/udev # ls
disk-hotplug.sh    rules.d            usbdev-hotplug.sh
firmware.sh        udev.conf


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

/etc/udev/rules.d # pwd
/etc/udev/rules.d
/etc/udev/rules.d # ls
11-usb-hotplug.rules
50-firmware.rules
54-gphoto.rules
60-pcmcia.rules
75-cd-aliases-generator.rules.optional
75-persistent-net-generator.rules.optional
90-hal.rules
97-bluetooth-serial.rules
99-fuse.rules
device-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_name
add_disk ()
{
	local NEW_NAME=$1
	local ORG_NAME=$2


	if [ -e ${ORG_NAME} ]; then
		cd /dev/; ln -sf ${ORG_NAME} ${NEW_NAME}; cd -
		
		if echo ${ORG_NAME} | grep sd[a-z][0-9];then
			if [ ! -d /tmp/${ORG_NAME##*/} ];then
				mkdir -p /tmp/${ORG_NAME##*/}
			fi
			mount -t vfat ${ORG_NAME} /tmp/${ORG_NAME##*/}
		fi
		echo "${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_name
remove_disk ()
{
	local NEW_NAME=$1
	local ORG_NAME=$2
	if [ -L /dev/${NEW_NAME} ]; then
		if echo ${ORG_NAME} | grep sd[a-z][0-9];then
			if [ -d /tmp/${ORG_NAME##*/} ];then
				umount /tmp/${ORG_NAME##*/}
				rm /tmp/${ORG_NAME##*/} -rf
			fi	
		fi
		echo ${ORG_NAME} > ${CONSOLE}
		rm -f /dev/${NEW_NAME}
	fi
}
################################################################################


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
















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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值