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.