Одна из моих систем Fedora 40 не достигает multi-user.target (но всё работает, включая удаленный ssh и вход через GNOME (VNC)).

Вопрос или проблема

У меня есть несколько систем 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 секунд без каких-либо ожидающих задач, что свидетельствует о том, что все связанные сервисы и зависимости были успешно выполнены.

Применение

  1. Сервисы и их статус: Проверьте статус служб, которые находятся в состоянии выполнения или ожидания с помощью systemctl status <имя_сервиса>. Особое внимание уделите тем, которые вы видите в списке ожидающих (в вашем случае это plymouth-quit-wait.service и power-profiles-daemon.service). Узнайте, почему они могут быть "зависшими" и просмотрите соответствующие журналы событий с помощью journalctl -xe.

  2. Зависания Plymouth: Зависание plymouth-quit-wait.service — известная проблема, которая может быть решена путем временного отключения графического экрана загрузки. Это можно сделать, добавив plymouth.enable=0 в параметры ядра при загрузке.

  3. Журналы событий и ошибки: Используйте journalctl -xb, чтобы получить подробный лог текущей загрузки. Это иногда помогает выявить ошибки, которые могли бы остаться незамеченными в общем списке задач systemd. Ориентируйтесь на последние строки выкладки, где могут содержаться указатели на проблемы.

  4. Обновления и патчи: Убедитесь, что все пакеты обновлены с последними патчами безопасности и обновлениями багов. Иногда известно, что подобные проблемы могут быть решены уже включенными в обновления пакетов исправлениями.

  5. Переходные зависимости: Проверьте конфигурационные файлы связанных служб и их зависимостей в каталоге /etc/systemd/system или /usr/lib/systemd/system, чтобы убедиться в отсутствии неправильных конфигураций, которые могли бы вызвать проблемы с запуском.

  6. Использование средств диагностики: Воспользуйтесь такими инструментами, как strace или systemtap, для детального отслеживания работы системы и сбора дополнительной информации о том, где именно может происходить сбой.

Следуя данным рекомендациям, вы сможете сузить круг потенциальных проблем и выявить, что именно мешает вашей системе достигнуть состояния multi-user.target. Прилагая усилия по диагностике и устранению данного вопроса, вы, вероятно, заметите улучшение в скорости и стабильности загрузки системы.

Оцените материал
Добавить комментарий

Капча загружается...