Linux w Windowsie? A skądże. „Okienkowe” Ubuntu to coś zupełnie innego #Build
Ubuntu wszyte w Windowsa 10 – wielu plotki na ten tematpotraktowało jako przedwczesny Prima Aprilis. Podczas sesjiotwierającej rozpoczętą wczoraj konferencję Build 2016 wszystkostało się jasne. Supertajny (sic!) projekt Microsoftu i Canonicalazaowocować miał wprowadzeniem na platformę Windows powłoki bash,a wraz z nią… no właśnie, czego? Niektóre serwisy internetowe zekscytacją piszą o umieszczeniu w Windowsie całego Ubuntu, czy teżnawet, o zgrozo, całego Linuksa. A jak jest w rzeczywistości?Rzeczywistość wygląda na dość skomplikowaną.
31.03.2016 12:05
Mike Harsh z Microsoftu oficjalnie mówi o nowym komponencieokienek, tzw. Windows Subsystem for Linux (WSL). Nazwa ta jestmyląca, gdyż na podsystemie tym nie działa żaden Linux, leczoryginalny tryb użytkownika Ubuntu, dostarczony przez naszychznakomitych partnerów z Canonicala– możemy przeczytać na oficjalnym bloguBuildingApps Microsoftu.
Różnica nie jest tylkoakademicka. Czym jest Ubuntu? Ubuntu to desktopowy i serwerowy systemoperacyjny, zbudowany na bazie:
- jądra Linuksa, - standardowej biblioteki C (glibc) - demona inicjalizacji i usługsystemowych (w 14.04 i 14.10 jeszcze upstart) - przestrzeni użytkownika składającej się wwiększości z narzędzi GNU, - serwera grafiki X.org (wprzyszłości zastąpi go Mir), - środowiska desktopowegoGNOME, - graficznej powłoki Unity.
Warto zauważyć, że niewiele z tego pochodzi faktycznie od Canonicala; firma Marka Shuttlewortha to wciąż bardziej integrator istniejących rozwiązań, nż producent autorskiego systemu.
Czym jest zaś Linux? Linux tomonolityczne, modularne jądro systemu operacyjnego, wspierającepełną wielozadaniowość, pamięć wirtualną, współdzielonebiblioteki, wielowątkowość, komunikację międzyprocesową, stossieciowy i kilka innych podstawowych dla systemu operacyjnego zadań,na czele z obsługą sterowników sprzętowych, które niemal zawszedziałają w przestrzeni kernela.
Nie znajdziemy tu jednak np.systemu graficznego (jak w jądrze Windowsa), nie ma tu systemowychdemonów ani bibliotek interfejsu.
Czy zatem w Windowsie znalazłsię Linux? A jakże, przynajmniej według Microsoftu. Rozwiązaniemproblemu braku narzędzi opensource'owych na Windowsie ma być,według tego, co przeczytać możemy na oficjalnym blogu,zintegrowanie trybu użytkownika Linuksa i jego narzędzi zWindowsem, a następnie – uruchomienie Linuksa na Windowsie. Niemaszyny wirtualnej (sic!) – lecz prawdziwego Linuksa,obok Windowsa (co prawda nie wiemy, w jakim sensie Linux w maszyniewirtualnej może być „nieprawdziwy”), ale niech będzie.
Podczas prezentacji Microsoftumogliśmy więc zobaczyć, jak w powłoce CMD.exe Windowsauruchamiana jest powłoka bash – sama w sobie z Linuksem nicwspólnego nie mająca, wykorzystywana też przecież jako powłoka wsystemie OS X. Co to jednak znaczy „uruchamiana”, szczególnie wzupełnie obcym środowisku? Gdy Kevin Gallo wpisał komendę bash,wywołał w ten sposób binarkę prosto z Ubuntu 14.04 LTS, po czymotrzymał normalny znak zachęty basha. Jeśli nie Linux, to co tojest?
Zagadka tkwi we wspomnianymWindows Subsystem for Linux. Na początku lutego pisaliśmyo odkryciu hakera WalkingCata, który w kompilacji 14251 Windowsa 10znalazł pliki lxcore.sys i lxss.sys – nazwy przypominające to, copróbowano rozwijać w mobilnym Windowsie jako warstwę emulacjiAndroida (lxcore.sys i adss.sys). Podejrzewaliśmy wtedy, że możechodzić o możliwość uruchamiania na Windows Serverze kontenerówDockera, w zdecydowanej większości wymagających linuksowego jądra.Lxcore.sys wyglądało właśnie na takie linuksowe jądro wWindowsie. I choć wielu naszych Czytelników pisało wówczas, żeto jakieś bzdury, że uprawiamy tani marketing… właśnie tenlinuksowy podsystem oficjalnie został wykorzystany.
Dustin Kirkland z Canonicala,który pracował nad tym projektem, na swoim bloguprzedstawia swoje doświadczenia z Windows Subsystem for Linux. Wartozwrócić uwagę na lokalizację jego przestrzeni użytkownika Ubuntuw systemie plików Windowsa:C:\Users\Kirkland\AppData\Local\Lxss\rootfs. Nazwa katalogu – Lxss– chyba nie jest przypadkowa. Tam właśnie zawarte są binarnepliki części przestrzeni użytkownika z Ubuntu.
A co z lxcore.sys? Nie, to niejest Linux – przynajmniej z tego, co ujawnił Kirkland. To raczejcoś, co można by było nazwać „LINE” – Linux Is Not anEmulator. To własnościowy, zamknięty moduł Windowsa, któregozadaniem jest translacja w czasie rzeczywistym wywołań linuksowegojądra na wywołania jądra NT. Można powiedzieć, że to odwrócenieprojektu Wine, umożliwiającego uruchamianie na Linuksie i Makubinarnych plików dla Windowsa, ale tak jak Wine nie jest Windowsem,tak Windows Subsystem for Linux nie jest Linuksem, ani nie jest dlaLinuksa.
Z perspektywy użytkownika,zainteresowanego wykorzystaniem przydatnych narzędzi GNU, różnicajest niewielka – swobodnie uruchomimy sobie emacsa czy vima, grepa,awka i seda, w znajomym i wygodnym środowisku. Niewiele jednakwięcej. Z podekscytowaniem Kirkland zapewnia co prawda, żewindowsowy podsystem pozwala na uruchomienie dziesiątek tysięcybinarnych pakietów z archiwów Ubuntu, ale wydaje się, że mocno tuprzesadził, gdyż znaczna część tych dziesiątków tysięcy w takokrojonym środowisku, pozbawionym serwera grafiki i powłokigraficznej, po prostu się nie uruchomi – i to nie uwzględniającproblemów z kompatybilnością. Do tej pory nie działa nawet zwykłymonitor zasobów top, nie mówiąc już o bazie mysql.
W tej sytuacji dla użytkownikówWindowsa daleko bardziej dojrzałym i sensownym rozwiązaniem jestwykorzystanie Cygwina, dziękiktóremu kolekcja narzędzi GNU działa natywnie w „okienkach”.Nie tylko zresztą GNU, jak ktoś chce, może uruchomić kompletnyserwer X. Jasne, nie jest to Linux, ale rozwiązanie Microsoftu iCanonicala Linuksem też nie jest.