Spoločnosť Microsoft predstavila vydanie nástroja WSL 3.0 (Windows Subsystem for Linux), ktorý umožňuje spúšťanie Linux aplikácií vo Windows. Nová verzia je významná realizáciou možnosti spúšťania Linux kontajnerov vo Windows a prechodom na používanie jadra Linux 6.18. Kód používaných v WSL príkazových utilít, pozadí procesov pre Linux prostredie, služieb na spúšťanie kontajnerov a virtuálnej mašiny, ako aj grafického stacku wslg je otvorený pod licenciou MIT. Zmeny pre jadro Linux sú dodávané pod licenciou GPLv2.
WSL poskytuje virtuálnu mašinu s plnohodnotným jadrom Linux (základná verzia 6.18), v ktorej môžu byť spúšťané distribúcie Linuxu. Jadro obsahuje špecifické úpravy pre WSL, ako optimalizácie na skrátenie času spustenia a zníženie spotreby pamäte, možnosť vrátenia pamäte uvoľnenej procesmi Linuxu do Windows a nastavenia na vylúčenie zbytočných ovládačov a subsystémov. Systém sa inštaluje do samostatného diskového obrazu (VHD) s súborovým systémom ext4 a virtuálnym sieťovým adaptérom.
Nová verzia obsahuje nástroje na vytváranie, nasadzovanie a spúšťanie Linux kontajnerov vo Windows, vrátane rozhraní príkazového riadka wslc (WSL Containers) a súvisiaceho API, ktoré umožňuje spúšťanie Linux kontajnerov z Windows programov. Hlavné funkcie wslc sú:
- Operácie na správu životného cyklu kontajnerov, ako sú vytváranie, spúšťanie, zastavenie, export, čistenie, inšpekcia, kontrola prevádzky, prenos udalostí o aktivite kontajnera, kopírovanie súborov do kontajnera a z neho.
- Obmedzenie spotreby CPU a pamäte jednotlivých kontajnerov.
- Zostavenie, nahrávanie, odosielanie, import, uloženie a kontrola systémových obrazov. Príkazy na zobrazenie zoznamov dostupných obrazov. Hromadné operácie naraz s viacerými obrazmi. Možnosť zabaliť niekoľko obrazov do jedného tar archívu.
- Vytváranie a správa virtuálnych sietí. Pripojenie kontajnerov k viacerým sieťam. Vytváranie vlastných typov sietí. Preposielanie sieťových portov.
- Vytváranie, zobrazenie a odstraňovanie oddielov. Práca s virtuálnymi diskami (VHD).
- Prístup k GPU z kontajnerov a poskytovanie knižníc pre prácu neprivilegovaných používateľov s GPU.
- Vytváranie relácií podľa potreby, priradenie mien reláciám, nastaviteľná lokalita úložiska.
- SDK s API na automatizáciu práce s kontajnermi z programov v C++ a C#/WinRT.
- Príkaz «wslc logs» na zobrazenie a výber dát z logov. Výstup štatistiky o činnosti kontajnera. Zvýraznenie výstupu v utilite «wslc».
- Integrácia s MSBuild a CMake.
- Podpora riadenia pomocou skupinových politík ADMX.
- Podpora rozšírenia VS Code dev container na spúšťanie a zostavovanie vyvíjaného kódu v kontajneri.
- Možnosť používať wslc ako runtime na spúšťanie kontajnerov v nástrojoch Aspire.
- Rozšírenie vscode-container-client na správu kontajnerov z editoru kódu VS Code.
- Správa kontajnerov wslc prostredníctvom textového rozhrania Lazywslc alebo desktopovej aplikácie WinUI 3.
- Obal na spúšťanie Linux kontajnerov z distribúcií Linuxu bežiacich v WSL.

V predvolenom nastavení sú v kontajneroch použité súborový systém „virtiofs“, ktorý preukazuje dvojnásobné zrýchlenie prístupu k súborom vo Windows, a režim siete „consomme“, ktorý zlepšuje kompatibilitu s rôznymi sieťovými konfiguráciami (VPN, proxy a pod.). V režime „consomme“ sa Linux prevádzka presmerováva cez Windows, čo umožňuje využívať všetky funkcie sieťového prostredia Windows pre aplikácie Linux, vrátane bezpečnostných politík a nástrojov na integráciu s firemnými systémami.
Za vykonávanie kontajnerov zodpovedá privilegovaná Windows služba wslservice.exe, ktorá spúšťa virtuálne stroje a využíva ich na spúšťanie Linuxu. Na rozdiel od WSL služba wslservice.exe vytvára pre kontajnery podproces wslcsession.exe, ktorý sa vykonáva s právami aktuálneho používateľa a preberá také operácie, ako je vytváranie kontajnerov, montovanie adresárov a presmerovanie sieťových portov. Rôzne relácie sú prísne izolované a pracujú v rôznych procesoch. Ku každej relácii je priradené samostatné úložisko VHD, umiestnené v priečinku %AppData%\Local\wslc\sessions. Je možné montovať cesty Windows v Linuxovom kontajneri pre zdieľanie súborov.

Zdroj: opennet.ru
