Kako funkcioniše sve to?

The New Way Things Work
The New Way Things Work – © 1988, 1998 David Macaulay

Volim sam na svoj način da shvatim kako nešto funkcioniše

Ok, nisam developer i ne poznajem Android operativni sistem kao svoj džep, ali sam u poslednjih godinu i po dana kroz čačkanja sa Custom ROM-ovima, root-ovanjima, otključavanjima itd. naučio dosta stvari. Po prirodi sam osoba koja ne prihvata školska pravila i znanje, uvek volim sam na svoj način da shvatim kako nešto funkcioniše. U većini slučajeva se ispostavi da su stvari veoma slične onome što ja zaključim, ali priznajem, nekad i nisam u pravu. Tako da ako u ovom tekstu nešto i lupim, slobodno me ispravite, ali želim da vam predstavim moje viđenje operativnog sistema i kako stvari funkcionišu prilikom instalacije, backup-a i sl. radnji dozvoljenih samo korisnicima koji su otključali svoje Android uređaje.

Prva susret sa malim zelenim

Kada sam prvi put nabavio Android telefon, to je bio HTC Hero, koji je tada dolazio sa Android operativnim sistemom 1.5 i Sense-om. Nekih dva meseca sam se oduševljavao kako stvari funkcionišu i šta sve telefon može sa svim svojim senzorima i aplikacijama koje mogu da se nađu na market-u. Ali, počeo sam da lupam u zid. Tačnije, nailazio sam na aplikacije koje zahtevaju root. Počeo sam da se nerviram što ja ne mogu da ih koristim i počeo da istražujem šta tačno donosi root pristup. Čitajući strane blogove, blogove developera koji prave aplikacije koje zahtevaju root, razne forume koji se bave Android platformom (uključujući Modaco, XDA i sl.) shvatio sam da sam root znači dosta, ali ne i previše. Jedan od primera za koji mi je root dosta pomogao, pošto ne mogu da se setim baš svih, je sledeći:

Kada sam prošlog leta bio na moru, u hostelu u kom smo bili smešteni je postojao neki besplatan Wi-Fi. Međutim, telefon je uspevao da uhvati signal, koji je usput bio dosta slab, a netbook uopšte nije uspevao da vidi mrežu. Pomislio sam, a što ja lepo ne bi priključio telefon na netbook, uhvatio signal telefonom i prosledio ga netbook-u. Skinuo sam aplikaciju za tethering koja je uključivala i Android aplikaciju i Windows aplikaciju. Podesio sve, konektovao se na net, i imao normalan pristup internetu na netbook-u. Pošto je, kao što sam već rekao, signal bio veoma slab, jedino mesto gde je telefon mogao da se nakači na net bilo dvorište hostela, na internet smo morali da se kačimo baš tu, gde su i ostali gosti hostela sedeli. Ovo pričam jer je tu bio i neki Britanac, koji je imao iPhone telefon, i on kada je video šta radim sa telefon odmah pitao: “Is it legal?“. Naravno, sa osmehom sam mu rekao da je ovo Android telefon, i da imam root pristup, a da je sa novijom verzijom svakako moguće tether-ovati internet i da je u Android svetu to potpuno legalno :) Sada kada imamo Eclair, Froyo, Gingerbread itd. tether je već uključen u sistem i ne zahteva root. Ali, evo još jednog primera gde root može biti koristan, a to je proxy. Većina telefona ne dolazi sa mogućnošću konektovanja na net preko proxy-a, a znam zasigurno da na nekim fakultetima jedini način da se nakačite na njihov free Wi-Fi, jeste upravo preko proxy-a. Kada imate root, možete instalirati jednu od mnogih aplikacija koje omogućavaju pristup netu preko proxy-a, ili opet instalirati neki Custom ROM koji vam ovo omogućava.

HTC Hero

Kada je Hero izašao, Android platforma je bila dosta mlada, pa su i proizvođači veoma neozbiljno shvatali ceo proces apgrejda. Valjda su mislili da su to telefoni kao i svi drugi telefoni, i da ono što si kupio to ti je. HTC je napravio pravi boom sa Hero telefonom, koji se prodao u više miliona primeraka, ali update na 1.6 nikad nije stigao, a za 2.1 Eclair su skoro godinu dana obećavali. U tih godinu dana, mnogi su bili razočarani i polako shvatali koliko Custom ROM može da unapredi njihov telefon.

Neću moći da imam obećano

U saznanju da će moj telefon ostati na verziji koja je već uveliko postajala u manjini, a developeri su sve više i više izbacivali staru verziju OSa iz podrške, shvatio sam da ja ako se sam ne pozabavim ovom stvari, neću moći da imam obećano.

Krenuo sam da čitam, čitam i čitam i u prvi mah sam bio veoma uplašen crvenim slovima na uputstvima za root-ovanje. Ali nisam odustajao. Kada sam skupio hrabrosti, skinuo sam sve, pa i više nego što je bilo potrebno, za root-ovanje. I krenuo prema uputstvima.
Prvo sam morao da napravim GoldCard, koji su svi govorili da je “better safe than sorry”. OK, urađeno. Onda sam instalirao aplikaciju Universal Unroot. WOW, jedan klik, telefon je root-ovan privremeno, drugi klik, telefon je trajno root-ovan :) Nije bilo nikakvih problema, ali opet, i dok sam to radio, bio sam preplašen, šta ako nešto zajebem, ode telefon od nekoliko stotina evra. Nakon heroja, telefoni su bili sve zaštićeniji i zaštićeniji. S-ON, Radio S-ON i sl. ali uhvatio sam nekako korak s vremenom i polako čitao, jer uvek volim da znam kako trenutno stoje stvari, iako možda nemam uređaj o kom se priča.

Blagodeti

I tako, telefon je bio root-ovan i mogao sam da koristim sve te blagodeti, ali shvatao sam da i tu postoje ograničenja, a i 1.5 je postajao toliko spor, tačnije gledao sam sve one ljude koji imaju Custom ROM-ove kojima je telefon leteo. U tom momentu sam naišao na VillainROM forum gde su ljudi uspešno portovali Eclair sa Sensom. Nisam hteo da izgubim Sense, jer je tada Stock Android izgledao dosta smešno u poređenju sa HTC-om implementacijom. Kada sam pročitao da preko ROM Manager aplikacije je dovoljan jedan klik kako bi se instalirao ClockWork Recovery, odmah sam to i uradio. I instalirao novi ROM. Opet WOW, bio sam impresioniran novim opcijama, brzinom itd. Sve je bilo savršeno.

Tu je sve počelo. Pošto sve što sam do tada radio je bilo po uputstvima, nisam najbolje shvatao kako sve to funkcioniše. Krenuo sam da provaljujem što sam, što čitajući po forumima šta ljudi rade sa telefonima.

Pa kako ja to sve doživljavam?

Android-NAND
Android NAND

Dakle, NAND je tip flash memorije koja se koristi za internu memoriju u modernim telefonima. Interna memorija sadrži nekoliko particija. Boot, Recovery, System, Data, Cache i Radio, možda ima još, ali ja nisam upućen. Kada radimo NAND backup, većina ovih particija se iskopira na SD karticu kao jedini dodatni, a pri tom dovoljno velik medij na koji sve ovo može da stane. Sve particije se smeste u po jedan img fajl. Nešto poput ISO fajla kada se bekapuje CD/DVD i sl. Ovo me podseća na Acronis TrueImage ili Norton Ghost software koji omogućavaju da se cela sistemska particija ili više particija smeste u jedan fajl, i kada je potrebno vrati se sve na predhodno stanje. Na ovaj način svi podaci, podešavanja u operativnom sistemu itd. se vraćaju na stanje kada je urađen bekap.

Slično tome ClockWork i drugi Recovery sistemi rade. Kopiraju sve u jedan fajl po particiji, kako bi u nekom trenutku mogli da vratimo ceo sistem na staro stanje. Iz iskustva znam da je uvek poželjno imati jednu verziju bekapa na telefonu, kako bi u slučaju da nešto poremetite, uvek mogli da se vratite na stanje kada je sve bilo ok.

Boot particija se sastoji od nekoliko elemenata, od kojih je jedan i kernel. Kernel je jezgro i pokretač operativnog sistema u kome se nalaze (barem u Linux distribucijama) svi potrebni drajveri, podešavanja raznih “uređaja” itd. Custom Kerneli se uglavnom prave na osnovu zvaničnog kernela koji je proizvođač napravio. Developeri ga budže, podešavaju, optimizuju, dodaju nove stvari, izbacuju nepotrebne itd. Ostatak boot particije je uglavnom zadužen za iniciranje i podizanje ostalih delova sistema. Ali se lično baš i nisam udubljivao šta tačno rade.

Recovery particija u sebi sadrži software koji vrši osnovne funkcije potrebne za instalaciju, backup, formatiranje itd. sistema. Ja ovo doživljavam kao BIOS, ali ne ove današnje BIOS-e u kojima samo možete da podesite neke stvari, već kao one matore u kom ste imali opcije za formatiranje hard diska itd. Ovo bi proizvođači matičnih ploča mogli da dodaju u obzir jer može biti dobro i na desktop sistemima. Originalno telefoni mogu doći sa nekim vidom Recovery software-a, ali i ne moraju. A i kad dolaze, to su u glavnom dosta oskudni softveri koji praktično i ne rade puno. Lično sam koristio samo AmonRa i ClockWork Recovery software, i mogu reći da su dosta napredni i daju dosta opcija. Moja neka parola je, dok imate Recovery, uređaj je u siguran. Čak i u slučajevima da nešto pokvarite, ako možete da uđete u Recovery, moći ćete da pristupite SD kartici sa računara, ako nemate SD Card Reader, iskopirate instalaciju nekog ROMa, i pokrenete njegovu instalaciju. Tako da uvek možete da oživite uređaj.

System particija je najveći deo interne memorije telefona. Ovde su svi folderi i fajlovi koji su potrebni za rad nekog operativnog sistema. Nešto poput Windows foldera na PC-u. HTC telefoni imaju ogromnu ovu particiju, jer je sam ROM jako velik. Velik je jer sadrži gomilu grafičkih elemenata koji puno zauzimaju. Ali to je cena ako hoćete da imate sve one silne gradijente i ikone. Cyanogen i MIUI ROMovi su najpopularniji ROMovi koji su napravljeni od AOSP (Android Open Source Project) ROM-a. A jako su male izmene, barem što se grafičkih elemenata tiče, tako da ovi ROMovi zauzimaju manje od 100MB. Samim tim ovu particiju možete smanjiti, ali ako to uradite, nema vraćanja na neki sistem koji zahteva više prostora. Možete, ali prvo morate vratiti veličinu na predhodno stanje.

DATA particija, usko grlo svih telefona sa malo interne memorije :). Šalu na stranu, ovo je particija gde se smeštaju sve aplikacije, njihova podešavanja, baza podataka itd. Kod Androida do verzije 2.2 Froyo, nije bilo moguće instalirati aplikaciju nigde drugde do samo na ovu particiju. Postajala su neka rešenja APP2SD skripte koje omoguće prebacivanje na SD karticu, ali se nisu pokazala kao najbolja. U novijim sistemima, na SD kartici se u folder AndroidSecure smeštaju svi fajlovi aplikacije koja dozvoljava prebacivanje na SD karticu. Međutim, postoji i drugi način, koji je po mom mišljenju mnogo elegantniji, a to je particionisanje SD kartice, tako da napravite EXT particiju i SWAP particiju na SD kartici. Na EXT particiju možete prebaciti i aplikacije koje inače ne dozvoljavaju prebacivanje, a SWAP particija služi za smeštanje SWAP fajla koji kod Linux i Windows sistema služi kao virtualna memorija. Ako nešto ne može da stane u RAM memoriju, sistem to nadoknadi prebacivanjem podataka u SWAP. SWAP je najbolje napraviti da bude što veći ako imate malo memorije, ali nije neophodno kao na Desktop računarima da bude barem veličine koliko RAM memorije imate. Može i manje. Pošto verovatno ne funkcioniše po istom principu.

Cache particija je particija na koju se smeštaju svi privremeni fajlovi koje aplikacije i sistem koriste prilikom rada. Kod Windows-a je to u folderu temp. Zbog ograničenja u memoriji, većina ljudi ovu particiju takođe prebacuje na SD karticu, kako bi dobila na prostoru.

Oduševljenje

Ono što je mene oduševilo kod Androida, a posle sam shvatio da je to filozofija Linux platforme, jeste da aplikacija ima svoj folder (da uprostim) i to je to. Pokretački fajl apk kao i svi dodatni fajlovi koji sadrže sva podešavanja, bazu podataka itd., sve to stoji u tom folderu i nema glupi registry od kog Windows boluje. Registry čuva podešavanja i gomilu drugih stvari potrebnih za rad aplikacije i sistema na jednom mestu, ali problem nailazi da kada uninstall-irate neku aplikaciju, neki delovi ostanu u registry bazi. To kod Androida nije slučaj, obrišete folder u kom su svi podaci o aplikaciji, i to je to. Nema đubreta, nema usporavanja sistema zbog nepotrebnih ostataka. Isto tako, kada uradite backup aplikacije, može i ručno ali postoje i automatizovana rešenja na Androidu poput Titanium Backup i MyBackup koje vam sve ovo stave u jedan zip fajl, koji ukoliko se posle odlučite da vratite aplikaciju, sve vrati kao što je i bilo. Aplikacija je ne samo ponovo instalirana, već je podešena onako kako ste je ostavili kada ste uradili taj backup. Na Windows-u odlepljujem od toga da kad sistem dođe u stanje da je neophodna ponovna instalacija, morate sve programe ponovo da instalirate i podesite onako kako želite. Ovo je ogroman problem, pogotovo kod ljudi koji koriste velike aplikacije poput Photoshop-a, 3ds max-a i sl. Jer podešavanja ovakvih programa mogu da traju satima, jer nikad ne možete da se setite šta je sve bilo podešavano da bi sistem radio onako kako vi to želite.

Tipovi Custom ROM-ova

Da se vratim na Android. Custom ROM može doći u dva oblika. U obliku instalacije i u obliku update-a. Puna instalacija je uglavnom mnogo veća 80MB+ zavisno od vrste ROMa i sadrži Boot particiju koja uključuje Kernel, može a i ne mora Recovery particiju (nekad sam viđao da su stavljali i Recovery u instalaciju ROM-a, ali verovatno zbog problema koji su nastajali, ova praksa je izbačena), naravno System particiju i data particiju. Prilikom instaliranja ROM-a poželjno je uraditi brisanje (Wipe) data i cache particije, pošto neki ROM-ovi pri instalaciji ne brišu postojeće podatke, pa tako može doći do problema, jer neke aplikacije koje rade na npr. Sense ROMu prave probleme na AOSP ROMovima poput Cyanogen-a.

Drugi vid je apdejt. Apdejt u sebi sadrži samo izmenjene fajlove u ROMu, pa tako zauzima mnogo manje. Ukoliko su menjani neki bitniji delovi sistema, tj. sistemske aplikacije, poželjno je obrisati cache particiju, a DATA samo ukoliko kasnije dođe do problema. Flash Junkie-i vole da pri svakom flash-ovanju obrišu i data particiju kako bi bili sigurni da testiraju sistem onakav kakav je developer zamislio.

Kad sam već tu, data i cache particije se brišu i prilikom resetovanja sistema na fabrička podešavanja. Ovo je nešto što mnoge buni. Data particija sadrži samo aplikacije koje ručno vi instalirate, sve sistemske aplikacije se nalaze na sistemskoj particiji, tako da ako wipe-ujete data particiju i cache, to vam je isto kao da ste resetovali ROM na “fabrička podešavanja“.

Eto, to je neko moje viđenje sistema. Nadam se da sam ga dobro skapirao :)

Moram da priznam da nisam dugo pisao na svom blogu, zadnji tekst je bio o Android aplikacijama, i tu je sve počelo i evo na SrboDroid sajtu pišem skoro godinu dana. Neverovatna je ova nova platforma.

Read More