Microsoft niedawno ogłosił, że wkrótce wysyłają jądro Linux, które jest zintegrowane bezpośrednio z systemem Windows 10. Umożliwi to programistom wykorzystanie platformy Windows 10 podczas opracowywania aplikacji dla Linux. W rzeczywistości jest to kolejny krok w ewolucji podsystemu Windows dla Linux (WSL). Przejrzyjmy WSL wersję 1, zanim przejdziemy do dzianinowego intergacji jądra Linux i co to znaczy.
Jeśli chcesz zacząć od WSL (v1), jest na to przewodnik.
Wersja WSL1
Podsystem systemu Windows dla Linux powinien być naprawdę nazywany podsystemem Linux dla systemu Windows. Oferuje sterownik (podsystem) dla systemu systemu systemu Windows, który tłumaczy wywołania systemu Linux na natywne wywołania systemu Windows 10, które rozumie jądro NT.
Stwarza to nieco wiarygodną iluzję dla binarów Linuksa, że w rzeczywistości działają na jądrze Linuksa! Działa to wystarczająco dobrze, że nie tylko możesz uruchomić proste 64-bitowe binaria opracowane dla Linux, ale możesz uruchomić cały użytkownik (a.k.Dystrybucja Linux, taka jak Debian lub Ubuntu) na szczycie WSL v1. Więc po zainstalowaniu Ubuntu ze sklepu Microsoft Store, po prostu pobiera binarie Ubuntu Userland, które kanoniczne wysyłki do środowiska WSL V1 Microsoft WSL V1.
Jednak WSL V1 jest nadal daleka od ideału. Pewne semantyki, których system Linux spodziewałby się, jest całkowicie nie do przyjęcia w systemie Windows. Na przykład nie możesz zmienić nazwy pliku otwartego pliku w systemie Windows, ale możesz to zrobić w Linux.
Inne oczywiste przykłady to słaba wydajność systemu plików WSL V1 i jego niezdolność do uruchomienia Dockera.
WSL v2 jądro Linux
Ta nowa wersja WSL rozwiązuje wszystkie te problemy, włączając jądro Linux działające w hiperwizorze Hyper-V. Podczas ich ogłoszenia i demonstracji Craig Loewen i jego kolega z Microsoft podkreślili, że idzie naprzód, Microsoft będzie bardzo inwestować w technologię wirtualizacji.
Korzystanie z jądra Linux rozwiązuje wszystkie problemy semantyczne, których nie można rozwiązać za pomocą tylko warstwy tłumaczenia połączeń systemowych. To jądro Linux będzie bardzo lekkie i będzie utrzymywane przez Microsoft ze wszystkimi zmianami w jądrze Linux wykonanym. W ich demo pokazali, w jaki sposób możesz po prostu migrować istniejące aplikacje WSL V1, aby uruchomić niezmodyfikowane w środowisku WSL V2. Wydajność systemu plików uległa poprawie o 3-4 razy, a cały system wydaje się o wiele bardziej responsywny.
Jak to działa?
Zasadniczo mamy maszynę wirtualną Linux z wieloma aplikacjami użytkownika, E.G, OpenSuse lub Debian lub Ubuntu Userland. Dostajesz więcej niż jedną dystrybucję na komputerze z systemem Windows z pojedynczą maszyną wirtualną Linux, więc to schludne. Ale oznacza to również, że za każdym razem, gdy otwierasz terminal WSL Ubuntu, uruchamiasz kompletną maszynę wirtualną! To zajmie trochę czasu, prawda?
Właściwie nie. Jądro Linux jest w rzeczywistości wystarczająco małe i na tyle lekkie, że Microsoft był w stanie uzyskać szalone czasy rozruchu z nim (~ 1 sekund). Osiągnęli to, usuwając cały kod bootloadera, a ponieważ jest to maszyna wirtualna, bezpośrednio ładują jądro Linux do miejsca adresu w pamięci i ustawiają kilka stanów maszyny wirtualnej, których oczekuje jądro. To ten sam mechanizm, który napędza kolejną nową funkcję Windows 10, jaka jest piaskownica Windows.
Ma bardzo mały ślad pamięci, ładuje się w sekundzie, a natywny format systemu ext4 pozwala mu zapewnić bardzo płynne wrażenia użytkownika. VM działa tylko wtedy, gdy potrzebujesz.
Co więcej, nie jest całkowicie odizolowany jak tradycyjny VM. Możesz bardzo łatwo wchodzić w interakcje z resztą systemu systemu Windows, w tym pliki w dyskach systemu Windows za pomocą WSL V2. To nie jest izolowana maszyna wirtualna, ale zintegrowana część systemu Windows 10. Jak to osiągnie?
Niech żyje plan 9
Z WSL V1 dostęp do plików i katalogów gości z systemu Windows był trywialny. Twój użytkownik Linux to tylko aplikacja w systemie Windows, więc może dość łatwo odczytać i pisać pliki należące do natywnego systemu operacyjnego.
Dzięki WSL V2 masz maszynę wirtualną z jego wirtualnym harddiskem (oczywiście sformatowanym z ext4), a jeśli chcemy podobnego doświadczenia, takiego jak WSL V1, potrzebujemy dodatkowych mechanizmów. Wprowadź plan 9.
Plan 9, napisany również jako 9p to system operacyjny opracowany w Bell Labs. Chociaż jest mało prawdopodobne, że kiedykolwiek będzie działał w produkcji, nadal żyje, ponieważ różne inne systemy operacyjne przyjmują interesujące pomysły, które są w nim inkubowane, w tym protokół 9P dla serwera plików.
Systemy plików
WSL V2 będzie miał serwer protokołu 9p działający na hoście systemu Windows 10, a klient 9P działający w aplikacjach WSL. To pozwala uzyskać dostęp do plików Windows 10 w środowisku WSL. Dysk C: będzie zamontowany na /mnt /c, podobnie jak WSL v1, a każdy plik wewnątrz hosta Windows 10 może być dotrzymany przez środowisko WSL.
Converse będzie również prawdą. W twoim środowisku Linux będzie uruchomiony serwer protokołu 9p z odpowiednim klientem na hoście Windows 10. Umożliwi to użytkownikom dostęp do ich systemu plików Linux (ext4) ze środowiska Windows 10. Umożliwiając edycję kodu źródłowego lub plików konfigurowania za pomocą ulubionej IDE zainstalowanej w systemie Windows, wymieniając wszystkie katalogi za pomocą Eksploratora plików Windows 10 i wiele więcej. Zasadniczo będziesz uruchomić swoje ulubione dystrybucje Linux z interfejsem Windows 10.
Doker
W swoim ogłoszeniu Microsoft zasugerował również, że to nowe środowisko będzie również wykorzystywane przez Docker do wysyłki swojego przyszłego Docker dla aplikacji Windows. Ponieważ jest jądro Linux, uruchamianie Dockera, będzie dość łatwe. W demo prowadzili Docker na Ubuntu z WSL V2 i działało tak, jakby działało na natywnej instalacji Ubuntu.
Aby dać bardzo powierzchowne przykład, jeśli pracowałeś z DockerFiles w systemie Windows, musisz zauważyć problemy bezpieczeństwa spowodowane brakiem UNIX, takich jak uprawnienia do plików. To nie będzie już problemem. Docker w systemie Windows już używa niestandardowej maszyny wirtualnej do dostarczania kontenerów Linux, prawdopodobnie użyje teraz WSL V2 do użycia jądra Linux, które wysyła Microsoft.
Ogólnie jestem pod wielkim wrażeniem tego, co robi Microsoft, aby zapewnić przystań dla programistów Linuksa, którzy również chcą korzystać z systemu Windows. Mamy nadzieję, że na dłuższą metę zachęci to do wielu zapylania między dwoma różnymi ekosystemami.
Jeśli używasz systemu Windows 10 Home, Pro lub Enterprise Edition, możesz uzyskać smak WSL V2, wybierając wersję podglądu Windows 10. Oto przewodnik, jak to zrobić.