Подключайте внешний диск во время загрузки только в том случае, если он подключен к сети

У меня есть запись для внешнего жесткого диска в моей 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 или перезагрузка.

У меня была та же проблема - я сделал один дополнительный шаг

Если вы используете 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

сработало для меня.

нофейл ... Не сообщайте об ошибках для этого устройства, если оно не существует.
x-systemd.device-тайм-аут=30 ... Загрузка займет на 30 секунд больше, если устройство не существует (по умолчанию 90 секунд).

Источник: https://wiki .archlinux.org/index.php/fstab#External_devices

Рекомендуемый способ монтирования во время загрузки - это инструктирование их системы с помощью fstab файл. Глядя на ваш запрос, я мог видеть, что вы почти на месте, не хватает только инструкции, которая настраивает устройство на использование параметров автоматического монтирования, позволяя вашей системе монтировать устройство, когда оно доступно.

Итак, просто перепишите строку в вашей fstab, чтобы она была такой, как показано ниже:

# <file system>           <dir>       <type>    <options>         <dump> <pass>UUID="680C0FE30C0FAAE0"   /jgdata      ntfs      user,auto,rw       0     0

После изменения и сохранения попробуйте смонтировать его вручную:

$ sudo mount -a

Важно отметить, что:

  1. вы должны быть уверены в UUID устройства. UUID генерируются утилитами make-filesystem (mkfs.*) при создании файловой системы.
  2. Те <options> должно быть написано в очень специфическом формате, разделенном запятыми, но без пробелов после каждой запятой. Будьте осторожны с этим ;-)
  3. Я не уверен, что это будет работать гладко, потому что вы пытаетесь автоматически смонтировать файловую систему NTFS, которую можно обрабатывать с помощью NTFS-3G коммунальные услуги. Хотя мои инструкции должны работать правильно, я никогда раньше не пробовал автоматически монтировать NTFS. Итак, если это не удалось, я рекомендую вам взглянуть на это Монтаж Перегородок Windows для альтернативного использования NTFS.

Спасибо!