linux系统u盘自动挂载

在linux系统中插入u盘时,系统会将u盘自动挂载到指定的目录,但是如果我们想要将u盘挂载到我们想要的目录上,就可以先用umount卸载u盘,再用mount挂载到自己想要的目录上,那如果想要在插入u盘的时候就让u盘挂载到我们想要的目录上呢。以下记录一下我本次实现的过程。

方法一:修改fstab

插入两个查看u盘属性的指令
fdisk -l 查看是否还存在u盘
blkid /dev/sda1 查看节点属性
在/etc/fstab中添加已经有的u盘,下次开机就能自动挂载
做法:在/etc/fstab中添加

UUID=XXX(/dev/sda1)  /mount_user  /xfs(/vfat)  defaults  0  0

问题:必须u盘要插这,如果自动挂载的节点不存在,会卡在内核,进不了系统
那针对这个问题,也有一个解决办法

例子:

/dev/sda1   /mount_user   auto  defaults,nofail,x-systemd.device-timeout=1,noatime  0  0

加入这一条指令后,在开机的时候就算不插入u盘,也会进入系统,而且,当你插入u盘后,也会自动挂载到所对应的目录
问题:但是,它知会读取一次,也就是说,当你在拔掉u盘,再插入的时候,就没有反应了。在我后续的了解中得知,导致这个问题的原因是,fstab的机制就是在开机的时候读取一次数据,之后就不做操作了,所以要实现u盘热插拔的问题,需要使用udev的机制。

方法二:使用udev判断u盘的热插拔

所有rules文件(无论在哪个目录下)依lexical order规则(由小到大)优先执行,同名文件,优先权:/etc/ > /run/ >/lib/,具体通过man指令查看
在/etc/udev/rules.d/路径下添加一条规则mount-usb.rules

ACTION!="add",GOTO="exit"
KERNEL=="sd[a-z][0-9]",RUN+="/sbin/mountusb.sh %k"
KERNEL=="sd[a-z]",RUN+="/opt/usb/mountusb.sh %k"
LABEL="exit"
ACTION !="remove",GOTO="exit"
SUBSYSTEM!="block",GOTO="exit"
KERNEL=="sd[a-z][0-9]",RUN+="/sbin/umountusb.sh"
LABEL="exit"

将拔插的脚本放在/sbin 或者对应的目录,具体脚本执行什么就可以自定义了。
在rk3399的buildroot文件系统中,是在/lib/udev/rules.d中的一个脚本,添加了指令,通过查看指令的代码得知,通过修改/etc/下的一个.conf ,就可以修改自动挂载的文件夹,原来自动挂载的文件夹是/media/usb*中。

具体udev 使用方法,参考链接 https://www.corvin.cn/474.html

  • 2
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值