Howto Installazione Maemo SDK Nokia 770
Da PtLUG Wiki.
Contents |
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.
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
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
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.
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.
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.
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.
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.
Riferimenti Utili
Di seguito una lista di siti web dal quale ho tratto spunto per scrivere questa guida:
Autore
Questa guida è stata scritta da Andrea Grandi.

