Как точно определить, почему Systemd переходит в аварийный режим

10

Мой настольный компьютер с Debian Jessie начинал падать в оболочку аварийного режима при каждой загрузке. Экран говорит, чтобы использовать, journalctl -xbчтобы найти причину, и использовать, systemctl defaultчтобы продолжить загрузку. Когда я выполняю systemctl default, система продолжает загружаться, и после пары недель использования системы, очевидно, нет ничего плохого.

Если смотреть сквозь journalctl -xb, то ничто не является причиной падения в аварийный снаряд. Есть ли простой способ точно определить причину, по которой он решил перейти в аварийный режим? Существуют ли другие флаги или параметры загрузки, которые позволят понять, где проблема?

jordanm
источник
2
Это должно быть видно в журнале, но с ограниченной информацией, которую вы предоставляете, нет никакого способа, чтобы направлять вас. У вас есть копия того, journalctl -xb когда это произошло?
Джули Пеллетье
3
Загрузитесь в режиме подробного ведения журнала systemd.log_level=debug systemd.log_target=kmsg log_buf_len=1Mдля детализации судебного уровня ...
jasonwryan
2
Существующие журналы уже должны дать вам причину. Причин так много, что об этом очень сложно догадаться.
Джакомо Катенацци
1
У меня такая же проблема на экземпляре Ubuntu 16.04. За последние 20 лет были установлены, использованы, восстановлены многие системы Linux. Ничего особенного на экране, и на этот раз ничего не выделяется в журналах. Экран говорит Ctrl-D, чтобы продолжить загрузку, но это только приводит к тому же самому запросу через мгновение. Без понятия. Разочаровывает, не так ли?
Стефан Гурихон
Вы пробовали все шаги из раздела «Диагностика проблем с загрузкой» в « Отладке systemd» ?
Siosm

Ответы:

6

Ошибка должна была показать красный цвет [ FAIL ]на консоли (вместо [ OK ]) с описанием устройства рядом с ним. Как правило, первые неудачи являются наиболее важными. Используйте shift + pageup на консоли для прокрутки вверх и просмотра последних нескольких скриншотов вывода. Это может не сработать, если вывод слишком большой.

Это работает, даже если вы обычно не видите [ OK ]сообщений, например, из- quietза командной строки ядра, используемой Debian. При первом сбое systemd переключается в подробный режим.

В противном случае вы можете использовать systemctl. Без каких-либо опций, он показывает огромный список известных юнитов с отказами, выделенными красным. Чтобы показать только неудачные, используйте systemctl --state=failedили systemctl --failed.


Если вы просматриваете файлы модуля, есть только несколько способов вернуться к загрузке emergency.target. Обычно происходит .mountсбой модуля для локальной файловой системы, что приводит local-fs.targetк сбою. Или когда ваш initramfs не может смонтировать корневую файловую систему, если ваш initramfs использует systemd.

local-fs.targetесть OnFailure=emergency.target. И это происходит сбой, потому что модули для локальных файловых систем автоматически добавляются в список Требуется local-fs.target (если они не имеют DefaultDependencies=no).

$ systemctl show --property Requires local-fs.target
Requires=-.mount home.mount boot.mount boot-efi.mount
sourcejedi
источник
2

Время от времени я сталкиваюсь с приглашением «режим обслуживания», и мне приходится просматривать журнал Journal на наличие ошибок. Так как journalctl использует меньше как пейджер, вы должны иметь возможность применять любые менее быстрые клавиши для поиска.

Обычно я полагаюсь на функцию поиска (/) и ищу что-либо, эквивалентное «ошибка», «предупреждение» или «сбой». И убедитесь, что -i для принудительного поиска без учета регистра.

Поэтому мои нажатия клавиш выглядят так:

-i (case insensitive)
g (move to start)
/error
nnnn (skip through results)
g (move to start)
/fail
nnnn (skip through results)
g (move to start)
/warn
nnnn (skip through results)

Технически это не исчерпывающий или точный поиск точной проблемы, но я никогда не пропускал проблему загрузки таким образом.

Ниже приведены некоторые связанные с ними сочетания клавиш:

http://www.thegeekstuff.com/2010/02/unix-less-command-10-tips-for-effective-navigation/

madumlao
источник
Я считаю, что также должна быть возможность быстро пролистать страницы и искать красные сообщения (LOG_ERR и выше). systemdбудет регистрировать красные сообщения о сбоях при запуске сервисного модуля или, что более важно, об ошибке при монтировании файловой системы.
sourcejedi