我的 fstab 中有一个外部硬盘驱动器的条目:
UUID="680C0FE30C0FAAE0" /jgdata ntfs noatime,rw
但有时启动时未插入此驱动器。这让我在启动到一半时,系统提示“继续等待,按 S 或按 M”,但此时任何按键都不起作用(包括Ctrl- Alt- Delete,甚至大写锁定键也不起作用)。
除了编写脚本来检查 的输出之外fdisk -l
,我如何才能在启动时仅当该驱动器存在时才挂载它?如果有一个该驱动器的 fdisk 条目会很方便,这样我只需键入mount /jgdata
而不需要设备名称。
答案1
你们都走在正确的道路上。我找到了一种更干净、更好的方法。
正确的添加选项fstab
是nofail
,但是,它需要放在 之后auto
。如果将其更改为noauto
,它将永远不会在启动期间挂载。如果将其添加nobootwait
到引导加载程序,您可能会错过一些严重的事情,例如在完成检查之前挂载分区fsck
,或者不挂载在启动过程中使用的分区。
进行上述更改后,如果在系统关闭时插入设备,系统将正常启动(并挂载卷)。如果在启动时没有设备,系统也将正常启动。
唯一的不便之处在于,如果您在系统运行时连接设备,则根据配置(要测试的变量太多),设备可能不会立即安装。这可以通过简单的mount -a
或mount /specific_device
重新启动来解决。
答案2
我遇到了同样的问题 - 我做了额外的一步
如果您使用nofail
中的选项/etc/fstab
,系统将在启动时查找您的磁盘(和分区)。如果设备已插入,则将挂载文件系统。如果没有,则启动将照常继续。
参见 arch wiki: https://wiki.archlinux.org/index.php/Fstab
例子
UUID=XXXXXXXXXXXXXXX /myhdd ntfs auto,nofail,noatime,rw,user 0 0
我尝试在插入和不插入设备的情况下启动系统,并且运行正常。
我还没有实现的是启动后插入磁盘时自动挂载(启动时未插入磁盘时)。我必须mount -a
以 root 身份再次挂载所有内容。
答案3
/dev/xvdh1 /myfs xfs defaults,nofail,x-systemd.device-timeout=30 0 0
对我有用。
nofail
- 如果该设备不存在,则不要报告该设备的错误。x-systemd.device-timeout=30
- 如果设备不存在,启动将需要多 30 秒(默认为 90 秒)。
来源:https://wiki.archlinux.org/index.php/fstab#External_devices
答案4
在启动过程中安装的推荐方法是通过文件系统文件。查看您的询问,我可以看到您几乎已经完成了,只缺少将设备设置为使用自动挂载选项的指令,从而允许您的系统在设备可用时挂载该设备。
因此,只需将 fstab 中的行重写如下即可:
# <file system> <dir> <type> <options> <dump> <pass>
UUID="680C0FE30C0FAAE0" /jgdata ntfs user,auto,rw 0 0
修改并保存后,尝试手动挂载:
$ sudo 安装 -a
值得注意的是:
- 您需要确定设备的 UUID。UUID 是由 make-filesystem 实用程序 (mkfs.*) 在创建文件系统时生成的。
- 这些
<options>
需要按照非常具体的格式书写,用逗号分隔,但每个逗号后没有空格。要小心 ;-) - 我不确定这是否会顺利进行,因为你正在尝试自动挂载 NTFS 文件系统,可以使用NTFS-3G实用程序。虽然我的说明应该可以正常工作,但我从未尝试过自动挂载 NTFS。因此,如果失败,我建议您查看此挂载 Windows 分区以了解 NTFS 的其他用途。
谢谢!