Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Подсистема Windows для Linux (WSL) теперь поддерживает systemd, init систему и диспетчер служб, используемый многими популярными дистрибутивами Linux, такими как Ubuntu, Debian и многими другими. (Что такое systemd?).
Система init по умолчанию недавно изменилась с SystemV, а система теперь используется по умолчанию для текущей версии Ubuntu, которая будет установлена с помощью команды wsl --install
по умолчанию. Дистрибутивы Linux, отличные от текущей версии Ubuntu, по-прежнему могут использовать инициализацию WSL, аналогичную инициализации SystemV. Чтобы перейти на systemd, см. раздел Как включить systemd.
Что такое systemd в Linux?
Согласно systemd.io: "systemd представляет собой набор основных строительных блоков для системы Linux. Он предоставляет систему и управляющего службами, который запускается как PID 1 и инициирует работу остальной системы.
Система и диспетчер служб systemd в первую очередь включают такие функции, как запуск демонов по требованию, поддержка точек монтирования и автомонтирования, поддержка моментальных снимков и отслеживание процессов с помощью групп управления Linux.
Большинство крупных дистрибутивов Linux теперь работают на systemd, поэтому ее включение в WSL делает его использование еще более похожим на использование Linux непосредственно на аппаратном обеспечении. Смотрите видеообъявление с демонстрациями systemd или примеры использования systemd ниже, чтобы узнать больше о том, какие возможности предлагает systemd.
Как включить систему?
Система теперь используется по умолчанию для текущей версии Ubuntu, которая будет установлена с помощью команды wsl --install
по умолчанию.
Чтобы включить systemd для любых других дистрибутивов Linux, работающих на WSL 2 (изменив стандартную настройку с systemv init):
Убедитесь, что версия WSL — 0.67.6 или более поздняя.
- чтобы проверить, запустите
wsl --version
; Если команда выдает ошибкуInvalid command line option: --version
, необходимо обновить WSL; - чтобы обновить, запустите
wsl --update
или , или скачайте последнюю версию из магазина Microsoft.
- чтобы проверить, запустите
Откройте командную строку для дистрибутива Linux и введите
cd /
для доступа к корневому каталогу, а затемls
, чтобы получить список файлов. Вы увидите каталог с именем "etc", содержащий файл конфигурации WSL для дистрибутива. Откройте этот файл, чтобы сделать обновление с помощью текстового редактора Nano, введя следующее:nano /etc/wsl.conf
.Добавьте эти строки в файл
wsl.conf
, который теперь открыт, чтобы изменить используемую инициализацию на systemd:[boot] systemd=true
Закройте текстовый редактор Nano (CTRL+ X, введите Y, чтобы сохранить изменение и подтвердить с помощью клавиши
enter
).Затем необходимо закрыть дистрибутив Linux. Для перезапуска всех экземпляров WSL можно использовать команду
wsl.exe --shutdown
в PowerShell.После перезапуска дистрибутива Linux система будет запущена. Его можно проверить с помощью команды
systemctl status
, чтобы отобразить состояние выполнения, и командыsystemctl list-unit-files --type=service
, которая будет отображать статус любых служб, связанных с вашим дистрибутивом Linux.
Если дистрибутив Linux — Debian/Ubuntu/Kali Rolling, необходимо установить не только системный пакет, но и установить пакет systemd-sysv.
sudo apt-get update -y && sudo apt-get install systemd systemd-sysv -y
Дополнительные сведения о настройке расширенных параметров в WSL, включая разницу между файлами конфигурации wsl.conf
(распределенными) и .wslconfig
(глобальными), обновление параметров автоматического подключения и т. д.
Видео демонстрации systemd
Майкрософт сотрудничала с Кэноникл, чтобы добавить поддержку systemd в WSL. Смотрите, как Craig Loewen (PM для WSL в Microsoft) и Oliver Smith (PM для Ubuntu на WSL в Canonical) объявляют о поддержке systemd и показывают демонстрации того, что это позволяет.
учебники Оливера, которые основаны на этих демонстрациях в блоге Ubuntu, включают: "Использование оснастки для создания экземпляра Nextcloud за несколько минут в WSL", "Управление веб-проектами с помощью LXD" и "Запуск .Net Echo Bot как службы systemd в Ubuntu WSL"
демонстрация microk8s Craig на сайте GitHub
Примеры Systemd
Ниже приведены несколько примеров приложений Linux, которые зависят от systemd:
snap: система упаковки программного обеспечения и развертывания, разработанная Canonical для операционных систем, использующих ядро Linux и систему инициализации systemd. Пакеты называются "snaps", инструмент командной строки для создания таких пакетов называется Snapcraft, центральный репозиторий, где их можно скачать или установить, называется "Snap Store", а демон, необходимый для их работы (загрузки из магазина, монтаж на месте, изоляции и выполнения приложений), называется "snapd". Вся система иногда называется "snappy". Попробуйте выполнить команду:
snap install spotify
.microk8s: Kubernetes с открытым исходным кодом, минималистичная производственная версия с низкими эксплуатационными затратами, которая автоматизирует развертывание, масштабирование и управление контейнеризованными приложениями. Следуйте инструкциям по установке MicroK8s в WSL2, ознакомьтесь с учебником по началу работыили просмотрите видео на Kubernetes в Windows с помощью MicroK8s и WSL 2.
systemctl: служебная программа командной строки, используемая для управления системой и проверки системы, а также для взаимодействия со службами в дистрибутиве Linux. Попробуйте выполнить команду:
systemctl list-units --type=service
, чтобы узнать, какие службы доступны и их состояние.
В нескольких связанных учебных материалах показано, как можно использовать systemd.
Как включение systemd влияет на архитектуру WSL?
Включение поддержки systemd потребовало изменений в архитектуре WSL. Поскольку systemd требует PID 1, процесс инициализации WSL, запущенный в дистрибутиве Linux, становится дочерним процессом systemd. Поскольку процесс инициализации WSL отвечает за предоставление инфраструктуры для обмена данными между компонентами Linux и Windows, изменение этой иерархии требует переосмысления некоторых предположений, сделанных с помощью процесса инициализации WSL. Необходимо внести дополнительные изменения, чтобы обеспечить чистое завершение работы (так как завершение работы контролируется системой сейчас) и обеспечить совместимость с WSLg, компонент WSL, на котором выполняются графические пользовательские интерфейсы Linux или приложения Linux, которые отображаются в окнах, а не в командной строке.
Важно также отметить, что с этими изменениями службы systemd НИ В КОЕМ СЛУЧАЕ не будут поддерживать экземпляр WSL. Экземпляр WSL будет оставаться активным так же, как и до этого обновления, о чем можно узнать в этом посте в блоге о поддержке фоновых задач от 2017 года.
Windows Subsystem for Linux