L’angolo dello smanettone stavolta si occupa di Boot to Gecko, il nuovissimo sistema operativo mobile made in Mozilla che si propone come alternativa Open ad Android & company.
B2G utilizza il Kernel Linux e supporta applicazioni HTML, JavaScript e altre interfacce di programmazioni aperte.
L’interfaccia utente piuttosto gradevole è affidata a Gaia.
Sebbene sia ancora in fase sperimentale si parla già di accordi con Telecom Italia e svariati altri operatori esteri attirati anche dal low cost di questo sistema e di uscita dei primi device targati Mozilla dai primi mesi del 2013.
Essendo Open è già possibile testare B2G sia direttamente su smartphone che su PC per mezzo di emulatori.
Vediamo come compilare su Linux l’emulatore ARM, essendo una compilazione piuttosto complicata sarà necessario mettere qualche toppa qua e la e aggiungere qualche pacchetto non segnalato nella guida ufficiale.
Compiliamo Boot to Gecko:
Non possedendo uno smartphone compatibile (e forse manco uno smartphone :?) ho compilato l’emulatore ARM su Debian Wheezy 64 bit
Ho i driver nvidia-glx per la 8600GT.
Questa è la guida ufficiale alla compilazione.
Prerequisiti:
Dove posso provare B2G?
– Su un telefono che lo supporti come alcuni Nexus S, Samsung Galaxy S2 e Galaxy Nexus purché dotati di Android 4 (Ice Cream Sandwich).
– Direttamente su PC dotato di Linux o Mac OS X tramite emulatore.
Requisiti dichiarati per Linux:
E’ raccomandato Ubuntu 11.10 e sono preferibili versioni a 64 bit delle distribuzioni. 4 Gb di Swap e 80 Gb di hard disk (a compilazione eseguita a me richiede 8,7 GB).
Dipendenze consigliate per l’emulatore:
autoconf-2.13
git
ccache
gcc/g++, and you will need g++ multilibs
bison
flex
32-bit ncurses (libncurses5-dev su Ubuntu/Debian)
32-bit zlib (ia32-libs su Ubuntu/Debian)
make
curl
bzip2
Dipendenze ulteriori aggiunte da me (ricavate da molteplici testate sul muro):
build-essential
libzip-dev
zip
gcc-4.7-multilib
gcc-multilib
g++-4.7-multilib
g++-multilib
lib32ncurses5-dev
zlib-bin
lib32z1-dev
libgl1-mesa-dev
libglu1-mesa-dev
autoconf2.13
ccache
Prepariamoci la base per la compilazione:
In questa fase ci procureremo tramite git la grande mole dei sorgenti necessari.
Iniziamo con:
$ git clone https://github.com/mozilla-b2g/B2G.git
Spostiamoci nella cartella appena scaricata nella nostra home con:
$ cd ~/B2G
Selezione del dispositivo:
./config.sh
Ci verrà proposto un elenco di device:
Valid devices to configure are: - galaxy-s2 - galaxy-nexus - nexus-s - otoro - emulator - emulator-x86
Nel nostro caso come consigliato andremo a compilare come emulator (ARM) poiché sebbene più lenta questa modalità è più accurata e attinente al reale funzionamento di B2G.
Se volete compilare con altre versioni di Gecko questo è il momento per comunicarlo al compilatore editando il file .userconfig, ad esempio per mozilla-central
GECKO_PATH=/path/to/mozilla-central GECKO_OBJDIR=/path/to/mozilla-central/objdir-gonk
Configuriamo i sorgenti:
Se come me avete scelto l’emulatore ARM date il comando:
$ ./config.sh emulator
Per il più veloce ma meno accurato emulator-x86 invece:
$ ./config.sh emulator-x86
Vi saranno chieste alcune informazioni come nome ed email:
Inizierete un interminabile scaricamento quindi mettetevi comodi o fate altre cose..
Compiliamo Boot to Gecko:
La piattaforma è a posto è il momento di compilare 🙂
La guida propone anche una verifica dell’aggiornamento, se avete appena scaricato da git siete già a posto:
$ git pull $ ./repo sync
Compiliamo:
$ cd ~/B2G $ ./build.sh
In questa fase potete anche compilare solo moduli specifici o settare i core da usare.
La compilazione è lunga e comprende più passaggi di scaricamento dati.
Occorreranno numerosi rattoppi per fixare svariati errori, ne elenco alcuni riportando errore e fix nel caso potesse essere utile a qualcuno ricordando che ogni sistema è diverso e che uso una distribuzione 64 bit (molti problemi non in elenco si risolvono con le dipendenze che ho aggiunto a quelle delle guida ufficiale).
Errore: missing bits/predefs.h Fix: # apt-get install gcc-multilib
Errore: /usr/bin/ld: cannot find -lz Fix: # apt-get install zlib1g-dev lib32z-dev
Errore: /usr/bin/ld: cannot find -lGL Fix: # cd /usr/lib32 # ln -s libX11.so.6 libX11.so # ln -s mesa/libGL.so.1 libGL.so
Errore: ‘optind’ was not declared in this scope Fix: Editare il file: Home/B2G/sdk/emulator/opengl/host/tools/emugen/main.cpp e aggiungete tra gli include: #include "getopt.h"
Se tutto è andato bene la compilazione terminerà senza il fatidico “Build error”
Lanciare e configurare l’emulatore:
./run-emulator.sh
Nota:Attendere qualche istante per il caricamento e dalla schermata con la mongolfiera spostare il cursore a destra verso il simbolo con il lucchetto aperto.
Scorciatoie da tastiera:
Il file nascosto (control+h dalla home per visualizzare la cartella) ~/.android/default.keyset contiene delle interessanti scorciatoie come quelle per l’attivazione dello schermo intero, la trackball e la modifica del layout dell’emulatore.
Editando ~/B2G/run-emulator.sh (consiglio versioni multiple del file) è possibile variare la dimensione della Ram (Default 512 mb) e variare la skin, si veda per questo la guida su MDN.
Ora potete provare l’interfaccia Gaia agendo col tastierino numerico alla destra del monitor…Buon divertimento 🙂
Attenzione: Può capitare che l’emulatore si avvii e mostri solo una schermata nera con l’orario in alto a destra e risponda solo ai comandi volume e spegnimento:
Rimuovete il file $ rm ~/B2G/out/target/product/generic/userdata.img
Ricompilate con $ cd ~/B2G $ ./build.sh
Rilanciate ora l'emulatore $ ./run-emulator.sh
Mantenete magari una copia di userdata.img pulita per ogni evenienza..
Screenshots:
[nggallery id=83]
Video:
TheSgrash says
Ho appena provato ma il comando ./config.sh emulator-x86 (ma anche gli altri) mi da errore:
File “./repo”, line 189
except OSError, e:
^
SyntaxError: invalid syntax
Repo sync failed
sai come posso risolvere?
fabrixx says
Hai forse Python 3?
Ora non ho modo di verificare la mia configurazione ma qui si propone un link a Python 2:
http://code.google.com/p/android/issues/detail?id=34174