Firma Microsoft zaprezentowała wydanie narzędzia WSL 3.0 (Windows Subsystem for Linux), które umożliwia uruchamianie aplikacji Linux w systemie Windows. Nowa wersja wyróżnia się możliwością uruchamiania kontenerów Linux w systemie Windows oraz przejściem na jądro Linux 6.18. Kod używanych w WSL narzędzi wiersza poleceń, procesów działających w tle dla środowisk Linux, usług do uruchamiania kontenerów i maszyny wirtualnej, a także graficznego stosu wslg został udostępniony na licencji MIT. Zmiany w jądrze Linux są dostarczane na licencji GPLv2.
WSL zapewnia maszynę wirtualną z pełnoprawnym jądrem Linux (opartym na wersji 6.18), w której mogą działać dystrybucje Linux. Jądro zawiera zmiany specyficzne dla WSL, takie jak optymalizacje skracające czas uruchamiania oraz redukujące zużycie pamięci, możliwość zwracania systemowi Windows pamięci zwolnionej przez procesy Linux oraz ustawienia eliminujące zbędne sterowniki i podsystemy. System jest instalowany w oddzielnym obrazie dysku (VHD) z systemem plików ext4 i wirtualnym adapterem sieciowym.
Nowa wersja zawiera narzędzia do tworzenia, wdrażania i uruchamiania kontenerów Linux w systemie Windows, w tym interfejs wiersza poleceń wslc (WSL Containers) oraz towarzyszące API, które pozwala na uruchamianie kontenerów Linux z programów Windows. Główne możliwości wslc to:
- Operacje zarządzania cyklem życia kontenerów, takie jak tworzenie, uruchamianie, zatrzymywanie, eksportowanie, czyszczenie, inspekcja, weryfikacja działania, przekazywanie zdarzeń aktywności kontenera, kopiowanie plików do kontenera i z niego.
- Ograniczenie zużycia CPU i pamięci przez poszczególne kontenery.
- Budowanie, ładowanie, przesyłanie, importowanie, zapisywanie i sprawdzanie obrazów systemu. Komendy do przeglądania list dostępnych obrazów. Operacje wsadowe na kilku obrazach jednocześnie. Możliwość pakowania wielu obrazów do jednego archiwum tar.
- Tworzenie i zarządzanie wirtualnymi sieciami. Podłączanie kontenerów do wielu sieci. Tworzenie własnych typów sieci. Przekierowanie portów sieciowych.
- Tworzenie, przeglądanie i usuwanie woluminów. Praca z wirtualnymi dyskami (VHD).
- Dostęp do GPU z kontenerów i udostępnianie bibliotek do pracy dla nieuprzywilejowanych użytkowników z GPU.
- Tworzenie sesji w razie potrzeby, nadawanie nazw sesjom, konfigurowalne miejsce przechowywania.
- SDK z API do automatyzacji pracy z kontenerami z programów w C++ i C#/WinRT.
- Polecenie „wslc logs” do przeglądania i wyciągania danych z logów. Wyświetlanie statystyk działania kontenera. Podświetlanie danych w narzędziu „wslc”.
- Integracja z MSBuild i CMake.
- Wsparcie dla zarządzania za pomocą polityk grupowych ADMX.
- Wsparcie dla rozszerzenia dev container VS Code do uruchamiania i kompilacji rozwijanego kodu w kontenerze.
- Możliwość użycia wslc jako runtime do uruchamiania kontenerów w narzędziach Aspire.
- Rozszerzenie vscode-container-client do zarządzania kontenerami z poziomu edytora kodu VS Code.
- Zarządzanie kontenerami wslc za pomocą interfejsu tekstowego Lazywslc lub aplikacji desktopowej WinUI 3.
- Obwód do uruchamiania kontenerów Linux z dystrybucji Linux uruchomionych w WSL.

W domach kontenerowych domyślnie wykorzystywany jest system plików „virtiofs”, który zapewnia dwukrotnie szybszy dostęp do plików Windows, oraz tryb pracy sieci „consomme”, który zapewnia lepszą zgodność z różnymi konfiguracjami sieciowymi (VPN, proxy itp.). W trybie „consomme” ruch Linuxa jest przesyłany przez Windows, co pozwala na wykorzystanie wszystkich możliwości środowiska sieciowego Windows dla aplikacji Linux, w tym polityk bezpieczeństwa i narzędzi do integracji z systemami korporacyjnymi.
Za uruchamianie kontenerów odpowiedzialna jest uprzywilejowana usługa Windows wslservice.exe, która uruchamia maszyn wirtualnych i wykorzystuje je do uruchamiania Linuxa. W przeciwieństwie do WSL, usługa wslservice.exe tworzy dla kontenerów proces potomny wslcsession.exe, który działa z uprawnieniami aktualnego użytkownika i zajmuje się operacjami takimi jak tworzenie kontenerów, montowanie katalogów i przekierowywanie portów sieciowych. Różne sesje są ściśle izolowane od siebie i działają w różnych procesach. Każda sesja ma przypisany oddzielny magazyn VHD, umieszczany w katalogu %AppData%\Local\wslc\sessions. Możliwe jest montowanie ścieżek Windows w kontenerze Linuxa w celu wspólnego dostępu do plików.

Źródło: opennet.ru
