Ошибка systemd: Target multi-user.target refused to activate — Решение
В процессе загрузки операционная система останавливается до входа в систему и сбрасывается в emergency mode. В журнале ядра отображается сообщение: Target multi-user.target refused to activate или Transaction for multi-user.target/start dropped: Circular dependency.
| Симптом | Причина | Уровень сбоя |
|---|---|---|
Отказ старта multi-user.target | Циклическая зависимость (Dependency loop) в пользовательских юнитах | Bootloader / Early Init |
Сброс в emergency.target | Критическая служба из Requires= завершилась крахом | Системная инициализация |
Отказ default.target | Битая символическая ссылка на target в /etc/systemd/system/ | Менеджер юнитов PID 1 |
- Сервер зависает на этапе монтирования или инициализации консоли TTY.
- Команда
systemctl is-system-runningвозвращает статусdegradedилиmaintenance.
- Перейдите в аварийный режим или загрузитесь с параметром ядра
systemd.unit=rescue.target. - Выполните поиск циклических блокировок и взаимных зависимостей (loops) в транзакциях systemd:
sudo journalctl -b -p err..emerg | grep -i "dependency" - Проверьте целостность и цель ссылки
default.target:ls -l /etc/systemd/system/default.target # Установите штатный целевой таргет: sudo systemctl set-default multi-user.target - Выявите упавшие сервисы, блокирующие активацию таргета:
systemctl --failed systemctl list-dependencies multi-user.target --reverse - Если в кастомных юнитах настроены взаимоисключающие директивы
Before=иAfter=(например, сервис A требует B, а B запускается строго после A), исправьте unit-файлы в/etc/systemd/system/. - Примените исправления и продолжите штатную загрузку:
sudo systemctl daemon-reload sudo systemctl isolate multi-user.target
Requires= для вспомогательных сервисов без директивы After=, иначе systemd попытается запустить их строго параллельно, что приведет к race condition и сбою таргета.Частые вопросы (FAQ)
Что такое multi-user.target в Linux?
Это стандартный целевой уровень инициализации systemd (аналог Runlevel 3 в SysVinit), настраивающий многопользовательскую консольную среду без графической оболочки со всеми запущенными сетевыми демонами.
Как найти циклические зависимости в сервисах?
Команда journalctl -b | grep -i 'ordering cycle' выведет список служб, образующих замкнутый круг взаимозависимостей, которые systemd пытается разорвать принудительно.
В чем разница между multi-user.target и graphical.target?
graphical.target включает в себя все компоненты multi-user.target, плюс дополнительно запускает Display Manager (GDM/LightDM) и графический сервер X11/Wayland.
Как принудительно перейти в multi-user.target из работающей системы?
Используйте команду isolation: sudo systemctl isolate multi-user.target.