Microsoft и Canonical объединились, чтобы добавить поддержку systemd в подсистему Windows для Linux, что позволяет устанавливать большее количество совместимых приложений.
systemd — это программное приложение для Linux, которое действует как менеджер системы и служб для инициализации во время загрузки операционной системы. Оно также поддерживает инструменты, которые позволяют администраторам Linux легко управлять этими службами и контролировать их после запуска.
Поскольку systemd отвечает за запуск всех остальных служб, оно запускается как первый процесс (PID 1), созданный ядром Linux при запуске. Затем активируются все остальные службы начального запуска и управляются systemd.
Microsoft и Canonical объявили, что последняя предварительная версия подсистемы Windows для Linux в сборках Windows 11 Insider теперь поддерживает systemd, что позволяет устанавливать приложения, которым требуется диспетчер служб.
«Поддержка systemd требует внесения изменений в архитектуру WSL. Поскольку для systemd требуется PID 1, процесс инициализации WSL, запущенный в дистрибутиве Linux, становится дочерним процессом systemd», — объяснил Крейг Лоуэн из Microsoft.
При использовании сборки Windows 11 Insider можно обновиться до предварительной версии WSL 0.67.6 или более поздней версии с помощью команды wsl --update. После завершения обновления проверить установленную версию можно с помощью команды wsl --version, как показано ниже.
Затем потребуется включить systemd, запустив нужный дистрибутив WSL Linux и добавив следующие строки в /etc/wsl.conf:
Поскольку папка /etc принадлежит пользователю root, то нужно использовать sudo с вашим любимым консольным редактором для редактирования файла. Например, sudo vi /etc/wsl.conf.
Следует отметить, что этот процесс необходимо выполнить для каждого дистрибутива, в котором требуется включить systemd.
Затем нужно закрыть окно дистрибутива WSL из командной строки Windows 11 (командная строка или PowerShell) и выключить дистрибутивы WSL с помощью команды wsl.exe --shutdown.
При перезапуске дистрибутива Linux systemd заработает как PID 1.