Гид по технологиям

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

5 min read Разработка Обновлено 25 Dec 2025
Включить systemd в WSL — пошагово и советы
Включить 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 — пошагово

  1. Откройте терминал вашей WSL-дистрибуции (например, Ubuntu).
  2. Отредактируйте файл /etc/wsl.conf от имени root. Если файла нет — создайте его.
  3. Добавьте или замените секцию boot следующим содержимым:
[boot]
systemd=true
  1. Сохраните файл и выйдите.
  2. В Windows выполните в PowerShell:
wsl --shutdown
  1. Запустите дистрибутив снова — 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 (шаблон действий)

  1. Резервная копия важных файлов в дистрибутиве.
  2. Проверка версии WSL (wsl --version).
  3. Внесение строки systemd=true в /etc/wsl.conf.
  4. wsl --shutdown.
  5. Тестирование systemctl status и запуска нужных сервисов.
  6. Документирование изменений для команды.

Чек-лист для ролей

  • Для разработчика: убедиться, что локальные сервисы совпадают с продакшеном; записать версии сервисов; проверить взаимодействие с IDE.
  • Для сисадмина: проверить безопасность сервисов, вписать автозапуск только необходимых демонов.
  • Для тимлида: согласовать изменение окружения в документации проекта.

Критерии приёмки

  • systemctl возвращает активное состояние без ошибок.
  • Нужные сервисы запускаются и отвечают на запросы (например, Apache — HTTP 200 локально).
  • Перезапуск машины/перезапуск WSL не приводит к потере конфигурации.

Тест-кейсы для проверки

  • Выполнить sudo systemctl start и проверить systemctl is-active .
  • Перезагрузить WSL (wsl --shutdown), затем подтвердить, что systemd активен.
  • Проверить journalctl -u на отсутствие критических ошибок.

Быстрый сценарий отката

  1. Удалите или закомментируйте секцию systemd в /etc/wsl.conf.
  2. Выполните wsl --shutdown.
  3. При необходимости восстановите сервисы, которые ранее работали через 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
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Управление уведомлениями на Apple Watch
Гаджеты

Управление уведомлениями на Apple Watch

Проверить доступность в Google Calendar
Календарь Google

Проверить доступность в Google Calendar

Защита паролей для онлайн‑покупок
Интернет-безопасность

Защита паролей для онлайн‑покупок

Редактировать PDF без потери шрифтов — Sejda
PDF Инструменты

Редактировать PDF без потери шрифтов — Sejda

Как получить цифровую клавиатуру на ноутбуке
Клавиатуры

Как получить цифровую клавиатуру на ноутбуке

Иконки в приложении «Дом»: настройка
Смарт-дом

Иконки в приложении «Дом»: настройка