13g10n
На главную

Использование systemd в WSL

WSL2 минуты
Also available in English

При попытке использовать systemd для запуска и управления сервисами на WSL я столкнулся с ошибкой "System has not been booted with systemd as init system (PID 1).". Раньше мы не могли использовать systemd на WSL, что было весьма печально, однако начиная с версии WSL 0.67.6 такая возможность появилась.

Здесь и далее я использую связку Windows 11 + WSL 2 + Ubuntu.

Прежде всего, давайте убедимся, что мы обновили WSL до последней версии. Для этого в терминале Windows вводим:

Windows
wsl --update

Далее, стартуем любой установленный дистрибутив и открываем внутренний файл /etc/wsl.conf в любом текстовом редакторе.

Ubuntu
sudo nano /etc/wsl.conf

Нам нужно добавить секцию boot, если её нет и в ней использовать говорящую саму за себя настройку systemd:

/etc/wsl.conf
[boot]
systemd=true

Сохраняем файл, перезапускаем WSL.

Windows
wsl --shutdown

После этого, systemd в WSL начинает работать как положено и мы можем добавлять сервисы и управлять ими.

Никогда бы не подумал, что буду писать такого рода заметки, но Windows 11 + WSL 2 действительно мощная вещь, которую я могу смело рекомендовать всем разработчикам, страдающим на декстопных Linux дистрибутивах.

WSLWindowsLinuxsystemd