我需要阻止具有三个不同挂载点(分区)的特定外部驱动器(USB 连接,通过 UID)的自动挂载吗?
该驱动器的内容是使用 ddrescue 创建的 - 用于从故障驱动器复制数据。
该驱动器正在自动安装到三个位置(sdc1、sdc3、sdc4),并且正在以读写方式安装(坏)。我可以手动以只读方式重新安装。大多数 ddrescue 后工具都需要卸载驱动器。发生的事情是,当我退出工具时,驱动器正在自动重新安装(到三个安装点,r/w)。我收到了新设备安装通知 - 否则我永远不会想到会发生这种情况。
我找到了阻止自动挂载单个已挂载分区的外部驱动器的说明。使用 UID 向 fstab 添加条目。说明指出您必须输入挂载点。但此驱动器有三个挂载点。我该怎么做?另外,我更希望根本不定义挂载点。我应该能够通过 UID 阻止设备的自动挂载,仅此而已——必须由 root 手动挂载。
更新:这没有工作。
/etc/fstab
:
UUID=xxxx-xxxx /media/me/ESP vfat ro,noauto,nofail 0 0
UUID=xxxx-xxxx /media/me/DIAGS vfat ro,noauto,nofail 0 0
UUID=xxxxxxxxxxxxxxxx /media/me/WINRETOOLS ntfs ro,noauto,nofail 0 0
UUID=xxxxxxxxxxxxxxxx /media/me/OS ntfs ro,noauto,nofail 0 0
分区 1、3 和 4 仍像以前一样自动安装。(分区 2 从未自动安装过。)
答案1
在man fstab
页面中我们发现noauto
参数...
The fourth field (fs_mntops).
This field describes the mount options associated with the
filesystem.
It is formatted as a comma-separated list of options. It con‐
tains at least the type of mount (ro or rw), plus any additional
options appropriate to the filesystem type (including perfor‐
mance-tuning options). For details, see mount(8) or swapon(8).
Basic filesystem-independent options are:
defaults
use default options: rw, suid, dev, exec, auto, nouser,
and async.
noauto do not mount when "mount -a" is given (e.g., at boot
time)
user allow a user to mount
owner allow device owner to mount
comment
or x-<name> for use by fstab-maintaining programs
nofail do not report errors for this device if it does not ex‐
ist.
使用sudo blkid
您可以轻松确定要使用的正确 UUID。
您需要在 /etc/fstab 中创建这些条目...
sudo -H gedit /etc/fstab
UUID=xxxx-xxxx /media/me/ESP vfat ro,noauto,nofail 0 0
UUID=xxxx-xxxx /media/me/DIAGS vfat ro,noauto,nofail 0 0
UUID=xxxxxxxxxxxxxxxx /media/me/WINRETOOLS ntfs ro,noauto,nofail 0 0
UUID=xxxxxxxxxxxxxxxx /media/me/OS ntfs ro,noauto,nofail 0 0
更新#1:
OP 用 Thunar 替换了 Nautilus 文件管理器,而 Thunar 有一个单独的选项来安装外部驱动器。禁用该选项,一切正常。这不是标准配置。
答案2
在文件管理器 (非默认 Thunar) 中启用了自动挂载,这将覆盖 /etc/fstab。文件管理器 (卷管理) 中的设置是全有或全无,自动挂载外部驱动器,或不挂载。因此我禁用了该功能,并使用 udev 和 fstab 进行控制。
答案3
使用noauto
in/etc/fstab
作为heynnema 的回答答案对我很有效。
为了更容易生成所需的行,您可以lsblk
打印所需的所有信息:
lsblk -o KNAME,UUID,FSTYPE,MOUNTPOINT
或者这行较长的命令,它给出 /etc/fstab 中预期的输出:
lsblk -o KNAME,UUID,FSTYPE,MOUNTPOINT | perl -nle 'if (/^(sd\S+) +([-a-z0-9]{36}) +(\S+) +(.*)/) {print "# was $4\n", "UUID=$2 /tmp/$1 $3 ro,noauto,nofail 0 0"}'
但请注意,它列出了所有带有 UUID 的磁盘,所以不要盲目地将其粘贴到 /etc/fstab 中...