如何在 Ubuntu Server 中设置磁盘自动挂载

如何在 Ubuntu Server 中设置磁盘自动挂载

我正在设置一个由 Raspberry 和 Ubuntu 服务器组成的小型家庭服务器。

具体来说,我安装了

Ubuntu 23.10(GNU/Linux 6.5.0-1007-raspi aarch64)

我目前正在手动安装每一个进入的驱动器,你可以想象,这并不是一件舒服的事情。

我读到可以从/etc/fstab文件,但如果我还连接了一个与系统无关的非常常见的 USB 记忆棒,则有人必须使用管理凭据登录才能安装新设备。

如何自动挂载连接到服务器的任何磁盘?

就我个人而言,安装像 gnome-volume-manager 之类的东西就足够了,但是安装并不成功。

$ root@ubuntu:/home/server# sudo apt install gnome-volume-manager
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package gnome-volume-manager

答案1

udev 是 Linux 内核的设备管理器,主要用于动态设备处理。您可以编写 udev 规则,以在 USB 驱动器连接或断开连接时自动挂载和卸载它们。

创建挂载脚本:首先,创建一个脚本,将您的 USB 驱动器挂载到指定的挂载点。如果挂载点不存在,该脚本还可以创建挂载点。

编写一个 udev 规则,以便在每次连接 USB 设备时触发此脚本。该规则将放置在 /etc/udev/rules.d/ 中的文件中。

创建卸载脚本(可选):同样,您可以创建一个脚本来在驱动器断开连接时卸载该脚本。

以下是挂载脚本的示例:

#!/bin/bash
# File: /usr/local/bin/mount_usb.sh

# The device to be mounted is provided as an argument ($1)
DEVICE=$1

# Define the base mount point
MOUNT_POINT_BASE="/media/usb"

# Create a directory based on the device name
MOUNT_POINT="${MOUNT_POINT_BASE}/${DEVICE}"

mkdir -p ${MOUNT_POINT}

# Mount the device
mount /dev/${DEVICE} ${MOUNT_POINT}

然后编写 udev 规则

在/etc/udev/rules.d/中创建一个新文件,例如100-automount-usb.rules。

添加规则:这是触发脚本的基本规则:

ACTION=="add", KERNEL=="sd?[1-9]", SUBSYSTEM=="block", RUN+="/usr/local/bin/mount_usb.sh %k"

此规则执行以下操作:

  • ACTION=="add":添加设备时运行规则。
  • KERNEL=="sd?[1-9]":适用于存储设备(如 sda1、sdb2 等)。
  • SUBSYSTEM=="block": 将规则限制于块设备。
  • RUN+="/usr/local/bin/mount_usb.sh %k":以设备名称作为参数执行脚本。

重新加载 udev 规则:

sudo udevadm control --reload-rules
sudo udevadm trigger

相关内容