提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
基于RK3568,实现U盘自动挂载
一、 udev 规则
udev 是一个非常灵活的系统,它可以让用其它系统很少敢提供给用户的方式去定义规则和功能。
https://linux.cn/article-10329-1.html
二、使用步骤
1.udev规则文件
010.rules如下:
KERNEL=="sd[a-z]*", SUBSYSTEM=="block", ACTION=="add", RUN+="/etc/udev/rules.d/010_save.sh usb %k"
KERNEL=="sd[a-z]*", SUBSYSTEM=="block", ACTION=="remove", RUN+="/etc/udev/rules.d/010_save.sh usb %k", OPTIONS="last_rule"
2.执行脚本
010_save.sh如下:
#! /bin/sh
if [ $# -ne 2 ] ; then #args
exit 1
fi
MNT_PATH=/mnt/sda/ #mount
#DEV_PRE=$1 #arg1:
DEV_NAME=$2 #arg2:/dev
FS_TYPE=vfat #type
if [ $ACTION == "add" ] ; then
#add
# echo "=======add==========" >> /media/udev.txt
/bin/mkdir -p $MNT_PATH
/bin/mount /dev/block/$DEV_NAME $MNT_PATH
if [[ $? -ne 0 ]] ; then
echo "mount $DEV_NAME fialed" >> /mnt/udev.txt
/bin/rmdir $MNT_PATH
fi
elif [ $ACTION == "remove" ] ; then
# echo "=======remove==========" >> /media/udev.txt
#remove
if [[ -e $MNT_PATH ]] ; then
/bin/umount -l $MNT_PATH
/bin/rmdir $MNT_PATH
fi
fi
exit 0
3.系统启动调用脚本
UpanAutoMount.sh:
#! /bin/sh
echo "****************auto mount config*************************"
mount -o rw,remount /
chmod 777 /vendor/etc/firmware/010*
cp -r /vendor/etc/firmware/010* /etc/udev/rules.d/
sleep 1
/bin/udevadm control --reload #没有重加载指令需要重启
if [ -e "/dev/block/sda" ];then
echo "already has , please check."
mkdir -p /mnt/sda/
/bin/mount /dev/block/sda /mnt/sda/
else
echo "do not has"
fi
矿鸿系统启动后,会执行脚本
code/device/***/build/rootfs/3568T_drivers_load_service.sh
此脚本在配置脚本启动
总结
在3568T_drivers_load_service.sh脚本增加如下配置
chmod +x ***/UpanAutoMount.sh
sh /vendor/etc/firmware/UpanAutoMount.sh
插入u盘后,df -h可以看到挂载
注意这个指令
udevadm control --reload #没有重加载指令需要重启