SuperSU BETA: Root Android Lollipop na Stock Kernelu

Najnovije: Chainfire je danas najavio SuperSU Beta 2.27, uklanjajući potrebu za izmjenama ramdiska kernela za korištenje root pristupa na Androidu 5.0

Do sada, ako ste htjeli dobiti root na Androidu 5.0, morali ste flashati modificirani kernel na svoj uređaj kako biste zaobišli neka SELinux ograničenja. XDA Senior priznati programer Lančana vatra nedavno je izdao prethodno neophodan CF-Auto-Root paket, koji je izvršio potrebne izmjene ramdiska kernela za uklanjanje SELinux ograničenja iz skripte install-recovery.sh na AOSP-u. No, jutros je Chainfire izmamio osmijehe na mnoga lica, kao i on objavio je na Twitteru da to više neće biti potrebno u budućnosti.

Sve do danas, Chainfire je planirao izdati automatizirani alat za krpanje temeljen na ZIP-u, kako bi automatski krpati slike jezgre iz TWRP oporavka, sve dok nije naišao na prikladnu metodu za uklanjanje potrebe za ovaj.

Ovo otkriće znači da korisnici Androida 5.0 više ne moraju pokretati modificirani kernel kako bi dobili root pristup putem SuperSU (ili drugih root rješenja). Iako nije veliki problem na Nexus uređajima s otključanim bootloaderima, potreba za izmjenama ramdiska bila je zabrinjavajuće za mnoge korisnike uređaja zaključanih bootloaderom za koje otključavanje nije dostupno (da, nažalost jesu postojati). Odgovor na njihove molitve je sada ovdje, a mi možemo predstaviti ekskluzivno objašnjenje potrebnih promjena. Barem za sada (dok/osim ako Google ne zakrpi ovo), moguće je dobiti root pristup, a zatim instalirati i koristiti SuperSU na standardnom Android 5.0 uređaju, bez ikakvih podešavanja kernela ramdiska. Razlog tome je potreba da SuperSU pokreće uslugu kao root, kako bi se omogućio neograničeni root pristup na uređajima zaštićenim SELinuxom.

Prethodno je SuperSU koristio unaprijed instalirani AOSP flash_recovery uslugu (koristi se u AOSP-u za ažuriranje oporavka nakon OTA instalacije) za pokretanje SuperSU demona (koji zapravo pruža root povlastice za aplikacije koje to zatraže). S izdavanjem Lollipop-a, ova usluga je dodana u ograničeni SELinux kontekst, što znači da više nema nepatvoren pristup sustavu. Prethodne izmjene kernela nastojale su ukloniti SELinux ograničenja iz ove skripte.

Najnovije Chainfireovo beta izdanje SuperSU-a rješava to korištenjem temeljne usluge 'Zygote' (odgovorne za pokretanje svih Java usluga, a time i svih aplikacija instaliranih na uređaju). Budući da je Zygote jedna od rijetkih usluga dostupnih na Androidu L, koja se pokreće kao root unutar neograničeni "init" SELinux kontekst, to ga čini glavnim ciljem za korištenje u radu SuperSU. Nakon pokretanja, Zygote servis ima svoj SELinux "init" kontekst premješten u svoj konačni (ograničeni) "Zygote" kontekst. Chainfire je uspio uspješno modificirati Zygote datoteke, kako bi pokrenuo kod kao root korisnik, unutar neograničenog "init" konteksta, čime se SuperSU vraća na Android L, bez kernela preinake.

Ovo nije prvi put da se Chainfire obratio Zygoteu za rješavanje ovih problema; ranija 2.23 beta koristila je Zygote kao sredstvo za eventualno zaobilaženje nekih drugih problema SELinuxa (koji su uzrokovali kvarove root aplikacija na Androidu L). To je omogućilo nekim (ali ne svim) nefunkcionalnim aplikacijama da rade - za ostale su potrebna neka ažuriranja od strane njihovih programera. Nažalost, kada je pregledan kod 5.0 AOSP, pokazalo se da je Google već prekršio ovu metodu preuzimanja usluge Zygote. S obzirom na to da su svi njegovi prethodni pokušaji da preuzme Zygote bili neuspješni, ovo je korak naprijed koji obećava.

Chainfire je želio istaknuti da SuperSU već dugo može modificirati pravila SELinuxa na pokrenutom sustavu (i upozorava na lakoću s koji OEM bi to mogao onemogućiti i uistinu spriječiti smislen i jednostavan root pristup), i kako se moraju izvršiti sve izmjene napravljene na Zygoteu pažljivo, s obzirom da se usluga pokreće iz različitih konteksta, za različite zadatke, a to povećava mogućnost niza (gadnih) suptilni neuspjesi. Ova nova SuperSU beta 2.27 je verzija za entuzijaste i druge tehničare s kojima se mogu igrati kako bi saznali što se kvari. Držimo palčeve – nema neočekivanih bugova koji bi spriječili pojavu i ovo je održiv put naprijed.

Imajte na umu - čak i ako ova beta verzija uspije i Zygote je preferirani put za dobivanje root pristupa, ubuduće je cijeli proces samo promjena u jednom retku daleko od toga da ih Google slomi, što bi zakrpane ram diskove kernela učinilo budućnošću za root pristup na Androidu (čime bi root bio isključen za bootloader zaključan uređaji). Doista, kao najava, novi proces možda čak neće raditi na potpuno ažurnoj AOSP verziji, zbog nekih prilično velikih SELinuxa promjene u proteklih nekoliko mjeseci, koje nisu bile uključene u maloprodajne uređaje, ali koje će bez sumnje biti u budućnosti oslobađanja. Ipak, prije ili kasnije, čini se vjerojatnim da će modificirani kernel ramdiskovi biti potrebni za root, ali ova nova beta može ponuditi kratku odgodu izvršenja prije nego što krenemo u tom smjeru.

Provjeri napomene o izdanju za više informacija o rizicima uključenim u ovo testiranje i za poveznice. Programeri također trebaju biti svjesni da Chainfire trenutno naporno radi na Vodič "How-To SU". (potpuno ažuriran za Android 5.0), koji bi trebao biti dostupan u sljedećih nekoliko dana.

[Veliko hvala Chainfireu za njegov rad ovdje i pomoć u pripremi ovog članka.]