Система: 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 при загрузке системы?
Спасибо.