Tvrtka Microsoft predstavila je izdanje alata WSL 3.0 (Windows Subsystem for Linux), koji omogućuje pokretanje Linux aplikacija na Windowsu. Nova verzija se ističe implementacijom mogućnosti za pokretanje Linux kontejnera na Windowsu i prelaskom na korištenje Linux jezgre 6.18. Kod korištenih alata naredbenog retka u WSL-u, pozadinskih procesa za Linux okruženja, servisa za pokretanje kontejnera i virtualne mašine, kao i grafičkog stoga wslg je otvoren pod MIT licencom. Promjene za Linux jezgru isporučuju se pod GPLv2 licencom.
WSL pruža virtualnu mašinu s punom Linux jezgrom (na bazi verzije 6.18) u kojoj se mogu pokretati Linux distribucije. Jezgra uključuje specifične WSL promjene, poput optimizacija za smanjenje vremena pokretanja i smanjenje potrošnje memorije, mogućnost vraćanja memorije koju su oslobodili Linux procesi i postavke za isključivanje suvišnih drajvera i pod sustava. Sustav se instalira u zasebnu diskovnu sliku (VHD) s datotečnim sustavom ext4 i virtualnim mrežnim adapterom.
Nova verzija uključuje alat za stvaranje, raspoređivanje i pokretanje Linux kontejnera na Windowsu, uključujući sučelje naredbenog retka wslc (WSL Containers) i prateći API koji omogućuje pokretanje Linux kontejnera iz Windows programa. Glavne mogućnosti wslc-a:
- Operacije za upravljanje životnim ciklusom kontejnera, kao što su stvaranje, pokretanje, zaustavljanje, izvoz, čišćenje, inspekcija, provjera rada, prijenos događaja o aktivnostima kontejnera, kopiranje datoteka u kontejner i iz njega.
- Ograničenje potrošnje CPU-a i memorije pojedinih kontejnera.
- Izgradnja, učitavanje, slanje, uvoz, spremanje i provjera sistemskih slika. Komande za pregled popisa dostupnih slika. Grupne operacije s više slika u isto vrijeme. Mogućnost pakiranja više slika u jedan tar-arhiv.
- Stvaranje i upravljanje virtualnim mrežama. Priključivanje kontejnera na više mreža. Stvaranje vlastitih tipova mreža. Prosljeđivanje mrežnih portova.
- Kreiranje, pregled i brisanje particija. Rad s virtualnim diskovima (VHD).
- Pristup GPU-u iz kontejnera i pružanje biblioteka za rad neprivilegiranih korisnika s GPU-ima.
- Kreiranje sesija po potrebi, dodjeljivanje imena sesijama, prilagodljiva lokacija pohrane.
- SDK s API-jem za automatizaciju rada s kontejnerima iz programa na C++ i C#\/WinRT.
- Komanda 'wslc logs' za pregled i filtriranje podataka iz logova. Ispis statistike o radu kontejnera. Isticanje ispisa u alatu 'wslc'.
- Integracija s MSBuild i CMake.
- Podrška za upravljanje putem grupnih politika ADMX.
- Podrška za proširenje VS Code dev container za pokretanje i izgradnju razvijanog koda u kontejneru.
- Mogućnost korištenja wslc-a kao runtime-a za pokretanje kontejnera u Aspire alatu.
- Proširenje vscode-container-client za upravljanje kontejnerima iz VS Code editora.
- Upravljanje kontejnerima wslc putem tekstualnog sučelja Lazywslc ili desktop aplikacije WinUI 3.
- Obloga za pokretanje Linux kontejnera iz Linux distribucija pokrenutih u WSL-u.

U kontejnerima je po defaultu uključena datotečni sustav «virtiofs», koji pokazuje dvostruko ubrzanje pristupa Windows datotekama, i mrežni način rada «consomme», koji osigurava poboljšanu kompatibilnost s različitim mrežnim konfiguracijama (VPN, proxy i slično). U režimu «consomme», Linux-trafik se preusmjerava preko Windowsa, što omogućuje korištenje svih mogućnosti mrežnog okruženja Windowsa za Linux aplikacije, uključujući sigurnosne politike i alate za integraciju s korporativnim sustavima.
Za pokretanje kontejnera odgovara privilegirana Windows usluga wslservice.exe, koja pokreće virtualne mašine i koristi ih za izvođenje Linuxa. Za razliku od WSL-a, usluga wslservice.exe stvara za kontejnerе potomak wslcsession.exe, koji se izvršava s pravima trenutnog korisnika i preuzima operacije poput stvaranja kontejnera, montiranja direktorija i prosljeđivanja mrežnih portova. Različite sesije strogo su izolirane jedna od druge i rade u različitim procesima. Svakoj sesiji dodjeljuje se zasebno pohranjivanje VHD-a koje se nalazi u direktoriju %AppData%\Local\wslc\sessions. Moguće je montirati Windows putanje u Linux kontejneru za zajednički pristup datotekama.

Izvor: opennet.ru
