Radoslav Dejanović: Mac OS X (2. dio); mala maca

Radoslav Dejanović

Mac OS X (2. dio): Mala maca

Nakon upoznavanja s Mac OS X (vidi prethodni tekst), ne mogu reći niti da ga ne volim, niti da mi se ne sviđa. Desetka je nešto prilično neobično na tržištu Unixa. Možda mu je najsličniji BeOS u onom smislu u kojem je dan naglasak na multimediju i šarene feature, ali dok sam BeOS sučelje smatrao neintuitivnim, Aqua je (izuzimajući prilično dosadan menu koji uvijek mora biti na vrhu ekrana, naslijeđe od starih Mac OS verzija) dotjerana, intuitivna i prilično ugodna. No, ne i bez mana. Primjerice, desktop ikone neće se osvježiti sve dok ne reaktivirate Finder, što nije slučaj s Windowsima ili KDE-om, primjerice. Takav način rada ostavit će početniku dojam da operacija nije izvršena jer ne vidi rezultat na desktopu, i svakako je nešto što bi Apple trebao popraviti. Što se zaštite tiče, korisnik prilikom prijavka na stroj može dati ili password ili password hint, što jest potencijalna sigurnosna rupa zato što napadaču omogućuje ili razbijanje možda komplicirane šifre, ali i pogađanje hinta koji je u najčešćem slučaju (obzirom da se radi o ljudima, za očekivati je da će hintovi biti kakvi izrazi ili rečenice koje se logički mogu povezati s vlasnikom logina).

Pričajući o greškama, GNU Chess kojeg dobijete uz računalo je vrlo zanimljiva biljka. Pokušao sam odigrati jednu partiju, no kako sam vrlo iskusan i nadasve sposoban šahist, ubrzo sam povukao krivi potez, te konja poslao u vječna lovišta. Srećom, postoji "take back" opcija. Koju sam iskoristio, dakako. Prvi put mi nije radila, pa sam ju ponovio drugi put, da vratim njegovu figuru, te još jednom da vratim svog konja na sigurniju poziciju. I gle čuda - bijela kraljica je nestala, a na njenom mjestu se pojavio treći crni konj. Pretpostavih u nadi da je riječ samo o pomiješanoj grafici, u kom slučaju mi računalo ne bi smjelo dati da odigram potez tom figurom (koje bi dakle bilo bijela kraljica s bitmapom crnog konja). No don't lay Devil, ispalo je da je crni konj zbilja crni konj kojeg sam mogao micati, a program je dalje nastavljao s partijom, kao da se ništa nije dogodilo. Hm, zanimljivo... možda mi je to Powerbook htio zaželjeti dobrodošlicu u novi OS? :)

Od izlaska 10.2 do danas izašle su dvije novije verzije, tako da je u trenutku pisanja ovog teksta aktualna verzija 10.2.2, a od 10.2.1 moguće je pržiti CD-e koje i PC računala znaju pročitati. Zašto se Apple ponaša kao da je sam na svijetu, a nije Pale?

No da... vratimo se malo u povijest ovog BSD-oida. Zapravo je za sve ovo kriv Jobs, isti onaj koji je otišao iz Applea da bi napravio NeXT sa njegovim NeXTStepom, za ono doba iznimno napredno računalo s iznimno naprednim operacijskim sustavom. Na žalost, kao i svim vizionarima, Jobsovo je računalo bilo prenekonformističko ali i preskupo za svoje doba i tako je neslavno propalo. Desetljeće kasnije, Jobs se vraća u Apple, ali ne sam. Njegove stare ideje vraćaju se s njim, ovaj put kao prilično zrela tehnologija, kako bi Sun-ovci rekli: "just in time".

Apple je već davno razmišljao kako napustiti vlastiti OS, odnosno kako ga transformirati u nešto modernije. Iako je Mac OS godinama odlično služio korisnicima, bio je zasnovan na danas zbilja arhaičnim konceptima poput kooperativnog multitaskinga (MS je to koristio zadnji put u Windowsima 3.1), vrlo loše dizajniranog sustava virtualne memorije i kodnih stranica koje su mnogima (uključujući tu i nas) stvarale teškoće pri komunikaciji s drugim standardima.

Danas, Apple nudi preemptivni multitasking, pravu Unix-like virtualnu memoriju sa svim njenim prednostima i manama, te Unicode podršku (koja nažalost još ne pije vode kako bi trebala). Drugim riječima, prividnim korakom unatrag (vraćanje na "zastarjeli Unix") Apple je zapravo modernizirao svoj OS, učinio ga konkurentnim na tržištu, a izvrsnom Aquom je tako našminkao svoju unixoidnu jezgru da početniku to uopće ne izgleda kao nekakav Unix, već kao nabrijani stari Mac OS.

Tranzicija nije išla lako. Još je Mac OS 8 trebao biti nešto posebno, nešto novo, korak odmaka od starog načina rada, ali Apple se našao u problemima. Još krajem 1995. govorkalo se o Coplandu, novom OS-u koji je trebao zamjeniti sedmicu. Dvije godine kasnije, Apple odustaje od Coplanda, za 400 milijuna dolara kupuje Next (a vi si mislite kako je jaaadni Jobs morao napustiti svoju firmicu snova... :) kako bi mogao na bazi postojećeg Unixoida napraviti svoj OS.

Zatim su se ponovo spotakli. Načinivši novi Mac OS (izdavši do tad i verziju 9 svog OS-a), Apple je obznanio da stare aplikacije (khm khm) neće raditi baš na novom OS-u. Na to se velika većina developera narogušila i izjavila da im ne pada na pamet raditi port na novi OS. Kako bi izbjegli pat poziciju, Appleovci su odlučili ugraditi podršku za stari OS nazvanu Classic mode, u kojoj se zapravo u maniri vmware aplikacije unutar desetke podigne devetka kao emulacija, unutar koje radi većina sistemskih ekstenzija i gotovo sve stare aplikacije, uključujući i igre (što, primjerice, uglavnom nije slučaj s vmwareom).

Time je zadovoljena kompatibilnost s starim verzijama softvera, a Apple je otišao i korak dalje uključivši Carbon framework, koji za razliku od Cocoe nije full blown framework, ali je portanje starih aplikacija na Carbon (u žargonu nazvano "karboniziranje") bitno pojednostavljeno. Pritom je važno naglasiti da i stari Mac OS (9 na niže) instalacijom Carbon biblioteka može pokretati karbonizirane aplikacije. Cocoa, s druge strane, je pravi framework Mac OS X i preferirano okruženje za nove programe, iako danas još uvijek ima veliki broj programa koji se rade za Mac OS 9 i Carbon, a malo je "pravih" Mac OS X aplikacija. Cocoa je napredna u mnogim područjima (na kraju krajeva, to jest native framework Mac OS X), a možda najzanimljiviji i pomalo bizaran primjer nove tehnologije je nešto što bih nazvao OpenGL hack. Sva Macintosh računala koja imaju desetku i 3D ubrzivačku karticu (ATI ili sličnu) koja podržava OpenGL, korištenjem "Quartz extreme" mogućnosti mogu dvodimenzionalni prikaz aplikacije (bilo što, od običnog prozora s upozorenjem do kompletnog deska) pretvoriti u teksturu, koju zatim proslijede kartici kao teksturu za površinu koja je definirana OpenGL jezikom. Što se tim čudom dobiva? Procesor ne mora raditi na prikazu slike, već jednostavno ono što treba biti prikazano pretvori u teksturu i kao takvu pošalje grafičkoj kartici da ju ona svojim hardverskim ubrzivačem nalijepi na neki poligon i stavi na ekran. Ovisno o aplikaciji, ubrzanja mogu biti značajna.

Ostavimo to po strani i pogledajmo malo ispod haube. Tu je terminal, sve krasne BSD komande koje se tako i ponašaju, čak se i podizanje računala može promjeniti (naredbom nvram boot-args=-v) tako da prikazuje geekovima familijarne boot sekvence. Sjetimo li se da ipak to nije baš tako, odnosno da je Apple ipak morao unijeti neke svoje izmjene (kako bi dodatno zakomplicirali stvar, vjerojatno), boot proces je ipak drugačiji. Prva stvar koja se pokreće je firmware, ekvivalent BIOS-a kod PC računala. On je zadužen i za početni "žvoooom" zvuk računala. Nakon početne provjere hardvera, firmware prepušta posao BootX loaderu koji nacrta Apple logo na ekranu (btw, u 10.2 više nema onog simpatičnog Apple čovječuljka, već je tu bezosjećajna korporacijska jabuka), i *prije* nego učita Mach kernel, učitava potrebne drivere, odnosno kernel ekstenzije koje su definirane u mkext cache. Ako istog nema, BootX provjerava ekstenzije redom, ali učitava samo one koje u svojoj .plist datoteci imaju ključ "OSBundleRequired". Na taj način osigurava se učitavanje samo onih ekstenzija koje su zbilja nužne, ali faktički možete bilo koju ekstenziju nagovoriti da se učita još prije učitavanja kernela pridružite li joj navedeni ključ. Brigu o tim, i svim kasnijim ekstenzijama vodi kextd, daemon koji se diže pri kraju boot procesa, a koji je zadužen za učitavanje potrebnih ekstenzija i micanje onih koje više ne trebaju. Tek nakon što je ovako načinjena podloga za život, učitava se i kernel, koji se brine za ostatak inicijalizacije hardvera na računalu, pa zatim sretno montira root filesystem. Nakon toga diže se famozni prvi proces, ali u ovom slučaju je to mach_init proces koji pokreće message handling Mach kernela, da bi tek nakon toga pokrenuo BSD-ov init. Kako bi stvari ipak sličile nekakvom standardu, init (koji je čitan drugi) dobiva PID 1, a mach_init (koji je učitan prvi) dobiva PID 2. Veselo.

Proces inicijalizacije zatim gleda u /etc/rc.boot i /etc/rc skripte. Nakon parsanja skripti, OS provjerava diže li se u single user modu (koji dobijete držeći Apple-S prilikom uključivanja računala). Ako je to slučaj, desetka će izvršiti tekstualne datoteke iz /etc/ direktorija, a u suprotnom će za sve sistemske potrebe koristiti NetInfo datoteku. No, boot proces neće završiti prije nego se pokrenu kextd, Window Server (Appleovo grafičko sučelje), update, te uključi swap datoteka. Nakon toga SystemStarter proces pokreće sve što nađe u /System/Library/StartupItems i /Library/StartupItems. Prvi direktorij je sistemski, dok korisnici u drugi mogu stavljati svoje skripte koje izgledaju vrlo slično uobičajenim rc.init skriptama na BSD-u ili Linuxu.

Kao što možete vidjeti, Mac OS X ipak ne koristi /etc/ datoteke (barem ne sve) za kontrolu rada, već za većinu funkcija konzultira NetInfo koji je direktorij čije postojanje se vuče još od NeXT-a, a u skoroj budućnosti (Mac OS 10.3?) bi trebao biti zamjenjen pravim direktorijskim servisom, najvjerojatnije OpenLDAP-om, koji će koristiti iste podatke kao i NetInfo (/var/db/netinfo). Trenutno rješenje je upotrebljivo, iako bi OpenLDAP bio svakako manje napeto rješenje, jer je otvoreniji i na kraju krajeva standardniji od NetInfo-a. No, Mac nije ograničen po tom pitanju. Iako po definiciji nisu sve mogućnosti uključene, programom Directory Access možete naložiti desetki da priča AppleTalkom (što nema puno veze s direktorijima), da ipak gleda u BSD-style konfiguracijske datoteke prilikom lookupa, LDAPv2 i v3, uključiti ili isključiti NetInfo, koristiti Rendezvous - Appleov zero-configuration protokol za dijeljene mrežne servise, te SLP i SMB.

Spomenuli smo da se prilikom dizanja sustava podiže i Appleov grafički podsustav. To znači upravo to da nije riječ o X Window sučelju. No, ne očajavajte - XWin se može podići paralelno sa Aquom i raditi u suradnji (ali ne dolazi uz Mac OS X, već ga morate naknadno staviti na stroj). Dakako, i sve što ide uz XWin, pa ćete tako uredno moći staviti KDE prozor uz prozor sa Aquom. Ipak, konzistentnosti radi, pametno je uzeti window manager poput OroborOSX koji imitira aquolik izgled prozora.

Na kraju priče, da biste najbolje koristili sve veći i veći broj besplatnih programa za Mac OS X, trebate instalirati Fink ili GNU-Darwin, koje možemo nazvati moćnim ekstenderima mogućnosti Mac OS-a, jer donose korisniku izuzetno veliku korist.

Fink je port Debianovog apt alata, kojim možete sa Fink arhive jednostavno apt-getati gotove prekompajlirane aplikacije u .deb arhivama. Fink sebe i sve stvari koje s njime pokupite instalira u /sw direktorij, što je bitno pametnije od uključivanja u /usr/ direktorij, jer Apple ima neugodnu naviku s svakom većom promjenom OS-a načiniti mali rusvaj u direktorijima. Ovako, vaši će paketi biti nedirnuti.

GNU-Darwin je slična priča i nudi mogućnost olakšanog, centraliziranog rada s paketima, ali za razliku od Finka veselo se rasprostre po disku računala. Želite li instalirati vlastiti Darwin kernel, morat ćete (između ostalih stvari) instalirati jedan od ova dva "ekstendera", no čak i ako vam to nije namjera, bit će vam otvorena vrata mnoštvu kvalitetnih i besplatnih programa.

Dalo bi se još puno pisati o desetki, ali... kad bolje pogledamo, ovo ostaje dobro odmjeren OS, koji je taman takav da netko tko ne želi učiti Unix to niti ne mora, onaj tko već zna Unix vrlo brzo će se snaći, profesionalci bi već mogli imati sitnih problema pri prilagodbi na nove "feature" OS-a, developeri moraju malo više paziti na neke stvari, ali sve u svemu - Unix kao Unix. Kritičari desetke (i to korisnici Macintosha) kažu da je tek 10.2 postao ono što je X trebao biti od samog početka. Mnogi od njih ljuti su i što Apple ne daje upgrade, već ga prodaje, i to je IMHO vrlo loš potez. 10.3 će vjerojatno biti još bolji, ali pitanje je koliko će ga ljudi prihvatiti ako budu morali dati 100$ za njega. Već i dvojka je sasvim pristojan strojčić koji će možda ponekog Unix geeka ostaviti sa posprdnim smješkom, ali to neće umanjiti činjenicu da je Apple a ne Linux ili FreeBSD taj koji će na desktope korisnika na velika vrata dovesti Unix filozofiju. Svidjelo se to nama ili ne.





Ovaj članak dolazi od HULK
http://www.linux.hr

URL ove priče je:
http://www.linux.hr/modules/sections/index.php?op=viewarticle&artid=7