使用udev规则文件实现自动挂载,挂载方式来源站内“ARM-Linux下实现U盘自动挂载 作者ZML_1009”
在/etc/udev/rules.d下创建文件
输入如下命令:
vi /etc/udev/rules.d/13-usb-mount.rules
按i进入编辑模式,输入如下内容:
KERNEL!="sd[a-z][0-9]", GOTO="media_by_label_auto_mount_end"
SUBSYSTEM!="block", GOTO="media_by_label_auto_mount_end"
IMPORT{program}="/sbin/blkid -o udev -p %N"
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="Untitled-%k"
ACTION=="add", ENV{mount_option}="relattime,sync"
ACTION=="add", ENV{ID_FS_TYPE}=="vfat", ENV{mount_options}="iocharset=utf8,umask=000"
ACTION=="add", ENV{ID_FS_TYPE}=="ntfs", ENV{mount_options}="iocharset=utf8,umask=000"
#ACTION=="add", RUN+="/bin/mount -o $env{mount_options} /dev/%k /mnt/usb"
#ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /mnt/usb"
ACTION=="add", RUN+="/bin/mkdir -p /mnt/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /mnt/%E{dir_name}"
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /mnt/%E{dir_name}", RUN+="/bin/rmdir /mnt/%E{dir_name}"
LABEL="media_by_label_auto_mount_end"
解释一下,此方法可以插入多个U盘分别挂载在不同的目录
当只需要挂载一个u盘时,可将注释去掉并将后面两行注释掉。
编辑好这个文件后,输入如下命令使其生效:
udevadm control --reload-rules
此时插入U盘会自动加载,如图所示:
有些U盘可能会多生成一个文件,如下图所示,此时同时插入了两个U盘:
这种情况如何如何快速得知挂载的位置呢?
输入如下命令后lsblk
结果如下:
我们可以看到挂载的位置是/mnt/DEEPINOS 和 /mnt/VTOYEFI
结合上一篇QT的指令,对其稍作修改:
lsblk|grep mnt|grep part|grep -o -E '/.*'
结果如下:
大功告成!