No dobra, to jak właściwie działa ten linuxowy Bash na Windows?
Gdy Microsoft zapowiedział na konferencji Build integrację Basha z Windows, kilka brwi uniosło się do góry ze zdziwienia. Czy to oznacza, że na Windows uruchomimy linuxowe aplikacje, a gdzieś tam zaszyty jest jego kernel?
Czym konkretnie jest Bash? Jest to powłoka systemu, oraz interpreter skryptów i poleceń, umożliwiająca zarządzanie i automatyzację z linii poleceń. Odpowiednikiem Windows są wiersz poleceń i znacznie bardziej rozbudowany PowerShell. Problem w tym, że oba występują w naturze na Windows i tylko na Windows. Administratorzy i programiści niejednokrotnie znają znacznie lepiej unixowe rozwiązania, takie jak Bash. Pisanie skryptów w PowerShellu wymaga nauki i czasu, który mogliby poświęcić na coś znacznie bardziej produktywnego.
„Nowy” Microsoft, który stara się być otwarty na innych jak tylko to możliwe, nawiązał współpracę z firmą Canonical, znaną między innymi z bardzo dobrego linuxowego systemu operacyjnego Ubuntu. Efektem pracy dwóch firm jest Bash dla Windows, który jest już dostępny w testowej wersji Windows, a latem ma trafić do wersji produkcyjnej. Powłoka ta nie tylko zapewnia swój interfejs tekstowy, ale również umożliwia instalowanie programów z repozytorium Canonical. I, jak się okazuje, działa to aż za dobrze. Działają nawet aplikacje z graficznym interfejsem! Jak odkrył redditowiec o pseudonimie w2qw, po zainstalowaniu i skonfigurowaniu środowiska X Server i wpisaniu komendy „DISPLAY=:0 firefox” zdołał nawet odpalić linuxową przeglądarkę Mozilli. Jak zaznacza odkrywca, wydajność aplikacji jest niższa niż w przypadku natywnego Linuxa z uwagi na to, jak Bash działa na Windows, ale udało się na tym uruchomić nawet Xfce, czyli całe środowisko z interfejsem, wykorzystywane w wielu linuxowych dystrybucjach.
No właśnie, ale właściwie jak działa Bash na Windows 10?
Na witrynach Microsoftu pojawiło się sporo objaśnień, na co moją uwagę zwróciła Mary Jo Foley. Jak się okazuje, Canonical nie upchnął gdzieś pod maskę Windows kernela Linuxa. Zamiast tego wykorzystuje mechanizm o nazwie WSL (Windows Subsystem for Linux), i to właśnie on umożliwia uruchamianie plików binarnych dla Linuxa na systemie operacyjnym Microsoftu.
WSL, jak możecie zauważyć na powyższej ilustracji, zawiera menadżera sesji user-mode, pico-sterownik symulujący kernel Linuxa i pico-proces hostujący niezmodyfikowany user-mode, czyli w tym wypadku właśnie Basha. Dzięki temu wywołania systemowe dla Linuxa mogą trafiać do kernela Windows, są bowiem tłumaczone na wywołania dla Windows NT.
To oznacza, że przynajmniej na razie, Windows będzie mniej wydajną platformą dla linuxowych aplikacji, a na dodatek niewykluczone, że mniej bezpieczną (to spekulacja na podstawie informacji na temat mechanizmów zabezpieczających windowsowego Basha, a konkretniej, na podstawie braku takich informacji). Z drugiej jednak strony, Bash na Windows nie został do tego celu stworzony, a zwykły użytkownik nigdy go nie uruchomi. Ciekaw jednak jestem co „dłubaczom” uda się z tego wycisnąć, bo skoro udało się odpalić nawet Xfce…