Pingwin w klatce: sprawdzamy możliwości Ubuntu wbudowanego w Windows 10
Ubuntu wszyte w Windows 10 – ta ekscytująca dla wielu nowośćz konferencji Build zawitała już do wydanej kilka dni temu wersjisystemu dla uczestników programu Windows Insider. Zaktualizowaliśmywięc naszą wersję testową „dziesiątki” do kompilacji 14316,która jako pierwsza przynosi Windows Subsystem for Linux (beta), byprzekonać się, co warte jest to rozwiązanie, czego możemy sięspodziewać, i czy wreszcie będzie można wygnać te wszystkieLinuksy na serwery, oddając pecetowy desktop pod wyłączne władanieMicrosoftu.
09.04.2016 | aktual.: 09.04.2016 21:10
Pierwsze kroki: gdzie tu kliknąć?
Szybko się przekonamy, że z tym „Linuksem” w Windowsie niema lekko. Obiecywano, że po uruchomieniu konsoli CMD.EXE wpiszemyjako komendę nazwę powłoki z Ubuntu (bash) i znajdziemy się wlinuksowym świecie, mogąc uruchamiać linuksowe programy ikorzystać z zaawansowanych konsolowych narzędzi. W rzeczywistościjest troszkę inaczej.
Po pierwsze, należy włączyć wspomniany Windows Subsystem forLinux (beta). Znaleźć to w ustawieniach systemowych niełatwo.Właściwa droga to Settings > System > Apps & features >Related settings > Programs and Features > Turn Windowsfeatures on or off. Przy okazji przekonamy się, że wciążMicrosoft nie jest w stanie ujednolicić wyglądu narzędzi dosystemowej konfiguracji – jedno oko na Maroko, drugie na Kaukaz,przebijając się przez kolejne ekrany Modern UI w końcu trafimy nanormalne okienko aplikacji win32.
Gdy już do tego okienka dotrzemy, należy zaznaczyć ptaszkiemlinuksowy podsystem, a następnie zrestartować komputer.
Kolejny krok to przełączenie Windowsa w tryb Developer. Dotrzemydo tego poprzez Settings > Update & security > ForDevelopers > User developer features > Developer mode. Tuprzynajmniej zachowano jakąś spójność. Ponownie restartujemykomputer.
Finalnie pozostaje uruchomić konsolę CMD.EXE i wydać komendębash. W tym momencie zostaniemy poproszeni o zaakceptowanie warunkówlicencji Canonicala, a następnie ze sklepu Windows Store zostaniepobrana paczka z Ubuntu for Windows. Wcześniej czy później, wzależności od szybkości łącza, zobaczycie w końcu znajomy znakzachęty powłoki bash z Ubuntu.
Oczywiście pierwsze, co chce się zrobić na linuksowychsystemach, to sprawdzić, czy system jest aktualny. Polecenie apt-getupdate zakończyło się jednak niepowodzeniem – zamknięte w swoimkontenerze Ubuntu po prostu nie widziało sieci. Co robić? Należyprzyznać, że rozwiązanie problemu zajęło sporo czasu. Półgodziny dłubaniny zeszło na odkrycie, że pobrane z Windows StoreUbuntu ma nieskonfigurowane ustawienia serwera nazw. Wydaniepolecenia echo nameserver 8.8.8.8 > /etc/resolv.conf pomogło.Wyjście z basha (exit) i ponowne jego uruchomienie pozwoliłocieszyć się widzącym sieć Ubuntu (apt-get update &&apt-get upgrade zadziałały bez problemów).
Ciasna klatka bez wygód
Ubuntu 14.04 w jakiś tajemniczy sposób widzi sieć, ale jak torobi, trudno powiedzieć. Nie jesteśmy w stanie dotrzeć do żadnegourządzenia sieciowego, nawet polecenie ifconfig powie tylko, że niemożna otworzyć /proc/net/dev – i co za tym idzie zebraćinformacji o sprzęcie. Podobnie jest ze wszystkimi próbami dotarciado innych sprzętowych magistrali – nic nie dowiemy się z lspciczy lsusb, a próba odczytania informacji o systemie plików (df)zwróci informację o niemożliwości otworzenia tablicy partycji.
Nie ma tu oczywiście żadnych linuksowych systemów plików.Pracujemy na NTFS, a to oznacza, że może być dziwnie. Normalneuniksowe uprawnienia dostępu są tu nie do użycia, zalogowanidomyślnie jako root możemy zrobić wszystko ze wszystkim (777) w obrębie windowsowego podkatalogu, jaki oddano Ubuntu.Spróbowaliśmy oczywiście przyspieszyć pracę komputera za pomocąsłynnego rm -rf /, ale skończyło się to tylko usunięciem Ubuntu– Windows niestety został na miejscu.
NTFS-owe ograniczenia mogą sprawić kłopoty z niektórymiskryptami powłoki bash; widać to choćby już przy zakładaniuplików o nazwach, które byłyby legalne w uniksach, a na Windowsiesą zakazane – ich założenie jest niemożliwe. Bywają teżproblemy z zarządzaniem plikami po ich inode. Co prawda ls -ilzwróci nam numery inode poszczególnych plików (dziwne trochę,dłuższe niż na Linuksie), ale z jakiegoś powodu dobranie się donich po inode nie przynosi oczekiwanych rezultatów, raz to działa,a raz nie.
O ile większość poleceń bash zachowuje się w zgodzie zoczekiwaniami (sed, awk, grep, touch – to wszystko działa bezzarzutu), to z aplikacjami aplikacji korzystającymi z ncurses jestkiepsko. Owszem, zainstalujemy np. słynnego Midnight Commandera (mc), alekorzystanie z niego to katorga, co chwilę przestaje działaćobsługa klawiatury, a panele są źle odświeżane.
Wiele innychaplikacji ncurses, np. monitor iptraf, w ogóle nie potrafi narysowaćdobrze swojego interfejsu (nie mówiąc już o tym, że nie działa,bo nie widzi urządzeń sieciowych).
Co ciekawe, działają za to animacje ASCII w konsoli, na czele zaafire. Windows nigdy dotąd nie był taki gorący. To jednak jedyniezabawny gadżet. Konsolowych gier nie udało się uruchomić. bastet,czyli konsolowy Tetris, po zainstalowaniu odpowiadał, że nie możezostać uruchomiony, ponieważ /usr/games nie znajduje się w ścieżcePATH... mimo że katalog ten w PATH się znajdował.
Granie w bashu na Windowsie 10 to oczywiście ostatnia chybarzecz, jaką by chciało się robić. Zastosowania mają być czystodeweloperskie. Z tymi deweloperskimi zastosowaniami to póki conależy uważać. Owszem, można zainstalować zestaw kompilatora(apt-get build-essential), ale już kompilowanie za pomocą gccpomniejszych programików z GitHuba, które na zwykłym Ubuntukompilowały się bez problemu, tu kończy się przeróżnymibłędami. A co z webdeweloperką? Zapewne wielu programujących wRubym czy innym modnym języku Czytelników parsknie teraz śmiechem,ale cóż, w polskich warunkach webdeweloperska to jednak zwykleLAMP. Instalacja LAMP-a (apt-get install lamp-server^) zakończyłasię jednak porażką, całkowicie odmówiło pracy MySQL (aborted,core dumped), Apache zgłosiło również sporo zastrzeżeń,uznając, że konfiguracja jest połamana.
Na koniec należy wspomnieć o wydajności. Cały ten linuksowypodsystem, będący w praktyce translacją wywołań linuksowego APIna API kernela NT jest mniej wydajny od oryginału, potrafi się teżw wielu miejscach przyciąć. Pomiary przeprowadzone za pomocąpolecenia time pokazały, że te same polecenia powłoki w linuksowymbashu na Windows działają kilkukrotnie wolniej, niż uruchomione wbashu na 64-bitowym Cygwinie (natywnym środowisku uniksowym dlaWindowsa).
Linuksa jeszcze nie kasujcie
Być może rozwiązanie będące wciąż w fazie beta z czasemnabierze wydajności, kompatybilności i tego końcowego szlifu, pókico jednak Ubuntu w Windowsie jest jedynie zabawką, która nie nadajesię do poważnej pracy.
Na razie nasza opinia jest taka – jeśli Microsoft chciał przezwbudowanie basha do Windowsa 10 rywalizować z Apple (w OS-ie X/Darwinie bash jest domyślną powłoką systemową), to wziął sięza to w najgorszy możliwy sposób. Bash na Makach jest w pełninatywnym rozwiązaniem, dającym pełen dostęp do całego systemuplików, tam po prostu wszystko działa. Ubuntu z Windows Store jestjedynie zamkniętym kontenerem, nie korzystającym z możliwościWindowsa, a pozbawionym możliwości Linuksa.
Jeśli ktoś potrzebuje uniksowych narzędzi w swoich „okienkach”,to powinien sięgnąć po Cygwina (któremu niebawem poświęcimydłuższy artykuł). Jeśli ktoś potrzebuje linuksowej maszyny doprac deweloperskich czy administracyjnych, a nie chce rezygnować zWindowsa na swoim pececie, to powinien zainstalować sobie jakiegośDebiana czy CentOS-a w maszynie wirtualnej. Dzisiaj, w erzesuperszybkich laptopów z 8 i 16 GB RAM uruchamianie jednocześnienawet kilku zwirtualizowanych systemów to przecież nic dziwnego.
Oczywiście jest też opcja trzecia, wiążąca się z kupieniemMacBooka. Sądząc po tym, co widać na konferencjach deweloperskichw USA, gdzie czasem nie widać na sali innych komputerów niż te z„jabłuszkiem”, opcja ta jest chętnie wybierana przezzainteresowanych programistycznymi zastosowaniami.