Компания Microsoft представи версия на инструмента WSL 3.0 (Windows Subsystem for Linux), позволяваща стартиране на Linux приложения в Windows. Новата версия се отличава с реализирането на възможност за стартиране на Linux контейнери в Windows и преминаване на използването на ядрото Linux 6.18. Кодът на приложенията, използвани в WSL, включва утилити за команден ред, фонови процеси за Linux среди, услуги за стартиране на контейнери и виртуални машини, както и графичен стек wslg, е отворен под лиценз MIT. Промените за ядрото Linux се доставят под лиценз GPLv2.
WSL предоставя виртуална машина с пълноценно ядрото Linux (на базата на версия 6.18), в която могат да се стартират дистрибуции на Linux. Ядрото включва специфични за WSL промени, като оптимизации за намаляване на времето за стартиране и намаляване на консумацията на памет, възможността Windows да освобождава памет, заета от Linux процеси, и настройки за изключване на излишни драйвъри и подсистеми. Системата се инсталира в отделен дисков образ (VHD) с файлова система ext4 и виртуален мрежов адаптер.
В новата версия е включен инструментарий за създаване, развръщане и стартиране на Linux контейнери в Windows, включващ интерфейс за команден ред wslc (WSL Containers) и свързан API, позволяващ стартиране на Linux контейнери от Windows приложения. Основните възможности на wslc:
- Операции за управление на жизнения цикъл на контейнерите, като създаване, стартиране, спиране, експортиране, почистване, инспектиране, проверка на работата, предаване на събития за активността на контейнера, копиране на файлове в контейнера и от него.
- Ограничаване на потреблението на CPU и памет от отделни контейнери.
- Създаване, качване, изпращане, импортиране, запазване и проверка на системни образи. Команди за преглед на списъци с налични образи. Пакетни операции с няколко образа. Възможност за опаковане на няколко образа в един tar архив.
- Създаване и управление на виртуални мрежи. Присъединяване на контейнери към няколко мрежи. Създаване на собствени типове мрежи. Пробиване на мрежови портове.
- Създаване, преглед и изтриване на дялове. Работа с виртуални дискове (VHD).
- Достъп до GPU от контейнери и предоставяне на библиотеки за работа на непривилегировани потребители с GPU.
- Създаване на сесии при необходимост, присвояване на имена на сесиите, настраиваемо местоположение на хранилището.
- SDK с API за автоматизация на работата с контейнери от програми на C++ и C#\/WinRT.
- Командата „wslc logs“ за преглед и извличане на данни от логовете. Изход на статистиката за работата на контейнера. Подсветка на изхода в утилитата „wslc“.
- Интеграция с MSBuild и CMake.
- Поддръжка на управление с помощта на групови политики ADMX.
- Поддръжка на разширението VS Code dev container за стартиране и компилиране на разработвания код в контейнера.
- Възможност за използване на wslc като среда за стартиране на контейнери в инструмента Aspire.
- Разширението vscode-container-client за управление на контейнери от редактора VS Code.
- Управление на контейнерите wslc чрез текстовия интерфейс Lazywslc или десктоп приложението WinUI 3.
- Обвивка за стартиране на Linux контейнери от дистрибуции на Linux, стартирани в WSL.

В контейнерите по подразбиране се използва файловата система „virtiofs“, демонстрираща двойно ускорение на достъпа до файлове под Windows, и режимът на работа с мрежата „consomme“, осигуряващ подобрена съвместимост с различни мрежови конфигурации (VPN, прокси и т.н.). В режим „consomme“ трафикът на Linux се предава през Windows, което позволява на Linux приложенията да използват всички възможности на мрежовата среда на Windows, включително политики за сигурност и средства за интеграция с корпоративни системи.
За изпълнението на контейнерите отговаря привилегирован Windows услуга wslservice.exe, която стартира виртуални машини и ги използва за изпълнение на Linux. За разлика от WSL, услугата wslservice.exe създава за контейнерите дочерен процес wslcsession.exe, стартиран с правата на текущия потребител и поемащ операции като създаване на контейнери, монтиране на директории и пренасочване на мрежови портове. Различните сесии са строго изолирани помежду си и работят в различни процеси. За всяка сесия се свързва отделно хранилище VHD, разположено в директорията %AppData%\Local\wslc\sessions. Възможно е монтиране на Windows пътища в Linux контейнера за споделено достъпване на файлове.

Източник: opennet.ru
