Menu

Ladění HTC Desire – část 3.

htc-logo-1

Dneska to bude docela o hubu, ale bez bolesti není radosti. Uděláme tzv. “pravý root”, změníme strukturu oddílů, přesuneme Dalvik cache, a takřka tím zdvojnásobíme tu žalostnou vnitřní paměť HTC Desire. Postup je rozhodně tím nejnáročnějším v celém seriálu (příště to zase zpřístupním začátečníkům), a bude vyžadovat vyšší než elementární znalosti PC. Ale zase se pokusím všechno co nejlépe vysvětlit, takže odvážným nováčkům zůstanou dveře otevřené. V závěru se podíváme na to, jak odstranit aplikace, které ždímou baterii, ale nedají se odinstalovat, protože jsou součástí ROM.

Provádíme S-OFF

Abychom mohli hýbat se systémovými oddíly (partitions), musíme nejprve odstranit příslušné zabezpečení. Proto se postupu někdy říká “pravý root” – teprve s odstraněním tzv. @secuflag získáte práva zápisu do oddílů /system a /recovery, a navíc pak máte možnost měnit jejich velikost. Před S-OFF ovšem musíte mít v provozu rootnutou ROM. Pokud nemáte, projděte si nejprve druhý díl seriálu. Na Desire se S-OFF provádí utilitou AlphaRev 1.5. Nejedná se o a nástroj pro OS Windows, ale o bootovatelné ISO postavené na Linuxu, které musíte buď vypálit na CD v bootovatelné podobě (pokud ještě disponujete prázdnými optickými médii, já je už léta nepoužívám), nebo si z něj vyrobit bootovatelný flash disk (za předpokladu, že z ní váš počítač dokáže nabootovat). Na vypálení ISO na CD existují mraky utilit (namátkou vynikající bezplatný ImgBurn, který jako jeden z mála dobře zvládá 64bitové systémy), s bootovatelnou flashkou je to trochu složitější. Utility jsou různé, s různým stupňem obtížnosti, a různě invazivní (některé provedou repartition s nějakými 256 MB využitelného místa, což se v prostředí Windows dost blbě vrací zpátky). Já vám samozřejmě doporučím tu nejlepší. Je jí Universal USB Installer z projektu Pendrive Linux. Na první obrazovce vyberete poslední volbu (Try Some Other Live Linux ISO), nalistujete stažené ISO, vyberete písmeno prázdné flashky (formátované na některý FAT; NTFS nepojede), a necháte program dělat jeho práci.

Bootovací médium máme připravené, takže je na čase uvést varování. Fáze procesu, kdy se upravuje HBOOT, je hodně riskantní. Pokud během ní vypadne elektřina, nebo se krátce odpojí kabel (může být vadný a fungovat jen v určitých polohách, nebo vám ho vyškubne domácí mazel; čert ví, co se může stát), nebo se program třeba jen dostane do konfliktu s novější hardwarovou revizí (to by se stát nemělo, podporuje zařízení s AMOLED i SLCD), stáváte se šťastnými majiteli křemíkové cihly. I když se autor utility dle svých slov snažil udělat proces co nejbezpečnější, určité riziko tu je, a jednáte pouze na vlastní zodpovědnost. Z průseru vám nebude pomáhat ani on, ani já. Můžete zkusit zařízení reklamovat, ale vzhledem k rootu, custom ROM, a zvrzanému HBOOTu existuje vysoká pravděpodobnost, že se vám vysmějí. Riziko se dá snížit použitím vyzkoušeného a nepoškozeného kabelu, a spuštěním utility na spolehlivém a nabitém notebooku, popř. počítače za kvalitní UPS.

Pokud s rizikem počítáte, můžeme se pustit do díla. V nastavení telefonu zapněte USB debugging (V CM standardně zapnutý, volbu najdete v Application settings->Development->USB debugging, resp. Aplikace->Vývoj->Ladění USB), připojte jej k počítači, a nabootujte z připraveného média. Nepokoušejte se o připojení z virtuálního stroje, prostě restartujte počítač a vyvolejte si boot menu. Je to na každém BIOSu jiné, a dovolím si podobný kousek jako minule – pokud nevíte, jak na to, do podobných akci se nepouštějte. Po spuštění začne utilita sama pracovat, provede několik restartů telefonu, a bude vás průběžně upozorňovat, kdy je opravdu o držku odpojit telefon. Nechte to prostě být, i kdyby to vypadalo, že se počítač nebo telefon zaseknul. Nástroj vám řekne sám, až bude po všem. Když se vše podaří, nabootujete do Androidu (přes nový splash screen s Jokerem), a i počítač můžete pustit zpět do běžného operačního systému. Když se nepodaří… upřímnou soustrast.

Dodatek: Možná po dokončení procesu zůstanete viset v novém bootloaderu (že je nový poznáte podle nepřehlédnutelného nápisu v horní části) – potom stačí najet tlačítky pro ovládání hlasitosti na reboot, potvrdit vypínačem, a dostanete se do Androidu. Ale ujistěte se na obrazovce počítače, že se S-OFF skutečně dokončil.

Přeskupujeme oddíly

Teď přijde konečně ta zajímavá část, kdy zvětšíme vnitřní paměť Desire. Budeme k tomu potřebovat Android SDK (většina z vás už, doufám, díky ADB tento balíček má, a umí jej používat), resp. jeho složku tools. Budeme tam prozatím pracovat s utilitou fastboot, která se stejně jako většina nástrojů v SDK ovládá výhradně z příkazové řádky. Pokud práci v příkazové řádce neovládáte, pak jste tu asi špatně. Ale že jsem v dobrém rozmaru, doporučím např. použití Total Commanderu, kde stačí jen nalistovat složku tools, a slepě psát příkazy do řádku v dolní části okna. Ale budu rozhodně raději, když se zamyslíte nad tím, co který příkaz dělá.

Web AlphaRev nabízí v přehledné tabulce 4 různé konfigurace oddílů. Existují různé způsoby, jak si tyto tabulky vytvořit, nebo jak měnit velikosti oddílů dynamicky. Dá se tak získat ještě více místa pro data (samozřejmě na úkor ostatních partitions), já ale doporučuji volit bezpečnou cestu. Pokud jste si na omezení Desire zvykli a přesouváte na kartu jak zběsilí, budete mít i tak problém těch blbých 100 MB navíc využít. Je to smutné, ale je to tak. V tabulce vidíte, jak nesmyslně rozvržené oddíly má Desire od výroby. 258 MB pro /system je zkrátka zbytečný luxus, za který platíme pouhými 152 MB pro data. Pokud používáte Sense, vystačí vám 180 MB z “bravo_alphaspl-sense.img” a na data zbude 181 MB, nicméně my máme od minula CyanogenMod 6.1, a použijeme tedy oblíbenou Bravo N1Table. Ta má pro systém pouze 149 MB, a navzdory nebývale štědré velikosti cache tak zůstává 203 MB pro data. Už v první fázi tak získáme něco přes 50 MB místa k dobru. Určitě jste si všimli, že Bravo Data++ nabízí docel velký /system, a pro data ještě dalších 60 MB. Ovšem činí tak na úkor cache, což s sebou nese určité mouchy (prohlédněte si například poznámku pod tabulkou). Zůstaneme tedy u N1. Stáhněte si “bravo_alphaspl-n1table.img“, a pro jednoduchost soubor umístěte do tools v Android SDK.

Dodatek: Pokud jste si v předchozím díle vybrali nějakou ROM s HTC Sense, stáhněte si i příslušný HBOOT! Do N1 Table by se nemusela vejít.

Teď už budeme potřebovat příkazovou řádku (konzoli), popř. Total Commander (či jiný souborový manažer). Nejprve proveďte obě zálohy z minulého dílu. Snapshot budeme potřebovat v závěru, a MyBackup vám uchová data pro jinou ROM, popř. jiný telefon, kdyby se něco podělalo. Radši si obě schovejte i na nějaké nezávislé médium. Nyní vypněte připojený telefon, a současným držením tlačítka Zpět a vypínače jej nastartujte do bootloaderu (potřebujeme režim fastboot). Na PC se přesuňte do složky tools, a do příkazové řádky zadejte “fastboot flash hboot bravo_alphaspl-n1table.img” (bez uvozovek), a potvrďte enterem. Pokud jste si zvolili jiný HBOOT, samozřejmě přizpůsobte název souboru. Tímto provedete změnu velikostí oddílů, ovšem to ještě nestačí. Opět z příkazové řádky telefon restartujte (zase do bootloaderu) příkazem “fastboot reboot-bootloader“, a smažte cache příkazem “fastboot erase cache“. Nyní nabootujte do recovery (vizte minulý díl), a proveďte kompletní wipe. Tímto máte před sebou úplně čistý telefon. Zůstaňte tedy v recovery, a dle minulého dílu obnovte zálohu ze snapshotu. Až obnova doběhne, restartujte telefon, a po trochu delším bootování stanete před Androidem zdánlivě tak tak, jak jste ho nechali. Ovšem v nastavení úložiště si můžete povšimnou znatelného zvýšení dostupného místa. Ale ještě nekončíme, můžeme získat dalších pár desítek MB k dobru.

Přesouváme dalvik-cache

Jelikož se snažím psát tento cyklus jako vzdělávací, hodí se opět vysvětlit, co vlastně děláme. Začneme tím, co je to Dalvik. Drtivá většina aplikací pro Android není psána v nativním kódu (který je schopen zpracovat přímo hardware telefonu), ale v tzv. bytecode, který se v reálném čase překládá do hardwarových instrukcí pomocí virtuálního stroje. Je to v moderním programování naprosto běžná věc, nad kterou se nemusíme pozastavovat (obdobně funguje např. Java, .NET, Python, PHP, atp.). Virtuální stroj v Androidu se jmenuje Dalvik Virtual Machine, a pracuje s vlastním bytecode, nikoli s Javovým, jak se mnozí domnívají. DalvikVM je daleko sofistikovanější než Java Virtual Machine. V Androidu si vytvoří strukturu všech nainstalovaných APK, zjistí si jejich závislosti, a na základě toho optimalizuje jejich bytecode právě pro váš telefon. No a aby nemusel optimalizaci provádět stále znovu, ukládá si tato data do dalvik-cache. Mimochodem – příprava této cache je důvodem, proč se nová ROM vždycky tak dlouho bootuje. Je standardně umístěna v oddílu /data, a užírá tak místo pro instalovatelné aplikace. Ale v CyanogenModu (netroufám si tvrdit, zda si to můžete dovolit i v jiných ROM, a navíc je vyzkoušen POUZE v Bravo N1 Table – pokud jste použili jinou, zkuste ještě přehodnotit, zda to raději neflashnete znovu) máme hromadu volného místa v partition /system, tak proč jej nevyužít? Přesunume dalvik-cache právě tam. Za postup vděčíme jednomu z vývojářů CyanogenModu, sám bych to nevymyslel.

Opět restartujte telefon do recovery (ale teď už vlastně máte Android SDK, můžete tedy v tools zavolat příkaz “adb reboot recovery”, a nemusíte na telefon sahat), a proveďte wipe cache (ne ten úplný, pouze cache!). Přesuňte se opět k počítači a jeho příkazové řádce, a pokračujte tam. Příkazem “adb shell” se dostanete do konzole telefonu. Tam připojte systémovou partition příkazem “mount /system” (někdy to není nutné, a /system už je namountován, budete o tom informováni), přesuňte dalvik-cache příkazem “sed -i /dalvik.vm.dexopt-data-only=1/d /system/build.prop“, a systémový oddíl opět odpojte přes “umount /system” (když se unmount nepovede, opět se nic neděje). Teď už jen zlikvidovat starou cache. Tentokrát v konzoli připojte datový oddíl přes “mount /data“, vymažte starou cache pomocí “rm /data/dalvik-cache/system*(nezapomeňte na hvězdičku!), a oddíl odpojte “umount /data“. Vše je hotovo, restartujte telefon. Já tímto krokem získal 60 MB navíc, a i s novým HBOOTem to dalo více než 100 MB. To je na Desire slušné, že?

Zabíjíme Jokera

Možná se vám nelíbí nový splashscreen. Upřímně řečeno – mně taky ne. Dle slov autora je jeho ponechání vyjádřením podpory, ale radši mu pošlete nějaký ten dolar přes PayPal, protože se na to nedá dívat. Přímo na webu je i návod na odstranění. Stáhněte si původní splash screen, umístěte jej do složky tools, telefon restartujte do bootloaderu (už víte jak), a použijte příkaz “fastboot flash splash1 desire_stock_splash1.img“. Logo HTC je zpátky.

Mažeme aplikaci z ROM

EDIT: Na tomto místě článku jsme původně mazali aplikaci pro zprávy, abychom obešli bug v CM 6.1 RC1. Tato chyba už ve finální verzi CyanogenModu není, a návod kvůli jeho vedlejším účinkům stahuji. Ponechám ale kostru pro lidi, kteří si skutečně něco z ROM smazat potřebují, a za oběť padne Twitter.

Dejme tomu, že stejně jako já odmítáte používat oficiální klient Twitteru, nebo dokonce bojkotujete sociální sítě úplně (pak můžete obdobně postupovat i s Facebookem), a chcete se vyhnout různým dialogům pro výběr výchozí aplikace.

Restartujte telefon do recovery, a nastartujte si adb shell. Připojte/system (“mount /system“), přesuňte se do adresáře aplikací příkazem “cd /system/app“, a všechny systémové balíčky si vypište příkazem “ls“. Uvidíte mezi nimi Twitter.apk, což je naše vyhlídutá oběť. Příkazem “rm Twitter.apk” (je to case-sensitive, bacha na velká písmena) aplikaci nenávratně smažete (obdobně můžete rovnou zničit i Facebook.apk nebo jinou aplikaci). Příkazem “cd /” se vraťte do rootu a /system odpojte přes “umount /system“. Pokud toto všechno děláte ihned po flashi, můžete telefon rovnou rebootovat. Pokud však už byla ROM spuštěna a Dalvik si nacachoval svá data, nezapomeňte udělat wipe cache. Nikoli úplný, to byste pochopitelně ztratili data. Pokud byste wipe neudělali, možná by vám aplikace zůstaly viset v systému, Market by je vedl jako nainstalované, a museli byste se z toho vymotávat nějakou odinstalací, novou instalací a novou odinstalací. Což je trochu prasárna. Připravte se jen na to, že další boot bude trvat déle, stejněě jako první start po flashi.

Na závěr ještě důležité upozornění – pokud si nejste 100% jistí co děláte, a nedokážete se sami vymotat z případných problémů, nesnažte se za každou cenu odstraňovat ze /systemu všechno, co nepoužíváte. Jednak hrozí nebezpečí, že smažete něco důležitého, k čemu se v lepším případě těžko shání APK (v horším třeba nenabootujete). A i kdybyste smazali něco, co skutečně nepotřebujete, docela zdlouhavě budete odstraňovat ze systému pozůstatky. Pokud nemáte dobrý důvod, nechte to prostě být.

No a příště si trochu odpočineme, a podíváme se, jak si vynahradit funkce, které mělo HTC Sense v sobě, ale CyanogenModu chybí.

[Se svolením autora převzato z webu: http://johny-g.blogspot.com/2010/11/ladeni-htc-desire-cast-3.html]


Diskuzi k tomuto článku naleznete zde: http://androidforum.cz/topic8720.html

Nejaktuálnější verzi článků z tohoto seriálu najdete přímo na webu autora.

 

RSS (komentáře k článku)