Answers:
你们都在正确的道路上。我找到了一种更干净更好的方式。
正确的添加选项fstab
是nofail
,但是它需要紧随其后auto
。如果将其更改为noauto
,它将在引导期间永远不会挂载。如果添加nobootwait
到引导加载程序,则可能会错过一些严重的问题,例如在fsck
完成检查之前安装分区,或者不安装引导过程中使用的分区。
完成上述更改后,如果在系统关闭时插入了设备,则系统将正常启动(并挂载卷)。如果设备在启动时不存在,它也将正常启动。
唯一的不便之处是,如果您在系统运行时连接设备,则取决于配置(要测试的变量太多),设备可能不会立即挂载。可以通过简单mount -a
或mount /specific_device
重新启动来解决此问题。
我遇到了同样的问题-我又做了一个步骤
如果使用中的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用户身份再次安装所有设备。
noauto选项会让引导过程继续吗?
如果存在,它不会自动挂载,但是如果存在,它会知道,因此简单的挂载/ jgdata可以工作...然后,脚本化的挂载/ jdata不需要输出检查,只需捕获错误并继续引导
编辑:进一步阅读后,bootwait可能是传递的更正确的选项...(通常用于网络共享,该网络共享可能要等到引导过程的后期才能出现,但仍可能导致挂起,idk)
并且可以这样添加安装脚本:https : //stackoverflow.com/questions/2062543/running-a-script-with-the-help-of-grub-and-menu-lst
/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
nobootwait
语法
在引导过程中建议的挂载方法是通过fstab文件指示其系统。查看您的Ask,我可以看到您几乎在那儿,仅缺少将设备设置为使用自动挂载选项的说明,从而使系统可以在设备可用时挂载它。
因此,只需将fstab中的行重写为如下所示:
# <file system> <dir> <type> <options> <dump> <pass>
UUID="680C0FE30C0FAAE0" /jgdata ntfs user,auto,rw 0 0
更改并保存后,尝试手动安装:
$ sudo mount -a
重要的是要注意:
<options>
需要按照非常特定的格式来编写这些格式,并用逗号分隔,但每个逗号后不能有空格。注意这一点;-)谢谢!
sudo blkid
命令是找出UUID的好方法。
我有同样的问题。当我知道下次启动时将不存在该驱动器时,我一直在编辑fstab以注释掉该条目。然后,当我确实有该驱动器存在时,我只需编辑fstab除去注释并发出mount -a。这不是一个完美的解决方案。如果我能找到一种方法让系统自动安装驱动器(如果存在)或自动跳过它(如果不存在),那将是很好的。如果自动安装了NFS共享并且没有服务器,则会发生相同的问题。