Podsystem Windows dla systemu Linux — Windows Subsystem for Linux

Podsystem Windows dla Linuksa
Tux.svg
Ubuntu na Windows 10 - bash.png
Bash działa w systemie Windows 10
Inne nazwy WSL
Deweloper(zy) Microsoft
Pierwsze wydanie 2 sierpnia 2016 ; 5 lat temu ( 02.08.2016 )
Wersja stabilna
WSL 2 / 12 czerwca 2019 ; 2 lata temu ( 2019-06-12 )
Magazyn github .com /Microsoft /WSL (tylko problemy)
System operacyjny Windows 10 , Windows Server 2019 , Windows 11
Poprzednik Usługi Windows dla UNIX
Rodzaj Warstwa kompatybilności , Wirtualizacja
Licencja Podsystem: Własne oprogramowanie komercyjne ;
Jądro Linux: GNU GPLv2 (tylko) z pewnym kodem na zgodnych wariantach GPL lub na licencjach zezwalających, takich jak BSD, MIT
Strona internetowa dokumenty .microsoft .com /en-us /windows /wsl / Edytuj to na Wikidanych

Windows Subsystem for Linux ( WSL ) to warstwa kompatybilności do uruchamiania binarnych plików wykonywalnych systemu Linux (w formacie ELF ) natywnie w systemach Windows 10 , Windows 11 i Windows Server 2019 .

W maju 2019 r. ogłoszono WSL 2 , wprowadzając ważne zmiany, takie jak prawdziwe jądro Linuksa , poprzez podzbiór funkcji Hyper-V . Od czerwca 2019 r. WSL 2 jest dostępne dla klientów Windows 10 za pośrednictwem programu Windows Insider , w tym wersji Home. WSL nie jest domyślnie dostępne dla wszystkich użytkowników systemu Windows 10. Można go zainstalować, dołączając do programu Windows Insider lub instalując ręcznie.

Przegląd

Pierwsze wydanie WSL zapewnia zgodny z Linuksem interfejs jądra opracowany przez Microsoft, nie zawierający kodu jądra Linuksa , na którym można następnie uruchomić przestrzeń użytkownika GNU , taką jak Ubuntu , openSUSE , SUSE Linux Enterprise Server , Debian i Kali Linux . Taka przestrzeń użytkownika może zawierać powłokę GNU Bash i język poleceń, z natywnymi narzędziami wiersza poleceń GNU ( sed , awk itp.), interpreterami języka programowania ( Ruby , Python itp.), a nawet aplikacjami graficznymi (przy użyciu serwer X11 po stronie hosta).

Architektura została przeprojektowana w WSL 2, z jądrem Linux działającym w lekkim środowisku maszyny wirtualnej .

Wprowadzenie i dostępność

Wersja beta WSL została wprowadzona w systemie Windows 10 w wersji 1607 (aktualizacja rocznicowa) 2 sierpnia 2016 r . Obsługiwany był tylko system Ubuntu (z Bash jako domyślną powłoką). Wersja beta WSL była również nazywana „Bash w systemie Ubuntu w systemie Windows” lub „Bash w systemie Windows”.

WSL nie było już beta w wersji 1709 systemu Windows 10 (Fall Creators Update), wydanej 17 października 2017 r. Wiele dystrybucji Linuksa można było zainstalować i były one dostępne do zainstalowania w Sklepie Windows .

WSL jest dostępny tylko w 64-bitowych wersjach systemu Windows 10 od wersji 1607. Jest również dostępny w systemie Windows Server 2019.

Firma Microsoft ogłosiła WSL 2 6 maja 2019 r., która zawiera całkowicie nowy backend oparty na maszynach wirtualnych (oparty na podzbiorze funkcji Hyper-V) zamiast poprzedniej warstwy adaptacji wywołań systemowych. WSL 2 został dostarczony z systemem Windows 10 w wersji 2004, a także został przeniesiony do systemu Windows 10 w wersji 1903 i 1909.

Obsługa GPU dla WSL 2 została wprowadzona w kompilacji Windows 20150. Obsługa GUI dla WSL 2 została wprowadzona w kompilacji Windows 21364. Oba są dostarczane w systemie Windows 11.

Firma Microsoft wprowadziła wersję WSL dla Windows Store 11 października 2021 r. dla systemu Windows 11.

Rozwój

Pierwsza próba Microsoftu w celu osiągnięcia zgodności z Uniksem w systemie Windows rozpoczęła się od podsystemu Microsoft POSIX , zastąpionego usługami Windows dla UNIX za pośrednictwem MKS / Interix , który został ostatecznie przestarzały wraz z wydaniem Windows 8.1 . Technologia podsystemu Windows dla systemu Linux pochodzi z niewydanego jeszcze projektu Astoria , który umożliwił uruchamianie niektórych aplikacji na Androida w systemie Windows 10 Mobile . Został po raz pierwszy udostępniony w Windows 10 Insider Preview w wersji 14316.

Podczas gdy poprzednie projekty Microsoftu i firmy Cygwin koncentrowały się na tworzeniu własnych, unikalnych środowisk uniksopodobnych opartych na standardzie POSIX , WSL dąży do natywnej kompatybilności z Linuksem. Zamiast umieszczać nienatywną funkcjonalność w wywołaniach systemowych Win32 , tak jak korzystały z tych wcześniejszych systemów, początkowy projekt WSL (WSL 1) wykorzystywał moduł wykonawczy jądra NT do obsługi programów Linuksa jako specjalnych, izolowanych minimalnych procesów (znanych jako „procesy pico” ) dołączonych do jądra tryb "pico provider" jako dedykowane procedury obsługi wywołań systemowych i wyjątków, różniące się od tych z waniliowego procesu NT, decydując się na ponowne wykorzystanie istniejących implementacji NT tam, gdzie jest to możliwe.

Chociaż WSL (poprzez ten początkowy projekt) był znacznie szybszy i prawdopodobnie znacznie bardziej popularny niż jego bracia projekty UNIX-on-Windows, inżynierowie jądra systemu Windows napotkali trudności w próbach zwiększenia wydajności WSL i kompatybilności z wywołaniami systemowymi poprzez próbę przekształcenia istniejącego jądra NT w celu rozpoznania i działać poprawnie na Linuksowym API . Na konferencji Microsoft Ignite w 2018 r. inżynierowie Microsoft przedstawili wysokopoziomowy przegląd nowej „lekkiej” technologii Hyper-V VM do konteneryzacji, w której zwirtualizowane jądro może bezpośrednio korzystać z prymitywów NT na hoście. W 2019 r. Microsoft ogłosił całkowicie przeprojektowaną architekturę WSL (WSL 2) przy użyciu tej lekkiej technologii maszyn wirtualnych hostującej rzeczywiste (dostosowane) obrazy jądra Linuksa, zapewniając pełną zgodność z systemem syscall.

Microsoft wyobraża sobie WSL jako „głównie narzędzie dla programistów – zwłaszcza twórców stron internetowych i tych, którzy pracują nad lub z projektami open source”. We wrześniu 2018 r. Microsoft powiedział, że „WSL wymaga mniej zasobów (procesora, pamięci i pamięci masowej) niż pełna maszyna wirtualna” (co przed WSL było najbardziej bezpośrednim sposobem uruchamiania oprogramowania Linux w środowisku Windows), jednocześnie umożliwiając użytkownikom używać aplikacji Windows i narzędzi Linux na tym samym zestawie plików.

W kwietniu 2021 r. firma Microsoft wydała testową wersję systemu Windows 10, która obejmuje również możliwość uruchamiania aplikacji z graficznym interfejsem użytkownika (GUI) systemu Linux przy użyciu WSL 2 i CBL-Mariner . Podsystem Windows dla GUI systemu Linux (WSLg) został oficjalnie wydany na konferencji Microsoft Build 2021 . Jest on zawarty w Windows 10 Insider w kompilacji 21364 lub nowszej.

Architektura

WSL 1

Usługa menedżera LXSS

LXSS Manager Service to usługa odpowiedzialna za interakcję z podsystemem (za pośrednictwem sterowników lxss.sys i lxcore.sys) oraz sposób, w jaki Bash.exe (nie mylić z powłokami dostarczanymi przez dystrybucje Linuksa) uruchamia procesy Linuksa, a także obsługuje wywołania systemu Linux i blokady binarne podczas ich wykonywania.

Wszystkie procesy Linuksa wywoływane przez konkretnego użytkownika trafiają do „Instancji Linuksa” (zazwyczaj pierwszym wywołanym procesem jest init ). Po zamknięciu wszystkich aplikacji instancja zostaje zamknięta.

wsl.exe

wsl
Deweloper(zy) Microsoft
Pierwsze wydanie 2 sierpnia 2016 ; 5 lat temu ( 02.08.2016 )
System operacyjny Microsoft Windows
Rodzaj Komenda
Strona internetowa dokumenty .microsoft .com /en-us /windows /wsl / Edytuj to na Wikidanych

wsl.exe Komenda służy do zarządzania dystrybucje w oknach Subsystem for Linux na linii poleceń . Może wyświetlać dostępne dystrybucje, ustawiać domyślną dystrybucję i odinstalowywać dystrybucje. Polecenia można również używać do uruchamiania plików binarnych systemu Linux z wiersza polecenia systemu Windows lub programu Windows PowerShell . wsl.exezastępuje, lxrun.exektóry jest przestarzały w systemie Windows 10 1803 i nowszych.

Przykłady

Uruchom unamepolecenie w WSL przy użyciu PowerShell.

PS C:\temp> wsl uname --all
Linux WikiMachine 4.4.0-18362-Microsoft #1-Microsoft Mon Mar 18 12:02:00 PST 2019 x86_64 x86_64 x86_64 GNU/Linux

Przykład przy użyciu sudopolecenia z wiersza poleceń.

C:\temp> wsl sudo apt-get update
[sudo] password for username:
Hit:1 https://archive.ubuntu.com/ubuntu xenial InRelease
Get:2 https://security.ubuntu.com/ubuntu xenial-security InRelease [94.5 kB]

Dostęp do sprzętu i systemu plików

Projekt WSL 1 nie zawierał emulacji / wirtualizacji sprzętu (w przeciwieństwie do innych projektów, takich jak coLinux) i wykorzystuje bezpośrednio system plików hosta (poprzez VolFSi DrvFS) oraz niektóre części sprzętu, takie jak sieć, co gwarantuje interoperacyjność. Na przykład do serwerów sieci Web można uzyskać dostęp za pośrednictwem tych samych interfejsów i adresów IP skonfigurowanych na hoście, a także mają te same ograniczenia dotyczące korzystania z portów wymagających uprawnień administracyjnych lub portów już zajętych przez inne aplikacje.

Istnieją pewne lokalizacje (takie jak foldery systemowe) i konfiguracje, do których dostęp/modyfikacja jest ograniczony, nawet gdy działasz jako root, z sudo z powłoki. Instancja z podwyższonymi uprawnieniami musi zostać uruchomiona, aby „sudo” nadało prawdziwe uprawnienia roota i zezwoliło na taki dostęp.

Ograniczenia

WSL 1 nie jest w stanie uruchomić całego oprogramowania systemu Linux, takiego jak 32-bitowe pliki binarne lub takie, które wymagają określonych usług jądra systemu Linux, które nie są zaimplementowane w WSL. Z powodu braku jakiegokolwiek „prawdziwego” jądra Linuksa w WSL 1, nie można uruchomić modułów jądra, takich jak sterowniki urządzeń. WSL 2 korzysta jednak z działających, zwirtualizowanych instancji jądra systemu Linux.

Możliwe jest uruchamianie niektórych aplikacji graficznych (GUI) (takich jak Mozilla Firefox ) instalując serwer X11 w środowisku Windows (host) (takim jak VcXsrv lub Xming ), ale nie bez zastrzeżeń, takich jak brak obsługi dźwięku ( choć można temu zaradzić, instalując PulseAudio w Windows w sposób podobny do X11) lub akcelerację sprzętową (powodującą słabą wydajność grafiki). Wsparcie dla OpenCL i CUDA również nie jest obecnie wdrażane, chociaż planowane jest w przyszłych wydaniach.

Microsoft stwierdził, że WSL został zaprojektowany do tworzenia aplikacji, a nie komputerów stacjonarnych lub serwerów produkcyjnych , zalecając do tych celów korzystanie z maszyn wirtualnych ( Hyper-V ), Kubernetes i Azure .

Benchmarki

W testach wydajności WSL 1 często zbliża się do natywnego systemu Linux Ubuntu, Debian, Intel Clear Linux lub innych dystrybucji Linuksa. We/Wy jest w niektórych testach wąskim gardłem dla WSL. Microsoft twierdzi, że przeprojektowany backend WSL 2 oferuje dwudziestokrotny wzrost szybkości niektórych operacji w porównaniu z WSL 1.

W czerwcu 2020 r. benchmark z 173 testami z AMD Threadripper 3970x pokazuje dobrą wydajność z WSL 2 (20H2) z 87% wydajnością natywnego Ubuntu 20.04.0 LTS. Jest to ulepszenie w stosunku do WSL 1, który w tym porównaniu ma tylko 70% wydajności natywnego Ubuntu. WSL 2 poprawia wydajność we/wy, zapewniając niemal natywny poziom. Porównanie 69 testów z Intel i9 10900K w maju 2020 r. pokazuje prawie taką samą względną wydajność.

W grudniu 2020 r. benchmark z 43 testami z AMD Ryzen 5900X pokazuje dobrą wydajność z WSL 2 (20H2) z 93% wydajnością natywnego 20.04.1 LTS. Jest to poprawa w stosunku do WSL 1, która w tym porównaniu ma tylko 73%.

WSL 2

Wersja 2 wprowadza zmiany w architekturze. Firma Microsoft zdecydowała się na wirtualizację poprzez wysoce zoptymalizowany podzbiór funkcji Hyper-V, aby uruchomić jądro i dystrybucje (oparte na jądrze), obiecując wydajność równoważną WSL 1. W celu zapewnienia kompatybilności wstecznej programiści nie muszą niczego zmieniać w swoich opublikowanych dystrybucjach. Ustawienia WSL 2 mogą być modyfikowane przez globalną konfigurację WSL , zawartą w pliku INI o nazwie .wslconfigw folderze User Profile .

Instalacja dystrybucji znajduje się w systemie plików w formacie ext4 na dysku wirtualnym , a system plików hosta jest transparentnie dostępny za pośrednictwem protokołu 9P , podobnie jak w przypadku innych technologii maszyn wirtualnych, takich jak QEMU . Dla użytkowników Microsoft obiecał do 20 razy wyższą wydajność odczytu/zapisu w stosunku do WSL 1. W systemie Windows udostępniany jest readresator sieci IFS dla dostępu do plików gościa systemu Linux przy użyciu prefiksu ścieżki UNC . \\wsl$

WSL 2 wymaga systemu Windows 10 w wersji 1903 lub nowszej z kompilacją 18362 lub nowszą dla systemów x64 oraz wersji 2004 lub nowszej z kompilacją 19041 lub nowszej dla systemów ARM64.

Zrzuty ekranu

Spór

Wyrażono obawy, że podsystem Windows dla Linuksa może być sposobem na „ objęcie, rozszerzenie i wygaszenie ” Linuksa. Richard Stallman wyraził obawy, że integracja funkcjonalności Linuksa z Windows tylko utrudni rozwój wolnego oprogramowania , nazywając wysiłki takie jak WSL „krokiem wstecz w kampanii na rzecz wolności”. Z kolei Linus Torvalds powiedział, że nie jest zaniepokojony przejęciem Linuksa przez Microsoft, ponieważ uważa, że uniemożliwiają to licencje GPL 2 Linuksa i rozmiar projektu, a także powołuje się na zwiększoną współpracę Microsoftu ze społecznością Linuksa.

Zobacz też

Bibliografia

Zewnętrzne linki