Microsoft ♥️ GNU.
Da Microsoft voli Linux više nije novost, štaviše, na to smo već navikli. Linux i slobodni softver su svuda, i u Microsoftu i oko njega, a dok ne dočekamo konkretnu materijalizaciju te ljubavi za Linux populaciju, Microsoft sebi približava ono što mu najviše fali.
Na ovogodišnjoj Microsoftovoj razvojnoj konferenciji predstavljen je novi alat – Bourne Again Shell za Windows koji je za sada namenjen samo i isključivo razvoju, a takođe je i najpoznatiji GNU/Linux shell. Iako se vest o „Linuxu na Windowsu” proširila kako jedino može u eri ljudi-medija, stvari nisu ni malo dramatične. Jesu izuzetno zanimljive, ali dramatične nisu.
Prvo, priča stvarno jeste (za sada) isključivo programerska i tiče se alatki za razvoj. Programerke i programeri na Windowsu bi kroz BASH trebalo da dobiju pristup alatkama koje je ranije bilo teško, komplikovano ili nemoguće instalirati na Windowsu (Ruby, PHP, Redis, Git i slični). X servera, grafičkih okruženja i interfejsa za sada nema a, kako kažu u Microsoftu, nisu u planu.
Prvo, priča stvarno jeste (za sada) isključivo programerska i tiče se alatki za razvoj. Drugo, BASH preko Ubuntua na Windowsu postoji bez Linuxa.
Drugo, BASH preko Ubuntua na Windowsu postoji bez Linuxa. Ubuntu koji instalirate na Windows nema Linux kernel, u pitanju je userspace portovan praktično na NT (Windows) kernel. Skoro pa GNU/Windows.
Kako?
Spojiti Ubuntu i BASH za Windowsom intrigantna je stvar sama po sebi, najpre u kontekstu realizacije. Bilo da volite jedno, drugo ili oba, tehnički nivo spajanja naizgled nespojivog univerzalno je zanimljiv.
GNU/Linux alatke i okruženje do sada su na Windowsu bili dostupni na dva načina: virtuelizacija i Cygwin. Ako ste hteli „pravi” GNU/Linux morali ste pre svega obezbediti hipervizor, podići ga u virtuelnoj mašini, pristupati mu preko dodeljene IP adrese, deliti resurse sa Windows hostom, praktično raditi u dva povezana virtuelna sistema paralelno, ako imate dovoljno resursa. Cygwin je pak skup GNU/Linux alatki kompajliranih za Windows. Za razliku od virtuelne mašine koja vam nudi sve na relativno „skup” i komplikovan način, alat preko Cygwina mora biti iskompajliran za Windows.
Ubuntu za Windows negde je između. Put kojim je Microsoft uz Canonicalovu pomoć krenuo znači portovanje Ubuntu userspacea na Windows kernel. Ključni segment sistema je Windowsov podsistem za Linux (Windows Subsystem for Linux – WSL) koji prevodi sistemske pozive između Ubuntua i Windows kernela. To znači da Linuxa (uključujući i init sistem) uopšte nema, na Windowsu, odnosno Windowsovom podsistemu za Linux, „trči” autentični Ubuntu sa izuzetkom kernela. Autentični znači doslovno isti softver koji Ubuntu inače distribuira u paketu sa Linuxom (ELF izvršni fajlovi). Canonical je obezbedio Ubuntu bez Linuxa, a Microsoft je takav image portovao na Windows, pa smo dobili Ubuntu userspace koji nije virtuelizovan, ali nije ni kompajliran za Windows, već funkcioniše u izvornom stanju.
Zašto?
Microsoft čini sve da njegov softver i servisi budu okruženje izbora za razvoj softvera i servisa, bez obzira na platformu.
Takva namera u direktnoj je sprezi sa Azureom koji je već sada Microsoftov flagship proizvod za novo doba (više o tome u SK 2/2016). Kao što Microsoft hoće da Azure bude univerzalni cloud, tako bi Windows trebalo da postane univerzalno razvojno okruženje, bez obzira na to da li razvijate Microsoftovim ili tehnologijama tradicionalno okrenutim ka Linuxu. Dobar primer namere je i Xamarin koji je Microsoftov i open source, a trebalo bi da omogući razvoj za Android i iOS na Windowsu.
To je zvanično i za sada jedini motiv zbog kog BASH i Ubuntu za Windows postoje. Microsoft želi da se bavi isključivo alatkama koji se koriste iz komandne linije, grafičko okruženje nije u planu.
Terminal magija
Budući da se radi o beta proizvodu, nivo implementacije varira od slučaja do slučaja. Slučajevi se naravno tiču razvoja, prvi korak je stabilan i pouzdan BASH sa alatkama, a onda servisi i softver koji se često koriste u svojim scenarijima.
Portovani su neki od Linux sistemskih poziva, ali ne svi. U ovom trenutku, možete pokrenuti Emacs ili Vi, koristiti SSH, Git, GCC, PHP, Ruby, Python kao da ste na Linuxu. U vreme pisanja teksta „iz kutije” se dobija Ubuntu 14.04 userland, koji možete upgradeovati na 16.04 APT-om, koji takođe funkcioniše.
Za sada potpuno ili delimično ne rade MySQL i top, prostor za istraživanje veliki je koliko i Ubuntuovi repozitorijumi pošto praktično možete instalirati sve što je u njima. Procesi unutar BASH-a za sada se ne vide u Windowsovom proces menadžmentu, već ćete samo videti BASH. Ubuntu i Windows u ovoj postavci koegzistiraju na istom fajl sistemu i dele isti prostor za portove. Tako ako podignete neki servis u Ubuntuu, taj port će biti zauzet i u Windowsu. Ubuntu se nalazi u korisničkom direktorijumu, na putanji C:Users<user>AppDataLocallxss.
Windowsov fajl sistem, pak, namontiran je na standardnom mestu, pa C particiji, na primer, pristupate tako što odete u /mnt/c. Fajlovi napravljeni unutar tog direktorijuma iz Windowsa biće vidljivi na C disku, a isto važi za sve diskove u Windowsovoj nomenklaturi. To je u ovom momentu preporučeni i najlogičniji način za interakciju između dva okruženja. Svako okruženje koristi se na svoj način, nije preporučljivo intervenisati na samom Windowsu iz Ubuntua i obrnuto. Root korisnik u Ubuntuu se na Windowsovom fajl sistemu ponaša kao ulogovani korisnik na Windowsu. Unutar Ubuntua za sada je podržan samo root, sudo i klasično GNU/Linux multikorisničko okruženje za sada su u planu.
Instalacija
Da biste mogli i sami da probate sve ovo pre svega morate biti Windows 10 Insider. Uz to, morate uključiti nove verzije iz „Fast Ringa”. Kada instalirate najnoviji Fast Ring preview, morate uključiti Developer Mode (Settings -> Updates and Security -> For Developers). Onda među „Windows Features” valja pronaći „Windows Subsystem for Linux (Beta)” i uključiti ga. Nakon toga, potrebno je pokrenuti „bash” iz Windowsa, što će vas sprovesti kroz uvodnu proceduru, preuzeti Ubuntu image i instalirati ga.
Okruženje je potpuno upotrebljivo kada su performanse u pitanju. Neke stvari će biti vrlo slične kao na Ubuntuu sa Linuxom (zadaci koji se ozbiljno oslanjaju na procesor), a neke sporije (APT recimo). Sve to zavisi od tipa podsistema koji zadatak koristi, Sysbench pokazao je slične performanse procesora, sve ostalo je brže na Linuxu: threadovi dvostruko, memorija oko tri, pisanje po disku oko pet, a čitanje oko tri puta.
Šira slika
Microsoftovi razlozi za ulazak u ovakvu avanturu upravo su onakvi kakvi se i predstavljaju. Ako se Windowsov Linux podsistem razvije onako kako se želi, šanse da neko zameni svoju Windows razvojnu stanicu GNU/Linuxom biće manje nego ikad. Ako razvijate na Windowsu i trebaju vam pomenute tehnologije, ovo je sjajna vest za vas. Uz sve to Microsoft je napravio objektivno zanimljivu tehnološku stvar i dobio vidljivost kakvu ne bi smislio ni marketinški creme de la creme. Dovoljno govori to da „Laki pingvini” o Microsoftu pišu drugi put ove godine.
Iako Ubuntu na Windowsu tehnički jeste u skladu sa Canonicalovom misijom da slobodni softver stigne do što više ljudi, još više je u skladu sa misijom da Canonical i njegove usluge približi što široj javnosti. Širenje slobodnog softvera je širenje sistema vrednosti slobodnog softvera. Ako je Ubuntu na Windowsu dobar i za slobodni softver, onda ćemo videti veće i bolje zajednice obogaćene novim ljudima i idejama. U suprotnom, ovo će biti dobre vesti za sve, samo ne za one od kojih je sve počelo.
Tekst izvorno objavljen u Svetu kompjutera 5/2016, sva prava zadržavaju Svet kompjutera i Politika a.d. Prenošenje teksta sa ove lokacije nije dozvoljeno bez saglasnosti izvora.