问题描述
我的fstab中有一个外部硬盘入口:
UUID="680C0FE30C0FAAE0" /jgdata ntfs noatime,rw
但有时这个驱动器在启动时没有插入。这让我在开机的一半时间,提示“继续等待,按S或按M”但在此阶段没有按键有任何影响(包括Ctrl
– Alt
– Delete
,甚至不是caps-lock)。
如果没有编写脚本来检查fdisk -l
的输出,那么只有在存在时才能在启动时安装此驱动器?为此驱动器提供fdisk条目会很方便,因此我只需输入mount /jgdata
而不需要设备名称。
最佳解决办法
你们都在正确的道路上。我发现了一种更干净,更好的形式。
在fstab
中添加的正确选项是nofail
,但是,它需要在auto
之后。如果将其更改为noauto
,则在引导期间永远不会挂载。如果将nobootwait
添加到引导加载程序,则可能会遗漏一些严重的内容,例如在fsck
完成检查之前安装分区,或者不安装引导过程中使用的分区。
进行上述更改后,如果在系统关闭时插入设备,系统将正常启动(并安装卷)。如果设备在引导时不存在,它也将正常启动。
唯一的不便是,如果在系统运行时连接设备,则根据配置(要测试的变量太多),设备可能无法立即安装。这可以通过简单的mount -a
或mount /specific_device
或重新启动来解决。
次佳解决办法
noauto选项是否允许启动过程继续?
它不会自动挂载,如果存在,但它确实知道如果存在,所以一个简单的mount /jgdata工作…然后脚本mount /jdata不需要输出检查,只是捕获错误并继续启动
编辑:进一步读取bootwait可能是一个更正确的选项传递…(通常用于网络共享,可能会在启动过程的后期才出现,但它可能仍会导致挂起,idk)
并且可以像这样添加mount脚本:https://stackoverflow.com/questions/2062543/running-a-script-with-the-help-of-grub-and-menu-lst
第三种解决办法
我有同样的问题 – 我已经做了一个额外的步骤
如果在/etc/fstab
中使用nofail
选项,系统将在引导时查找磁盘(和分区)。如果设备已插入,则将安装文件系统。如果没有,开机将继续正常进行。
请参阅arch wiki:https://wiki.archlinux.org/index.php/Fstab
例
UUID=XXXXXXXXXXXXXXX /myhdd ntfs nofail,auto,noatime,rw,user 0 0
我试图在插入和不插入设备的情况下启动系统,它可以正常工作。
我没有实现的是在启动后插入磁盘时自动挂载(在启动时没有插入时)。我必须使用mount -a
作为root再次挂载。