Howto Installazione Maemo SDK Nokia 770
Contents |
[edit] Introduzione
Maemo è una piattaforma di sviluppo opensource per i dispositivi palmari basati su Linux. Attualmente è la base del sistema operativo che è installato sul Nokia 770 e 800, ma potrebbe teoricamente essere adottata (con pochi cambiamenti) anche da altri dispositivi simili.
L'SDK mette a disposizione (oltre alle librerie ed al compilatore) un vero e proprio ambiente capace di emulare il dispositivo palmare finale, in modo da permettere allo sviluppatore di testare e debuggare sia i programmi che funzionano a riga di comando, sia quelli visuali.
L'ambiente grafico si basa su un vero e proprio X server, un window manager e sulle librerie GTK+ con un'estensione particolare che si chiama Hildon.
Tramite l'SDK di Maemo è possibile:
- Testare le applicazioni scritte per Maemo, utilizzando un normalissimo PC con Linux.
- Scrivere e debuggare applicazioni scritte da noi.
- Effettuare il porting di applicazioni esistenti scritte per Linux/GTK+ e verificarne il funzionamento.
- Compilare e preparare i pacchetti per la piattaforma ARMEL in modo da renderli installabili sul dispositivo finale.
[edit] Requisiti
Per lavorare con l'SDK di Maemo sono necessari i seguenti requisiti sul proprio PC:
- Un processore Intel compatibile (x86), da almeno 500 MHz
- 256 MB RAM
- 2 GB di spazio libero su hard disk
- Una distribuzione Linux (si consiglia Debian o Ubuntu)
Per quanto riguarda i pacchetti software necessari:
- Scratchbox: un toolkit che permette di compilare per piu' piattaforme, reperibile a questo indirizzo: http://www.scratchbox.org/download/scratchbox-apophis/
- Maemo SDK: reperibile a questo indirizzo: http://www.maemo.org/downloads/download-sdk.html
L'intera toolchain di sviluppo è stata testata in particolare su alcune versioni di entrambi i software, quindi si consiglia di reperire i seguenti pacchetti:
- scratchbox-core-1.0.7-i386.tar.gz
- scratchbox-libs-1.0.7-i386.tar.gz
- scratchbox-toolchain-cs2005q3.2-glibc-arm-1.0.5-i386.tar.gz
- scratchbox-toolchain-cs2005q3.2-glibc-i386-1.0.5-i386.tar.gz
- scratchbox-devkit-debian-1.0.6-i386.tar.gz
- scratchbox-devkit-cputransp-1.0.1-i386.tar.gz
- Maemo_Dev_Platform_v2.2_i386-rootstrap.tgz
- Maemo_Dev_Platform_v2.2_armel-rootstrap.tgz
[edit] Installazione di Scratchbox
Prima di iniziare l'installazione bisogna diventare root sulla propria macchina e poi posizionarsi nella directory / prima di scompattare i files. Per installare Scratchbox dobbiamo scompattare nella / i primi sei tar.gz che abbiamo scaricato:
su - cd / tar xfvz scratchbox-core-1.0.7-i386.tar.gz tar xfvz scratchbox-devkit-debian-1.0.6-i386.tar.gz tar xfvz scratchbox-libs-1.0.7-i386.tar.gz tar xfvz scratchbox-toolchain-cs2005q3.2-glibc-arm-1.0.5-i386.tar.gz tar xfvz scratchbox-toolchain-cs2005q3.2-glibc-i386-1.0.5-i386.tar.gz tar xfvz scratchbox-devkit-cputransp-1.0.1-i386.tar.gz
Nota: il Maemo SDK non deve essere scompattato nella cartella root, verrà spiegato in seguito dove posizionarlo.
Per prima cosa dobbiamo lanciare lo script di inizializzazione:
root@notebuntu:/# /scratchbox/run_me_first.sh Do you want to use sudo mode? [yes/no] (no): Give the name of the scratchbox group (sbox): The group 'sbox' does not seem to exist! Would you like me to create the group 'sbox' for you? [yes/no] (yes): Creating group "sbox"... Stopping Scratchbox: umount, binfmt_misc. Starting Scratchbox: binfmt_misc, mount. Now you should add one or more users with /scratchbox/sbin/sbox_adduser
A questo punto dobbiamo aggiungere il nostro utente a Scratchbox, con il seguente comando:
/scratchbox/sbin/sbox_adduser username
dove username è l'utente che utilizziamo sulla nostra macchina Linux. E' sufficiente rispondere alle domande utilizzando i valori proposti di default:
root@blackbull:/# /scratchbox/sbin/sbox_adduser andy80 Add user andy80 to group 'sbox'? [yes/no] (yes): Adding user `andy80' to group `sbox' ... Done. Scratchbox user account for user andy80 added
Nota: potrebbe essere necessario effettuare il logout dalla sessione corrente del sistema per fare in modo che le modifiche ai permessi/gruppi appena apportate abbiano effetto.
L'installazione di Scratchbox è completata. Sulla nostra macchina Linux dobbiamo aprire un terminale loggandoci con il nostru utente e poi eseguire il comando per effettuare il login dentro la Scratchbox:
andy80@notebuntu:~$ /scratchbox/login You dont have active target in scratchbox chroot. Please create one by running "sb-menu" before continuing Welcome to Scratchbox, the cross-compilation toolkit! Use 'sb-menu' to change your compilation target. See /scratchbox/doc/ for documentation. sb-conf: No current target [sbox-: ~] >
Dopo essersi loggati dentro la Scratchbox dobbiamo creare il file .bash_profile editandolo con vim ed inserendo le seguenti righe all'interno:
export LANGUAGE=en_GB export PAGER=less
Dopo essere usciti dalla Scratchbox, bisogna creare un link simbolico che ci permetterà di eseguire l'inizializzazione di Scratchbox ad ogni riavvio della propria macchina:
ln -s /scratchbox/sbin/sbox_ctl /etc/rc2.d/S20scratchbox
[edit] Installazione del Maemo SDK
Per prima cosa bisogna copiare i rootstrap scaricati, dentro la cartella /scratchbox/packages/
cp Maemo_Dev_Platform_v2.2_i386-rootstrap.tgz /scratchbox/packages/ cp Maemo_Dev_Platform_v2.2_armel-rootstrap.tgz /scratchbox/packages/
Questa operazione va fatta dall'esterno della Scratchbox, quindi senza essersi loggati. Dopo aver effettuato la copia dei due pacchetti, bisogna loggarsi di nuovo dentro Scratchbox.
[edit] Configurazione di Scratchbox
Le recenti versioni di Scratchbox dispongono di una utility chiamata sb-menu che facilita moltissimo la configurazione delle varie toolchain installate. Di seguito elencherò le funzionalità piu' importanti che abbiamo a disposizione una volta che l'abbiamo eseguita:
- Setup: permette di creare una nuova toolchain o di modificare una toolchain esistente.
- Install: si utilizza per installare pacchetti aggiuntivi all'interno di una toolchain.
- Rootstrap: si occupa di scompattare ed installare un nuovo rootstrap all'interno della toolchain.
- Select: ci permette di selezionare la toolchain attiva tra quelle che abbiamo configurato.
- Reset: reimposta la toolchain attiva.
- Remove: rimuove una toolchain tra quelle installate. Nota: non è possibile rimuovere una toolchain attiva, dobbiamo prima selezionarne un'altra.
- Show: visualizza le informazioni sulla toolchain attiva.
- KillAll: uccide tutti i processi attivi all'interno della toolchain.
[edit] Configurazione toolchain i386
Per configurare la toolchain per il target i386 sono necessari i seguenti passaggi:
- Selezionare la funzione Setup
- Selezionare "Create a new target"
- Come nome specificare: SDK_PC
- Come compilatore scegliamo: cs2005q3.2-glibc-i386
- Come devkits selezioniamo debian e poi selezioniamo DONE
- CPU Trasparency: scegliamo none
- Alla richiesta di estrarre il rootstrap per il target corrente, selezioniamo Yes e poi inseriamo il percorso completo dove abbiamo scaricato il Maemo rootstrap 2.2 per i386. Nota: la versione di sb-menu da me provata ha un piccolo bug che impedisce di navigare correttamente le cartelle del disco e di selezionare il rootstrap, è necessario quindi fare copia-incolla del percorso nella casella apposita.
- Infine ci viene chiesto se vogliamo installare dei files: selezioniamo Yes ed in seguito selezioniamo tutte le caselle disponibili, e confermando la scelta.
[edit] Configurazione toolchain armel
Per configurare la toolchain per il target armel sono necessari i seguenti passaggi:
- Selezionare la funzione Setup
- Selezionare "Create a new target"
- Come nome specificare: SDK_ARMEL
- Come compilatore scegliamo: cs2005q3.2-glibc-arm
- Come devkits selezioniamo debian ed anche cputransp e poi selezioniamo DONE
- CPU Trasparency: scegliamo qemu-arm-0.8.1-sb2
- Alla richiesta di estrarre il rootstrap per il target corrente, selezioniamo Yes e poi inseriamo il percorso completo dove abbiamo scaricato il Maemo rootstrap 2.2 per armel. Nota: la versione di sb-menu da me provata ha un piccolo bug che impedisce di navigare correttamente le cartelle del disco e di selezionare il rootstrap, è necessario quindi fare copia-incolla del percorso nella casella apposita.
- Infine ci viene chiesto se vogliamo installare dei files: selezioniamo Yes ed in seguito selezioniamo tutte le caselle disponibili, e confermando la scelta.
[edit] Installazione di Xephyr
Per fare girare le applicazioni grafiche scritte per Maemo, abbiamo bisogno di avviare un'interfaccia grafica ed un mini X server che faccia da contenitore per la nostra applicazione. Nel nostro caso utilizzeremo Xephyr che è preinstallato nel rootstrap di Maemo.
Per eseguirlo, occorre creare un file dall'esterno della Scratchbox, ovvero senza esserci loggati dentro. Il file deve chiamarsi start-xephyr.sh ed all'interno dobbiamo scriverci:
#!/bin/sh -e
prefix=/scratchbox/users/${LOGNAME}/targets/SDK_PC/usr
export LD_LIBRARY_PATH=${prefix}/lib; export LD_LIBRARY_PATH
exec ${prefix}/bin/Xephyr :2 -host-cursor -screen 800x480x16 -dpi 96 -ac
E' consigliabile creare questo file dentro la directory /scratchbox/
Dobbiamo poi renderlo eseguibile con il seguente comando:
chmod +x start-xephyr.sh
Per lanciarlo dobbiamo (sempre dall'esterno della Scratchbox, e come utente non-root) eseguire il seguente comando:
/scratchbox/start-xephyr.sh &
dovrebbe apparire la finestra di Xephyr.
Una volta lanciato Xephyr, dobbiamo avviare l'interfaccia grafica di Maemo. Per farlo dobbiamo loggarci di nuovo dentro Scratchbox e poi eseguire questi due comandi:
export DISPLAY=:2 af-sb-init.sh start
L'interfaccia di Maemo dovrebbe avviarsi regolarmente. Adesso sarà possibile far girare anche le applicazioni che richiedono l'interfaccia grafica.
Nota: al primo avvio ho riscontrato dei problemi nell'avvio di Xephyr, relativi ad un errore di "Maemo Launcher". Riavviando il PC il problema è scomparso, quindi per adesso non posso essere piu' preciso su come risolvere il problema.
[edit] Riferimenti Utili
Di seguito una lista di siti web dal quale ho tratto spunto per scrivere questa guida:
[edit] Autore
Questa guida è stata scritta da Andrea Grandi.