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

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

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

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

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

71
задан 3 November 2011 в 01:08

6 ответов

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

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

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

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

0
ответ дан 3 November 2011 в 01:08

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

Если вы используете опцию 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
ответ дан 3 November 2011 в 01:08

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

0
ответ дан 3 November 2011 в 01:08

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

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

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

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

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

0
ответ дан 3 November 2011 в 01:08

Другие вопросы по тегам:

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