如何在 Linux (Debian) 中自动挂载 USB 驱动器?

Cir*_*exe 10 usb debian automounting usb-drive

随着每个新版本在 Linux 中自动挂载 USB 驱动器的方式似乎发生了变化(幸运的是我使用的是 Debian,所以我每两年只损失几天时间)。我们曾经有 usbmount、udisks、udisks2、udisks-glue、pmount、自定义 udev 规则,我可能忘记了更多。(快速浏览一下,至少有一个命名的东西afuse似乎存在,但没有被很好地记录下来)。这些都不再起作用(至少对我而言)。

在 Debian 中自动挂载 USB 驱动器的“当前”方式是什么?我使用了以下udev规则,但自从从拉伸更新到破坏后,这停止了工作:

SUBSYSTEM=="usb", DRIVERS=="usb-storage", ACTION=="add", \
RUN+="mkdir /media/usb%n; mount -o gid=plugdev,umask=002,fmask=111,users /dev/%k%n /media/usb%n"
Run Code Online (Sandbox Code Playgroud)

另外:这样做的稳定解决方案是什么,即使在更新到新版本后也能可靠地工作,我可能错过了?

Tho*_*och 8

更新[2022-03-06]:apt install udisks2应该给你USB自动挂载。

我研究了(反向)Debian 中 nautilus、udisks2 和 libglib2.0-bin(包含 gio 二进制文件)的软件包依赖关系。基于此和Archlinux Udisks 页面,我现在相信:

  • 实际进行安装的最先进技术是 udisks2。自动挂载的下一个最好的事情是udisksctl unmount -b /dev/$DEVICE.
  • 在“标准”Debian Gnome 安装中,nautilus 控制桌面上的图标。插入 USB 驱动器时,会显示该驱动器的图标,但只有单击该图标才能安装该驱动器。
  • 用于 USB 自动挂载的最小桌面的最佳选择可能是udiskie

我添加了一个用户 systemd 服务来启动 udiskie:

[Unit]
Description=Udiskie automount daemon

[Install]
WantedBy=graphical-session.target

[Service]
ExecStart=/usr/bin/udiskie --verbose --use-udisks2 --automount --no-config --notify --tray --appindicator
Run Code Online (Sandbox Code Playgroud)


GAD*_*D3R 5

您可以创建一个systemd.mountsystemd.automount单元文件。下面是一个例子:

/dev/sdb1在 下挂载/mnt/moutpoint,请创建一个mnt-mountpoint.automount文件:

sudo nano /etc/systemd/system/mnt-mountpoint.mount
Run Code Online (Sandbox Code Playgroud)

注意:单元文件的名字应该是dir-sub-dir.mount从挂载点提取出来的/dir/sub-dir (如果需要挂载/media该名字下的设备会是media-mountpoint.mount

然后粘贴以下几行:

[Unit]
Description=Mount sdb1

[Mount]
What=/dev/disk/by-uuid/UUID_here
Where=/mnt/mountpoint
Type=auto
Options=defaults

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

用于blkid将 替换为UUID_here的 uuid /dev/sdb1

创建mnt-mountpoint.automount文件:

sudo nano /etc/systemd/system/mnt-mountpoint.automount
Run Code Online (Sandbox Code Playgroud)

使用以下几行:

[Unit]
Description=Automount usb

[Automount]
Where=/mnt/mountpoint

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

连接您的 USB,然后启用并启动设备:

sudo systemctl daemon-reload
sudo systemctl enable --now  mnt-mountpoint.mount mnt-mountpoint.automount
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的回答。这是为了在特定的挂载点上安装特定的设备(这可以通过 `/etc/fstab` 中的单行代码解决)。我的问题是关于如何在最小的可用 /media/usb*N* 目录中自动挂载通用 USB 设备。 (5认同)