Компанія 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 c API для автоматизації роботи з контейнерами з програм C++ і C#/WinRT.
- Команда «wslc logs» для перегляду та вибірки даних із логів. Висновок статистики роботи контейнера. Підсвічування виведення в утиліті "wslc".
- Інтеграція з MSBuild та CMake.
- Підтримка керування за допомогою групових політик ADMX.
- Підтримка розширення VS Code dev container для запуску та складання коду, що розробляється в контейнері.
- Можливість використання wslc як runtime для запуску контейнерів в інструментарії 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. Можливе монтування в Linux-контейнері Windows-Шляхів для спільного доступу до файлів.

Джерело: opennet.ru
