martedì 19 febbraio 2013

Nexus 7: rooting da un PC Linux

Per installare programmi Android speciali a livello di sistema e' necessario accedere al "root level" del dispositivo, cosa che non e' possibile fare senza sbloccare il bootloader e installare una "custom recovery image". Queste operazioni comportano la cancellazione dei dati personali sul dispositivo (programmi, impostazioni, cache, ecc.) quindi conviene farle prima possibile, se si ritiene necessario per il proprio utilizzo del tablet.

Nexus 7: rooting da un PC Linux

Come sbloccare i diritti di root ("su", super user)

** ATTENZIONE **
Queste modifiche rendono un po' piu' laboriosa l'installazione di update OTA (over the air) di Android. E' possibile che gli update abbiano bisogno della recovery image ufficiale (o che la repristino dopo essere eseguiti), e/o abbiano bisogno dei file che sono stati eventualmente successivamente modificati con patch zip non ufficiali.

Preparazione del PC Linux

Sono necessari alcuni comandi compresi nel tool di sviluppo Android SDK. Scaricare quindi il file adt-bundle-linux-x86.zip o adt-bundle-linux-x86_64.zip e scompattarlo in una cartella locale (es. ~/bin), e aggiungerla al path
  export PATH=$PATH:/home/your-user-name/bin/adt-bundle-linux-x86/sdk/platform-tools

L'Android SDK rende disponibili i comandi adb e fastboot (oltre a molti altri tool) che servono per sbloccare il bootloader e installare una "custom recovery image". Puo' essere necessario lanciare questi comandi come root. Da prove fatte e' sicuramente necessario per:
  • fastboot
  • adb devices (quando in recovery mode)
  • adb push (quando in recovery mode)
Questi comandi devono essere lanciati da una console Linux quando il tablet e' collegato tramite cavo USB.
Le ultime versioni di Android usano il protocollo MTP per il collegamento ai PC host (pessima scelta), quindi sara' necessario avere installato la libreria libmtp e gli mtp-tools (Commandline utilities for access to MTP Players) sul proprio PC Linux. Meglio avere anche mtpfs (FUSE filesystem that supports MTP devices), che puo' essere comodo per montare il dispositivo (quest'ultimo per OpenSuse e' disponibile nella repositry Packman). Alcuni siti indicano anche la necessita' di creare un file /etc/udev/rules.d/69-libmtp.rules:
  SUBSYSTEM!="usb_device", ACTION!="add", GOTO="libmtp_rules_end"
  # ASUS Google Nexus 7
  SYSFS{idVendor}=="18d1", SYSFS{idProduct}=="4e42", SYMLINK+="libmtp-%k", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1", MODE="666"
  LABEL="libmtp_rules_end"

Dispositivi MTP su linux
Ho trovato delle indicazioni di aggiungere anche:
  SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"
Ma non ho ancora provato cosa comporti.

Preparazione del Tablet

Nella schermata Impostazioni/Informazioni, fare click per 7 volte sul "Numero di build". Questo attiva il menu Impostazioni/OpzioniSviluppatore. Nel menu Impostazioni/OpzioniSviluppatore, attivare "Debug USB".

Backup del Tablet

E' consigliabile fare un backup del dispositivo, che puo' essere effettutato tramite i comandi ADB dell'Android SDK:
  # adb kill-server
  # adb start-server
  # adb devices
  # adb backup –apk –shared –all –f mybackup.ab

Sblocco del Bootloader (rooting)

Il bootloader default del Nexus 7 non permette l'installazione di software a root level. Per sbloccarlo fortunatamente e' previsto un semplice comando, presente nei tool di sviluppo Android SDK. Questo comando pero' cancella tutte le impostazioni personali presenti nel tablet. E' possibile salvare le impostazioni personali utilizzando ADB (Android Debug Bridge) prensente nell'Android SDK per fare un backup prima dell'operazione ed un ripristino dopo l'operazione (procedura non descritta qui). Per sbloccare il bootloader:
  # adb kill-server
  # adb start-server
  # adb devices
  # adb reboot bootloader
  # fastboot oem unlock
Alla fine dell'esecuzione del comando "fastboot oem unlock", nella schermata bootloader con il robottino Android sdraiato a sportello aperto, in fondo appare la piccola scritta:
  LOCK STATE - UNLOCKED

A questo punto il dispositivo e' "rooted". E' possibile ora installare una "Custom Recovery Image" e/o programmi di gestione dei permessi di root come SuperSU. L'installazione di una "Custom Recovery Image" non e' necessaria se non si desidera installare zip files direttamente dalla recovery.

Installazione di una "Custom Recovery Image"

La "Recovery Image" e' un programma che gira sul tablet in alternativa al sistema Android principale e permette di effettuare operazioni di base a livello root. Quella fornita per default permette di fare poco (cancellare la cache e i dati personali e poco altro). Ne sono state sviluppate altre che permettono hacking piu' avanzato, ed in particolare di installare applicazioni zip come root:
Probabilmente ne esistono anche altre. Io ho scelto di usare la TWRP for Nexus 7 3G:
openrecovery-twrp-2.4.1.0-tilapia.img
MD5sum: 463a4c80d9938f3691ac738cead09f42
Controllo la MD5sum con il comando:
  md5sum openrecovery-twrp-2.4.1.0-tilapia.img
poi:
  # adb kill-server
  # adb start-server
  # adb devices
  # adb reboot bootloader
  # fastboot flash recovery openrecovery-twrp-2.4.1.0-tilapia.img
(fastboot deve essere lanciato come root, altrimenti si blocca su < waiting for device >)
  fastboot flash recovery openrecovery-twrp-2.4.1.0-tilapia.img
  sending 'recovery' (7228 KB)...
  OKAY [  0.912s]
  writing 'recovery'...
  OKAY [  0.631s]
  finished. total time: 1.543s
Selezionare con i tasti di volume up/down la voce "Restart Bootloader" e premere power per confermare. Selezionare con i tasti di volume up/down la voce "Recovery Mode" e premere power per confermare.
Il sito web di TWRP consiglia di seguire questi passi:
  The stock ROM will automatically replace TWRP with the stock recovery.  To prevent the stock ROM from replacing TWRP, boot TWRP, go to the mount menu and mount system, press the home button, then press Advanced -> File Manager.  Browse to /system and select the file named recovery-from-boot.p then choose to rename the file to recovery-from-boot.bak
Io pero' ho trovato il file gia' rinominato in recovery-from-boot.bak

** Provare a ravviare il dispositivo con la voce Reboot/System di TWRP **

ClockWork vs. TeamWin

In seguito ho deciso di provare la ClockWork ROM Manager Recovery Image perche' piu' diffusa e utilizzata dagli hacker di XDA Developers. La TWRP ha un interfaccia piu' bella, ma la CWM e' piu' usata e viene riferita come piu' stabile e utilizzabile per gli aggiornamenti Over The Air (OTA).
  # adb kill-server
  # adb start-server
  # adb devices
  # adb reboot bootloader
  # fastboot flash recovery recovery-clockwork-touch-6.0.2.3-tilapia.img
  fastboot flash recovery recovery-clockwork-touch-6.0.2.3-tilapia.img
  sending 'recovery' (6604 KB)...
  OKAY [  0.825s]
  writing 'recovery'...
  OKAY [  0.601s]
  finished. total time: 1.427s
Selezionare con i tasti di volume up/down la voce "Restart Bootloader" e premere power per confermare. Selezionare con i tasti di volume up/down la voce "Recovery Mode" e premere power per confermare.
La ClockWork pero' non mi piace per niente perche' e' molto grezza. Sono quindi tornato alla TeamWin, e se qualcosa non funzionera', installero' la ClockWork.

Installazione di SuperSU

SuperSU e' un programma che permette di abilitare l'esecuzione dei programmi come root nel sistema Android. Dalla pagina SuperSU Page si puo' scaricare lo ZIP.
Da dispositivo acceso e collegato al PC, lanciare (come root):
  adb reboot recovery
  adb push UPDATE-SuperSU-v1.04.zip /sdcard/UPDATE-SuperSU-v1.04.zip
Sul tablet:
  • Cancellare (Wipe) la Dalvik-Cache nel Wipe Menu
  • Menu Install, selezionare /sdcard/UPDATE-SuperSU-v1.04.zip
  • Confermare il flashing del file .zip
  • Attendere la fine del file flashing, e se ha successo fare il reboot

Installazione di una Android OTA Update

Su dispositivo con root sbloccato l'installazione delle update OTA (Over The Air) di Android sono un po' piu' laboriose.
  • install Voodoo OTA RooterKeeper (da Google Play)
  • Voodoo OTA RooterKeeper: create a su backup with "Protect Root"
  • Voodoo OTA RooterKeeper: click on Temp. un-root
  • install the OTA upgrade
Se sono state installati file zip di patch che abbiano modificato file di sistema (non e' il caso di SuperSU) sara' necessario PRIMA della update ritornare alla situazione di stock del sistema.

** Problema incontrato **
Alla prima OTA che ho installato sul dispositivo rooted (Android 4.2.2) il tablet non si e' riavviato da solo. Il problema era dovuto alla cache del google framework: in impostazioni/applicazioni/tutte seleziono "google framework", termino e cancello i dati, poi vado in impostazioni/info/aggiornamenti e clicco su "verifica ora". L'aggiornamento viene scaricato, il tablet si riavvia e l'installazione va a buon fine.
Dopo il riavvio:
  • aprire Voodoo OTA RooterKeeper
  • Restore Root
Voodoo OTA RooterKeeper funziona anche con SuperSU versione free installato. La versione PRO di SuperSU ha una sua opzione per tenere i permessi di root durante gli aggiornamenti, ed e' meglio non usarla insieme a Voodoo OTA RooterKeeper.

** NOTA **
 L'OTA 4.2.2 ha ripristinato la recovery originale.


Nessun commento:

Posta un commento