Usare un eeePC con Ubuntu Snappy 16

snappy
Scritto da Alan Ward

L’Internet delle cose (Internet Of Things, abbreviato in IoT) è ormai da tutte le parti. La vostra automobile potrebbe essere connessa ad Internet, il vostro sistema di sorveglianza per i neonati sicuramente lo sarà, e da un giorno all’altro saranno connesse anche le vostre lampadine (probabilmente LED). Da quanto si può evincere dalle notizie, nella sezione dedicata alla tecnologia, le impostazioni di fabbrica di questi dispositivi sembrano carenti. Avere a bordo un kernel Linux e una base di sistema GNU potrebbe non essere sufficiente per un dispositivo perennemente connesso a Internet, se il tutto è configurato in maniera scadente. Già per questa ragione (chi vuole rischiare a causa di sistemi facilmente compromissibili?), alcuni utenti scelgono di costruirsi da soli i loro dispositivi, configurandoli come meglio credono, partendo da una normale distribuzione Ubuntu. Al giorno d’oggi questo è piuttosto semplice, vista la moltitudine di piattaforme rivolte agli hobbisti come per esempio il Raspberry Pi.

Rispolverare un portatile piuttosto vecchio o un netbook può, tuttavia, rivelarsi un’alternativa divertente ed economicamente vantaggiosa.

Il vecchio netbook Asus eeePC, equipaggiato con un processore Intel Celeron M da 900 MHz, è al giorno d’oggi un venerabile pezzo d’antiquariato. Infatti non è un segreto che le ultime distribuzioni di Ubuntu difficilmente riusciranno a entrare in 1 GByte di RAM e in 4 GByte di hard disk, nonostante esista qualche modo per aggirare queste limitazioni, come ho descritto in passato su queste pagine. Comunque le specifiche di questo eeePC sono simili a quelle di molti moderni dispositivi nati come piattaforme IoT, ad esempio il Raspberry Pi 3. Le differenze maggiori sono sostanzialmente due:

  • L’eeePC ha a bordo un processore Intel per PC. Per questa ragione è meno efficiente in termini di consumi rispetto ai processori ARM, i quali sono progettati specificatamente per funzionare a batteria. Avremo bisogno di alimentare il netbook con un alimentatore e la batteria di cui è dotato, a seconda delle sue condizioni, farà da tampone in caso di (brevi) interruzione sulla linea elettrica.
  • L’eeePC è dotato di periferiche come la porta VGA, un modem, un lettore di schede SD, che una moderna scheda IoT potrebbe non avere. Queste cose possono tornare utili, insieme al monitor di cui è dotato ogni PC portatile. È presente una scheda WiFi integrata e qualsiasi altra periferica può venire facilmente connessa mediante la porta USB.

Non c’è bisogno di dirlo, ma dato che l’eeePC è alimentato da un trasformatore di corrente alternata e da una batteria come tutti i portatili, la scheda USB di cui è dotato è capace di fornire una tensione molto superiore a quella fornita dalla maggior parte delle schede IoT per hobbisti. Un disco fisso esterno può essere direttamente collegato all’USB, diversamente dal Raspberry Pi per esempio, dove invece bisogna utilizzare un alimentatore supplementare.

Quindi, se si fa a meno dell’ambiente grafico e delle sue pretese in termini di hardware, l’eeePC può ancora essere una piattaforma sufficiente per le necessità di un dispositivo IoT, dato che la maggior parte di queste schede avrà comunque bisogno di un’alimentazione a muro.

Nel mio caso ho approfittato della recente uscita della versione 16 di Ubuntu Snappy. Questa distribuzione è basata su Ubuntu 16.04, anziché sulla 15.04 come le precedenti release. Guardando al futuro può essere un vantaggio, dato che la 16.04 è LTS (Long Term Support). Comunque sia, molte cose sono cambiate in fase di installazione. E risulta ancora difficile trovare istruzioni precise su come impostare le cose, probabilmente perché è una versione beta, ed è poco che è stata rilasciata (al momento in cui viene scritto l’articolo).

SCARICARE UBUNTU SNAPPY E METTERLA SU UNA PENDRIVE

Ho scaricato la versione 32-bit (i386) dell’immagine disco di Ubuntu Snappy (conosciuta anche col nome di Ubuntu Core) da: http://cdimage.ubuntu.com/ubuntu-snappy/16.04/current/Una volta scaricata si può decomprimere l’immagine, come utente senza privilegi di root, usando il comando:

unxz ubuntu-core-16-i386.img.xz

Se l’utility di compressione unxz non è presente sul vostro sistema, potete installarla con il comando:

sudo apt install xz-utils

Questa immagine decompressa, con l’estensione IMG, è una copia byte per byte del contenuto del disco rigido di un dispositivo su cui gira Snappy. Ha la dimensione esatta di 4’000’000’000 byte, ossia 4 GBytes. Quando si usa la notazione tradizionale in base 2, allora parliamo di 3725 GigaByte ossia 3725 x 2^30 Byte. Questa è la dimensione esatta dell’hard disk dell’eeePC, quindi non dovremmo avere problemi nel metterci sopra questa immagine disco.

Una volta decompressa l’immagine, il nostro problema sarà come trasferirla dal nostro computer all’eeePC. Abbiamo bisogno di far partire questa macchina da un device esterno, come una penna USB o una scheda SD. Per questo lavoro potremmo usare una distribuzione leggera di Ubuntu, come Xubuntu a 32 bit. Una volta fatto partire l’eeePC da un Live CD, possiamo trasferire l’immagine di Snappy copiando il contenuto di questa immagine montando un volume via rete.

23

Abbiamo tuttavia metodi più semplici per effettuare il trasferimento, come per esempio utilizzare l’immagine di Snappy stessa. Per fare questo, ho usato una penna USB di una dimensione appropriata, 4 Gbyte. Anche l’utilizzo di una scheda SD della stessa capacità può essere una possibilità, dato che l’eeePC può fare il boot anche da questo dispositivo. Probabilmente la scheda SD verrà riconosciuta dal kernel come /dev/mmcblk0 o qualcosa del genere.

Partendo dal computer su cui ho scaricato Ubuntu Snappy, ho copiato l’immagine sulla chiavetta, nel mio caso identificata come /dev/sdc. Bisogna fare molta attenzione ad individuare con quale nome viene identificata l’unità. Consultare l’output del comando:

dmesg | grep sd

può essere d’aiuto per essere sicuri di andare a scrivere sulla penna USB e non, per esempio, su uno dei dischi fissi del PC. Quindi mi sono assicurato che la chiavetta non fosse montata prima di utilizzare il comando dd per copiare l’immagine byte per byte, in blocchi da 1 MByte.

sudo umount /dev/sdc*
sudo dd if=ubuntu-core-16-i386.img of=/dev/sdc bs=1M

L’utilizzo di una differente dimensione dei blocchi potrebbe dare errore, dato che l’immagine potrebbe non essere esattamente un multiplo del numero di byte all’interno di un blocco. Comunque 1 MByte è un valore sicuro e la comparsa di eventuali errori può venire ignorata.

La chiavetta contiene ora un’immagine avviabile di Ubuntu Snappy. Possiamo toglierla dal computer principale e utilizzarla per far partire l’eeePC.

CONFIGURARE IL NUOVO SISTEMA SULLA PENNA USB

Dobbiamo premere il tasto escape (Esc) durante il boot dell’eeePC in modo da scegliere, nella lista che apparirà, il dispositivo da cui effettuare il boot. Questo sarà il dispositivo con il prefisso USB, se utilizziamo una penna USB. A questo punto dovreste vedere il bootloader GRUB che presenterà una lista con un’unica voce: “Ubuntu Core 16”. Dopo un po’ di tempo, e dopo varie pagine piene di messaggi del kernel e del sistema, dovreste finire su una schermata vuota con il messaggio “Press enter to configure”.

La configurazione iniziale del sistema è un processo piuttosto semplice, anche se dovremo usare un’interfaccia testuale che potrebbe sembrare strana alle persone abituate alle applicazioni grafiche. Utilizzate le frecce sulla tastiera per passare da un campo all’altro e configurate almeno un’interfaccia di rete per connettersi a Internet.

In molti casi utilizzeremo il netbook per collegarci sia con l’interfaccia Ethernet che via wireless. Ho utilizzato le finestre di configurazione per connettere la porta Ethernet (eth0) alla mia rete di casa cablata e usando il DHCP. Questa è l’opzione più semplice per completare la configurazione, dato che la configurazione del WiFi per collegarsi a un access point non sembra possibile effettuarla a questo punto del processo di configurazione. Ubuntu Snappy riconosce la scheda wireless, ma non fornisce un’interfaccia di configurazione per scegliere il SSID a cui collegarsi e nemmeno un campo in cui inserire la password della rete WiFi. Questo ci fa presumere come Snappy sia un work in progress, e che il problema verrà corretto nelle versioni future.

Avrete anche bisogno di un account sullo store di Ubuntu Snappy per poter proseguire. Questo possiamo crearlo sulla pagina principale di Ubuntu One all’indirizzo https://login.ubuntu.com/, questo passaggio potrebbe essere reso più chiaro da Canonical. Sto pensando nello specifico ai nuovi utenti che non hanno ancora avuto occasione di utilizzare i servizi di Ubuntu. Mentre fate questa registrazione, ricordate di creare sul vostro computer una coppia di chiavi RSA pubblica e privata, e caricate poi la chiave pubblica (quella con l’estensione .pub) sul server di Ubuntu. Se ne avete bisogno trovate delle buone istruzioni circa la creazione di questa coppia di chiavi in qualsiasi buon tutorial relativo all’utilizzo di SSH senza password, come per esempio quello scritto da Mathias Kettner che potete trovare all’indirizzo http://www.linuxproblem.org/art_9.html (potete leggere solo la prima parte, relativa appunto alla creazione di questa coppia di chiavi).

24_1

Aprite in un editor di testi il file id_rsa.pub che si trova nella directory ~/.ssh, copiatene il contenuto e poi incollate il testo nell’apposito campo sulla pagina web di Ubuntu One. Fate attenzione a non copiare il testo dal file senza l’estensione .pub: questa è la vostra chiave privata, e non dovrete mai condividerla con nessuno.

24_2

Una volta configurato il dispositivo Snappy, non potremo fare login diretto con un utente locale. Dovremo collegarci via rete mediante SSH. Il mio utente è alanward su un certo server di posta, e questo è l’account con cui mi sono registrato sul servizio di Ubuntu. Perciò il mio utente sulla mia nuova istanza di Snappy sarà anch’esso alanward. Facciamo login usando il comando:

ssh @<Snappy’s local IP address>

Potremmo aver bisogno di guardare sul router per capire quale indirizzo IP sia stato assegnato dal DHCP alla nuova macchina. Oppure qualche ping ben mirato potrebbe essere d’aiuto.

Non è necessario inserire nessuna password per fare login, dato che la nostra chiave pubblica è sufficiente per identificarci. Infatti, sul device, il nostro nuovo utente non ha una password, proprio come non ce l’ha l’utente root su molti sistemi Ubuntu.

Su Snappy possiamo diventare root con lo stesso metodo usato su Ubuntu, ossia usando il comando sudo:

sudo bash
root@localhost:~#

Potrebbe essere utile abilitare l’accesso di root direttamente via SSH. Possiamo utilizzare la directory .ssh creata dallo script di installazione, ovvero copiando questa directory nella home directory dell’utente root

cp -r .ssh /root/

Possiamo uscire dalla sessione SSH utilizzando due volte il comando exit. Possiamo poi fare login come root dal nostro computer principale utilizzando sempre le stesse credenziali SSH usate in precedenza:

ssh root@192.168.0.104
Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-36-generic i686) …

25

A questo punto abbiamo un sistema pienamente funzionante sebbene risieda ancora sulla chiavetta USB. Possiamo copiarlo sul disco fisso dell’eeePC, se vogliamo. Le prestazioni della chiavetta USB sono sufficienti per i compiti semplici. Usare il disco fisso ci eviterà però di avere una chiavetta che spunta dal dispositivo, oltre a liberare una porta USB da destinare eventualmente ad altri utilizzi. Anche la velocità è leggermente migliore, nonostante il disco fisso dell’eeePC non sia velocissimo con i suoi 32 MByte/s di banda.

Copiate il contenuto della chiavetta USB sull’hard disk utilizzando il comando dd. Il disco dell’eeePC dovrebbe essere /dev/sda. Se la penna USB è stata riconosciuta come /dev/sdb, potremmo lanciare questi comandi:

sudo bash
dd if=/dev/sdb of=/dev/sda bs=1M

Stiamo ripetendo la procedura utilizzata per copiare l’immagine originale sulla chiavetta USB. Ma adesso la chiavetta contiene un sistema interamente configurato e questo è quello che stiamo installando sul disco fisso dell’eeePC. Una volta terminata la copia, possiamo spegnere il dispositivo:

shutdown -h now

Quando il computer sarà completamente spento, ricordatevi di rimuovere la chiavetta USB prima di riaccenderlo. Se tutto è andato per il verso giusto, l’eeePC dovrebbe partire dal disco fisso usando GRUB, esattamente allo stesso modo del boot da chiavetta. Dovrebbe essere accessibile via SSH come prima, senza la necessità di ulteriori configurazioni.

Questa procedura dovrebbe funzionare anche con una chiavetta USB di dimensioni maggiori. Tuttavia in questo caso dd darà un messaggio di errore dato che andrà oltre il limite dei 4GByte. Ma se il filesystem sulla chiavetta USB non è stato ridimensionato, questo non dovrebbe risultare un problema.

AMMINISTRAZIONE DEL NUOVO DISPOSITIVO IOT

Finiamo con una breve nota sull’amministrazione del sistema. Ubuntu Snappy è molto diversa da una normale distribuzione Ubuntu, come per esempio Ubuntu Server o una delle varie versioni desktop. L’immagine da 4 GByte che abbiamo installato contiene due partizioni distinte. Una è in sola lettura e contiene il kernel e l’immagine del sistema. L’altra è scrivibile e contiene i dati dell’utente e le modifiche fatte al sistema nel corso del tempo. Il fatto di avere buona parte del sistema operativo in un file system in sola lettura fa sorgere qualche complicanza, nonostante si riveli utile per la sicurezza del dispositivo.

La prima grande differenza che si nota provenendo da una distribuzione Ubuntu classica consiste nel fatto che il modo di installare i programmi con apt non funziona più. Gli amministratori dovranno usare il comando snap per interrogare lo store di Ubuntu e amministrare i pacchetti software. C’è un po’ di documentazione su Internet, e il comando stesso fornisce una discreta quantità di spiegazioni. Qualche esempio di utilizzo di snap dovrebbe essere autoesplicativo:

sudo bash
snap help
snap list
snap install hello-world
hello-world
Hello World!

L’altra caratteristica che potrebbe sorprendere gli amministratori consiste nel procedimento da usare per cambiare le variabili di sistema. Per esempio l’impostazione del proxy prima di utilizzare il comando apt:

sudo bash
export http_proxy=”http://my_web_proxy:3128
apt update …

Il comando snap, invece, non sembra considerare le variabili d’ambiente della shell. Per questa ragione abbiamo bisogno di modificare la configurazione del servizio snapd stesso. Sfortunatamente (o meno, a seconda del vostro punto di vista), questo è un servizio gestito tramite systemd e che ha bisogno di essere configurato con dei comandi opportuni. Così:

sudo bash
systemctl edit snapd.service

Questo lancerà l’editor vi con cui potremo inserire i dettagli del server proxy all’interno del file di configurazione di systemd relativo al servizio snapd. Per esempio:

[Service]
Environment=”HTTP_PROXY=http://my_web_proxy:3128
Environment=”HTTPS_PROXY=http://my_web_proxy:3128″

Notate l’uso delle lettere maiuscole per i nomi delle variabili d’ambiente. Una volta usciti da vi, dovremo far ripartire il servizio snapd, e procedere con l’installazione dei nostri snap:

systemctl stop snapd
systemctl start snapd
snap install hello-world …

 

QUALCHE PENSIERO FINALE

Gli utenti con esperienza e gli amministratori delle distribuzioni di Ubuntu classiche potrebbero avere la sensazione che, in Ubuntu Snappy, ci siano delle limitazioni nel fare le cose. In qualche maniera questo è sicuramente vero. Dall’altro lato, questo è un punto di forza poiché si ha il vantaggio di avere un sistema alla fine dei conti più sicuro. Parlando di dispositivi che molto spesso vengono messi in piedi da persone non specializzate, ma che dovranno rimanere collegati ad Internet per tutto il tempo del loro ciclo di vita, potrebbe essere una scelta vincente avere di default un livello di sicurezza alto.

In ogni caso Snappy porta qualche beneficio. Uno di questi sta nel fatto che le applicazioni vengono eseguite in una sandbox, così come la semplicità con cui si possono installare, come visto negli esempi qui sopra. Fare dei cloni del sistema operativo partendo dalla chiavetta USB e spostarli sul disco fisso, o dal disco fisso su una seconda chiavetta non è solo possibile, ma è anche estremamente semplice.

Convertire una vecchia macchina come l’eeePC in un dispositivo Snappy porta con sé diversi benefici. Come il fatto di riutilizzare un oggetto che altrimenti finirebbe nella spazzatura. Dal punto di vista di noi utenti, invece, abituarsi all’uso di Ubuntu Snappy su una piattaforma del genere, ci renderà le cose più semplici quando avremo la necessità di mettere le mani sui dispositivi mobili con Ubuntu Touch: questo sistema è, in sostanza, costruito sulle fondamenta di Snappy, con l’aggiunta di un’interfaccia grafica e di altre applicazioni. Per questa ragione imparare Snappy può essere considerato un investimento in termini di tempo per le persone interessate a maneggiare Ubuntu Touch, per esempio progettando e realizzando dei pacchetti software per questa piattaforma.    

Biografia dell’autore: Alan insegna informatica alla Escola Andorrana de Batxillerat (scuola superiore). Ha tenuto corsi su GNU/Linux alla University of Andorra e sull’amministrazione di sistemi GNU/Linux alla Open University of Catalunya (UOC).
Questa voce è stata pubblicata in Pubblicazioni e contrassegnata con , , . Contrassegna il permalink.