Fin dall’inizio del ciclo di sviluppo di Ubuntu Touch, Canonical ha permesso all’intera comunità di entusiasti di tenere traccia dei progressi del sistema operativo tramite ISO installabili dedicate ai dispositivi Nexus, oltre che offerto una valida piattaforma di programmazione rappresentata dall’Ubuntu SDK, con tanto di emulatore dedicato.
E se di emulatore parliamo, durante gli ultimi giorni gli sviluppatori di Canonical hanno rilasciato una versione dell’emulatore dedicato ad Ubuntu Touch – tale Ubuntu Emulator – molto meno ostica rispetto alla precedente ed installabile e gestibile davvero con operazioni semplicissime.
In parole povere, anche senza skill di programmazione potrete provare Ubuntu Touch sul PC con sistema operativo Ubuntu senza incappare in particolari problemi. A tal proposito ci siamo ripromessi di guidarvi nell’installazione e nella configurazione iniziale di Ubuntu Touch, offrendovi una guida in parte semplificata.
Installare Ubuntu Emulator su Ubuntu
Se disponete di Ubuntu 14.04 Trusty Tahr troverete l’emulatore direttamente tra i repository di sistema. Quindi, per procedere, non dovrete far altro che aprire un terminale e digitare
sudo apt-get install ubuntu-emulator
Se invece disponete di Ubuntu 13.10 o Ubuntu 12.04 (supportata in quanto LTS), dovrete invece aggiungere un repository di terza parte prima dell’installazione. Sempre da terminale, digitate
sudo add-apt-repository ppa:phablet-team/tools sudo apt-get update sudo apt-get install ubuntu-emulator
Creare un nuovo dispositivo virtuale
Una volta terminata l’installazione dell’emulatore sarà necessario creare almeno un dispositivo virtuale, con tanto di “disco virtuale”. Potrete effettuare l’operazione digitando da terminale
sudo ubuntu-emulator create NomeDispositivo
Potrete sostituire a “NomeDispositivo” il nome scelto per il vostro dispositivo virtuale; non è possibile utilizzare spazi ed è sconsigliato usare caratteri speciali. Nel nostro caso, lo abbiamo chiamato Utouch.
Il sistema scaricherà le componenti necessarie, “assemblerà” il dispositivo e creerà il disco virtuale. I dati saranno reperibili in ~/.local/share/ubuntu-emulator/NomeDispositivo
Lo spazio su disco occupato da un dispositivo Ubuntu Touch virtuale, allo stato iniziale, è di circa 1.5 GB.
malefika@eliah-trusty:~$ sudo ubuntu-emulator create Utouch Creating "Utouch" from devel-proposed revision 227 Downloading... 20.97 MB / 20.97 MB [===================================] 100.00 % 351.37 KB/s 297.99 MB / 297.99 MB [=================================] 100.00 % 729.73 KB/s Setting up... Creating snapshots for disks... Succesfully created emulator instance Utouch in /home/malefika/.local/share/ubuntu-emulator/Utouch
Nota: in Ubuntu 12.04 potrebbe presentarsi un errore del tipo:
Error while converting ~/.local/share/ubuntu-emulator/Utouch/system.img: Unknown option 'compat' qemu-img: Invalid options for file format 'qcow2'.
Ciò non dovrebbe influire sul corretto funzionamento dell’emulatore.
Se siete sviluppatori ed avete bisogno di testare il sistema in vari stadi, sappiate che potrete creare quanti dispositivi virtuali vorrete, ovviamente tenendo conto dello spazio su disco a disposizione.
Eseguire un dispositivo virtuale – Configurazione iniziale
Una volta creato il vostro device Ubuntu Touch, non dovrete far altro che digitare a terminale
ubuntu-emulator run NomeDispositivo
Che, nell’esempio della macchina virtuale creata in precedenza, si riconduce a
ubuntu-emulator run Utouch
NB: sul mio computer (Ubuntu 14.04 a 64 bit) ho riscontrato il seguente errore:
emulator: Initializing hardware OpenGLES emulation support libGL error: Couldn't dlopen libudev.so.1 or libudev.so.0, driver detection may be broken. emulator-arm: ../../../../src/loader/loader.c:129: asserted_dlsym: Assertion `result' failed. signal: aborted (core dumped)
Per risolvere, basterà installare la libreria di sviluppo libui a 32 bit, con il comando
sudo apt-get install libudev1:i386
Il primo avvio del sistema è abbastanza lungo, potrebbe impiegare anche diversi minuti. Al termine della routine, il terminale vi mostrerà una finestra di login del tutto simile a questa:
digitate phablet sia come nome utente che come password. Non chiudete questo terminale, ci servirà ancora.
Attendete ancora qualche minuto, Unity8 dovrebbe essere (finalmente) mostrato sull’emulatore!
A causa di alcuni problemi implementativi, avete notato che l’avvio di Ubuntu Touch virtuale è abbastanza lungo. Onde evitare che ciò accada di nuovo, dopo il primo avvio andremo a creare uno snapshot “di fabbrica” del sistema, cosicché gli avvii successivi del dispositivo virtuale creato risultino più veloci.
Per procedere ritorniamo alla shell dell’emulatore lasciata aperta in precedenza (immagine in alto) e digitiamo
sudo shutdown -h now
Come password di sudo usiamo “phablet” nel terminale dell’emulatore; attendiamo lo spegnimento del sistema (l’output del terminale è simile al seguente):
Broadcast message from root@ubuntu-phablet (/dev/pts/4) at 15:46 ... The system is going down for halt NOW! wait-for-state stop/waiting * Stopping rsync daemon rsync [ OK ] * Asking all remaining processes to terminate... [ OK ] * All processes ended within 1 seconds... [ OK ] * Unmounting temporary filesystems... umount: /var/lib/lxc/android/rootfs: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1)) umount: /android: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1)) [fail] * Deactivating swap... [ OK ] * Unmounting weak filesystems... loop: can't delete device /dev/loop0: Device or resource busy [ OK ] * Unmounting local filesystems... loop: can't delete device /dev/loop1: Device or resource busy loop: can't delete device /dev/loop1: Device or resource busy Buffer I/O error on device loop1, logical block 419 JBD2: Error -5 detected when updating journal superblock for loop1-8. [ OK ] * Will now halt System halted.
…dopodiché chiudiamo sia il terminale dedicato a Ubuntu Emulator che l’emulatore grafico, cliccando sulla “X” in alto. Fatto ciò, creiamo il nostro snapshot di fabbrica digitando a terminale
ubuntu-emulator snapshot --create=pristine Utouch
E rendiamolo effettivo, con il comando
ubuntu-emulator snapshot --revert-pristine Utouch
Avviare Ubuntu Touch (grafico)
Finita la fase più lunga (e in realtà più seccante), potremo finalmente avviare il nostro emulatore in via definitiva, con il comando
ubuntu-emulator run Utouch
Se l’emulatore dovesse presentarsi troppo grande per il vostro display, chiudetelo e riavviatelo riscalato (ad esempio) del 50%, con il comando
ubuntu-emulator run --scale 0.5 Utouch
A questo punto potrete anche ignorare il terminale (senza però chiuderlo) e divertirvi ad esplorare il sistema mobile di Canonical. Per chiudere il tutto, vi basterà semplicemente cliccare sulla “X” in alto a destra dell’emulatore grafico.
Il quantitativo di memoria RAM di base che l’emulatore alloca è 512 MB; potrete specificare una quantità di RAM maggiore utilizzando il parametro –memory (nei miei test, però, l’opzione risulta non funzionante), del tipo
ubuntu-emulator run --memory 1024 Utouch
Gli snapshot del disco (avanzato)
Se siete sviluppatori ed avete intenzione di partecipare attivamente allo sviluppo di Ubuntu Touch (o semplicemente ficcanasare nel suo codice), vi vengono in aiuto diversi tool.
In primis parliamo degli snapshot: Ubuntu Emulator vi offre un modo rapido di creare “foto” del disco di sistema in qualsiasi momento e di ripristinarle con altrettanta facilità.
NOTA BENE: potrebbero esserci problemi nel creare snapshot su Ubuntu 12.04. In tal caso aggiornate QEMU usando questo repository (versione mantenuta da terzi, non verificabile).
Per creare uno snapshot, non dovrete far altro che digitare
ubuntu-emulator snapshot --create=NomeSnapshot NomeDispositivo
ad esempio
ubuntu-emulator snapshot --create=snap1 Utouch
Potrete ripristinare uno snapshot creato in precedenza (ovviamente a dispositivo spento) con altrettanta facilità, digitando
ubuntu-emulator snapshot --revert=NomeSnapshot NomeDispositivo
O, ancora, ripristinare il dispositivo al suo stato “di fabbrica” (snapshot pristine) con il comando
ubuntu-emulator snapshot --revert-pristine NomeDispositivo
Per ulteriori informazioni in merito vi rimando alla pagina wiki dell’emulatore.
Intervenire fisicamente sul sistema (avanzato)
Potrete intervenire sul sistema in qualsiasi momento, utilizzando i comandi shell di Ubuntu, direttamente dall’interno della finestra di terminale generata dall’emulatore.
Inoltre, se preferite, potrete utilizzare tranquillamente adb (un semplice “adb shell” ad emulatore attivo farà al caso vostro, in quanto una volta avviato il dispositivo risulta riconoscibile tramite adb), telnet (localhost su porta 5554) o ssh (solo tramite localhost).