Здесь — что делает systemd, когда загрузка не может продолжаться, и чем аварийный режим отличается от режима восстановления.
Строки fstab без nofail подключает цель local-fs.target, и от неё зависит дальнейшая загрузка. Строка не смонтировалась — цель не достигнута, и systemd запускает аварийный режим — цель emergency.target. На консоли машины — сообщение You are in emergency mode и оболочка root, а systemctl is-system-running печатает maintenance: машина ждёт человека.
Перед оболочкой systemd спрашивает пароль root. На учебной машине вход root заблокирован, но аварийная оболочка настроена открываться без пароля. На сервере пароль root задают заранее: без него в аварийный режим не войти.
Второй такой режим — rescue.target, режим восстановления. В него переводят сами, когда файловые системы в порядке, а остановиться нужно до служб:
| emergency | rescue | |
|---|---|---|
| файловые системы | корень и то, что успело смонтироваться | все из fstab |
| как попадают | systemd сам, когда не монтируется ФС | командой systemctl rescue или из меню загрузчика |
| для чего | починить fstab или файловую систему | починить службу или настройку |
Служба падает при загрузке из-за своего конфига, а конфиг лежит на разделе /var/lib/app из fstab. Исправить его нужно до старта служб. В какой режим переведёшь машину?
-
При обычной загрузке служба стартует со сломанным конфигом раньше правки, а задача — исправить его до старта служб.
-
В emergency смонтирован корень и то, что успело подключиться: раздела /var/lib/app может не оказаться, и править будет нечего. Все файловые системы из fstab монтирует rescue.
Rescue монтирует все файловые системы из fstab и останавливается до служб, поэтому конфиг на /var/lib/app доступен, а служба ещё не запущена. Emergency для этого не годится — там смонтировано не всё.
Главное в шаге
-
Строка fstab без
nofail, которая не монтируется, останавливает загрузку: systemd запускает emergency.target. -
В аварийном режиме на консоли — оболочка root, а
systemctl is-system-runningпечатаетmaintenance. - Rescue монтирует все файловые системы из fstab, emergency — корень и то, что успело подключиться.