Caratteristiche:
Questo l'elenco delle applicazioni installate dal Market Android:
dropbear
) e qualche tool tipo busybox
. Vedere questo articolo.Spengimento
Tenere premuto il pulsante di accensione fino alla comparsa del menu Silent mode, Airplane mode, Power off.
boot-loader mode
Dopo aver spento il telefono, tenere premuto Volume up mentre si preme il tasto di accensione.
USB debuggging
Da Settings, Applications, Development.
Occorre installare un file manager (ad es. Astro o File Expert vanno bene, ma non è software libero) e abilitare Impostazioni → Applicazioni → Origini sconosciute (Applications → Unknown sources).
Dal PC si carica il file .apk
via cavetto USB (modalità USB-storage) ad esempio nella cartella ReceivedFiles
della memoria SD. Anche nel Nexus S la memoria “saldata” viene comunque vista come scheda SD.
Quindi dal file manager selezionando il file .apk è possibile procedere all'installazione.
In alternativa vedere l'articolo How to Manually Install .APK Files on Android Smartphones che spiega come utilzzare il comando adb install file.apk
fornito dal SDK Android.
NOTA: La piattaforma ufficiale per lo sviluppo Android è adesso (ottobre 2016) Android Studio, per istruzioni aggiornate vedere gli appunti Android, quello che segue è da considerarsi obsoleto. Ad esempio sembra che non sia più possibile scaricare l'SDK o i Platform Tools come archivi separati.
L'Android SDK è indispensabile per diverse operazioni, ad esempio per sbloccare il boot loader (per guadagnare l'accesso root) oppure per catturare le schermate con l'utility ddms
Dal sito SDK Android, scaricare l'Android SDK starter package:
android-sdk_r16-linux.tgz
. Lo si può scompattare direttamente nella propria home directory, ad esempio $HOME/android/
.
Dal sito SDK Android, scaricare l'ADT (Android Developer Tools) Boundle: adt-bundle-linux-x86-20130717.zip
. Lo si può scompattare direttamente nella propria home directory, creando nel nostro caso $HOME/adt-bundle-linux-x86-20130717/
.
Eseguire i comandi dell'SDK entrando in $HOME/adt-bundle-linux-x86-20130717/sdk/
.
Si esegue tools/android
e si installano gli Android SDK Platform-tools (richiede la connessione internet). Questa procedura scarica nella stessa directory i tool appropriati alla propria piattafroma. Tra gli eseguibuili che verranno scaricati ci sono fastboot
, adb
, ecc.
Sul telefoninio si attiva: Impostazioni → Applicazioni → Sviluppo → Debug USB, quindi si collega il cavetto USB. Sul PC si prende nota dell'ID USB:
lsusb Bus 001 Device 006: ID 18d1:4e22 Google Inc. Nexus S (debug)
Conviene aggiungere una regola udev
, così quando il telefonino è collegato alla porta USB viene creato il device con i permessi giusti. Si crea un file /etc/udev/rules.d/z90-local.rules
:
# Android phone: Google Inc. Nexus S (debug) SUBSYSTEMS=="usb", ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4e22", MODE="0666"
Infine si esegue /etc/init.d/udev reload
.
In generale i passaggi effettuati per avere il maggior controllo possibile del proprio telefonino Android sono i seguenti:
su
(Superuser). Questo consente di eseguire dei programmi con i privilegi di root. Android infatti nella sua versione predefinita non consente di eseguire programmi con tali privilegi.Riferimenti
Software
su
al sistema operativo.Attenzione! La procedura di sblocco del boot loader cancella tutti i dati personali dal telefono, fare un backup dei dati della memoria SD, annotarsi le impostazioni fatte e le applicazioni installate. Se sono attive le opzioni Impostazioni → Privacy → Backup dei miei dati → Ripristino automatico e Impostazioni → Account e sincronizzazione, allora alcune impostazioni vengono recuperate automaticamente quando si reinstalla un'applicazione, ma la procedura è tutt'altro che completa e chiara.
LOCK STATE - LOCKED
il boot loader deve essere sbloccato.STANDARD_SET_CONFIGURATION
), sul PC eseguire come root il comando: platform-tools/fastboot devices
Se il telefono risulta collegato, è possibile eseguire sempre come root
platform-tools/fastboot oem unlock
Viene chiesta conferma tramite tasti Volume e Power.
Cosa viene recuperato in automatico dal backup di Google:
Cosa non viene recuperato:
Scaricare il file recovery-clockwork-6.0.1.0-crespo.img, un'immagine per il recovery mode alternativo all'originale, specifico per il Nexus S.
Come salvare la recovery predefinita, quella con il triangolo e il punto esclamativo?
Sul telefonino entrare nella schermata del boot loader accendendolo con i tasti Volume Up e Power. Sul PC eseguire come root:
fastboot flash recovery recovery-clockwork-6.0.1.0-crespo.img
D'ora in poi - scegliendo l'opzione RECOVERY
del boot loader - si attiva la schermata del ClockworkMod Recovery:
ClockworkMod Recovery v.2.5.1.8 - reboot system now - apply sdcard:update.zip - wipe data/factory reset - wipe cache partition - install zip from sdcard - backup and restore - mounts and storage - advanced - +++++Go Back+++++
ATTENZIONE! Vedere avanti la versione aggiornata 3.2!
Scaricare il file Superuser-3.0.7-efghi-signed.zip e copiarlo nella SD memory del telefonino. Riavviare il telefonino nella ClockworkMod Recovery e scegliere install zip from sdcard.
Dopo aver riavviato il telefonino, ogni applicativo che ha bisogno di accesso privilegiato presenterà la schermata di richiesta autorizzazioni, vede ad esempio in figura la richiesta di File Expert. La risposta viene salvata in modo da essere utilizzata in futuro.
Arrivati all'aggiornamento Android 4.1.1 Jelly Bean avevamo ancora l'eseguibile /system/bin/su
versione 3.0.3.2 che pare non vada più bene. Infatti alcune applicazioni risultavano registrate e autorizzate, ottenendo i privilegi di root automaticamente, altre invece fallivano silenziosamente senza presentare il prompt di richiesta autorizzazione.
Anche nella finestra dell'Emulatore terminale si aveva questo comportamento anomalo, senza che venisse presentata la finestra con la richiesta di autorizzazione:
$ su -c id root Permission denied
mentre funzionava senza prompt (quindi evidentemente l'operazione era stata autorizzata in precedenza):
$ su # id uid=0(root) god=0(root)
Il problema si è risolto aggiornando l'eseguibile su
con il pacchetto Superuser-3.2-arm-signed.zip. È necessario riavviare in modalità recovery e installare da file .zip. Da questo momento in poi l'applicazione Superuser è tornata funzionante, e - avendo impostato l'opzione Sicurezza → Risposta automatica → Chiedi - ogni volta che un programma ha bisogno dei privilegi di root viene presentato il dialog box di autorizzazione.
ATTENZIONE: la funzione Root Explorer è stata rimossa dalla versione gratuita di File Expert (certamente nella versione 4.2.2), adesso è necessario acquistare la Pro Key.
Ad esempio con File Expert si imposta la funzione Menu → Altro → Configura → Impostazioni della navigazione → Root Explorer. In questo modo - se all'applicazione viene concesso il permesso su - sarà possibile vedere il contenuto di alcune directory di sistema, altrimenti inaccessibili.
Un esempio è l'accesso ai file di Navit (bookmark, ecc.), basta sfogliare la directory /data/data/org.navitproject.navit/home/
della memoria interna, che altrimenti risulta inaccessibile.
Con ES File Explorer attivare le seguenti opzioni:
Avendo installato l'SDK sul PC ed avendo abilitato il debug USB è possibile ottenere una shell sul telefonino:
./platform-tools/adb shell $ su # id uid=0(root) gid=0(root) groups=1003(graphics),1004(input),1007(log),... # cat /proc/cpuinfo Processor : ARMv7 Processor rev 2 (v7l) BogoMIPS : 99.40 Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x2 CPU part : 0xc08 CPU revision : 2 Hardware : herring Revision : 0034 Serial : 38353d90950e00ec
Dopo aver installato busybox si scopre che la risoluzione dei nomi DNS non funziona, ad esempio con wget
:
wget http://www.rigacci.org wget: bad address 'www.rigacci.org'
Questo perché le librerie utilizzate da Android per la risoluzione dei nomi non sono le stesse utilizzate da busybox
.
Per fortuna è sufficiente creare il file /etc/resolv.conf
per abilitare il tradizionale resolver. Dopo essere entrati con la adb shell
ed aver guadagnato i privilegi di root, si vede che /etc
è un link a /system/etc
, montata read-only. Dopo aver verificato con mount
il nome del device, è possibile ottenere accesso in lettura/scrittura:
mount -o rw,remount /dev/block/platform/s3c-sdhci.0/by-name/system /system
Nel file /etc/resolv.conf
si possono indicare due DNS liberi di Google:
nameserver 8.8.8.8 nameserver 8.8.4.4
Ripristinare il filesystem in sola lettura al termine dell'operazione.
Una mattina il telefono mi avverte che è disponibile l'aggiornamento alla versione 2.3.6, in effetti so che esiste anche l'aggiornamento alla versione 4, ma suppongo che si debba fare un passo per volta. Il file di 17 mega è arrivato OTA (On The Air), ma non si sa in quale directory è stato salvato. Accetto l'installazione.
Il telefono si riavvia e compare l'icona di una scatolina che si apre, una barra di avanzamento fa capire che il processo è in corso. Dopo pochi istanti si blocca tutto e compare un'icona triangolare con punto esclamativo: mi tocca rimuovere la batteria.
Al boot successivo nessuna traccia dell'aggiornamento, anche dal menu Impostazioni, Info sul telefono, Aggiornamento sistema risulta aggiornato, sebbene la versione sia sempre la 2.3.4.
Dopo qualche giorno l'aggiornamento OTA ci riprova, ma con lo stesso risultato negativo. Probabilmente il fallimento è dovuto al fatto che il mio telefono ha il boot loader sbloccato oppure al fatto che ho sostituito la recovery originale con la ClockworkMod.
Googolando un po' trovo il file .zip con l'aggiornamento specifico per il mio Nexus S, lo scarico e lo salvo nella radice della sdcard con il nome update.zip
. Spengo il telefono e lo riaccendo con i tasti Vol-up e Power, dal boot menu entro nella recovery ClockworkMod. Qui scelgo l'opzione di installare la update.zip
e finalmente l'aggiornamento va a buon fine.
Ecco una copia salvata dell'update.zip.
Ci sono però due inconvenienti: la recovery ClockworkMod è stata cancellata (sovrascritta dalla recovery originale Android) e il comando su
ha smesso di funzionare (non ha più i permessi SETUID e SETGID). Anzi la situazione è ancora peggiore: se installiamo una recovery alternativa (es. ClockworkMod), questa viene sostituita dall'originale ad ogni reboot, per colpa dello script /etc/install-recovery.sh
.
Per venire a capo della situazione questa è la ricetta:
fastboot
dell'SDK flashare la recovery ClockworkMod (vedi sopra).
Al termine di questa operazione avremo su
funzionante, ma la recovery ripristinata originale. Bisogna disattivare lo script /etc/install-recovery.sh
. Aprire una shell eseguento l'applicazione Emulatore terminale oppure adb shell
dall'SDK, guadagnare i privilegi di root, montare il filesystem in lettura/scrittura e rinominare install-recovery.sh
:
$ su # mount -o remount,rw /dev/block/platform/s3c-sdhci.0/by-name/system /system # mv /etc/install-recovery.sh /etc/install-recovery.sh.bak # mount -o remount,ro /dev/block/platform/s3c-sdhci.0/by-name/system /system
A questo punto potremmo finalmente installare la nostra recovery ClockworkMod in modo permanente. Possiamo usare il metodo tradizionale con fastboot
(vedi sopra) oppure utilizzare l'applicativo ROM Manager che si occupa di trovare la versione più aggiornata disponibile (nel mio caso la 5.0.2.0). Il programma ROM Manager chiede conferma del modello di telefono, nel mio caso ho indicato Google Nexus S.
Volendo salvare l'immagine ClockworkMod scaricata da ROM Manager (ad esempio per poterla flashare in futuro da PC con il tool Android fastboot
come indicato sopra), basta andare a cercare il file nella directory /sdcard/clockworkmod/download
. Dovrebbe essere un file di circa 4 Mb. Ecco un modo per portarlo sul PC con il tool Android adb
:
./platform-tools/adb pull /sdcard/clockworkmod/download/1467945360 recovery-clockwork-5.0.2.0-crespo.img
Una mattina il telefono mi avverte che è disponibile l'aggiornamento alla versione 4.0.4 (Ice Cream Sandwitch). Il file di circa 128 Mb è arrivato OTA (On The Air) ed è stato salvato nel file /cache/fL9fwa99.zip
. Viene proposta l'installazione, ma questa non va a buon fine, probabilmente perchè ho la recovery ClockworkMod invece di quella originale Android.
Per effettuare l'installazione copio il file fL9fwa99.zip
nella directory /sdcard/
, spengo il telefono e lo riaccendo con i tasti Vol-up e Power, dal boot menu entro nella recovery ClockworkMod e qui scelgo l'opzione install zip from sdcard. Tutto pare procedere correttamente.
Ovviamente dopo l'aggiornamento si è perso il privilegio di root e la recovery ClockworkMod non funziona più (compare l'icona di un robottino Android morto con triangolo rosso e tocca rimuovere la batteria). Per ripristinare accesso root e ClockworkMod si esegue la procedura di 4 passaggi più uno indicata nel paragrafo precedente.
Nell'aggiornamento viene mantenuto il file /etc/resolv.conf
personalizzato (vedi sopra riguardo busybox
).
ash
ad ogni comando compare il messaggio di errore ash: precmd: not found
.L'aggiornamento sul telefonino Nexus S è stato proposto automaticamente On The Air, scaricato nottetempo via connessione 3G (115 Mb). L'installazione automatica non è stata provata, probabilmente sarebbe fallita a causa dell'installazione della Recovery non originale ClockWorkMod. Quella che segue è la procedura manuale di aggiornamento, necessaria a mantenere la Recovery ClockWorkMod e i permessi di Superuser.
Accertarsi di avere installato sul PC l'SDK Android ed avere sul PC l'immagine della recovery ClockWorkMod. In pratica sul PC occorre avere i seguenti file:
platform-tools/fastboot
recovery-clockwork-5.0.2.0-crespo.img
Copiare nella sdcard i seguenti file:
9ZGgDXDi.zip
, il file viene scaricato On The Air automaticamente in /cache/
, bisogna copiarlo in /sdcard/
Superuser-3.0.7-efghi-signed.zip
pare funzionare correttamente anche sulla versione j
(4.1.1, Jelly Bean).Conviene aver installato sul telefonino anche il programma ROM Manager dal Play Store di Google.
Vol-up
+Power
. Con i tasti Vol
si sceglie RECOVERY
e si conferma con Power
, si sceglie install zip from sdacard, quindi si indica il file 9ZGgDXDi.zip
. Al termine fare un reboot del telefono e far completare l'aggiornamento.Vol-up
+Power
, quindi dal PC collegato via USB lanciare ./platform-tools/fastboot flash recovery recovery-clockwork-5.0.2.0-crespo.img
Servono i privilegi di root o comunque i permessi sul device USB.
su
installato per poter eseguire i programmi con privilegi di amministratore è andato perso con l'aggiornamento. Senza neanche riavviare il telefono, entrare nella modalità Recovery appena ripristinata e scegliere install zip from sdcard, quindi indicare il file Superuser-3.0.7-efghi-signed.zip
. Al termine riavviare il telefonino./etc/install-recovery.sh
. Un sistema per disabilitare questa funzione è illustrato sopra, altrimenti usando il programma ROM Manager i passaggi sono questi:
Arrivato On The Air l'aggiornamento di 15 Mb circa: 9U4MCfNt.zip
. Bisogna spostarlo dalla directory /cache/
a /sdcard/
.
Con la recovery ClockworkMod 6 è possibile fare l'installazione senza perdere la recovery e l'accesso root.
In pratica si entra in modalità recovery e si installa il file 9U4MCfNt.zip
dalla sdcard. Quando si sceglie di riavviare il telefono, ClockworkMod 6 chiede se preservare la recovery attuale (cioè viene disabilitata la funzione di ripristino della recovery ad ogni reboot di Android) e riabilitare i permessi di su
(accesso root).
In caso qualcosa andasse storto (recovery, accesso root) è necessario recuperare i seguenti file ed eseguire la procedura descritta sopra per l'aggiornamento a 4.1.1:
9U4MCfNt.zip
Superuser-3.2-arm-signed.zip
platform-tools/fastboot
recovery-clockwork-6.0.1.0-crespo.img