Кампанія Microsoft прадставіла рэліз інструментара WSL 3.0 (Windows Падсістэма для Linux), які дазваляе запускаць Linux-прыкладанні ў Windows. Новая галінка характэрна рэалізацыяй магчымасці для запуску Linux-кантэйнераў у Windows і пераходам на выкарыстанне ядра Linux 6.18. Код ужывальных у WSL утыліт каманднага радка, фонавых працэсаў для Linux-акружэнняў, сэрвісаў для запуску кантэйнераў і віртуальнай машыны, а таксама графічнага стэка wslg адкрыты пад ліцэнзіяй MIT. Змены для ядра Linux пастаўляюцца пад ліцэнзіяй GPLv2
WSL дае віртуальную машыну з паўнавартасным ядром Linux (на базе галінкі 6.18), у якой могуць запускацца дыстрыбутывы Linux. Ядро ўключае спецыфічныя для WSL змены, такія як аптымізацыі для скарачэння часу запуску і памяншэнні спажывання памяці, магчымасць вяртання Windows вызваленай Linux-працэсамі памяці і налады для выключэння лішніх драйвераў і падсістэм. Сістэма ўсталёўваецца ў асобную дыскавую выяву (VHD) c файлавай сістэмай 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
