Как включить systemd в WSL

Краткое определение
WSL — подсистема Windows для запуска Linux-подсистем. systemd — современная система инициализации и управления сервисами в большинстве дистрибутивов Linux. Комбинация позволяет запускать сервисы Linux в привычном режиме внутри WSL.
Почему стоит включить systemd в WSL
- Упрощается запуск и остановка сервисов (systemctl start/stop/status).
- Локальная среда разработки ближе к реальному серверу (LAMP/LEMP и др.).
- Совместимость с инструкциями и инструментами, которые предполагают systemd.
Важно: systemd не обязателен для всех задач. Для простых скриптов, статических сайтов или контейнерной разработки достаточно альтернатив (см. раздел «Альтернативы»).
Требования и проверка версии
systemd в WSL требует WSL версии 0.67.6 или новее (это требование WSL). Проверьте текущую версию из PowerShell или командной строки Windows:
wsl --versionЕсли версия ниже, обновите WSL:
wsl --updateЗатем закройте все дистрибутивы и перезапустите WSL (в PowerShell):
wsl --shutdownКак включить systemd — пошагово
- Откройте терминал вашей WSL-дистрибуции (например, Ubuntu).
- Отредактируйте файл /etc/wsl.conf от имени root. Если файла нет — создайте его.
- Добавьте или замените секцию boot следующим содержимым:
[boot]
systemd=true- Сохраните файл и выйдите.
- В Windows выполните в PowerShell:
wsl --shutdown- Запустите дистрибутив снова — systemd должен быть активен.
Проверка и примеры команд
После включения вы можете использовать systemctl:
sudo systemctl status
sudo systemctl start apache2.service
sudo systemctl enable apache2.service
sudo systemctl stop apache2.serviceПримечание: имя сервиса зависит от дистрибутива (например, в CentOS/AlmaLinux httpd вместо apache2).
Что может пойти не так — типичные ошибки и способы устранения
- WSL ниже требуемой версии. Проверьте
wsl --versionи обновите черезwsl --update. - Файл /etc/wsl.conf неверно отформатирован (пробелы/символы). Убедитесь, что секция выглядит точно как в примере.
- Не выполнена команда
wsl --shutdownпосле правки. Перезапуск необходим. - Некоторые сторонние инструменты или расширения WSL могут конфликтовать. Закройте все окна терминалов и повторите перезапуск.
Если systemd всё ещё не запускается, проверьте логи dmesg/journalctl:
sudo journalctl -b -u systemd --no-pager
dmesg | tail -n 50Когда systemd в WSL не подходит (примеры)
- Если вы используете очень лёгкие скриптовые окружения, где сервисы не нужны.
- Если вы ограничены старой версией WSL и не можете обновить её.
- Если вам важна максимальная изоляция ядра и окружения — полноценная виртуальная машина даст более строгую изоляцию.
Альтернативы systemd в WSL
- Использовать полноценную виртуальную машину (Hyper-V, VirtualBox, VMware) для полного соответствия серверной среде.
- Запускать сервисы в контейнерах (Docker Desktop / Podman) — удобно для микросервисов.
- Для старых WSL-версий был проект “genie”, который создавал среду systemd внутри WSL; сейчас он редко нужен при наличии новой WSL.
Минимальная методология включения systemd (шаблон действий)
- Резервная копия важных файлов в дистрибутиве.
- Проверка версии WSL (
wsl --version). - Внесение строки
systemd=trueв /etc/wsl.conf. wsl --shutdown.- Тестирование
systemctl statusи запуска нужных сервисов. - Документирование изменений для команды.
Чек-лист для ролей
- Для разработчика: убедиться, что локальные сервисы совпадают с продакшеном; записать версии сервисов; проверить взаимодействие с IDE.
- Для сисадмина: проверить безопасность сервисов, вписать автозапуск только необходимых демонов.
- Для тимлида: согласовать изменение окружения в документации проекта.
Критерии приёмки
- systemctl возвращает активное состояние без ошибок.
- Нужные сервисы запускаются и отвечают на запросы (например, Apache — HTTP 200 локально).
- Перезапуск машины/перезапуск WSL не приводит к потере конфигурации.
Тест-кейсы для проверки
- Выполнить
sudo systemctl startи проверитьsystemctl is-active. - Перезагрузить WSL (
wsl --shutdown), затем подтвердить, что systemd активен. - Проверить
journalctl -uна отсутствие критических ошибок.
Быстрый сценарий отката
- Удалите или закомментируйте секцию systemd в /etc/wsl.conf.
- Выполните
wsl --shutdown. - При необходимости восстановите сервисы, которые ранее работали через SysV.
Ментальная модель
Представьте WSL как лёгкий виртуальный хост с интеграцией в Windows. systemd — это диспетчер сервисов: он стартует демоны, управляет зависимостями и собирает журналы. Включив systemd, вы делаете поведение WSL ближе к фактическому Linux-серверу.
Совместимость дистрибутивов и советы миграции
Большинство популярных дистрибутивов (Ubuntu, Debian, Fedora и пр.) используют systemd по умолчанию. После включения systemd поведение сервисов станет согласованным с серверной средой. Тем не менее учитывайте различия в именах пакетов и путях конфигурации между дистрибутивами.
Безопасность и ограничения
- systemd в WSL работает в пределах пользователя и интеграции с Windows. Не следует считать WSL полным эквивалентом выделенного сервера с точки зрения безопасности.
- Ограничьте автозапуск только нужными сервисами.
FAQ
Нужно ли обновлять Windows, чтобы включить systemd?
Обычно достаточно обновить компонент WSL через wsl --update. Специфические требования к версии Windows зависят от релиза WSL — при проблемах проверьте официальную документацию Microsoft.
Можно ли запустить systemd в WSL1?
Официальная поддержка systemd в WSL ориентирована на WSL2 и соответствующие релизы. Для WSL1 существовали обходные пути, но они ограничены.
Как вернуть всё назад, если что-то сломалось?
Удалите или закомментируйте systemd=true в /etc/wsl.conf и выполните wsl --shutdown.
Краткое резюме
Включение systemd в WSL упрощает управление сервисами и делает локальную среду ближе к реальному Linux-серверу. Достаточно проверить версию WSL, добавить systemd=true в /etc/wsl.conf и перезапустить WSL. Если systemd не подходит — рассмотрите контейнеры или полноценную виртуальную машину.
Fact box:
- Требование: WSL >= 0.67.6.
- Команды:
wsl --version,wsl --update,wsl --shutdown,systemctl.
Mermaid-диаграмма принятия решения:
flowchart TD
A[Нужен systemd?] -->|Да| B{WSL верcия >= 0.67.6}
B -->|Да| C[Добавить systemd=true в /etc/wsl.conf]
C --> D[Выполнить wsl --shutdown и перезапустить]
B -->|Нет| E[Обновить WSL или использовать VM/контейнер]
A -->|Нет| F[Не менять конфигурацию]Часто используемые команды-справочник
- Проверить версию WSL:
wsl --version - Обновить WSL:
wsl --update - Полностью остановить все дистрибутивы:
wsl --shutdown - Включить systemd: добавить в /etc/wsl.conf
[boot]\nsystemd=trueи выполнить shutdown
Похожие материалы
Управление уведомлениями на Apple Watch
Проверить доступность в Google Calendar
Защита паролей для онлайн‑покупок
Редактировать PDF без потери шрифтов — Sejda
Как получить цифровую клавиатуру на ноутбуке