使用udevil自动挂载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 使用udevil

查找过程中,发现有人推荐用udevil工具直接来做这个事情

3.1 安装udevil

bash 复制代码
sudo apt install udevil

3.2 创建服务

bash 复制代码
sudo vi /etc/systemd/system/devmon.service
bash 复制代码
[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

3.3 开启服务

bash 复制代码
sudo systemctl enable devmon.service
sudo systemctl start devmon.service

3.4 插入usb硬盘

可以看到如下的设备挂载

bash 复制代码
sudo df -l

断电重启后,挂载关系依然如此。

相关推荐
米糕闯编程5 小时前
鱼香ros2(一)在ubuntu中安装ros2
linux·运维·ubuntu·机器学习
Huangjin007_5 小时前
【Linux 系统篇(十八)】进程(六) :环境变量
linux·运维·服务器
ShineWinsu5 小时前
对于MySQL:数据库的操作的解析
linux·数据库·c++·mysql·面试·笔试·库的操作
cnnews5 小时前
Ubuntu 编译 postmarketOS
linux·运维·arm开发·ubuntu·github·音视频
w01_02_035 小时前
linux, 桌面, 自启动。
linux·运维·服务器
从零开始的嵌入式之旅6 小时前
day36
linux·c语言·经验分享·笔记·嵌入式硬件
吴声子夜歌6 小时前
Linux命令——查找文件
linux·运维·学习
mounter6256 小时前
Linux 内核 binfmt_misc 深度全景解析:历史、架构、安全
linux·安全·linux kernel·kernel
吴声子夜歌7 小时前
Linux命令——归档与备份
linux·运维·备份·归档
fangjianj7 小时前
Dell PowerEdge R930 物理服务器重装 Ubuntu Server 22.04 全流程实战记录
linux·服务器