По умолчанию systemd переходит в аварийную оболочку при малейшей ошибке. Например, если по какой-либо причине происходит сбой одного из монтирований на fstab, система сразу же перестает загружаться. Я управляю десятками разнообразных производственных систем и считаю, что это поведение очень пагубно. (На самом деле я думаю, что это серьезный провал проекта, но это личное мнение).
Я бы хотел повысить устойчивость системы к загрузке. Оптимально, чтобы система всегда загружалась, отсутствующие драйверы, монтируемые и т. Д. Не должны сбрасывать аварийную оболочку (вместо этого просто показывать предупреждение), если только данная ошибка не сделает вход в консоль абсолютно невозможным. Что может быть запущено, что должно быть запущено.
Я знаю, что systemd автоматически генерирует файлы * .mount из / etc / fstab, и я мог бы использовать опцию nofail с небольшим таймаутом x-systemd.device (или определить соответствующие файлы .mount самостоятельно). Однако это не решило бы мою проблему, я хочу сделать систему более устойчивой, «исправление» fstab каждый раз не очень удобно, и я не уверен, сколько существует других возможных «проблем», которые делают мою систему не загружаемой только потому, что какой-то разработчик где-то думал, что это достаточно важно.
В своем роде я хотел бы восстановить контроль над моей машиной и не позволить systemd решить, какая проблема является достаточно серьезной, чтобы нарушить процесс загрузки. Является ли это возможным?
источник
Ответы:
Это буквально только неудачи монтирования, это все, что вам нужно изменить.
Так что письмо с вашей просьбой будет тривиально ответить. Создайте раскрывающийся файл:
Я полагаю, что это не добавит новых проблем, кроме тех, которые Linux sysvinit уже перенес, допустив этот сценарий частичного сбоя.
Однако вы также указали вопрос о том, как долго systemd должен ждать, пока указанные блочные устройства станут доступными. Я не вижу способа настроить это, не предоставив замену генератору fstab в целом. https://www.freedesktop.org/software/systemd/man/systemd.generator.html
Если вы сбросите большое количество менее широко используемого кода, это вряд ли повысит устойчивость системы. Я думаю, что самым близким решением было бы исправление существующего генератора fstab. Это не очень сложно, я подозреваю, что вы можете избежать неприятностей / не отставать от любых существенных изменений.
Технически, если в вашем дистрибутиве есть автономный
mountall
скрипт sysvinit, вы можете попытаться подключить его. Но это значительно изменит процесс загрузки - на самом деле это скорее форк. Я бы не рекомендовал такой подход.https://unix.stackexchange.com/a/393711/29483
источник
[Unit]\nOnFailure=
в свой nofail.conf. По-видимому, можно настроить время ожидания в /etc/systemd/system.conf (с помощью общей опции DefaultTimeoutStartSec). Мои системы обычно достаточно быстрые, 90-е годы кажутся излишними. Это решение кажется многообещающим.OnFailure=
в/lib/systemd/system/local-fs.target
вместо/etc/systemd
(Ubuntu 16.04 на AWS)[Unit]
раньшеOnFailure=
.Отключите автоматическое монтирование любой файловой системы, которая не является существенной для операции загрузки, добавив
noauto
опцию монтирования к ее/etc/fstab
записи:чтобы:
а затем смонтировать файловую систему после загрузки, используя строку в
/etc/rc.local
:В этом примере используется NFS, но он также применим к логическим устройствам, импортированным с файлового сервера.
источник
Попробуйте это возможно?
источник