Рейтинг:2

Как установить тайм-аут для ожидания отсутствующего жесткого диска во время загрузки системы?

флаг it

Система: Ubuntu 20.04 с загрузкой EFI.


Пояснение зачем мне это нужно

я настроил два менять разделы:

  • Один первичный своп на втором HDD. Используется для спящего режима. (Функция гибернации лучше использовать на жестком диске, чтобы продлить срок службы твердотельного накопителя.)
  • Второй раздел подкачки на SSD с системой. Это на случай, если я использую SSD как один диск - когда второй жесткий диск удален и отсутствует. В этом случае я просто хочу, чтобы система работала нормально — даже без функции гибернации (или с использованием подкачки на SSD).

Что я сделал:

  • Создал раздел подкачки на жестком диске.
  • Установите его UUID как резюме для Личинка.

/etc/по умолчанию/жратва:

GRUB_CMDLINE_LINUX_DEFAULT="тихое возобновление заставки=UUID=25d5d4af-736a-4232-a4bb-492499bc1038"
  • Установите для обоих разделов подкачки значение фстаб с приоритетом подкачки на HDD и безошибочный и x-systemd.device-timeout = 3 с параметры. Этот вариант для случая, когда HDD отсутствует. Без этой опции и при отсутствии жесткого диска система зависает при загрузке на 90 секунд.

/etc/fstab конфиг для разделов подкачки:

# поменять местами на жестком диске
UUID=25d5d4af-736a-4232-a4bb-492499bc1038 нет подкачки nofail,pri=20,x-systemd.device-timeout=3s 0 0
#обмен на SDD
UUID=e78a171a-3c52-4cd1-b86a-17709f4b49d9 нет обмена pri=10 0 0

Что у меня за проблема:

Когда SSD и HDD подключены к ноутбуку вместе, все в порядке. Когда HDD отсутствует во время загрузки системы Личинка пытается найти раздел с свопом на HDD и зависает на этом примерно на 33 секунды.

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

/var/log/boot.log:[ESC[0;1;31m TIME ESC[0m] Истекло время ожидания устройства ESC[0;1;39m/dev/disk/by-uuid/46e39f74-e1b3-4705-9bac -84ee2593b4d
4ESC[0м.

/var/log/syslog: 23 фев. bdf3-be7e4b23fc73 ro тихий всплеск возобновление = UUID = 25d5d4af-736a-4232-a4bb-492499bc1038 vt.handoff = 7

/var/log/syslog: 23 февраля 14:56:14 Устройство-2 systemd[1]: dev-disk-by\x2duuid-25d5d4af\x2d736a\x2d4232\x2da4bb\x2d492499bc1038.device: Job dev-disk-by\x2duuid -25d5d4af\x2d736a\x2d4232\x2da4bb\x2d492499bc1038.device/start истекло время ожидания.

Что я хочу:

Установить таймаут ожидания отсутствия HDD не более 5 секунд. Теперь он установлен по умолчанию где-то в системе на 30-33 секунды.


Я попробовал следующее:

  • Чтобы найти свойство timeout в Личинка конфиг. В /etc/по умолчанию/жратва можно указать два связанных параметра:
  • GRUB_HIDDEN_TIMEOUT
  • GRUB_RECORDFAIL_TIMEOUT

Но они не для этого случая. Информацию об этих опциях можно найти здесь:

Я попытался проанализировать код для Личинка в /etc/grub.d/ и понял, что такой таймаут видимо указан в конфиге загрузки системы - в системад. Я попытался найти соответствующий параметр тайм-аута в системад конфигурация:

sudo grep -iR тайм-аут /etc/systemd/
/etc/systemd/system/rescue.target.wants/grub-initrd-fallback.service:TimeoutSec=0
/etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service:ExecStart=/usr/bin/nm-online -s -q --timeout=30
/etc/systemd/system/emergency.target.wants/grub-initrd-fallback.service:TimeoutSec=0
/etc/systemd/system/multi-user.target.wants/ua-reboot-cmds.service:TimeoutSec=0
/etc/systemd/system/multi-user.target.wants/unattended-upgrades.service:TimeoutStopSec=1800
/etc/systemd/system/multi-user.target.wants/grub-initrd-fallback.service:TimeoutSec=0
/etc/systemd/system/multi-user.target.wants/snapd.recovery-chooser-trigger.service:# блокирует запуск службы до тех пор, пока не будет обнаружен триггер или истечет время ожидания
/etc/systemd/system/sleep.target.wants/grub-initrd-fallback.service:TimeoutSec=0
/etc/systemd/system.conf:#DefaultTimeoutStartSec=90 с
/etc/systemd/system.conf:#DefaultTimeoutStopSec=90 с
/etc/systemd/system.conf:#DefaultTimeoutAbortSec=
/etc/systemd/user.conf:#DefaultTimeoutStartSec=90 с
/etc/systemd/user.conf:#DefaultTimeoutStopSec=90 с
/etc/systemd/user.conf:#DefaultTimeoutAbortSec=
/etc/systemd/logind.conf:#HoldoffTimeoutSec=30s

Попытался изменить параметры со значением 30 секунд на 5 секунд:

/etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service:ExecStart=/usr/bin/nm-online -s -q --timeout=5
/etc/systemd/logind.conf:#HoldoffTimeoutSec=5s

Но это не дало ожидаемого результата.

Также я попытался установить то же самое этикетки для разделов подкачки и указать возобновление раздела подкачки по этой метке (/dev/диск/по-метке/...), а не по UUID. Но в таком случае нет определения, какой раздел подкачки из обоих будет использоваться для загрузки системы из состояния гибернации.

Я нашел похожий вопрос: Как установить тайм-аут для задания запуска systemd «dev-md125.device» (mdadm) Но в нем нет подробностей как настроить таймаут в системад для жесткого диска.

Здесь есть пример как установить Таймаутстартсек за httpd.service

Можно ли указать такой таймаут для монтирования HDD при загрузке системы?

Спасибо.

флаг cn
Не используйте разделы, используйте файл подкачки, и вашей проблемы не существует: вы можете поместить любой файл подкачки в каталог на каждом из дисков. «(Функция гибернации лучше использовать на жестком диске, чтобы продлить срок службы SSD.)» Сомневаюсь, что это серьезно повлияет на срок службы SSD. Мой SSD в 10 раз дольше моего ноутбука, и когда я покупаю новый ноутбук, я получаю новый (гораздо более быстрый) SSD. Все, что вам действительно нужно, — это резервная копия личных данных на SSD.
флаг it
Не думал в этом направлении. Это интересно. Спасибо за идею! У меня есть старый добрый Toshiba SSD - не хочется его гибернацией по 3 раза за день убивать )
флаг cn
О, тогда это действительно может быть проблемой. В старых ssd было много мелких ошибок при хранении данных. Могу ли я также предположить, что может быть лучше не переходить в спящий режим, если вы используете SSD для загрузки.Загрузка происходит так быстро, что я всегда выключаю машину (я думаю, ваше время загрузки будет меньше 15 секунд?).
флаг it
@Rinzwind, да, я тоже обычно отключаю питание. Время загрузки довольно быстрое - около 20-30 секунд. Но гибернация иногда тоже бывает полезна - многие приложения с их состоянием можно сохранить в спящем режиме - и подождать 1 минуту, пока гибернация загрузит их с жесткого диска, для меня не проблема. Кроме того, если своп находится на HDD, то гибернация для SSD будет бесплатной - я имею в виду, что это не повредит ему (но, конечно, не так быстро, как на SSD). А настройки гибернации также открывают опции «гибридный сон» и «сон, затем гибернация» — это тоже иногда бывает полезно. Так что я думаю, что эта установка того стоит.
флаг it
@Rinzwind Я проанализировал подход с файлами подкачки и не понимаю, как они могут помочь в моей ситуации. В случае файлов подкачки (также как на жестком диске, так и на SDD) я также должен указать раздел UUID расположения файлов подкачки в свойстве `Grub2` `GRUB_CMDLINE_LINUX_DEFAULT` в формате `resume=UUID= резюме_смещение =` источник: [HOWTO: Используйте файл подкачки вместо раздела и режима гибернации] (https://ubuntuforums.org/showthread.php?t=1042946) И должна быть такая же проблема при загрузке с отсутствующим UUID, на котором находится файл подкачки. Не могли бы вы уточнить, как они могут помочь?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.