Поделиться через


Использование systemd для управления службами Linux с помощью WSL

подсистема Windows для Linux (WSL) теперь поддерживает системный, системный и диспетчер служб, используемый многими популярными дистрибутивами Linux, такими как Ubuntu, Debian и многое другое. (Что такое система?).

Системная система init по умолчанию недавно изменилась с SystemV, с системным значением по умолчанию для текущей версии Ubuntu , которая будет установлена с помощью wsl --install команды по умолчанию. Дистрибутивы Linux, отличные от текущей версии Ubuntu, по-прежнему могут использовать инициализацию WSL, аналогичную инициализации SystemV. Сведения об изменении системы см. в разделе "Как включить системные".

Что такое система в Linux?

Согласно systemd.io: "система представляет собой набор основных стандартных блоков для системы Linux. Он предоставляет систему и диспетчер служб, который выполняется как PID 1 и запускает остальную часть системы".

В первую очередь система и диспетчер служб содержат такие функции, как запуск daemons, подключение и обслуживание точек автоматического подключения, поддержка моментальных снимков и отслеживание процессов с помощью групп управления Linux.

Большинство основных дистрибутивов Linux теперь работают в системе, поэтому включение его в WSL еще ближе к использованию Linux без операционной системы. Ознакомьтесь с видеороликами с системными демонстрациями или примерами использования systemd ниже, чтобы узнать больше о том, что система имеет для предложения.

Как включить систему?

Systemd теперь используется по умолчанию для текущей версии Ubuntu , которая будет установлена с помощью wsl --install команды по умолчанию.

Чтобы включить систему для любых других дистрибутивов Linux, работающих в WSL 2 (изменение по умолчанию с помощью systemv init):

  1. Убедитесь, что версия WSL — 0.67.6 или более позднюю. (Чтобы проверить, выполните команду wsl --version. Чтобы обновить, запустить wsl --update или скачать последнюю версию из Microsoft Store.)

  2. Откройте командную строку для дистрибутива Linux и введите cd / для доступа к корневому каталогу, а затем ls перечислите файлы. Вы увидите каталог с именем "etc", содержащий файл конфигурации WSL для дистрибутива. Откройте этот файл, чтобы сделать обновление с помощью текстового редактора Nano, введя следующее: nano /etc/wsl.conf

  3. Добавьте эти строки в wsl.conf файл, который теперь открыт для изменения инициализации, используемой для systemd:

    [boot]
    systemd=true
    
  4. Закройте текстовый редактор Nano (CTRL+ X, выберите Y, чтобы сохранить изменение). Затем необходимо закрыть дистрибутив Linux. Для перезапуска всех экземпляров WSL можно использовать команду wsl.exe --shutdown в PowerShell.

Включение системы в WSL 2

После перезапуска дистрибутива Linux система будет запущена. Вы можете подтвердить с помощью команды: systemctl list-unit-files --type=serviceкоторая будет отображать состояние всех служб, связанных с дистрибутивом Linux.

Узнайте больше о конфигурации расширенных параметров в WSL, включая разницу между wsl.conf файлами конфигурации (для конкретного дистрибутива) и .wslconfig (глобальными) файлами конфигурации, обновлением параметров автоматического отключения и т. д.

Видео с системной демонстрацией

Корпорация Майкрософт сотрудничает с Каноническим, чтобы обеспечить системную поддержку WSL. См. статью Craig Loewen (PM для WSL в Майкрософт) и Оливер Смит (PM для Ubuntu в WSL в Каноническом) объявит системную поддержку и показать некоторые демонстрации того, что это позволяет.

Примеры системы

Ниже приведены несколько примеров приложений Linux, которые зависят от системных приложений:

  • snap: система упаковки программного обеспечения и развертывания, разработанная каноническим для операционных систем, использующих ядро Linux и системную инициализацию. Пакеты называются "snaps", средство командной строки для создания оснастки называется Snapcraft, центральный репозиторий, где оснастки можно скачать или установить, называется "Snap Store", а управляющая программа, необходимая для запуска оснастки (скачивание из магазина, подключение к месту, ограничение и запуск приложений из них) называется "snapd". Вся система иногда называется "snappy". Попробуйте выполнить команду: snap install spotify

  • microk8s: open-source, low-ops, минимальный рабочий Kubernetes, который автоматизирует развертывание, масштабирование и управление контейнерными приложениями. Следуйте инструкциям по установке MicroK8s в WSL2, ознакомьтесь с руководством по началу работы или просмотрите видео в Kubernetes в Windows с microK8s и WSL 2.

  • systemctl: служебная программа командной строки, используемая для управления системой и проверки системных служб, а также для взаимодействия со службами в дистрибутиве Linux. Попробуйте выполнить команду: systemctl list-units --type=service чтобы узнать, какие службы доступны и их состояние.

В нескольких связанных руководствах показано, как использовать системные методы:

Как включить системную архитектуру WSL?

Включение поддержки системных необходимых изменений в архитектуре WSL. Так как для системы требуется PID 1, процесс инициализации WSL, запущенный в дистрибутиве Linux, становится дочерним процессом системы. Поскольку процесс инициализации WSL отвечает за предоставление инфраструктуры для обмена данными между компонентами Linux и Windows, изменение этой иерархии требует переосмысления некоторых предположений, сделанных с помощью процесса инициализации WSL. Необходимо внести дополнительные изменения, чтобы обеспечить чистое завершение работы (так как завершение работы контролируется системой сейчас) и обеспечить совместимость с WSLg, компонент WSL, на котором выполняются графические пользовательские интерфейсы Linux (GUIS) или приложения Linux, которые отображаются в окнах, а не в командной строке.

Важно также отметить, что при этих изменениях системные службы не будут поддерживать экземпляр WSL. Экземпляр WSL будет оставаться в живых таким же образом, как и в этом обновлении, который можно узнать больше в этой записи блога о поддержке фоновых задач с 2017 года.