Microsoft je predstavio novo izdanje alata WSL 3.0 (Windows Subsystem for Linux), koje omogućava pokretanje Linux aplikacija na Windows-u. Nova verzija se ističe mogućnošću pokretanja Linux kontejnera na Windows-u i prelaskom na korišćenje Linux jezgra 6.18. Kod alata koji se koriste u WSL-u, uključujući komandne linije, pozadinske procese za Linux okruženja, servise za pokretanje kontejnera i virtuelne mašine, kao i grafički sistem wslg, otvoren je pod MIT licencom. Izmene za Linux jezgro dolaze pod GPLv2 licencom.
WSL obezbeđuje virtuelnu mašinu sa punim Linux jezgrom (na bazi verzije 6.18), u kojoj mogu raditi Linux distribucije. Jezgro uključuje izmene specifične za WSL, kao što su optimizacije za smanjenje vremena pokretanja i potrošnje memorije, mogućnost vraćanja Windows-u memorije oslobođene od Linux procesa, i podešavanja za isključivanje nepotrebnih drajvera i pod sistema. Sistem se instalira u poseban diskovni image (VHD) sa ext4 fajlskim sistemom i virtuelnim mrežnim adapterom.
U novu verziju je uključen alat za kreiranje, implementaciju i pokretanje Linux kontejnera na Windows-u, koji uključuje komandnu liniju wslc (WSL Containers) i prateći API koji omogućava pokretanje Linux kontejnera iz Windows aplikacija. Ključne mogućnosti wslc-a:
- Operacije za upravljanje životnim ciklusom kontejnera, kao što su kreiranje, pokretanje, zaustavljanje, izvoz, čišćenje, inspekcija, provera rada, prenos događaja o aktivnosti kontejnera, kopiranje fajlova u kontejner i iz njega.
- Ograničenje potrošnje CPU i memorije pojedinačnih kontejnera.
- Kreiranje, učitavanje, slanje, uvoz, čuvanje i provera sistemskih slika. Komande za pregled lista dostupnih slika. Batch operacije odjednom sa više slika. Mogućnost pakovanja više slika u jedan tar arhiv.
- Kreiranje i upravljanje virtuelnim mrežama. Priključivanje kontejnera na više mreža. Kreiranje vlastitih tipova mreža. Prosleđivanje mrežnih portova.
- Kreiranje, pregled i brisanje particija. Rad sa virtuelnim diskovima (VHD).
- Pristup GPU-u iz kontejnera i pružanje biblioteka za rad s GPU-om za neprivilegovane korisnike.
- Ustvarjanje sej na zahtevo, poimenovanje sej, nastavljivo mesto shranjevanja.
- SDK z API-jem za avtomatizacijo dela s kontejnerji iz programov v C++ in C#/WinRT.
- Ukaz «wslc logs» za ogled in filtriranje podatkov iz logov. Prikaz statistik delovanja kontejnerja. Osvetlitev izhoda v orodju «wslc».
- Integracija z MSBuild in CMake.
- Podpora za upravljanje preko skupinskih politik ADMX.
- Podpora za razširitev VS Code dev container za zagon in gradnjo razvijane kode v kontejnerju.
- Možnost uporabe wslc kot runtime za zagon kontejnerjev v orodju Aspire.
- Razširitev vscode-container-client za upravljanje kontejnerjev iz urejevalnika kode VS Code.
- Upravljanje kontejnerjev wslc preko besedilnega vmesnika Lazywslc ali namizne aplikacije WinUI 3.
- Ovitek za zagon Linux kontejnerjev iz distribucij Linux, delujočih v WSL.

V kontejnerjih je privzeto uporabljena datotečni sistem «virtiofs», ki prikazuje dvakratno pospešitev dostopa do Windows datotek, in način delovanja omrežja «consomme», ki zagotavlja izboljšano združljivost z različnimi omrežnimi konfiguracijami (VPN, proxy itd.). V načinu «consomme» se Linux promet posreduje preko Windows, kar omogoča, da Linux aplikacije izkoristijo vse zmogljivosti omrežnega okolja Windows, vključno s politikami varnosti in sredstvi za integracijo s podjetniškimi sistemi.
Za izvajanje kontejnerjev je odgovoren privilegiran Windows servis wslservice.exe, ki zažene virtualne stroje in jih uporablja za izvajanje Linuxa. V nasprotju z WSL, servis wslservice.exe ustvari podproces wslcsession.exe za kontejnerje, ki se izvaja s pravicami trenutnega uporabnika in prevzame takšne operacije, kot so ustvarjanje kontejnerjev, montaža map in preusmerjanje omrežnih vrat. Različne seje so strogo izolirane med seboj in delujejo v različnih procesih. Vsaki seji je dodeljena ločena shramba VHD, shranjena v mapi %AppData%\Local\wslc\sessions. Mogoče je montirati Windows poti v Linux kontejnerju za skupno rabo datotek.

Izvor: opennet.ru
