自动挂载 USB 并将 USB 标签作为挂载点

syn*_*sis 5 linux automounting mount usb-drive

如何在插入 USB 时自动安装 USB?还希望每次自动安装时,安装点都是 USB 的标签。

编辑:我正在使用基于 Debian 的 Raspian(在 Raspberry Pi 上)。正在尝试安装 USB 闪存驱动器。我在命令行模式下运行 Raspian,因此想在命令行中自动挂载

Gil*_*il' 5

Udev通过规则来管理设备,这些规则确定插入(或移除)设备时要执行的操作。Udev 本身不处理安装,但您可以让它调用外部程序来执行安装。

有一些规则存储在 下的各个文件中/etc/udev/rules.d/,这些规则在 中创建条目/dev/disk/by-label/。我们可以使用相同的匹配条件来匹配具有文件系统标签的 USB 设备并运行自定义脚本。

ENV{ID_FS_LABEL_ENC}=="?*", ENV{ID_FS_USAGE}=="filesystem|other", \
SUBSYSTEMS=="usb", \
RUN += "/usr/local/sbin/udev-mount-by-label '%E{ID_FS_LABEL_ENC}'"
Run Code Online (Sandbox Code Playgroud)

自定义脚本应创建安装点并执行安装。如果该目录已经存在,应该小心一些。如果挂载点已被用作挂载点,我编写的脚本将不会执行任何操作,但会很高兴地隐藏非空目录。根据您的口味定制。

#!/bin/sh
export mount_point="/media/$1"
current_device=$(awk '$2 == ENVIRON["mount_point"] {print $1; exit}' </proc/mounts)
if [ -n "$current_device" ]; then
  echo 1>&2 "$current_device already mounted on $mount_point"
  exit 1
fi
mount "/dev/disk/by-label/$1" "$mount_point"
Run Code Online (Sandbox Code Playgroud)

拔掉插头之前不要忘记卸载设备,否则可能会丢失数据。

Ubuntu - 在没有用户登录的情况下启动时自动将外部驱动器安装到/media/LABEL?使用不同的脚本显示相同的技术。

  • @geotheory `ENV{ID_FS_LABEL_ENC}` 是文件系统的标签。您显示的内容看起来像一个可通过 `ENV{ID_FS_UUID_ENC}` 获得的 UUID,因此 `ENV{ID_FS_UUID_ENC}=="07fb1-etc-etc..", ENV{ID_FS_USAGE}=="filesystem|other", RUN+= "/usr/local/sbin/udev-mount-by-uuid '%E{ID_FS_UUID_ENC}' 'customname'"` 以及将 `/dev/disk/by-uuid/$1` 挂载到 `/media/$2 的脚本`。或者将文件系统的标签更改为“customname”。 (2认同)