Бесплатно Экспресс-аудит сайта:

25.09.2022

Microsoft добавляет systemd в подсистему Windows для Linux

Microsoft и Canonical добавили поддержку systemd в подсистему Windows для Linux , что позволит устанавливать большее количество совместимых приложений.

systemd — подсистема инициализации и управления службами в Linux, фактически вытеснившая в 2010-е годы традиционную подсистему init. Основная особенность — интенсивное распараллеливание запуска служб в процессе загрузки системы, что позволяет существенно ускорить запуск операционной системы. Основная единица управления — модуль, одним из типов модулей являются «службы» — аналог демонов — наборы процессов, запускаемые и управляемые средствами подсистемы и изолируемые контрольными группами.

Поскольку systemd отвечает за запуск всех остальных служб, он запускается как первый процесс (PID 1), созданный ядром Linux при запуске. Затем все остальные службы первоначального запуска запускаются и управляются systemd, как показано в дереве процессов ниже из Ubuntu.


Поскольку в настоящее время WSL использует init в качестве диспетчера системы и служб, приложения Linux, требующие systemd, такие как Snap, microk8s (Kubernetes) и systemctl, работают некорректно.

Вчера Microsoft и Canonical объявили, что последняя предварительная версия подсистемы Windows для Linux в сборках Windows 11 Insider теперь поддерживает systemd, что позволяет устанавливать приложения, которым требуется диспетчер служб.

«Поддержка systemd потребовала внесения изменений в архитектуру WSL. Поскольку systemd требует PID 1, процесс инициализации WSL, запущенный в дистрибутиве Linux, становится дочерним процессом systemd», — пояснил Крейг Лоуэн из Microsoft.

«Поскольку процесс инициализации WSL отвечает за обеспечение инфраструктуры для связи между компонентами Linux и Windows, изменение этой иерархии потребовало переосмысления некоторых предположений, сделанных в процессе инициализации WSL».

Все кто использует сборку Windows 11 Insider может выполнить обновление до предварительной версии WSL 0.67.6 или более поздней версии с помощью команды wsl --update. Проверить установленную версию можно с помощью команды wsl –version, как показано ниже.


Теперь можно включить systemd, запустив нужный дистрибутив WSL Linux и добавив следующие строки в /etc/wsl.conf:

[boot] systemd=true

Microsoft опубликовала интересное видео, в котором подробно рассказывает о том, что означают изменения: