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

У меня есть запись для внешнего жесткого диска в моем fstab:

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

Но иногда этот диск не подключается во время загрузки. Это оставляет меня на полпути через загрузку, с приглашением «Продолжить ожидание, нажмите S или нажмите M», но никакое нажатие клавиш не оказывает никакого влияния на этом этапе (включая Ctrl - Alt - Удалить , даже без заглавных букв).

Если не написать сценарий для проверки выходных данных fdisk -l, как я могу подключить этот диск во время загрузки, только если он присутствует? Было бы удобно иметь запись fdisk для этого диска, поэтому я могу просто набрать mount /jgdata вместо указания имени устройства.

61
задан 08.12.2019, 13:36

6 ответов

Рекомендуемый способ монтирования во время загрузки - инструктировать их систему через файл 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.

Спасибо!

0
ответ дан 08.12.2019, 13:36
  • 1
    Я думаю, он получает большую часть того, что вы сказали, но зависает, когда диск не обнаружен. вот почему я предложил обходной путь к «правильному» путь – Larry 08.12.2019, 13:37
  • 2
    Вам нужно добавить опцию nofail. – davejal 08.12.2019, 13:37
  • 3
    Спасибо за ответ. К вашему сведению, команда sudo blkid - это хороший способ узнать UUID. – Mark Schultheiss 08.12.2019, 13:37
  • 4
    Я только что попробовал эту точную строку в fstab. Когда жесткий диск подключен, система загружается нормально. Но во время загрузки, когда внешний жесткий диск не подключен, он все равно предлагает мне подождать / пропустить / восстановить вручную. Так как это приглашение не истекает, если я не на терминале, окно не загрузится, если внешний жесткий диск не подключен. – LXSoft 08.12.2019, 13:38

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

Если вы используете опцию nofail в /etc/fstab, система будет искать ваш диск (и раздел) во время загрузки. Если устройство подключено, файловая система будет смонтирована. Если нет, загрузка продолжится как обычно.

См. Вики: https://wiki.archlinux.org/index.php/Fstab

Пример

UUID=XXXXXXXXXXXXXXX    /myhdd ntfs  nofail,auto,noatime,rw,user    0   0

Я пытался загрузиться система с подключенным устройством и без него, и она работает нормально.

Чего я не достиг, так это автоматического монтирования, когда диск подключен после загрузки (когда он не подключен при загрузке). Я должен использовать mount -a как root, чтобы смонтировать все снова.

0
ответ дан 08.12.2019, 13:37

У меня та же проблема. Я редактировал fstab, чтобы закомментировать запись, когда я знаю, что в следующий раз при загрузке у меня не будет диска. Затем, когда у меня есть диск, я просто редактирую fstab, чтобы удалить комментарий, и запускаю mount -a. Это не идеальное решение. Было бы здорово, если бы я мог найти способ, как система автоматически смонтирует диск, если он есть, или автоматически пропустит его, если он отсутствует. Та же проблема возникает, если у вас автоматически смонтированы общие ресурсы NFS, а сервер отсутствует.

0
ответ дан 08.12.2019, 13:37
  • 1
    Проверьте ответ, который я принял, просто добавьте nobootwait к опциям монтирования в fstab. – Damian 08.12.2019, 13:37
/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

0
ответ дан 08.12.2019, 13:38
  • 1
    Это самый лучший и самый простой ответ. Обратите внимание, что это новый синтаксис для более новых версий ОС, которые используют systemd, заменив старый синтаксис nobootwait – Palec 08.12.2019, 13:38

Опция noauto позволяет процессу загрузки продолжаться?

он не монтируется автоматически, если присутствует, но он узнает об этом, если присутствует, так что простое mount / jgdata работает ... тогда скриптовому mount / jdata не понадобится проверка вывода, просто перехватите ошибка и продолжайте загрузку

edit: при некотором дальнейшем чтении bootwait, вероятно, является более правильным вариантом для передачи ... (обычно используется для сетевых ресурсов, которые могут отсутствовать до тех пор, пока в процессе загрузки, но это может все же вызвать зависание, idk)

и скрипт монтирования можно добавить так: https://stackoverflow.com/questions/2062543/running-a-script-with-the-help-of -grub-и-меню LST

0
ответ дан 08.12.2019, 13:38
  • 1
    Спасибо за ответ. Просто чтобы уточнить, опции должны быть добавлены в строку fstab, правильно? (РЕДАКТИРОВАТЬ: Nvm, гуглил это. Похоже, nobootwait это то, что мне нужно.) – jpmc26 08.12.2019, 13:39
  • 2
    Я использовал опцию nobootwait в fstab, работает отлично, спасибо. – Daniel 08.12.2019, 13:39

Вы все на правильном пути. Я нашел способ, который немного более чист и лучше.

Правильный вариант добавления в fstab - nofail, однако, он должен следовать после auto. Если вы измените его на noauto, он никогда не будет монтироваться во время загрузки. Если вы добавите nobootwait в загрузчик, вы можете пропустить что-то серьезное, например, смонтировать раздел до того, как fsck завершит его проверку, или не смонтировать раздел, используемый в процессе загрузки.

После внесения вышеуказанных изменений система запустится в обычном режиме (и смонтирует том), если устройство будет подключено во время выключения системы. Он также будет загружаться нормально, если устройство отсутствует во время загрузки.

Единственное неудобство заключается в том, что если вы подключаете устройство во время работы системы, в зависимости от конфигурации (слишком много переменных для тестирования), устройство может не подключиться сразу. Это можно исправить с помощью простого mount -a или mount /specific_device или перезагрузки.

0
ответ дан 08.12.2019, 13:39
  • 1
    man fstab не дает точности требуемого порядка (проверено в centos 7 и Ubuntu 14.04). Тем не менее, он говорит, что «nofail не сообщать об ошибках для этого устройства, если оно не существует». Мне интересно, поможет ли это не дождаться тайм-аута при загрузке, если том nfs недоступен. – stil 08.12.2019, 13:39
  • 2
    Каждый пример, который я могу найти в Интернете, показывает nofail перед auto. Есть ли документация для правильного заказа? – Eugene Ryabtsev 08.12.2019, 13:40

Теги

Похожие вопросы