仅在插入时才在启动时安装外部驱动器

仅在插入时才在启动时安装外部驱动器

我的 fstab 中有一个外部硬盘驱动器的条目:

UUID="680C0FE30C0FAAE0" /jgdata ntfs noatime,rw

但有时启动时未插入此驱动器。这让我在启动到一半时,系统提示“继续等待,按 S 或按 M”,但此时任何按键都不起作用(包括Ctrl- Alt- Delete,甚至大写锁定键也不起作用)。

除了编写脚本来检查 的输出之外fdisk -l,我如何才能在启动时仅当该驱动器存在时才挂载它?如果有一个该驱动器的 fdisk 条目会很方便,这样我只需键入mount /jgdata而不需要设备名称。

答案1

你们都走在正确的道路上。我找到了一种更干净、更好的方法。

正确的添加选项fstabnofail,但是,它需要放在 之后auto。如果将其更改为noauto,它将永远不会在启动期间挂载。如果将其添加nobootwait到引导加载程序,您可能会错过一些严重的事情,例如在完成检查之前挂载分区fsck,或者不挂载在启动过程中使用的分区。

进行上述更改后,如果在系统关闭时插入设备,系统将正常启动(并挂载卷)。如果在启动时没有设备,系统也将正常启动。

唯一的不便之处在于,如果您在系统运行时连接设备,则根据配置(要测试的变量太多),设备可能不会立即安装。这可以通过简单的mount -amount /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

值得注意的是:

  1. 您需要确定设备的 UUID。UUID 是由 make-filesystem 实用程序 (mkfs.*) 在创建文件系统时生成的。
  2. 这些<options>需要按照非常具体的格式书写,用逗号分隔,但每个逗号后没有空格。要小心 ;-)
  3. 我不确定这是否会顺利进行,因为你正在尝试自动挂载 NTFS 文件系统,可以使用NTFS-3G实用程序。虽然我的说明应该可以正常工作,但我从未尝试过自动挂载 NTFS。因此,如果失败,我建议您查看此挂载 Windows 分区以了解 NTFS 的其他用途。

谢谢!

相关内容