Drogi Microsofcie, WSL jest w rozsypce! [OPINIA]
Wartościowy i zaawansowany technicznie Windows Subsystem for Linux (WSL) od początku rozwijał się w chaosie, ale ostatnio problem ten znacząco się pogłębił. Prawdopodobnie z czasem będzie coraz gorzej. Widać to w wersji trzeciej - czyli "1.0".
WSL zastąpił wycofany podsystem uniksowy dla NT, pojawiając się w trzeciej wersji Windows 10 (1607). Przerwało to kilkuletni brak natywnej obsługi aplikacji POSIX wewnątrz Windows. Zamieszanie zaczęło się już na początku. Podsystem, owszem, nazywał się "WSL" (Beta w dodatku), ale funkcja nosiła już inne miano - Bash on Ubuntu on Windows. Początkowo dostępne było tylko Ubuntu i tylko w wersji klienckiej. Windows Server 2016 nigdy nie otrzymał WSL… chyba że policzymy też system "Windows Server 2016, wersja 1803", czyli 2016, ale tak nie do końca.
WSL jako nie-beta pojawił się w Windows 10 w wersji 1709 (piątej). Umożliwiał on pobieranie większej liczby dystrybucji niż tylko Ubuntu. Wynikało to z tego, że w międzyczasie Sklep zaczął pozwalać na instalację aplikacji innych niż UWP. Dzięki temu w Sklepie zadebiutował np. Debian GNU/Linux (a raczej Debian GNU/NT). Pakiety dystrybucji, podobnie jak inne aplikacje z Microsoft Store, instalują się per-użytkownik.
Niezależne instancje
Źródło instalacyjne ze spakowanym "prefabrykatem" instalowane jest ogólnosystemowo do Program Files\WindowsApps, ale stan takiego pakietu jest już trzymany u użytkownika w AppData\Local\Packages. Znajduje się tam rozpakowany system plików (rootfs) lub dysk twardy ext (dla WSL2). Do zawartości WSL można się także obecnie dostać przez wirtualny zasób sieciowy "\\wsl$".
Dalsza część artykułu pod materiałem wideo
Teoretycznie pozwala to uniezależnić się od instalacji dystrybucji, ale regularnie zdarzają się sytuacje, w których dystrybucja nie startuje jeżeli nie uruchomi jej administrator. A gdy uruchomi - instaluje się oczywiście u niego, a nie u użytkownika. Z takim zachowaniem potrafi wyjechać (czasami!) Ubuntu, ale np. Debian wydaje się zachowywać poprawnie.
Instalowanie dystrybucji na koncie użytkownika i tak było jednak możliwe tylko w przypadku włączenia ogólnosystemowej funkcji, jaką był podsystem linuksowy. Wszak dystrybucje te korzystały z systemowej warstwy translacji, umożliwiającej komunikację z jądrem NT zamiast jądra Linux. Ten cwany sposób, wykorzystujący podstawy projektowe systemu Windows, był istotnie chytrą sztuczką - ale bardzo niewydajną. Dlatego powstał WSL2.
WSL2
Druga wersja WSL wykorzystuje już Hyper-V. Zamiast trzymać API dwóch systemów pod jednym dachem (Win32 i POSIX), Windows 10 w wersji 2004 (ósmej lub dziewiątej, w zależności od tego jak liczymy!) wprowadził wirtualne mini-jądro Linuksa, znacząco zwiększając wydajność. Przy okazji z Hyper-V przyszedł nowy stos sieciowy, co nadało dystrybucjom WSL2 dedykowane, inne adresy IP, czasem sprawiając problemy z komunikacją.
Aby pogłębić zamieszanie, Windows 10 obsługiwał oba podsystemy (WSL1 i WSL2) jednocześnie. Co więcej, zdecydowano się zbackportować WSL2 do poprzednich wersji Dziesiątki: 1903 i 1909. Oznacza to, że WSL1 nie działa w Windows Server 2016, a WSL2 nie działa w Windows Server 2019. Ale to nie wszystko. WSL2 nie działał także w Windows Server 2022… aż do lipca. Oczywiście, w obu Serverach nie ma Sklepu, więc dystrybucje instaluje się "na partyzanta": rozpakowując archiwum, albo wołając WSL.EXE.
WSL2... 2
Dwa linuksowe podsystemy i dwa sposoby instalowania dystrybucji to jednak wciąż nie jest szczyt możliwości Microsoftu. Tydzień po wydaniu Windows 11, Microsoft ogłosił że wprowadza WSL do Sklepu. Podsystem ten teraz będzie rozwijany jako oddzielna aplikacja, a nie funkcja ogólnosystemowa (DISM). Sklepowy WSL obsługuje tylko tryb WSL2, ale jest to tryb "z dodatkami". Funkcja systemowa obsługuje podstawowy WSL2 oraz klasyczny WSL1. Nie zadecydowano jeszcze, czy w przyszłości WSL wyleci z DISM i zostanie tylko w Microsoft Store. Oczywiście.
To wciąż nie wszystko. Sklepowy WSL ponownie uzyskał miano bety, choć tym razem w formie słowa "Preview". Nieco ponad rok po debiucie, osiągnął wersję "1.0". Zastąpi docelowo wariant z Windows Update jako domyślny. Trzecia wersja podsystemu linuksowego, "druga wersja jego drugiej wersji", wydanie które porzuca obsługę tej pierwszej - naprawdę ma numer 1.0.
Farsa bez końca
Powyższe zdanie brzmi jak mocna puenta. Miło byłoby na nim zakończyć, ale Microsoft mi nie pozwala. Ostatnią wiadomością jest bowiem to, że "WSL 1.0" jest od tygodnia dostępny także do pobrania w Microsoft Store dla Windows 10. I oczywiście już sprawia problemy. Kevin Purdy z Ars Technica pisze, że udało mu się w nim uruchomić Ubuntu w WSL za trzecim razem. Ja próbowałem uruchomić Debiana, który crashował na każdym koncie poza adminem… aż odszedłem od komputera na dwie godziny, wróciłem i Windows Terminal uruchomił Debiana już bez błędu 0x8000ffff, którym raczył cały dzień.
Najnowszy WSL w wersji sklepowej dla Windows 10 i 11 obsługuje systemd oraz środowisko graficzne (bez konieczności stosowania oddzielnego serwera X). Oczywiście, funkcje te zapowiedziano dawno przed Windows 11, po czym przez rok udawano że nie miało to miejsca. Ale to już wątek poboczny. Wystarczy nam już WSL na jeden raz.
Kamil J. Dudek, współpracownik redakcji dobreprogramy.pl