Вопрос или проблема
У меня есть несколько систем Fedora; некоторые работают на fc41, но более похожую на производственную систему я держу на одну версию позади — на fc40.
На одной из них (я называю ее cleo
), загрузка занимает больше времени, чем мне хотелось бы. В блоге я узнал, что можно выяснить причину, используя systemd-analyze critical-chain
, что выдало ошибку
Загрузка еще не завершена (org.freedesktop.systemd1.Manager.FinishTimestampMonotonic=0).
Пожалуйста, попробуйте позже.
Совет: используйте 'systemctl list-jobs', чтобы увидеть активные задания.
Следуя этому совету, я получил
JOB UNIT TYPE STATE
334 plymouth-quit-wait.service start running
462 power-profiles-daemon.service start waiting
146 multi-user.target start waiting
432 systemd-update-utmp-runlevel.service start waiting
145 graphical.target start waiting
5 jobs listed.
Меня озадачивает тот факт, что несмотря на незавершенность загрузки, я могу подключиться к GNOME рабочему столу, используя TigerVNC, и также могу войти по ssh
без проблем.
На другой производственной системе (shadow
), я получаю
[lpoulsen@shadow ~]$ sudo systemd-analyze critical-chain
Время, когда юнит стал активным или стартовал, указано после символа "@".
Время, которое потребовалось юниту для старта, указано после символа "+".
multi-user.target @17.354s
└─pmlogger_farm.service @17.350s +2ms
└─pmlogger.service @16.283s +1.055s
└─pmcd.service @15.873s +398ms
└─network-online.target @15.800s
└─NetworkManager-wait-online.service @14.231s +1.567s
└─NetworkManager.service @13.387s +829ms
└─network-pre.target @13.375s
└─firewalld.service @10.932s +2.441s
└─polkit.service @10.663s +251ms
└─basic.target @10.622s
└─dbus-broker.service @10.567s +51ms
└─dbus.socket @10.564s
└─sysinit.target @10.550s
└─systemd-resolved.service @10.375s +174ms
└─systemd-tmpfiles-setup.service @10.000s +356ms
└─systemd-journal-flush.service @4.037s +5.947s
└─systemd-journald.service @3.906s +118ms
└─systemd-journald-audit.socket @3.916s
└─system.slice
└─-.slice
[lpoulsen@shadow ~]$ sudo systemctl list-jobs
No jobs running.
[lpoulsen@shadow ~]$
Ответ или решение
Чтобы выполнить диагностику проблемы с загрузкой системы Fedora 40 и выявить причины, по которым на вашей системе, которую вы называете "cleo", не достигается таргет multi-user.target, необходимо провести детальное исследование текущей ситуации, используя команду systemd и другие доступные инструменты.
Теория
Система инициализации systemd, используемая в Fedora и многих других современных дистрибутивах Linux, управляет процессами и услугами, которые запускаются при загрузке системы. Один из важных аспектов systemd — это "таргеты", представляющие собой наборы сервисов и юнитов, которые должны быть активированы для достижения определенного состояния системы. Таргет multi-user.target идентифицирует состояние, в котором операционная система готова обслуживать входы пользователя в консольном режиме, предоставляя полный набор базовых сетевых и системных служб.
Если система не достигает этого таргета, это может свидетельствовать о проблемах в запуске одного или нескольких сервисов, необходимых для его завершения. Ваше наблюдение, что вы все же можете получить доступ к GNOME через TigerVNC и подключиться через SSH, может означать, что система фактически находится в состоянии близком к графическому режиму (graphical.target), однако некоторые службы остаются неактивированными, что и вызывает задержки или бесконечное ожидание завершения процесса загрузки.
Пример
В описанной вами проблеме команда systemd-analyze critical-chain
показывает, что нет события завершения (FinishTimestampMonotonic=0), что указывает на незавершенность процессов начальной инициализации. Команда systemctl list-jobs
дает вывод с информацией, что несколько служб находятся в состоянии ожидания или выполнения:
plymouth-quit-wait.service
— данный сервис управляет графическим значком загрузки (splash screen) и иногда может оставаться в "подвешенном" состоянии, если какие-либо службы, которые он ожидает отключить, не завершены;power-profiles-daemon.service
— находится в ожидании, вероятно, из-за ожидания окончательной инициализации конфигурации энергопотребления;multi-user.target
— в ожидании то же, как и остальные таргеты и сервисы, которые на него завязаны.
Для сравнения, на другой системе под названием "shadow", система успешно достигает multi-user.target в течение 17.354 секунд без каких-либо ожидающих задач, что свидетельствует о том, что все связанные сервисы и зависимости были успешно выполнены.
Применение
-
Сервисы и их статус: Проверьте статус служб, которые находятся в состоянии выполнения или ожидания с помощью
systemctl status <имя_сервиса>
. Особое внимание уделите тем, которые вы видите в списке ожидающих (в вашем случае этоplymouth-quit-wait.service
иpower-profiles-daemon.service
). Узнайте, почему они могут быть "зависшими" и просмотрите соответствующие журналы событий с помощьюjournalctl -xe
. -
Зависания Plymouth: Зависание
plymouth-quit-wait.service
— известная проблема, которая может быть решена путем временного отключения графического экрана загрузки. Это можно сделать, добавивplymouth.enable=0
в параметры ядра при загрузке. -
Журналы событий и ошибки: Используйте
journalctl -xb
, чтобы получить подробный лог текущей загрузки. Это иногда помогает выявить ошибки, которые могли бы остаться незамеченными в общем списке задач systemd. Ориентируйтесь на последние строки выкладки, где могут содержаться указатели на проблемы. -
Обновления и патчи: Убедитесь, что все пакеты обновлены с последними патчами безопасности и обновлениями багов. Иногда известно, что подобные проблемы могут быть решены уже включенными в обновления пакетов исправлениями.
-
Переходные зависимости: Проверьте конфигурационные файлы связанных служб и их зависимостей в каталоге
/etc/systemd/system
или/usr/lib/systemd/system
, чтобы убедиться в отсутствии неправильных конфигураций, которые могли бы вызвать проблемы с запуском. -
Использование средств диагностики: Воспользуйтесь такими инструментами, как
strace
илиsystemtap
, для детального отслеживания работы системы и сбора дополнительной информации о том, где именно может происходить сбой.
Следуя данным рекомендациям, вы сможете сузить круг потенциальных проблем и выявить, что именно мешает вашей системе достигнуть состояния multi-user.target. Прилагая усилия по диагностике и устранению данного вопроса, вы, вероятно, заметите улучшение в скорости и стабильности загрузки системы.