Текст и данные · Инструкция
WSL systemd: как включить автозапуск Linux-сервиса
WSL systemd: как включить автозапуск Linux-сервиса.
Короткий ответ
Если дистрибутив 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 ожидаемый
Проверка по шагам
- Внутри WSL выполните ps -p 1 -o comm= или systemctl status и убедитесь, что init-система — systemd.
- Если systemd не включен, добавьте в /etc/wsl.conf секцию [boot] с systemd=true и из Windows выполните wsl --shutdown.
- После перезапуска найдите точное имя unit командой systemctl list-unit-files --type=service или через пакетную документацию.
- Выполните sudo systemctl enable --now <service>, затем проверьте systemctl status <service>.
- Перезапустите 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.