当前位置: 首页 > article >正文

Linux下自动挂载U盘或者USB移动硬盘

最近在折腾用树莓派(实际上是平替香橙派orangepi zero3)搭建共享文件服务器,有一个问题很重要,如何在系统启动时自动挂载USB移动硬盘。

1 使用/etc/fstab

最开始尝试了用/etc/fstab文件下增加:"/dev/sda1 /home/orangepi/sharing ext4 defaults 0 0"的方式,结果系统直接起不来了,查看log后,发现挂载失败了,猜想是因为系统启动到读取fstab去做挂载时,usb硬盘还没有启动好,所以导致挂载失败。

/etc/fstab文件的每一行都遵循以下格式:

2 使用udev rule

尝试在/etc/udev/rules.d目录下增加99-usb-hdd.rules规则里面写上:
KERNEL==“sda1”, ACTION==“add”, RUN+=“/usr/bin/mount /dev/sda1 /home/orangepi/sharing”
在这里插入图片描述
系统提示挂载失败failed with exit code 32,查找资料后发现在新的ubuntu系统中,udev 服务设置的挂载命名空间是私有的,仅对该服务内部可用,对其他服务不可访问。ubuntu系统推荐先用udev rule启动一个服务,再用这个服务去做自动挂载: Start a custom systemd service from the Udev rule; the systemd service can invoke a script which can start any number of long-running processes.
嫌弃麻烦(不知道怎么用udev rule去启动一个一个服务),没有搞(以后再试)。

3 使用udev-media-automount

这是一个开源项目,本质上是借udev rule 检测到usb设备的接入与断开事件,然后调用service里去自动挂载和卸载USB硬盘到指定目录下,详细见 https://github.com/Ferk/udev-media-automount

3.1 下载软件包:

https://github.com/Ferk/udev-media-automount/archive/refs/heads/master.zip

3.2 安装:

unzip master.zip
cd udev-media-automount-master
sudo make install
sudo udevadm control --reload-rules
sudo udevadm trigger

安装完成后,我们可以看到如下提示的安装过程:

orangepi@orangepi-1G:~/udev-media-automount-master$ sudo make install
install -D media-automount /bin/media-automount
install -D umount_dmenu /bin/umount_dmenu
install -Dm644 media-automount.rules /lib/udev/rules.d/99-media-automount.rules
install -Dm644 media-automount@.service /lib/systemd/system/media-automount@.service
install -d /etc/media-automount.d
install -Cm644 media-automount.d/* /etc/media-automount.d/

其实安装时做的事情也简单,
第一步,先把media-automount和umount_dmenu脚本放到/bin目录下,
第二步,在lib/udev/rules.d目录下增加99-media-automount.rules规则,这个这规则里,定义了U盘或移动硬盘被udev系统检测到时,分别去调用的服务media-automount@.service
第三步,在/lib/systemd/system目录下建立新的服务media-automount@.service,这个服务里又会去调用media-automount这个脚本程序
第四步,在/etc/media-automount.d目录下,放入各种不同的文件类型mount时需要的默认参数

4 使用udevil

查找过程中,发现也有人推荐用udevil工具直接来做这个事情,但这个项目很久没有更新了,不知道是不是废弃了

4.1 安装udevil

sudo apt install udevil

4.2 创建服务

sudo vi /etc/systemd/system/devmon.service
[Unit]
Description=Automounting usb drives.
After=network.target

[Service]
Type=simple
User=pi
Restart=on-abort
ExecStart=/usr/bin/devmon

[Install]
WantedBy=multi-user.target

4.3 开启服务

sudo systemctl enable devmon.service
sudo systemctl start devmon.service

3.4 插入usb硬盘

可以看到如下的设备挂载

sudo df -l

在这里插入图片描述
断电重启后,挂载关系依然如此。


http://www.kler.cn/news/107623.html

相关文章:

  • eval()函数的用法,计算字符串中的值,模板字符串进行计算
  • CTF-Crypto学习记录-第四天 “ “ --- SHA1安全散列算法,实现原理。
  • mac安装并使用wireshark
  • Rust实现基于Tokio的限制内存占用的channel
  • 【C++】类与对象 第二篇(构造函数,析构函数,拷贝构造,赋值重载)
  • 前端小技巧: 实现 LRU 缓存算法功能
  • Kafka-Java四:Spring配置Kafka消费者提交Offset的策略
  • vue如何使用路由拦截器
  • 数据结构 C语言 2.1 线性表抽象数据类型 2.2 小议顺序表
  • Tp框架如何使用事务和锁,还有查询缓存
  • Linux UWB Stack实现——FiRa会话状态机
  • jmeter疑难杂症
  • 数据库数据恢复—Oracle数据库报错ORA-01110错误的数据恢复案例
  • Hive 常用DML操作
  • 前端移动web高级详细解析二
  • 安装虚拟机(VMware)保姆级教程及配置虚拟网络编辑器和安装WindowsServer以及宿主机访问虚拟机和配置服务器环境
  • 实体店做商城小程序如何
  • 模数转换器-ADC基础
  • 深入探究深度学习、神经网络与卷积神经网络以及它们在多个领域中的应用
  • Android-宝宝相册(第四次作业)
  • 【计算机网络】(谢希仁第八版)第一章课后习题答案
  • 软考 系统架构设计师系列知识点之设计模式(9)
  • ES6之Set集合(通俗易懂,含实践)
  • 外卖霸王餐系统 支持小程序,分站合作
  • 关于pycharm中句号变成点的问题
  • Redis 与 MySQL 一致性 实现方案
  • RSA:基于小加密指数的攻击方式与思维技巧
  • SpringCore完整学习教程5,入门级别
  • 单元测试Testng
  • vue中如何获取当时时间时分秒