fstab中添加正确的选项是nofail,但是它需要在auto之后。如果将其更改为noauto,则在启动过程中永远不会挂载。如果在引导加载程序中添加nobootwait,则可能会错过一些严重的问题,例如在fsck完成检查之前挂载分区,或者不挂载用于引导过程的分区。
进行以上更改后,如果设备在系统关闭时插入,则系统将正常启动(并挂载卷)。
如果设备在启动时不存在,则系统也将正常启动。
唯一的不便之处是,如果您在系统运行时连接设备,根据配置(测试的变量太多),设备可能无法立即挂载。这可以通过简单的mount -a或mount /specific_device或重新启动来解决。
UUID=XXXXXXXXXXXXXXX /myhdd ntfs auto,nofail,noatime,rw,user 0 0
我已经尝试过插上和不插上设备来启动系统,都能正常工作。
但是我还没有成功实现的是,在启动时未插入磁盘后再插入时自动挂载。我必须以root身份使用mount -a命令重新挂载所有内容。
/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
noauto选项是否允许引导过程继续进行?
如果存在,它不会自动挂载,但如果存在,则会被识别,因此可以使用简单的mount /jgdata命令...然后脚本化的mount /jdata就不需要输出检查,只需捕获错误并继续引导。
编辑:经过进一步阅读,bootwait可能是一个更正确的传递选项...(通常用于在引导过程中可能直到稍后才出现的网络共享,但可能仍会导致挂起,我不确定)
可以像这样添加挂载脚本:https://stackoverflow.com/questions/2062543/running-a-script-with-the-help-of-grub-and-menu-lst
# <file system> <dir> <type> <options> <dump> <pass>
UUID="680C0FE30C0FAAE0" /jgdata ntfs user,auto,rw 0 0
更改并保存后,请尝试手动挂载:
$ sudo mount -a
需要注意以下几点:
<options> 需要按照非常特定的格式书写,用逗号分隔,但每个逗号后面不要加空格。请小心处理这一点;-)谢谢!
sudo blkid 命令是查找 UUID 的好方法。 - Jeremy