n1ro°
RU

Текст и данные · Инструкция

WSL systemd: как включить автозапуск Linux-сервиса

WSL systemd: как включить автозапуск Linux-сервиса.

Редакция N1RO · Проверено

Короткий ответ

Если дистрибутив WSL 2 работает с systemd, сервис включается стандартной командой systemctl enable, а для немедленного запуска удобно systemctl enable --now <service>. Сначала убедитесь, что systemd действительно является PID 1.

Как systemd запускает сервис внутри WSL

Microsoft поддерживает systemd в WSL и указывает, что в текущей Ubuntu, устанавливаемой через wsl --install, systemd уже используется по умолчанию. Для других дистрибутивов systemd можно включить через [boot] systemd=true в /etc/wsl.conf с последующим wsl --shutdown. После запуска systemd доступны обычные команды systemctl для проверки состояния и unit-файлов сервисов. В случае «WSL systemd: как включить автозапуск Linux-сервиса» сначала зафиксируйте текущую версию WSL и рабочую конфигурацию, затем применяйте документированный шаг и проверяйте его эффект. В сценарии «WSL systemd: как включить автозапуск Linux-сервиса» откат должен быть понятен до выполнения команды, особенно если действие останавливает VM, меняет сеть, ядро или файловую систему.

Совет: `enable` создает условия для старта unit при запуске systemd, а `--now` дополнительно запускает сервис прямо сейчас.

Быстрая сверка перед выводом

  • Systemd реально запущен
  • Unit существует
  • Enable выполнен без ошибки
  • После перезапуска status ожидаемый

Проверка по шагам

  1. Внутри WSL выполните ps -p 1 -o comm= или systemctl status и убедитесь, что init-система — systemd.
  2. Если systemd не включен, добавьте в /etc/wsl.conf секцию [boot] с systemd=true и из Windows выполните wsl --shutdown.
  3. После перезапуска найдите точное имя unit командой systemctl list-unit-files --type=service или через пакетную документацию.
  4. Выполните sudo systemctl enable --now <service>, затем проверьте systemctl status <service>.
  5. Перезапустите WSL и проверьте ожидаемое поведение сервиса, учитывая, что жизненный цикл WSL зависит от запуска дистрибутива и фоновых процессов.

Предупреждение: Автозапуск сервиса не превращает WSL в постоянно работающую отдельную VM: учитывайте жизненный цикл дистрибутива и фоновых процессов.

Как выглядит нормальный повтор

Контроль для «WSL systemd: как включить автозапуск Linux-сервиса»: подтвердите «systemd реально запущен», затем выполните первый шаг — внутри WSL выполните ps -p 1 -o comm= или systemctl status и убедитесь, что init-система — systemd.

Границы самостоятельной проверки

Автозапуск сервиса внутри systemd не превращает WSL в всегда включенную отдельную виртуальную машину; учитывайте жизненный цикл WSL на Windows. Не включайте сетевые демоны на все интерфейсы без проверки аутентификации и правил брандмауэра.

Важно: Для сетевого демона отдельно проверьте адрес прослушивания, аутентификацию и Windows Firewall — автозапуск не означает безопасную публикацию.

Что сравнить

  • systemd реально запущен. Проверка «systemd реально запущен» подтверждает исходное состояние перед изменением WSL.
  • unit существует. Пункт «unit существует» локализует проблему и не дает менять несколько причин одновременно.
  • enable выполнен без ошибки. Условие «enable выполнен без ошибки» позволяет проверить команду или настройку на конкретном уровне.
  • после перезапуска status ожидаемый. Если выполнено «после перезапуска status ожидаемый», следующий шаг можно оценивать без догадок о предыдущем.

Что учитывать

Условия меняются. Страница отражает состояние на 2026-09-22; при расхождении с официальной документацией приоритет у первоисточника.

Источники и проверка

Фактическая часть сверена по первичным источникам (в т.ч. Use systemd to manage Linux services with WSL). Пример и формулировки — редакция N1RO на 2026-09-22.