Howto Installazione Maemo SDK Nokia 770

Da PtLUG Wiki.
Jump to: navigation, search

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:

L'intera toolchain di sviluppo è stata testata in particolare su alcune versioni di entrambi i software, quindi si consiglia di reperire i seguenti pacchetti:

[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.

Resume

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox