Razlika između inačica stranice Rootanje Androida

Izvor: HrOpenWiki
Skoči na: orijentacija, traži
m
m
 
(Nije prikazano 6 međuinačica 2 suradnika)
Redak 1: Redak 1:
Pojam "rootanje" dolazi iz svijeta [[Linux]]a, odnosno Unixa gdje "root" predstavlja jedinstvenog korisnika s administratoskim ovlastima - onoga sa svim ovlastima na cijelom sustavu. [[Android]] je baziran na Linuxu, pa se "rootanje" u kontekstu Androida odnosi na dobivanje administratorskih ovlasti unatoč namjeri proizvođača uređaja da to onemogući. Proizvođači najčešće onemogućuju administratorske ovlasti na uređajima pod izgovorom da se tako jedino osigurava ispravno funkcioniranje uređaja i da korisnik ne može ništa krivo podesiti i time oštetiti uređaj ili softver. Dublji je razlog ipak "ekonomska računica" jer uskraćivanjem administratorskih ovlasti ograničavaju korisnike kako bi dodatno naplaćivali "nove" mogućnosti koje bi inače korisnici sami mogli besplatno omogućiti, no uz to - veća sloboda korisnika u korištenju uređaja predstavlja i veći izazov za tehničku podršku.
+
Pojam "rootanje" dolazi iz svijeta [[Linux]]a, odnosno Unixa gdje "[[root]]" predstavlja jedinstvenog korisnika s administratoskim ovlastima - onoga sa svim ovlastima na cijelom sustavu. [[Android]] je baziran na Linuxu, pa se "rootanje" u kontekstu Androida odnosi na dobivanje administratorskih ovlasti unatoč namjeri proizvođača uređaja da to onemogući. Proizvođači najčešće onemogućuju administratorske ovlasti na uređajima pod izgovorom da se tako jedino osigurava ispravno funkcioniranje uređaja i da korisnik ne može ništa krivo podesiti i time oštetiti uređaj ili softver. Dublji je razlog ipak "ekonomska računica" jer uskraćivanjem administratorskih ovlasti ograničavaju korisnike kako bi dodatno naplaćivali "nove" mogućnosti koje bi inače korisnici sami mogli besplatno omogućiti, no uz to - veća sloboda korisnika u korištenju uređaja predstavlja i veći izazov za tehničku podršku čime ona za proizvođača postaje skuplja. {{Paznja-balon|Gubitak garancije|Kod većine proizvođača, rootanjem uređaja gubite garanciju.}}
  
 
Upravo zbog toga, proizvođači postupak "rootanja" kažnjavaju '''gubitkom garancije na uređaj''', makar se samim posjedovanjem "root" ovlasti ne može ništa uništiti ili pokvariti. No kako "root" ovlasti dopuštaju da korisnik radi što god hoće s uređajem, moguće je i s neopreznim korištenjem učiniti određenu štetu na samom uređaju. To je gotovo isto kao da proizvođač zabrani nošenje mobitela blizu vode jer se može dogoditi da uređaj padne u vodu i pokvari se. Ponovno: imati "root" ovlasti ne oštećuje uređaj, ali korištenje "root" ovlasti da bi se na primjer procesor uređaja ''overclockirao'' na višu radnu frekvenciju može nepovratno uništiti uređaj.
 
Upravo zbog toga, proizvođači postupak "rootanja" kažnjavaju '''gubitkom garancije na uređaj''', makar se samim posjedovanjem "root" ovlasti ne može ništa uništiti ili pokvariti. No kako "root" ovlasti dopuštaju da korisnik radi što god hoće s uređajem, moguće je i s neopreznim korištenjem učiniti određenu štetu na samom uređaju. To je gotovo isto kao da proizvođač zabrani nošenje mobitela blizu vode jer se može dogoditi da uređaj padne u vodu i pokvari se. Ponovno: imati "root" ovlasti ne oštećuje uređaj, ali korištenje "root" ovlasti da bi se na primjer procesor uređaja ''overclockirao'' na višu radnu frekvenciju može nepovratno uništiti uređaj.
Redak 7: Redak 7:
 
== Zašto rootati? ==
 
== Zašto rootati? ==
  
Prvo pitanje - zašto uopće rootati Android? Najlakše bi bilo odgovoriti ''apstraktno'': da korisnik uistinu posjeduje uređaj i sve njegove mogućnosti, a ne da ovisi o proizvođaču i njegovoj milosti ili cjeniku. Konkretno, rootanjem Androida dobivaju se neke zgodne nove funkcionalnosti, kao pretvaranje uređaja u bežičnu pristupnu točku (en. ''AP - access point''), izradu sigurnosne kopije cijelog mobitela (npr. jednostavni c/p!), instalaciju programa na SD karticu, brisanje nepotrebnih aplikacija koje dolaze sa samim uređajem, stavljanje novijih verzija Androida koje proizvođač ne podržava ili kasni po godinu dana s ''updateom'', razno razne modifikacije za ubrzanje uređaja, "shell" pristup cijelom uređaju itd.
+
Prvo pitanje - zašto uopće rootati Android? Najlakše bi bilo odgovoriti ''apstraktno'': da korisnik uistinu posjeduje uređaj i sve njegove mogućnosti, a ne da ovisi o proizvođaču i njegovoj milosti ili cjeniku. Konkretno, rootanjem Androida dobivaju se neke zgodne nove funkcionalnosti, kao pretvaranje uređaja u bežičnu pristupnu točku (en. ''AP - access point''), izradu sigurnosne kopije cijelog mobitela (npr. jednostavni c/p!), instalaciju programa na SD karticu, brisanje nepotrebnih aplikacija koje dolaze sa samim uređajem, stavljanje novijih verzija Androida koje proizvođač ne podržava ili kasni po godinu dana s ''updateom'', razno razne modifikacije za ubrzanje uređaja, "shell" pristup cijelom uređaju itd. (''Nadopuna: Neke od ovdje nabrojanih mogućnosti dolaze s novijim revizijama Androida pod uvjetom da ih je proizvođač voljan isporučiti na stariji uređaj, čime se broj razloga za rootanje smanjuje.'')
  
 
Možda za većinu korisnika ovo ne zvuči previše "napeto", ali ni ne treba - danas i većina korisnika desktop GNU/Linuxa rijetko koriste root ovlasti. Root ovlasti nisu tu da se svakodnevno koriste. No ponekad je root pristup neophodan da bi se učinila određena radnja ili omogućila određena funkcionalnost, pa nema smisla da se jednostavno kaže "to se ne može" iako uređaj to tehnički može.
 
Možda za većinu korisnika ovo ne zvuči previše "napeto", ali ni ne treba - danas i većina korisnika desktop GNU/Linuxa rijetko koriste root ovlasti. Root ovlasti nisu tu da se svakodnevno koriste. No ponekad je root pristup neophodan da bi se učinila određena radnja ili omogućila određena funkcionalnost, pa nema smisla da se jednostavno kaže "to se ne može" iako uređaj to tehnički može.
  
Rijetko se mijenjaju žarulje ili presvlake za sjedala u automobilu, a opet, bilo bi vrlo neugodno da sam korisnik za te radnje mora voziti automobil u servis i posebno plaćati te usluge kad ih može promijeniti sam. Zamislite kad bi ih promijenio sam - izgubio bi garanciju! Upravo je pravo da to smiju raditi direktna posljedica što posjeduju uređaj (makar i u automobilskoj industriji stvari idu u suprotnom smjeru - ograničavanja korisnika).
+
Rijetko se mijenjaju žarulje ili presvlake za sjedala u automobilu, a opet, bilo bi vrlo neugodno da sam korisnik za te radnje mora voziti automobil u servis i posebno plaćati te usluge kad ih može promijeniti sam. Zamislite kad bi ih promijenio sam - izgubio bi garanciju! Upravo je pravo da to smiju raditi samostalno direktna posljedica posjedovanja vozila/uređaja (makar i u automobilskoj industriji stvari idu u suprotnom smjeru - ograničavanja korisnika).
  
 
== Općenito o procesu ==
 
== Općenito o procesu ==
Redak 21: Redak 21:
 
Iako postoje i drugi načini rootanja, ovaj je najosnovniji pa i najkompliciraniji, no šanse za uspjeh su najveće.
 
Iako postoje i drugi načini rootanja, ovaj je najosnovniji pa i najkompliciraniji, no šanse za uspjeh su najveće.
  
Prvi je korak obično instalacija odgovarajućih alata za razvoj Android aplikacija (tzv. Android SDK) koji uključuje program '''adb'''. ''Android Debug Bridge'' (adb) omogućuje spajanje na uređaj preko [[Naredbeni_redak_u_Linuxu|naredbenog retka]] što pak omogućuje pokretanje raznih naredbi na samom uređaju koje nisu dostupne iz klasičnog sučelja uređaja. Da bi spajanje bilo moguće, potrebno je uključiti opciju '''"USB debugging"''' u postavkama uređaja (ili nekog sličnog naziva).
+
Prvi je korak obično instalacija odgovarajućih alata za razvoj Android aplikacija (tzv. Android SDK) koji uključuje program '''adb'''. ''Android Debug Bridge'' (adb) omogućuje spajanje na uređaj preko [[Naredbeni_redak_u_Linuxu|naredbenog retka]] što pak omogućuje pokretanje raznih naredbi na samom uređaju koje nisu dostupne iz klasičnog sučelja uređaja. Da bi spajanje bilo moguće, potrebno je uključiti opciju '''"USB debugging"''' (ili nekog sličnog naziva) u postavkama uređaja.
  
 
Drugi je korak skidanje odgovarajućih '''exploita''' s Interneta (programa koji iskorištavaju sigurnosne propuste u sustavu) i njihovo slanje na uređaj u neki privremeni direktorij. Tada se ''exploitu'' daju ovlasti za izvršavanje (standardno ''chmod 755 ime_datoteke'') te ga se izvrši. Ako je ''exploit'' valjan korisnik će nakon upisivanja naredbe "su" u tom trenu dobiti root ovlasti (naredbena će linija počinjati s "#", a ne "$").
 
Drugi je korak skidanje odgovarajućih '''exploita''' s Interneta (programa koji iskorištavaju sigurnosne propuste u sustavu) i njihovo slanje na uređaj u neki privremeni direktorij. Tada se ''exploitu'' daju ovlasti za izvršavanje (standardno ''chmod 755 ime_datoteke'') te ga se izvrši. Ako je ''exploit'' valjan korisnik će nakon upisivanja naredbe "su" u tom trenu dobiti root ovlasti (naredbena će linija počinjati s "#", a ne "$").

Trenutačna izmjena od 15:26, 9. srpnja 2012.

Pojam "rootanje" dolazi iz svijeta Linuxa, odnosno Unixa gdje "root" predstavlja jedinstvenog korisnika s administratoskim ovlastima - onoga sa svim ovlastima na cijelom sustavu. Android je baziran na Linuxu, pa se "rootanje" u kontekstu Androida odnosi na dobivanje administratorskih ovlasti unatoč namjeri proizvođača uređaja da to onemogući. Proizvođači najčešće onemogućuju administratorske ovlasti na uređajima pod izgovorom da se tako jedino osigurava ispravno funkcioniranje uređaja i da korisnik ne može ništa krivo podesiti i time oštetiti uređaj ili softver. Dublji je razlog ipak "ekonomska računica" jer uskraćivanjem administratorskih ovlasti ograničavaju korisnike kako bi dodatno naplaćivali "nove" mogućnosti koje bi inače korisnici sami mogli besplatno omogućiti, no uz to - veća sloboda korisnika u korištenju uređaja predstavlja i veći izazov za tehničku podršku čime ona za proizvođača postaje skuplja.
Gubitak garancije
Kod većine proizvođača, rootanjem uređaja gubite garanciju.

Upravo zbog toga, proizvođači postupak "rootanja" kažnjavaju gubitkom garancije na uređaj, makar se samim posjedovanjem "root" ovlasti ne može ništa uništiti ili pokvariti. No kako "root" ovlasti dopuštaju da korisnik radi što god hoće s uređajem, moguće je i s neopreznim korištenjem učiniti određenu štetu na samom uređaju. To je gotovo isto kao da proizvođač zabrani nošenje mobitela blizu vode jer se može dogoditi da uređaj padne u vodu i pokvari se. Ponovno: imati "root" ovlasti ne oštećuje uređaj, ali korištenje "root" ovlasti da bi se na primjer procesor uređaja overclockirao na višu radnu frekvenciju može nepovratno uništiti uređaj.

Srećom, dobivanje "root" ovlasti isključivo je softverski postupak, pa je gotovo uvijek moguće i vraćanje na tvorničke postavke kako proizvođač nikad nebi ni znao da je "prekršen" garancijski ugovor.

Zašto rootati?

Prvo pitanje - zašto uopće rootati Android? Najlakše bi bilo odgovoriti apstraktno: da korisnik uistinu posjeduje uređaj i sve njegove mogućnosti, a ne da ovisi o proizvođaču i njegovoj milosti ili cjeniku. Konkretno, rootanjem Androida dobivaju se neke zgodne nove funkcionalnosti, kao pretvaranje uređaja u bežičnu pristupnu točku (en. AP - access point), izradu sigurnosne kopije cijelog mobitela (npr. jednostavni c/p!), instalaciju programa na SD karticu, brisanje nepotrebnih aplikacija koje dolaze sa samim uređajem, stavljanje novijih verzija Androida koje proizvođač ne podržava ili kasni po godinu dana s updateom, razno razne modifikacije za ubrzanje uređaja, "shell" pristup cijelom uređaju itd. (Nadopuna: Neke od ovdje nabrojanih mogućnosti dolaze s novijim revizijama Androida pod uvjetom da ih je proizvođač voljan isporučiti na stariji uređaj, čime se broj razloga za rootanje smanjuje.)

Možda za većinu korisnika ovo ne zvuči previše "napeto", ali ni ne treba - danas i većina korisnika desktop GNU/Linuxa rijetko koriste root ovlasti. Root ovlasti nisu tu da se svakodnevno koriste. No ponekad je root pristup neophodan da bi se učinila određena radnja ili omogućila određena funkcionalnost, pa nema smisla da se jednostavno kaže "to se ne može" iako uređaj to tehnički može.

Rijetko se mijenjaju žarulje ili presvlake za sjedala u automobilu, a opet, bilo bi vrlo neugodno da sam korisnik za te radnje mora voziti automobil u servis i posebno plaćati te usluge kad ih može promijeniti sam. Zamislite kad bi ih promijenio sam - izgubio bi garanciju! Upravo je pravo da to smiju raditi samostalno direktna posljedica posjedovanja vozila/uređaja (makar i u automobilskoj industriji stvari idu u suprotnom smjeru - ograničavanja korisnika).

Općenito o procesu

Cijeli se proces kod svih uređaja svodi na par koraka, iako su nekad dostupne i Android aplikacije koje cijeli proces odrade u jednom kliku.

Napomena: Ovo nije postupak koji će raditi na određenom uređaju, već samo pregled kako postupak mora općenito izgledati i što se u njemu "zbiva". Moguće su varijacije, a sve ovisi o pojedinom proizvođaču, uređaju i verziji Androida, osim toga, za svaki su uređaj potrebne drugačije datoteke u samom procesu, stoga je preporuka potražiti postupak za specifičan uređaj na Internetu (npr. na adresi forum.xda-developers.com).

Iako postoje i drugi načini rootanja, ovaj je najosnovniji pa i najkompliciraniji, no šanse za uspjeh su najveće.

Prvi je korak obično instalacija odgovarajućih alata za razvoj Android aplikacija (tzv. Android SDK) koji uključuje program adb. Android Debug Bridge (adb) omogućuje spajanje na uređaj preko naredbenog retka što pak omogućuje pokretanje raznih naredbi na samom uređaju koje nisu dostupne iz klasičnog sučelja uređaja. Da bi spajanje bilo moguće, potrebno je uključiti opciju "USB debugging" (ili nekog sličnog naziva) u postavkama uređaja.

Drugi je korak skidanje odgovarajućih exploita s Interneta (programa koji iskorištavaju sigurnosne propuste u sustavu) i njihovo slanje na uređaj u neki privremeni direktorij. Tada se exploitu daju ovlasti za izvršavanje (standardno chmod 755 ime_datoteke) te ga se izvrši. Ako je exploit valjan korisnik će nakon upisivanja naredbe "su" u tom trenu dobiti root ovlasti (naredbena će linija počinjati s "#", a ne "$").

Da bi mobitel bio trajno "rootan", s tim root ovlastima potrebno je "remountati" sistemski direktorij tako da se u njega može pisati i onda prekopirati par datoteka u /system/bin (novi su, busybox) i Superuser.apk u /system/app. Na novo kopirane datoteke u /system/bin direktoriju potrebno je postaviti ovlasti za izvršavanje (chmod 6755).

Nakon toga, potrebno je ponovno pokrenuti uređaj (naredba reboot ili isključi/uključi). Ako je proces protekao dobro, korisnik će tada imati rootan Android uređaj.

Instalacija i korištenje Android SDK-a

Android SDK može se skinut s ove stranice, potrebno je samo odabrati verziju za odgovarajući operacijski sustav na kojem će se adb pokretati.

Paket je zatim potrebno instalirati, odnosno otpakirati, npr. na GNU/Linux sustavu:

tar xvf android-sdk*

Kako Android SDK više ne dolazi sa svim korisnim alatima, potrebno je s programom android koji se nalazi unutar otpakiranog direktorija android-sdk-linux_86/tools/ instalirati Platform-tools (u kojem se nalazi i adb). Nakon te instalacije iz Androidovog repozitorija, adb se nalazi unutar direktorija android-sdk-linux_86/platform-tools.

Neke uobičajene i korisne naredbe:

  • ./adb devices - ispisuje sve Android uređaje spojene na računalo
  • ./adb push IME_DATOTEKE /sdcard/ - slanje datoteke s diska računala na SD karticu uređaja
  • ./adb pull /sdcard/IME_DATOTEKE . - slanje datoteke s SD kartice uređaja na diska računala
  • ./adb shell - prostupanje shellu uređaja (konzola/terminal/cmd kao na računalu, samo se ova pokreće unutar uređaja i sve akcije koje se unutar nje naprave vrijede za uređaj)
  • ./adb reboot - restart uređaja (dodatne opcije: bootloader, recovery)
  • ./adb logview - log/zapis s uređaja (korisno za situaciju kada nešto pođe krivo)

Za ostale mogućnosti vidjeti ./adb help.

Mogući problemi

Ako adb nema ovlasti pristupiti USB-u:

$ ./adb devices
List of devices attached 
????????????    no permissions

rješenje je isključiti adb daemon (./adb kill-server) i pokrenuti ga kao root korisnik (sudo ./adb start-server ili su -c'./adb start-server' ), no pravo bi rješenje bilo srediti dozvole za pristupanje USB uređajima običnim korisnicima.

Traženje exploita

Exploit, odnosno program/skripta koja iskorištava neki propust u softveru određenog modela uređaja i verzije Androida, može se naći na XDA forumima (najčešće) ili korištenjem standardnih tražilica sa ključnim riječima: ime modela, verzija Androida, root i sl.

Na primjer, za mobitel Xperia X10 Mini Pro, s verzijom softvera 2.1.1.A.0.6, dovoljno je pretražiti internet i/ili XDA forume s ključnim riječima: root mini 2.1.1.A.0.6. Treba naći arhivu koja sadrži datoteke kao SuperOneClick, su, busybox i sam exploit (u ovom primjer, taj exploit nosi naziv rageagainstthecage).

SuperOneClick često je skripta/program koji cijeli posao rootanja uređaja obavi u jednom kliku, pa je poželjno prvo nju isprobati, a ako ne radi... onda treba nastaviti ručni proces.

Slanje datoteka pomoću adb-a, pokretanje exploita

Datoteke se mogu poslati na uređaj naredbom push:

./adb push IME_DATOTEKE /sqlite_stmt_journals

Ovdje se datoteke prebacuju u direktorij /sqlite_stmt_journals jer je po njemu moguće slobodno pisati (i kao običan korisnik) i moguće je izvršavati datoteke (što se ne dozvoljava za datoteke u /sdcard na nekim uređajima).

Nakon što se prebace sve datoteke, potrebno je pokrenuti adb shell, postaviti s pomoću chmod 755 /sqlite_stmt_journals/IME_DATOTEKE ovlasti na te datoteke da se mogu izvršavati.

Exploit datoteka pokreće se s:

./sqlite_stmt_journals/IME_DATOTEKE

te ako je exploit uspješan, dobivaju se root-ovlasti (redak više ne počinje s "$" već s "#") ili se ispiše poruka property service neutered. killing adbd. te je potrebno ponovno pokrenuti adb shell čime se automatski dobivaju root-ovlasti.

Osim "#", drugi način za provjeru da li korisnik posjeduje root-ovlasti je upisivanje naredbe id:

# id
uid=0(root) gid=0(root)

Trajno rootanje uređaja

Kako bi se osigurao stalni pristup root-ovlastima, potrebno je remontirati (remountati) osnovni datotečni sustav na kojem se nalaze sistemske datoteke u način za pisanje i čitanje (RW), jer je inače samo u načinu za čitanje (RO):

mount -o remount,rw -t yaffs2 /dev/block/mtdblockX /system

gdje mtdblockX ovisi o tome koja je particija sistemska (može se provjeriti tako da se upiše naredba mount koja će ispisati sve trenutno montirane particije, a traži se ona koja je montirana kao /system).

Tada je moguće u /system/bin pomoću naredbe cp kopirati potrebne datoteke (između ostaloga busybox i su) kako bi rootanje ostalo trajno. Nekad je naredba cp onemogućena pa je potrebno koristiti cat (npr. cat IME_DATOTEKE > /lokacije/IME_DATOTEKE). Napomena: gdje i što kopirati ovisi od uređaja do uređaja i o verziji Androida, ali gotovo uvijek piše uz uputstva skinutog exploita.

Linkovi i reference