System has not been booted with systemd as init system: systemctl не работает
systemctl работает только там, где систему запустил systemd. В WSL без настройки и внутри контейнера Docker его нет. Ниже — как включить systemd в WSL и как быть в контейнере.
Содержание 7
Как выглядит ошибка
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down«Система загружена без systemd в роли главной программы (PID 1). Работать не могу». Вторая строка — следствие первой: systemctl не к кому подключиться.
Где вы набрали команду
На VPS с Ubuntu systemd запускается вместе с сервером, и этой ошибки там нет. Она появляется в двух случаях:
- В WSL — Linux внутри Windows, — если systemd в нём не включён.
- Внутри контейнера Docker: там запущена одна программа, а не целая система.
Если вы хотели управлять сервером, подключитесь к нему по SSH (как подключиться) и наберите команду там.
Как включить systemd в WSL
Нужна WSL версии 0.67.6 или новее. Проверьте её в PowerShell на Windows:
wsl --versionЕсли версия старше или команда выдаёт ошибку, обновите WSL командой wsl --update. Затем откройте Ubuntu в WSL и выполните:
sudo nano /etc/wsl.confДобавьте в файл строки:
[boot]
systemd=trueСохраните файл: Ctrl+O, Enter, затем Ctrl+X. Закройте окно Ubuntu и перезапустите WSL — в PowerShell на Windows:
wsl --shutdownСнова откройте Ubuntu и проверьте:
systemctl statusЕсли вместо ошибки появилось состояние системы — systemd работает. Выйти из просмотра — клавиша Q.
Если вы внутри контейнера Docker
В контейнере systemctl не нужен: контейнер запускает одну программу, и Docker следит за ней сам. Программу в контейнере запускают командой из его настроек — CMD в Dockerfile или command в compose.yaml, — а не через systemctl.
Перезапускают такую программу снаружи, на сервере, командой docker restart с именем контейнера. Почему контейнер не работает, видно в его логах — подробнее на странице контейнер сразу останавливается.
Failed to connect to bus без первой строки
Другое сообщение бывает у команды systemctl --user — управления своими службами пользователя:
Failed to connect to bus: $DBUS_SESSION_BUS_ADDRESS and $XDG_RUNTIME_DIR not defined (consider using --machine=<user>@.host --user to connect to bus of other user)Оно значит, что для вашего пользователя не нашлись данные сеанса. Так бывает, если вы перешли в другого пользователя командой su или sudo -u. Подключитесь по SSH сразу под нужным пользователем и повторите команду.
Тексты сообщений сверены с исходным кодом systemd 255 — эта версия стоит в Ubuntu 24.04. В других версиях systemd слова могут немного отличаться.
Источники
- Исходный код systemd 255: bus-util.c — тексты System has not been booted with systemd и Failed to connect to bus.
- Исходный код systemd 255: systemctl-util.c — systemctl выводит ошибку подключения.
- Исходный код glibc 2.39: errlist.h — текст системной ошибки Host is down.
- Microsoft: systemd в WSL — как включить systemd в /etc/wsl.conf.
Сверено 10 октября 2026 года.
Что почитать дальше
Проверено и обновлено: 10.10.2026