Глава 4. Управление дистрибутивами WSL

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

Давайте начнём с получения списка дистрибутивов в Linux.

Список дистрибутивов

Перво наперво, прежде чем мы сможем ровно управлять своими дистрибутивами WSL, мы должны определить установленные на нашем компьютере дистрибутивы Linux. Для этого в Windows 10 версии 1903 и далее мы можем воспользоваться wsl.exe c “-l” или “--list”; это перечислит все доступные дистрибутивы Linux. Обратите внимание, пожалуйста, на Рисунок 4-1, один из дистрибутивов выделен как дистрибутив “dedult”. Это означает, что он будет запускаться при запуске wsl.exe и либых передаваемых в этот дистрибутив аргументов:


> wsl -l
> wsl --list
		
 

Рисунок 4-1


Список установленных дистрибутивов Linux

Имеется и другой параметр --running, который перечисляет только те дистрибутивы Linux, которые запущены в настоящий момент, однако вы можете применять его только с соответствующим параметром переключателя --list:


> wsl –list --running
		

Как вы можете видеть на Рисунке 4-2, после того как мы запускаем дистрибутив Linux на шаге 2, он появляется в списке запущенных дистрибутивов:

 

Рисунок 4-2


Список всех запущенных дистрибутивов Linux

Теперь, когда нам понятно как перечислять свои дистрибутивы Linux, давайте выясним как устанавливать один из этих дистрибутивов Linux в качестве дистрибутива по умолчанию для WSL.

Установка дистрибутива по умолчанию

Чтобы установить некий дистрибутив по умолчанию, мы применяем параметр --setdefault или -s командной строки для wsl.exe, ниже приводится значение имени целевого дистрибутива в качестве аргумента, что демонстрирует Рисунок 4-3.

 

Рисунок 4-3


Настройка дистрибутива Linux по умолчанию в WSL

Это означает, что любая передаваемая вами в wsl.exe команда по умолчанию исполняется в установленном вами дистрибутиве Linux по умолчанию, что показано на Рисунке 4-4, а простое выполнение wsl.exe запускает установленным по умолчанию дистрибутив Linux.

 

Рисунок 4-4


Запуск команды в дистрибутиве Linux по умолчанию

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

Резервное копирование и экспорт Distro WSL

Для пакетов дистрибутива подсистемы Windows для Linux можно выполнить резервное копирование простым их экспортом в некий tar файл, что является сокращением для “Tape ARchive” {Прим. пер.: ленточный архив, в смысле его изначального применения к хранению на магнитных лентах, устройствах последовательного доступа}. Эти файлы обладают расширением “tar” как коллекция множества файлов в формате Consolidated Unix Archive (консолидированного архива Unix). Это очень распространённый метод как для целей архивирования, так и для отправки большого числа файлов посредством Интернет.

Для экспорта вашего дистрибутива Linux вначале запустите приглашение командной строки с полномочиями администратора. Затем выведите перечень имеющихся сред дистрибутивов, которые вы имеете установленными при помощи wsl.exe:


> wsl --list –all
		

Теперь, когда вам известны названия имеющихся в вашей системе дистрибутивов Linux, вы можете снова воспользоваться wsl.exe для указания цели и экспорта одного из низ, как это показано на Рисунке 4-5, передавая название дистрибутива и путь для экспорта этого файла:


> wsl --export Ubuntu-18.04 c:\temp\ubuntu1804.tar --export SLES-12 SLES.tar
		

Это потребует нескольких минут для завершения в зависимости от размера вашего дистрибутива Linux и тех программного обеспечения и пакетов, которые установлены в нём. По завершению вы обнаружите корневую файловую систему своего дистрибутива в виде файла резервной копии “tar” в том месте, которое вы определили при экспорте.

 

Рисунок 4-5


Экспорт дистрибутивов Linux

Восстановление и импорт Distro WSL

В своём предыдущем подразделе мы экспортировали свой пакет дистрибутива в некий архивный файл “tar”. Теперь этот архив можно перемещать, совместно использовать и даже восстанавливать в неком компьютере с подсистемой Windows для Linux. Всё что вам потребуется, это запустить приглашение командной строки Windows с полномочиями администратора и воспользоваться параметром --import для wsl.exe. Передайте необходимое название для своего дистрибутива в качестве аргумента для импорта требуемой корневой файловой системы этого дистрибутива из определённого файла “tar”:


> wsl --import SLES-Imported c:\temp\ c:\temp\SLES.tar
		

На Рисунке 4-6 мы импортировали резервную копию “SUSE Linux Enterprise Server (SLES)”, с персональным названием “SLES-Imported” в каталог с местоположением “c:\temp\”.

 

Рисунок 4-6


Импорт дистрибутивов Linux

Теперь вы можете наблюдать свой импортированный дистрибутив Linux в выдаваемом перечне и некую папку rootfs для его корневой файловой системы со всеми принадлежащими ему файлами, папками и пакетами из его импортированного дистрибутива (Рисунок 4-7). Именно это то самое место в вашем каталоге, куда было произведено импортирование.

 

Рисунок 4-7


Импорт дистрибутивов Linux

Удаление из реестра и деинсталляция Distro WSL

Удаление регистрации некого дистрибутива означает отключение всех данных, настроек и установленного программного обеспечения в неком дистрибутиве из вашей подсистемы Windows для Linux. После его инициализации это разрушит все данные окончательно. Однако это также сделает возможной повторную установку чистой копии некого дистрибутива из Microsoft Store:


> wsl --unregister kali-linux
		

Как вы можете видеть на Рисунке 4-8, после удаления регистрации дистрибутива “kali-linux”, он не появляется в моём списке WSL.

 

Рисунок 4-8


Удаление регистрации дистрибутива Linux

Теперь, если вы проследуете на страницу Microsoft Store для Kali Linux и кликните “Install”, это запустит инсталляцию данного дистрибутива снова. Это означает, что когда вы запускаете свой дистрибутив WSL снова, будет установлена чистая копия этого дистрибутива (Рисунок 4-9), что делает для вас возможным опять установить этот дистрибутив с новыми именем пользователя Unix и его паролем.

 

Рисунок 4-9


Свежая установка после удаления регистрации дистрибутива Linux

Иной способ деинсталляции дистрибутива в Windows 10 состоит в клике по меню Start, поиска необходимого названия дистрибутива и простого нажатия на вариант Uninstall, как это показано на Рисунке 4-10.

 

Рисунок 4-10


Деинсталляция дистрибутива Linux из меню Start

В качестве альтернативы, как это показано на Рисунке 4-11, вы можете также проследовать в меню Start, выбрать Settings, кликнуть Apps, отыскать нужный вам дистрибутив Linux и кликнуть его кнопку Uninstall. В разделе “Advanced Options” имеется нечто доступное наподобии “repair” для вашего дистрибутива Linux, когда что- то пошло не так в вашем дистрибутиве и если вы пожелаете исправить его.

 

Рисунок 4-11


Деинсталляция дистрибутива Linux через “Apps & features”

Создание индивидуального Distro WSL

Не так давно Microsoft открыла исходный код их инструментария и образца дистрибутива Linux чтобы предоставить разработчикам и специалистам по обслуживанию дистрибутивов Linux возможность создавать собственные пакеты распространения подсистемы Windows для Linux. Это дополнительно расширяет возможности разработчиков дистрибутива по доставке дистрибутивов Linux более широкой аудитории через Microsoft Store, где эти дистрибутивы могут быть опубликованы для загрузки.

Этот проект носит название WSL-DistroLauncher и был выставлен в виде открытого исходного кода в GitHub. Это ссылки реализации C++ installer/launcher.exe подсистемы Windows для Linux определённого дистрибутива Linux. Эти пакеты дистрибутива содержать собственно приложение запуска, которое заботится о регистрации и установке конкретного дистрибутива в WSL. За сценой этого для разработки некого персонального дистрибутива Linux подсистемы Windows для Linux вам потребуется некий файл заголовка wslapi.h, который предоставит пакет перечислений и функций, подлежащих настройке, регистрации и запуске вашего персонального дистрибутива.

Таблица 4-1 перечисляет некоторые функции, вышеупомянутого файла заголовка и вы можете дополнительно ознакомиться с этими функциями здесь.

Таблица 4-1. Функции из файла заголовка WSL API (wslapi.h)
Функция Описание

WslConfigureDistribution( )

Изменяет поведение некого дистрибутива, зарегистрированного в WSL.

WslGetDistributionConfiguration( )

Выполняет выборку текущих настроек зарегистрированного в WSL дистрибутива.

WslisDistributionRegistered( )

Определяет зарегистрирован ли дистрибутив в WSL.

WslLaunch( )

Запускает какой- то процесс WSL в контексте определённого дистрибутива.

WslLaunchInteractive( )

Запускает какой- то интерактивный процесс WSL в контексте определённого дистрибутива.

WslRegisterDistribution( )

Регистрирует новый дистрибутив в WSL.

WslUnregisterDistribution( )

Удаляет регистрацию дистрибутива из WSL.

После того как программа запуска дистрибутива собрана и упакована совместно со всеми необходимыми средствами, такими как файлы иконок, манифесты, сертификаты и тому подобное, тогда его можно запускать поверх подсистемы Windows для Linux в качестве некого собственного дистрибутива Linux. Соответствующий вывод вашей сборки заменит “launcher.exe” на персональное специфичное для дистрибутива название, скажем, на MyCustomDistro.exe, которое будет запускать ваш собственный дистрибутив, в точности как Ubuntu1804.exe или любая иная программа запуска. С помощью этого проекта вы также можете управлять аргументами командной строки, которые способна принимать такая программа запуска дистрибутива и даже писать свою собственную документацию подсказок, как это выделено на Рисунке 4-12.

 

Рисунок 4-12


Параметры командной строки для запуска дистрибутива

Выводы

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

В своей следующей главе мы намерены изучить Windows Subsystem for Linux версии 2 (WSL2) и рассмотреть архитектурные изменения и отличия в функциональных возможностях между этими двумя версиями.