Sei sulla pagina 1di 23

Il “Telefoninux”

ARTS Laboratory - Dept. DIMET - University “Mediterranea” of Reggio Calabria –


ITALY
Antonella Zurzolo ­ yashi@email.it Slide 1 /
COS'È OPENMOKO

➢Un progetto

➢Una società

➢Un cellulare, Neo FreeRunner o GTA02

➢Un sistema operativo per cellulari

Antonella Zurzolo ­ yashi@email.it Slide 2 /
NASCITA DI OPENMOKO-1

➢Sean Moss-Pultz diventa Product Manager di una società (FIC -


First Inetrnational Computer) che si occupa della costruzione di
telefoni GSM

➢É seguace del software libero, e per sua ammissione aveva due


forti “crucci”:
➣ Non è quasi mai possibile aggiornare il software del proprio
telefono (va spesso ricomprato per avere le novità)
➣ Le piattaforme mobili sono (erano) quasi tutte proprietarie,
frammentate ed incompatibili tra loro.
➣ Non è sempre facile programmare queste periferiche o creare
programmi che funzionino su di esse.

➢Ma, nonostante i produttori di hardware abbiano creato


ognuno un proprio sistema, il mondo GSM ha degli elementi
positivi:
➣ Il GSM è totalmente standardizzato e lo standard viene definito da
un consorzio
➣ Il funzionamento è uguale in quasi tutto il Globo
Antonella Zurzolo ­ yashi@email.it Slide 3 /
NASCITA DI OPENMOKO-2

➢Da queste considerazioni nasce un nuovo dipartimento


della FIC, che ha come obiettivi:
➣ ignorare le tendenze di mercato per crearsi un proprio
spazio
➣ permettere agli utenti di crearsi la proprie applicazioni
➣ creare una piattaforma hardware con specifiche pubbliche
che sia supportato da software Open Source
➣ creare un sistema di sviluppo uniforme

➢Nella filosofia del FLOSS nasce OpenMoko, acronimo di


“Open Mobile Kommunications”

➢Si inizia a progettare lo stack telefonico e l'interfaccia


da usare nelle future periferiche

Antonella Zurzolo ­ yashi@email.it Slide 4 /
IL Neo FreeRunner - Hardware
➢Processore
a 400 MHz
Samsung S3C2442B B54

➢RAM 128MB SDRAM

➢2 Memorie Flash
➣ 256
➣ 16MBit di NOR, non accessibile in
scrittura, ma solo in lettura `

Modem GSM triband che include il GPRS,


➢modello Texas Instruments Calypso based

➢Modulo WiFi Accton WLAN 802.11b/g

➢Modulo Bluetooth

➢AGPS- GPS

➢Due soli pulsanti

➢Chip di accelerazione grafica

➢Schermo touchscreen di tipo resistivo


2 Accelerometri per permettere al telefono
➢di riconosere il proprio orientamento

Antonella Zurzolo ­ yashi@email.it Slide 5 /
Le distribuzioni Openmoko -
caratteristiche

➢Basate tutte su un framework comune, FreeSmartphone

➢Progettate per funzionare su vari dispositivi mobili

➢Sono distribuzioni GNU/Linux

➢Installabili in dual-boot!!!

➢ La maggior parte usano lo stesso bootloader, kernel, ed anche stessi


driver
➣ Alcuni bug di basso livello sono comuni a tutte le distribuzioni
➣ Le distribuzioni più recenti li risolvono, pur aggiungendone di nuovi

➢L’upgrade di una distribuzione spesso non viene testato, quindi fare


l’upgrade può portare ad avere pacchetti distrutti o un sistema non in
grado di fare boot

➢Ogni distribuzione ha più versioni

Antonella Zurzolo ­ yashi@email.it Slide 6 /
Le distribuzioni Openmoko -
qualche esempio

➢FSO, realizzata usando python come linguaggio di programmazione

➢Qt Extended, si tratta in realtà di Qtopia 4.4 che ha cambiato il suo nome dopo
l’acquisizione di Trolltech da parte di Nokia

➢Debian, funziona esattamente come la versione per PC ma in versione ARM

➢Paroli è soprattutto un’applicazione telefonica che originariamente doveva essere


rilasciata con Om2009

➢ Om2009 è la terza versione della distribuzione ufficiale Openmoko


➣ Doveva sostituire Om2008
➣ basata sul framework FSO
➣ Da Agosto 2009 lo sviluppatore principale si è orientato verso SHR

➢ SHR - Stable Hybrid Release, distribuzione nata rielaborando le applicazioni di


Om2007.2

➢Android: dopo il rilascio dei sorgenti da parte dell’ Open Handset Alliance, è stato fatto
un porting di alcune funzioni per processori ARM ed è stato integrato il kernel Linux
con le funzioni mancanti

➢Neophysis, distribuzione tutta italiana nata dall’idea della comunità Telefoninux, ma


non ancora completata
Antonella Zurzolo ­ yashi@email.it Slide 7 /
Come cambiare distribuzione -
DFU-utils

➢USB-DFU (Universal Serial Bus Device Firmware Upgrade) è


un protocollo usato per aggiornare il firmware di alcuni
dispositivi.

➢Dfu-utils è un programma che implementa tale protocollo

➢Nel progetto Openmoko questo programma è utilizzato per


comunicare con l'u-boot

➢La sintassi è
➣ $ dfu-util -a u-boot -R -D /path/to/u-boot.bin
➣ $ dfu-util -a kernel -R -D /path/to/uImage
➣ $ dfu-util -a rootfs -R -D /path/to/openmoko-devel-
image.jffs2

Antonella Zurzolo ­ yashi@email.it Slide 8 /
Ambiente di sviluppo -
cenni sulla cross-compilazione 1

➢Per poter compilare un codice valido per l’ Openmoko


FreeRunner si deve utilizzare una toolchain cross-platform

➢La toolchain cross-platform è un insieme di programmi e


librerie necessari alla compilazione e alla generazione di
eseguibili, destinati ad una piattaforma diversa da quella
su cui essa viene eseguita

➢Un cross-compilatore è un compilatore che genera del


codice eseguibile su un’ altra macchina che possiede, in
genere, un diverso processore ed un diverso instruction set

➢Gli strumenti GNU per la compilazione necessitano di


specificare la terna:
➣ Build (sistema su cui viene creato il compilatore)
➣ Host (sistema sul quale il compilatore verrà ospitato)
➣ Target (sistema sul quale deve girare il codice oggeto)
Antonella Zurzolo ­ yashi@email.it Slide 9 /
Ambiente di sviluppo -
cenni sulla cross-compilazione 2

➢Per cross-compilare occorrono tre pacchetti:


➣ binutils, cioè gli strumenti di basso livello quali linker
ed assembler
➣ gcc, ovvero il compilatore vero e proprio
➣ glibc, la libreria per le applicazioni

➢I passi da effettuare per creare il compilatore


riguardano innanzitutto la compilazione di binutils,
alla quale segue quella di un gcc di avvio (bootstrap)
per giungere infine al compilatore finale (C++, Java...)

Antonella Zurzolo ­ yashi@email.it Slide 10 /
Esempio - Installazione Toolchain
Openmoko 1

➢Prerequisiti
➣ computer x86-compatibile con almeno 1G di spazio
libero su disco
➣ possedere esperienza con la compilazione di programmi
da fonte locale utilizzando il compilatore
➣ avere accesso in scrittura alla propria Home directory
➣ avere accesso in scrittura alla directory /usr/local
➣ Ambiente di lavoro che permetta di compilare i pacchetti
software nativi usando il sistema di autotools (la
➣ triade ./configure, make e make install).

➢Scaricamento ed installazione

➢Correzione di alcuni problemi


Antonella Zurzolo ­ yashi@email.it Slide 11 /
Esempio - Installazione Toolchain
Openmoko 2
➢Installazione dei pacchetti necessari alla compilazione della toolchain sul
proprio computer:

➣ sudo apt-get install alien autoconf automake autotools-dev binutils ccache


check libtool fakeroot gcc g++ gettext intltool libgconf2-dev build-essential
curl libglib2.0-dev libmokoui2-dev libxrender-dev mtools uboot-mkimage

➢Download
➣ mkdir ~/sources

➣ cd ~/sources

➣ wget http://downloads.openmoko.org/developer/toolchains/openmoko-i686-
20090323-armv4t-linux-gnueabi-toolchain-openmoko.tar.bz2

➢Estrazione del pacchetto nel filesystem (/usr/local/openmoko)


➣ Eventualmente diventare superuser tramite il comando sudo su
➣ $ tar -xjvf ~/sources/openmoko ...
➣ $ bunzip2 openmoko-*-armv4t-linux-gnueabi-toolchain*.tar.bz2
➣ $ gzip openmoko-*-armv4t-linux-gnueabi-toolchain*.tar
➣ $ fakeroot alien -d openmoko-*-armv4t-linux-gnueabi-toolchain*.tar.gz
➣ $ sudo dpkg -i openmoko-*-armv4t-linux-gnueabi-toolchain*.deb

Antonella Zurzolo ­ yashi@email.it Slide 12 /
Correzione di due errori

➢Per ovviare al messaggio di errore


~/openmoko-sample 2/configure:line 11492:test:integer expression
expected
configure:error:Your intltool is too old. You need intltool
0.35.0 or later .
FATAL : oe _ runconf failed
➣ Aprire il file
/usr/local/openmoko/source/openmoko-sample2/configure.ac
➣ Cancellare la parte fra parentesi nella riga
AC_PROG_INTLTOOL ([0.35.0])

➢ Correggere il file om-conf (in /usr/local/openmoko/arm/bin)


alla riga 93
➣ Scrivere maintainer al posto di mainainer per non avere il
WARNING

configure:WARNING:unrecognized options : --enable-mainainer-mode


Antonella Zurzolo ­ yashi@email.it Slide 13 /
Esempi di Cross-compilazione

➢Progetto di esempio della Openmoko Toolchain

➢Olsrd tramite l'uso di neophysis

➢Mgen tramite l'esportazione del PATH e la modifica


del make

Antonella Zurzolo ­ yashi@email.it Slide 14 /
Progetto di esempio della toolchain -
openmoko-sample2

➢Esportare il PATH
➣ $ source /usr/local/openmoko/arm/environment-setup

➢Copiare il progetto di esempio nella propria Home

➢Dare i seguenti comandi:


➣ om-conf openmoko-sample2
➣ om-make-ipkg openmoko-sample2

Antonella Zurzolo ­ yashi@email.it Slide 15 /
Due nuovi errori

➢Eliminare la versione attuale di libtool ed installare


la versione 1.5.26 (* dipende dall'architettura amd64 o
i386)
$ sudo apt-get remove libtool
$ wget
http://ftp.sjtu.edu.cn/ubuntu/pool/main/libt/libtool/libtool_1
.5.26-1 ubuntu1_*.deb
$ sudo dpkg -i libtool_1.5.26-1ubuntu1_*.deb

➢Ovviare al percorso errato


/usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/usr
/local/openmoko/arm/arm-angstrom-linux-gnueabi/usr/lib/

Antonella Zurzolo ­ yashi@email.it Slide 16 /
Creazione del pacchetto

➢Dopo aver corretto gli errori dare i comandi visti in


precedenza:
➣ om-conf openmoko-sample2
➣ om-make-ipkg openmoko-sample2

➢A questo punto si possiede l'eseguibile


➣ openmoko-sample2_0.1_armv4t.ipk

➢Copiarlo tramite lo strumento scp sul cellulare

➢Eseguirlo sul cellulare tramite il comando


➣ opkg install openmoko-sample2_0.1_armv4t.ipk

Antonella Zurzolo ­ yashi@email.it Slide 17 /
Creare il prprio progetto

➢Riprendere il progetto di esempio:


➣ $ cp -r /usr/local/openmoko/source/openmoko-sample2
~/

➢Eliminare i vecchi file di esempio:

Antonella Zurzolo ­ yashi@email.it Slide 18 /
● Crosscompilazione di Olsrd
tramite l'uso di neophysis

➢Scaricare i file sorgente

➢Scompattarli nella cartella neophysis/source

➢Aprire una shell e posizionarsi nella cartella


neophysis

➢Digitare . qt4-env

➢Comparirà il seguente messaggio:


cross-compile-qt-shell ~ $

Antonella Zurzolo ­ yashi@email.it Slide 19 /
Crosscompilazione di Olsrd
tramite l'uso di neophysis
➢Posizionarsi nella cartella in cui ci sono i file sorgente

➢Dare i comandi:
➣ make
➣ make libs
➣ make install_libs
DESTDIR=/home/user/Scrivania/neophysis/s
ource/olsrd-0.5.6-r7/NOME_CARTELLA
➣ make install
DESTDIR=NOME_CARTELLA

➢Creare un *.tar da copiare successivamente sul


$cellulare
scp olsrd-0.5.6-r7.tgz root@192.168.0.202:/home/root
tramite il comando scp ed installarlo
root@192.168.0.202's password:
olsrd-0.5.6-r7.tgz 100% 130KB 130.3KB/s 00:00
Antonella Zurzolo ­ yashi@email.it Slide 20 /
...Installazione

➢Aprire una shell sul cellulare


➣ root@om-gta02 ~ $ gzip -d olsrd-0.5.6-r7.tgz
➣ root@om-gta02 ~ $ tar xvf olsrd-0.5.6-r7.tar -C /

➢Il risultato è il seguente:


etc/ usr/lib/olsrd_nameservice.so.0.3
etc/olsrd.conf usr/lib/olsrd_arprefresh.so.0.1
usr/ usr/lib/olsrd_tas.so.0.1
usr/share/ usr/lib/olsrd_watchdog.so.0.1
usr/share/man/ usr/lib/olsrd_pgraph.so.1.1
usr/share/man/man5/ usr/lib/olsrd_mini.so.0.1
usr/share/man/man5/olsrd.conf usr/lib/olsrd_dyn_gw_plain.so.0.4
.5.gz usr/lib/olsrd_bmf.so.1.5.3
usr/share/man/man8/ usr/lib/olsrd_txtinfo.so.0.1
usr/share/man/man8/olsrd.8.gz usr/lib/olsrd_dot_draw.so.0.3
usr/sbin/ usr/lib/olsrd_httpinfo.so.0.1
usr/sbin/olsrd usr/lib/olsrd_quagga.so.0.2.2
usr/lib/
Antonella Zurzolo ­ yashi@email.it usr/lib/olsrd_secure.so.0.5 Slide 21 /
Il kernel Openmoko

Antonella Zurzolo ­ yashi@email.it Slide 22 /
Cross-compilazione del kernel

Antonella Zurzolo ­ yashi@email.it Slide 23 /