Linux Labs

Система изнутри: ресурсы, ядро, процессы / Ступень 11 из 13

Система не загрузилась: аварийный режим

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 3 из 7 · на машине · 6 мин

Журнал загрузки

Здесь — как по журналу найти строку fstab, на которой загрузка остановилась.

Сообщение аварийного режима само называет первую команду — journalctl -xb (в Вики): -b — записи этой загрузки, -x — пояснения systemd к ним. Записей тысячи, поэтому начинают с ошибок и списка того, что не запустилось. Оболочка — root, sudo не нужен:

bash
journalctl -b -p err
systemctl --failed

Каждую строку fstab systemd превращает в юнит монтирования с именем по точке: /srv/cache → srv-cache.mount. Цепочку в журнале — вот выдержка из journalctl -b — читают от причины к следствию:

text
tmpfs: Unknown parameter 'szie'
Failed to mount srv-cache.mount - /srv/cache.
Dependency failed for local-fs.target - Local File Systems.
Reached target emergency.target - Emergency Mode.

Ядро не приняло опцию szie, юнит монтирования упал, local-fs.target не достигнута, и systemd ушёл в аварийный режим. Опечатку в опции findmnt --verify не заметил: её ловит само монтирование. Поэтому после правки fstab, до перезагрузки, запускают sudo mount -a: он ответил бы wrong fs type, bad option на эту строку сразу.

Другой сервер после перезагрузки тоже стоит в аварийном режиме, а в его journalctl -b — другие строки:

text
Timed out waiting for device … - /dev/disk/by-uuid/5d2e…
Dependency failed for srv-backup.mount - /srv/backup.
Dependency failed for local-fs.target - Local File Systems.
Проверь себя 1 вопрос

Что остановило загрузку другого сервера по строкам его журнала?

  • Опечатку в опции журнал назвал бы сообщением mount или ядра, как Unknown parameter. Здесь до монтирования не дошло: systemd не дождался устройства.

  • Служб в этих строках нет: srv-backup.mount — юнит монтирования из строки fstab для /srv/backup.

  • local-fs.target цела: Dependency failed значит, что она не дождалась своего юнита монтирования. Первая строка называет причину — устройство с UUID так и не появилось.

systemd полторы минуты ждал устройство с UUID из строки /srv/backup и не дождался, поэтому её юнит монтирования не запустился, а за ним и local-fs.target. Исправляют строку — UUID по blkid или nofail, если без диска можно жить.

Главное в шаге

  • journalctl -b -p err и systemctl --failed показывают, какой юнит монтирования упал и почему.
  • Цепочка в журнале: причина от mount или ядра → Failed to mount → Dependency failed for local-fs.target.
  • findmnt --verify не заметил ошибку в опции: строку целиком проверяет sudo mount -a до перезагрузки.
Ubuntu 24.04
Загрузка…