| « makedroid | Google verso il web semantico? » |
Android sul FreeRunner
Questi sono i miei appunti personali su come ho fatto per avere Android funzionante sulla uSD del mio FreeRunner, non posso assicurare che ad altri funzionino né che non facciano esplodere il vostro FreeRunner o altre cose non belle.
Prima ancora di iniziare ringrazio Treviño e l'autore del messaggio "Android on SD card" postato in ML community di openmoko.
Al termine di questa procedura non avremo un sistema completamente funzionante sul nostro FreeRunner, sarà necessario disabilitare la richiesta del PIN, non avremo una tastiera per scrivere messaggi, il bluetooth non l'ho ancora provato ma non credo funzioni, per chiamare un numero l'unico modo è recuperarlo dall'elenco delle chiamate ed altre oscenità del genere. È solo una prova per ora, ma credo che per me sia giunto il momento di provare Android.
Follow up:
Prima di tutto vediamo la situazione software del pc e del FreeRunner che sono stati usati per questo esperimento:
- Il fisso:
- Sistema Operativo: Archlinux aggiornato al 20090115
- i software installati (solo quelli utilizzati in questa guida):
- openssh
- dfu-util-svn
- openmoko-usb-networking
- Il FreeRunner:
- Sistema Operativo: SHR testing aggiornato al 20090115
- scheda uSD da 512Mb in dotazione mai formattata
Per prima cosa dobbiamo sapere che è necessario avere un bootloader in grado di avviare kernel con dimensioni maggiori di 2Mb, potete quindi scegliere tra una versione recente di U-Boot oppure Qi, un bootloader di nuova generazione per il FreeRunner. Io ho scelto il secondo.
Prima di usare dfu-util ricordo che è necessario entrare nell'U-Boot nella NOR Flash per poter scrivere il bootloader della NAND questi sono dunque i passaggi da fare:
$ wget http://people.openmoko.org/andy/qi-s3c2442-master_a2d11c4dd18c9517.udfu $ su # dfu-util -a u-boot -R -D qi-s3c2442-master_a2d11c4dd18c9517.udfu
Oggi (20090115) questi comandi funzionano, nel caso Andy dovesse rilasciare una nuova versione di Qi molto probabilmente cambierà anche il link da cui scaricaere il bootloader, basterà quindi andare su http://people.openmoko.org/andy/ prendere l'indirizzo di qi-s3c2442* (per il FreeRunner) e modificare di conseguenza i comandi. Proviamo a riavviare per vedere se tutto funziona correttamente e dovremmo ritrovare la nostra vecchia SHR ad aspettarci.
Ora avete un'altra scelta da fare: installare Android su uSD o sulla flash del cellulare? Dal momento che io volevo mantenere la mia installazione di SHR funzionante per poter continuare a sviluppare enotes ho deciso di installare su uSD, ecco quindi che sul wiki di openmoko si trovano le istruzioni su come installare 'Android onSDcard'.
A questo punto prepariamo la nostra schedina con almeno una partizione ext3 come diceva la mail citata all'inizio del post; per poter installare Android la situazione finale sul FreeRunner dovrebbe essere molto simile a questa:
$ fdisk /dev/mmcblk0 Device Boot Start End Blocks Id System /dev/mmcblk0p1 1 7630 244152 83 Linux /dev/mmcblk0p2 * 7631 15568 254016 83 Linux
Per ottenere questo è sufficiente avviare SHR, collegarsi al FreeRunner via ssh e usare fdisk su /dev/mmcblk0 dopo aver smontato la scheda da /media/card/.
$ ssh root@192.168.0.202 $ mount $ umount /media/card $ fdisk /dev/mmcblk0 n p 1 [ENTER] +250M n p 2 [ENTER] [ENTER] a 2 v w q $ reboot
Utilizzo il comando mount iniziale per sapere con precisione il device della scheda di memoria, nel mio caso /dev/mmcblk0. [ENTER serve per scegliere l'opzione di default proposta da fdisk, a per rendere la seconda partizione bootabile (sarà quella in cui salveremo la rootfs e il kernel di Android. Al termine riavvio per permettere al FreeRunner di rileggere la tabella delle partizioni in tutta tranquillità.
Devo qui ricordare che fdisk non crea anche il filesystem ma solo la tabella delle partizioni, per creare anche il filesystem occorrono i comandi seguenti:
$ mkfs.vfat /dev/mmcblk0p1 $ mkfs.ext3 /dev/mmcblk0p2
Siamo giunti al gran finale: adesso scaricheremo l'immagine compressa di Android da http://activationrecord.net/radekp/openmoko/android/ e andremo a scompattare l'archivio nella partizione ext3 appena creata:
$ cd $ wget http://activationrecord.net/radekp/openmoko/android/rootfs.tar.gz $ mount /dev/mmcblk0p2 /mnt/ $ cd /mnt/ $ tar xzvf ~/rootfs.tar.gz
Assicuriamoci di avere abbastanza spazio nella nostra $HOME (circa 40Mb) per poter scaricare l'archivio. A questo punto non resta che riavviare il FreeRunner e Qi si occuperà di avviare Android dalla uSD senza chiederci nulla.
$ reboot
..enjoy!