rootování alias su
Pojem rootování telefonu může znalého uživatele trochu klamat. Víceméně jde o to, dostat program su do souborového systému našeho Androida. Když se vám to podaří, můžete si se softwarem telefonu dělat prakticky cokoli, což může vést až ke zničení telefonu. Proto byste se měli mít velmi na pozoru, když něco děláte. Uvědomte si, že telefon není běžný stroj, ale poškození určité části paměti, třeba spuštěním programu se špatnými parametry, telefon nepřežije a budete z něj mít hezké těžítko.
Na různých fórech najdete návody, které popisují krok za krokem jak se k rootu v telefonu dostat. Kolem se často pohybují uživatelé, co se postup pokusili využít, ale kvůli chybě telefon přestal reagovat. Často jde o uživatele, kteří o Linuxu maximálně slyšeli a netuší, co zadávají do konzole, když tam to su kopírují. Osobně nikomu takovému tento ani jiné postupy nedoporučuji a když už se rozhodnete, pokuste se patřičný postup co nejlépe pochopit, aby nedošlo ke zbytečnému zničení telefonu.
Druhá rada, kterou bych chtěl zmínit, je – nikdy nepanikařte. Telefon odepíšete, když si třeba přepíšete prvních 512kB flash paměti, kde je uloženo SPL (o tom níže). Pokud se vám podaří nějakým způsobem zničit kterýkoli jiný oddíl, vždycky vede cesta zpět přes oficiální aktualizační program nebo i jinak.
Pokud se rozhodnete použít cokoli v následujícím textu, tak i když jsem vše použil na svém telefonu, neručím za následky, které by to mohlo mít.
Flash paměť
Flash paměť Android telefonů je rozdělena na několik částí. Je možné, že se v různých telefonech počet částí liší, ale na mém HTC Hero jich je šest. Na nich jsou uloženy různé části systému, o kterých bychom měli něco vědět.
SPL (Second Program Loader)
V prvních 512 KB je uloženo tzv. SPL. Je to něco jako složitější zavaděč, který je zaváděn jednodušším zavaděčem, který se nazývá IPL (Initial Program Loader). SPL je středem všech potíží, které máme pokud chceme získat práva roota na našem telefonu. Přes SPL je možné nabootovat do jakéhokoli systému i přes USB kabel a tím jednoduše manipulovat s telefonem. Bohužel je SPL v nových HTC Hero proti tomuto postupu zamčené. Až se vám podaří dostat k rootu, můžete si tam nahrát takové, které není, ale osobně jsem do toho nešel a nepůjdu. Pokud začnete sahat na SPL, tak když se stane něco špatně, telefon bude zobrazovat maximálně hezký obrázek s Androidem a už nikdy se neposune dál.
Odemčené SPL mají všechny HTC Hero prodaná někdy před zářím 2009, tedy ještě bez prvního oficiálního upgradu pro Evropu.
Recovery
Druhou a velmi důležitou částí flash paměti je i 5 MB velká oblast, který obsahuje tzv. recovery. Je to základní systém, přes který se dají řešit některé problémy a pokud si tam nahrajete nějaké vylepšené recovery, dostanete velmi mocný nástroj, který váš telefon dostane z většiny softwarových problémů a umožní vám nahrát si do telefonu cokoli.
Přesně tudy také vede cesta jak se dostat k rootu v HTC Hero, ale budeme na to muset jít trochu lišácky, přes ne moc povzbudivou díru v jádře.
System
V této části se nachází vše co se týká systému, který běžně při používání telefonu máte nabootovaný. Velikostí je 170 MB a vejde se tam jakákoli běžná varianta Androidu, které se povalují po internetu. Tato část flash paměti je připojena jen pro čtení a žádný program do ní nemůže zapisovat, alespoň pokud nemáte roota, který by provedl remount. Oficiální verze HTC Androida bohužel obsahuje i některé vyloženě zbytečné aplikace a bez roota se jich nezbavíte.
Data
Přibližně stejnou velikost má i část s daty uživatele, kam si aplikace ukládají svá nastavení. Je to část paměti, kde je povolený zápis a krom nastavení tu je všechno co si aplikace neodloží na SD kartu. Instalují se sem také aplikace, které si stáhnete z Marketu nebo i jinak. Na rozdíl od aplikací, co jsou v části paměti se systémem, jdou odinstalovat. S datovou částí flash paměti souvisí i pojem wipe. Ten uvede datovou část do určitého výchozího stavu. Společně s tím se ještě vymaže část flash paměti s cache javovského virtuálního stroje, která má asi 128 MB. Právě wipe je potřeba udělat před změnou systému za jiný. Není to nutné u všech, ale pokud to neuděláte když máte, tak některé aplikace to neustojí. Teoreticky by šlo upravit SPL tak, aby si ukouslo ze systémové části pár MB a dalo je do části s daty. Běžná velikost systému se pohybuje kolem 100 MB, některé ROMky mají i 60 MB, takže se tam 70 až 110 MB jen tak válí.
RADIO
Nakonec ještě zmíním RADIO. Nepodařilo se mi najít, kde je přesně uložené, ale u HTC Hero na něj sahat nemusíte. Je to balík s firmwarem pro WiFi, GSM modul a Bluetooth. Je to druhá ze dvou věcí, při jejíž manipulaci můžeme telefon uvést do nefunkčního stavu. Osobně jsem na RADIO nesáhl a pokud máte chuť a nervy, MoDaCo dá obrazy i informace.
A jdeme na roota
U každého telefonu se k uživateli root dostáváte různě. Rozhodně to není často oficiální (některé telefony to umožňují společně se vzdáním se záruky) a ani jednoduchá cesta. U HTC Hero není potřeba nic speciálního. Naneštěstí/naštěstí se objevila bezpečnostní chyba, která má velmi vážný charakter, který zastínil fakt, že se používá i pro něco užitečného. Přes tuto díru lze získat roota jako běžný uživatel. Je to tak vážná díra, že nějaký zákeřný program vám může zničit telefon tím, že přepíše SPL nebo RADIO. Výrobce si toho nevšímá a uživatelé jásají, aniž by si uvědomovali riziko.
Dost bylo strašení a začneme odemykat. Začneme tím, že si stáhneme Android SDK a rozbalíme. Najdeme ho na adrese developer.android.com. Po rozbalení najdeme v adesáři tools program adb, který budeme potřebovat. Nejpohodlnější je přidat cestu k adresáři tools do systémové proměnné PATH, aby se adb lépe spouštělo. Jen tak mimo téma tu je i program ddms, který umožňuje krom jiného ukládat do PNG, co se zrovna děje na displayi telefonu. Na Windows jsou potřeba ještě nějaké jiné ovladače pro telefon, ale na Linuxu jsem nemusel instalovat nic a vše fungovalo, jak mělo.
Pokud máme SDK, stáhneme si program FlashEec. Ten dělá to, že zneužije bezpečnostní díru v jádře k tomu, aby nahrál upravené recovery. FlashRec se instaluje jako každý jiný program, který není z Marketu a v menu se objeví pod názvem „Recovery Flasher“. Po spuštění uvidíme velmi jednoduché ovládání se dvěma tlačítky.
Nejdříve si zkuste zazálohovat svoji recovery, tedy tu originální tlačítkem „Backup recovery image“. Když se to povede, díra je přítomna v můžeme pokračovat. Pokud ne, tak tady návod končí a musíte si najít jinou cestu. Když je vše zazálohováno, tak si stáhněte nějakou upravenou recovery, která vám dá do ruky váš systém, jak si výrobce nepřál.
Já momentálně používám RA-hero-v1.6.2, kterou najdete opět na MoDaCo fóru. Je to asi nejlepší recovery pro Hero. Po stáhnutí si ji nahrajte na SD kartu a přejmenujte ji na něco kratšího, třeba „recovery.img“. Pak stačí ve flashrec napsat do políčka:
sdcard/recovery.img
a tapnout na „Flash Recovery Image“. Tady pozor, první lomítko se opravdu nepíše.
Pokud vše projelo bez chyb, tak je čas vypnout telefon a zapnout ho držením POWER+HOME. Tím by měla naběhnout naše nová recovery. Pokud se vám to povedlo, tak je váš telefon kompletně ve vašich rukou a máte otevřenou bránu k pořádnému zálohování, ke změnám v systému nebo ke kompletní výměně systému.
Pro nás je nyní důležité dostat su do originálního systému, je to takový hlavní důvod, proč tohle všechno dělat. Nejdříve potřebujeme stáhnout su a program Superuser.apk. Su jsem již vysvětlil a Superuser umožní kontrolovat, který program se touto cestou snaží dostat k rootu. Můžete pak povolit, případně zakázat přístup programům, které se zrovna snaží su použít. Je to bezpečnostní ochrana, aby si každý nainstalovaný program nedělal, co chtěl.
Začneme tím, že si stáhneme su_a_superuser_apk.tar.bz2. Rozbalíme je a přes adb nakopírujeme do telefonu. Adb je program a zároveň protokol, který umožňuje pohodlně komunikovat s telefonem. Adb démon běží v SPL, v recovery i v hlavním systému, a tak všechno můžete dělat z pohodlí své klávesnice. Nahrajeme tedy su a nainstalujeme Superuser.apk.
$ adb shell mount /system # přimountujeme souborový systém hlavního systému
$ adb push su /system/bin/ # nahrajeme do něj su
$ adb shell chmod 4755 /system/bin/su # a dáme mu práva ke spuštění
$ adb push Superuser.apk /system/app/ # pak nakopírujeme i Superuser.apk
$ adb shell reboot # a nakonec resetujeme
A je hotovo, po nabootování hlavního systému budete moci spustit programy pod rootem. Stačí do něj nabootovat a zadat:
$ adb shell
$ su
Aplikace Superuser se zeptá na povolení přístupu k su a po odtapnutí se místo $ objeví # a práva jsou vaše.
Závěr
Příště se podíváme na to, co všechno se dá s rootem a naší novou recovery na Androidu dělat. Rád bych ještě na závěr poznamenal, že jakýmkoli podobným zásahem ztrácíte záruku. Na druhou stranu je oficiální aktualizační software natolik destruktivní, že flashuje všechno od SPL až po data a ač nechci k podobným nečistě řešeným reklamacím nějak navádět, nenašel jsem za poslední tři měsíce nikoho, komu by nevzali reklamaci, když jak důvod uvedl, že mu oficiální aktualizační aplikace spadla a telefon od té doby nenaběhl. Naštěstí u HTC Hero není potřeba pro trochu těch práv dělat nic, co by zničilo telefon tak, aby to nešlo řešit, i tak si ale dávejte pozor, abyste něco neudělali špatně. Aktualizaci softwaru je lepší řešit přes ROMky vypreparované z oficiální aktualizační aplikace. Ty vám nepřepíšou SPL ani RADIO, ale pouze systém a data a zůstane vám vaše nová recovery. Tyto ROMky najdete opět na MoDaCo fóru.
Budu velmi rád, když mi pomůžete článek vylepšit vašimi postřehy v diskusi.