Raspberry Pi2: proviamo la Ubuntu 15

Prima facevo riferimento alla Ubuntu 15.04, l’ultima versione della distro di Canonical.

Vale la pena di provarla e l’immagine preparata per il Raspberry PI2 è reperibile al link

https://ubuntu-mate.org/raspberry-pi/

E’ più avida di risorse della Raspian ma molto più rifinita e completa come dotazione iniziale di software.

Raspberry Pi2: usiamo tutto lo spazio sulla micro SD

Con l’installazione della Raspbian è prevista alla fine del setup  l’esecuzione di uno script chiamato raspi-config che è in grado di allargare tutto lo spazio occupato dalla distro alla max capacità della microSD che abbiamo usato. Questo perché le immagini delle distro Linux sono sempre di lunghezza fissa (2Gb, 4Gb, 8Gb, ecc.) ma può capitare, come nel mio caso, che abbiamo preferito usarne una da 16Gb o addirittura 32Gb. Altre distro invece non prevedono questo meccanismo gestito (Fedora Remix, Ubuntu, ad esempio) per cui bisogna provvedere a mano. Premetto che per chi non è abituato ad usare Linux è una cosa un po’ delicata e pericolosa (per i dati che sono nella SD voglio dire) per cui facciamoci prima un backup della microSD con una delle utility che ci sono in giro. Inoltre l’esempio che farò è basato sulla Ubuntu 15.04 per Raspberry che usa uno schema a 2 partizioni. Altre distribuzioni, come Fedora, creano 3 partizioni, quindi se si ha qualche dubbio, almeno per la prima volta, è meglio farsi aiutare dal classico “amico smanettone” per capire come funzionano esattamente le cose. Ad ogni modo supponiamo di aver installato la Ubuntu 15.04 sul nostro Raspberry.

Apriamo  un terminale e diamo il comando:

sudo fdisk /dev/mmcblk0

All’interno di fdisk digitare il comando “p” per vedere le partizioni esistenti.

Nel mio caso la Ubuntu è un’immagine di 4gb installato su una microSD da 32Gb. Stiamo per ora usando solo 1/8 dello spazio disponibile.

Individuare la partizione root (“/”). Nel nostro caso è la seconda:

Segnarsi il valore di Start della partizione root (la numero 2) che in questo caso è 133120.

Cancellare la partizione 2 con i comandi “d” e poi “2”

Creare una nuova partizione con il comando “n”

Renderla primaria con il comando “p”

Inserire il numero partizione “2”

Inserire come inizio il vecchio valore della partizione 2, ovvero “133120”

Premere INVIO per l’ultimo settore, che significa che occuperemo tutto lo spazio libero.

Confermare le modifiche con il comando “w”

Fdisk esce indicando con un messaggio che la nuova configurazione sarà attiva solo dopo il reboot. Facciamolo con il comando “sudo reboot” e aspettiamo che Ubuntu riparta.

Apriamo di nuovo un terminale e diamo il comando:

sudo resize2fs /dev/mmcblk0p2

Aspettiamo che ritorni il prompt ed esaminiamo la situazione con il comando

df -kh

Ora vedremo che la partizione denominata “/” si è espansa al massimo della microSD.

Devo dire che stranamente la Ubuntu 15.04 non ha previsto una partizione di swap, il che potrebbe in teoria portare al blocco del sistema operativo in alcuni casi. Lo spazio è poco, e le cose potrebbero anche andare bene così. Comunque terrò in prova la Ubuntu e se si dovesse sentire la mancanza di uno spazio di swap posterò anche la procedura, per i meno esperti, capace di creare una terza partizione di almeno 2 Gb riservata allo swap.

E’ arrivato!

2015-05-07 11.27.29

 

E’ arrivato il secondo Rasperry PI2. Stesso contenitore del precedente, ma a differenza del primo che era di colore nero, stavolta mi sono concesso un colore bianco Apple-like molto piacevole. Questo contenitore è piuttosto robusto, l’unico inconveniente è che, essendo stato progettato per il precedente B+, calza a pennello ma la feritoia al suo interno evidentemente prevista per la cpu del B+ non corrisponde se non parzialmente alla posizione della cpu del PI2, il che rende quasi impossibile  il piazzamento di un’aletta di raffreddamento per il processore.  “Quasi” significa che allargando in qualche modo il buco che si vede in figura si può ovviare al problema. Peccato, perché a parte questo inconveniente mi sembra un ottimo contenitore.

pi2

Dopo il primo PI2, che ho installato senza interfaccia grafica ed è dedicato esclusivamente a contenere questo sito, ho deciso di utilizzare quest’altro per testare proprio l’utilizzo delle interfacce grafiche, prima di dedicarlo a qualcosa di più produttivo. Fin qui mi sono accorto che la GUI della Fedora 21 remix non è proprio un campione di stabilità: è bastato il primo aggiornamento di sistema per far sì che Xfce ogni tanto desse in escandescenze, blinkando in nero lo schermo ripetutamente per circa 1 secondo ogni minuto o giù di lì, cosa molto fastidiosa. Midori, il browser web, tende a crashare piuttosto spesso e per metterlo in crisi bastano i siti dei più diffusi quotidiani nazionali, pieni di codice java, macromedia flash e paccottiglia varia. Senza mezze misure lo trovo praticamente inusabile, almeno allo stato attuale. Insomma, la Fedora Remix 21 mi piace molto se usata come server testuale ma per quanto riguarda Xfce e Midori non ci siamo proprio.

Raspian al contrario la trovo più adatta per l’uso desktop del Raspberry PI2. Anche Epiphany, il Web Browser in dotazione con la distribuzione carica piuttosto bene pagine complesse anche se mi sembra che non supporti comunque il codice di Flash. Tutto questo è comunque ancora frutto di un utilizzo di una manciata di minuti, per cui mi riservo di esprimere un giudizio più approfondito dopo almeno alcuni giorni di uso. In questo caso ho deciso di utilizzare una microSD di qualità elevata da “ben” 32 Gb, e devo dire che Raspian, con il solito script iniziale di configurazione raspi-config, mi ha permesso di utilizzare per intero l’intera capacità della scheda senza dover intervenire manualmente come avevo dovuto fare con la Fedora.

 

 

Raspberry Pi2: attenti al cavo HDMI

Il Raspberry Pi2 ha come uscita video (e anche audio) un connettore HDMI che in genere permette di collegarlo ad un televisore con l’entrata corrispettiva. Però se troviamo più comodo collegarlo ad un monitor per Pc abbiamo bisogno di comprare un cavo HDMI-DVI, e fin qui tutto bene perché i segnali sono digitali da entrambi i lati, oppure di un cavo HDMI-VGA.

Qui bisogna fare un po’ di attenzione, perché esistono in commercio dei cavetti HDMI-VGA (costo dai 3 euro ai 6 euro) che non funzionano. Il fatto è che lo standard HDMI è digitale mentre il segnale VGA è analogico, quindi da qualche parte bisogna pur provvedere a fare la conversione A/D. Questi cavetti si limitano semplicemente a passare il segnale da uno standard all’altro senza avere un convertitore incorporato. Succede quindi che collegandoli dal Raspberry ad un monitor VGA non funzionano. Si riconoscono perché sono semplicemente dei cavi, spesso dotati da ambo i lati di filtri anti-disturbo (sono dei rigonfiamenti cilindrici) ma nulla di più.

Tra l’altro il problema è che di solito vengono venduti nei negozi o nei siti online senza dare indicazione del fatto che non avendo un convertitore A/D nel passaggio del segnale nella maggior parte degli apparecchi non funzioneranno. E quindi basta fare un giro tra le recensioni di questi siti online per trovare pletore di utenti che li hanno comprati e dichiarano che, appunto, non funzionano.

Apparentemente si tratta di cavi “illogici”. Collegare un uscita digitale ad un’entrata analogica senza “toccare” il segnale non è una cosa che può funzionare. E allora, a cosa servono? Non è stato facile scoprirlo. Ho dovuto girare un po’ per i siti finchè ho trovato un venditore che dichiarava appunto che questo caso serviva solamente per collegare:

La playstation al monitor – Ricevitori HDTV – Proiettori – Dispositivi HDMI dotati di lettore DVD.

Insomma, esistono alcuni apparecchi con cui un cavo del genere funzionerà e che quindi si faranno carico al loro interno della conversione A/D, ma non Pc, Notebook e Monitor per Pc.

Quello che serve a noi invece è un cavetto dotato di un convertitore A/D che sarà alimentato dalla presa HDMI del Raspberry stesso, come questo mostrato qui sotto.

hdmi_vg

Ne esistono due tipi: quelli che portano solamente il segnale video e quelli che hanno anche un piccolo jack per il segnale audio. Decisamente più comodo il secondo tipo, con un costo che varia dai 15 euro ai 25 euro. Questi adattatori dichiarano esplicitamente di avere un convertitore A/D e finiscono immancabilmente con uno “scatolotto” che contiene la presa VGA femmina.

 

 

 

Raspberry Pi2: di nuovo sul comando “reboot”

E’ proprio come immaginavo. Come già detto prima il mio Raspberry Pi2 non completa la sequenza di reboot da remoto se al connettore HDMI non è collegato un monitor. Questo per colpa del kernel montato dalla Fedora 21 remix probabilmente, ma se lascio collegato alla presa HDMI il solo cavetto HDMI/VGA senza alcun monitor attaccato il reboot remoto avviene correttamente. Questo cavetto è dotato di un convertitore D/A (un componente attivo quindi) che evidentemente  informa il kernel della presenza di un segnale.

Devo fare alcune prove con Raspian per vedere se succede esattamente la stessa cosa. Approfitterò del fatto che ho ordinato un altro Pi2 che dovrebbe arrivarmi la prossima settimana; voglio lasciare in pace questo che ormai rimane dedicato alla gestione di questo sito. Staremo a vedere.

Raspberry Pi2 : reboot e gpu_mem

Allora: il comando reboot sul Raspberry sembra che non faccia ripartire correttamente il nostro piccolo server. Non a tutti, un certo numero di persone si lamentano di questo problema sui vari forum presenti su Internet. La possibile ipotesi è che alcune microSSD non particolarmente performanti creino dei problemi alla “risalita” del sistema operativo.  A dire il vero qualcuno ha ipotizzato che la colpa possa essere anche di alimentatori non opportunamente dimensionati (sono consigliati almeno 2A di max corrente erogabile). Fatto sta che l’ipotesi della microSD lenta sembra comunque che sia la più accreditata.

E sul mio PI2 che succede? Che il reboot funziona purché al Raspberry sia collegato un monitor alla presa HDMI, anche spento. A questo punto posso solo ipotizzare. Io ho installato una Fedora 21 Remix che utilizza attualmente un kernel 3.18.11-507. Probabilmente la fase di boot si blocca quando non viene trovato nulla collegato alla porta HDMI, finora analizzando i log di sistema non ho trovato nulla.  E’ vero che il monitor può essere anche spento ma io alla presa HDMI collego un adattatore/convertitore HDMI/VGA che forse, essendo alimentato dalla porta USB del Raspberry,  rimane acceso e qualche segnale al driver del kernel lo invia. Potrebbe essere quindi un problema dipendente dalla distribuzione installata quindi farò in futuro delle prove analoghe con una microSD con su Raspbian.

Altra cosa è che sembra che il parametro gpu_mem abbia come valore minimo 32 Mb e non 16 Mb, almeno nel mio caso. Impostato a 16 Mb continuo ad avere 884 Mb di memoria libera, invece col parametro impostato a 32 Mb rilevo 981 Mb liberi per il sistema come si vede qui sotto.

Schermata 2015-04-28 alle 19.14.47

P.S. Aggiungo che questo comportamento avviene sulle immagini dotate di interfaccia grafica. Ho provato a installare la “minimal” e ho notato che nel config.txt è commentato il valore gpu_mem=128, mentre invece è presente gpu_mem=16.

In questa immagine il valore gpu_mem=16 funziona e lascia effettivamente 998K di memoria libera per il sistema.

Raspberry Pi2 : e il Bios dov’è?

Non c’è, o quasi. Almeno quel bios a cui siamo abituati con i comuni Pc. Il progetto semplificato non prevede una zona dove cambiare le opzioni relative a cpu, memoria, etc. Per cui al di là delle routine che permettono al firmware le impostazioni base , il riconoscimento dell’hardware e di cercare un SO valido nella microSD inserita nello slot c’è ben poco.

Per fortuna è possibile effettuare alcune “regolazioni” come la frequenza di clock della CPU, della RAM, l’overvolting della CPU stessa e tante altre cose in un file accessibile dopo il boot del sistema operativo, che sia Raspian, Fedora o altro. Questo file si trova nella directory /boot e si chiama config.txt

Una volta dentro un terminale (da interfaccia desktop o via SSH) possiamo vedere cosa c’è dentro con il comando cat /boot/config.txt

Al di là delle varie opzioni di overclocking e overvolting che ci sono dentro e che per il momento non mi interessano ho trovato invece una cosa interessante per chi, come me, ha deciso di utilizzare il Raspberry PI2 come un server headless, ovvero senza alcuna interfaccia grafica ma solo amministrabile via terminale (come d’altronde sono praticamente tutti i server Linux in circolazione).

Il parametro si chiama gpu_mem e decide alla partenza del SO quanta RAM del giga a disposizione viene riservata per la scheda grafica. Il valore di default è 128 Mb, che lascia quindi “solo” 884 Mb di RAM al sistema operativo. Ebbene, io non ho bisogno di allocare questa RAM per la scheda grafica (utilizzo solo la console) per cui tolgo inutilmente qualcosa che a Linux invece potrebbe far comodo.

Per cui nel mio caso è saggio impostare questo parametro al suo valore minimo, ovvero 16 Mb. Quindi diventa gpu_mem=16

Fatto questo è necessario riavviare il Raspberry perché la modifica abbia effetto. Quindi:

# reboot

oppure

# shutdown -r now

oppure si stacca il connettore di alimentazione e si riattacca (sistema  molto criticabile).

I primi due comandi sono piuttosto instabili su alcuni Raspberry e non sempre funzionano ma questo è un altro discorso e merita di parlarne a parte.

 

 

Raspberry Pi2: Fedora 21 minimal e wifi

Se abbiamo bisogno di usare il Raspberry come server senza supporto grafico è conveniente installare una distribuzione come la Fedora Remix 21 minimal, ovvero priva di qualsiasi gestore grafico. Per chi ha intenzione di usare comunque il dongle wi-fi mancherà il riconoscimento automatico dell’interfaccia wlan quindi bisognerà provvedere a mano.

Colleghiamo il Raspberry ad un cavo lan, la ethernet verrà riconosciuta automaticamente in DHCP grazie al Network Manager.

Installiamo questi pacchetti:

Poi stacchiamo il cavo lan, fermiamo e disabilitiamo il NetworkManager.

Poi andiamo nella directory /etc/sysconfig/network-scripts e apriamo con un editor il file ifcfg-eth0.
Cambiamo la direttiva ONBOOT facendola diventare ONBOOT=no. Se non esiste inseriamola.
Questo perché la scheda ethernet, partendo in automatico all’avvio del server si approprierà del default gateway che sicuramente avrà inserito al suo interno ( GATEWAY= xx.xx.xx.xx) impedendo alla interfaccia wlan di gestirlo. Se si hanno più interfacce di rete su un server, solo una può avere un default gateway.

Prima di cominciare controlliamo che il dongle wifi sia riconosciuto:

Nel mio caso viene trovata un’interfaccia Ralink Technology, Corp. RT5370 Wireless Adapter.

Controlliamo che ci sia un modulo del kernel caricato in grado di gestirla. Probabilmente avrà un nome “RT” seguito da numeri.

Sempre nel mio caso si chiama rt2880usb e risulta caricato.

Ora controlliamo inoltre che l’interfaccia wireless sia presente:

Dovrà apparire un output simile a questo. L’interfaccia di rete wireless probabilmente si chiamerà wlan0. Se non dovesse apparire provare a dare il comando ifconfig wlan0 up e poi riprovare con ifconfig. In questo momento probabilmente l’interfaccia non apparirà come RUNNING.

A questo punto entriamo in /etc/sysconfig/network-scripts e diamo il comando:

Configureremo la scheda con un indirizzo statico 192.168.1.100, netmask 255.255.255.0, gateway 192.168.1.1 per entrare in un wireless network con SID = mywifi dotata di password WPA che per il momento non inseriremo qui.

Ecco il contenuto del file ifcfg-wlan0

I campi HWADDR e UUID non vanno modificati. Vanno lasciati quelli che gia’ esistono all’apertura del file. Salviamo ed entriamo in /etc/wpa_supplicant/. Diamo il comando:

ed inseriamo

Salviamo e diamo il comando:

A questo punto testiamo la connessione con il comando:

Testiamo la connessione tentando di fare un ping al gateway

se il gateway risponde la connessione è riuscita.

Andiamo in /etc ed editiamo il file resolv.conf aggiungendo eventuali DNS per il collegamento ad internet. Nel nostro caso aggiungiamo la riga nameserver 192.168.1.1 e salviamo.

Pingando un indirizzo esterno con il comando

# ping www.google.com
verifichiamo la connessione ad internet.

Infine per rendere permanente la connessione wifi andiamo in /etc/init.d e creiamo il file di partenza della connessione wireless.

Inseriamo queste 3 righe nel file:

salviamo e poi diamo i permessi di esecuzione al file.

Entriamo nella directory /etc/rc3.d e creiamo un link simbolico.

A questo punto diamo un comando reboot per controllare che alla partenza il Raspberry si colleghi al wifi.

Raspian o Fedora?

raspbianRaspi-remix-14-horizontal

Quale delle due installare sul Raspberry? Anzi, a voler essere precisi, quale delle tre? Sì, perché sulla pagina di download del sito ufficiale del Rasberry (https://www.raspberrypi.org) è presente anche la Pidora, altra derivata della Fedora compilata per i processori ARM. Questa però cede il passo alla Remix dal momento che quest’ultima è il porting dell’ultima Fedora 21 rilasciata ufficialmente. Alla fine ho scelto di adottare proprio la Fedora Remix perché, senza nulla togliere a chi utilizza quotidianamente Debian per gestire i propri server, è amministrabile come un qualsiasi server che monti Redhat o Centos. Facendo il sistemista su queste piattaforme ho trovato così un ambiente che, per quanto limitato nell’hardware, mi permette di procedere subito in modo familiare alla sua configurazione. Mi aspettavo tra l’altro una notevole stabilità, e così è stato. Non entro nel merito degli ambienti grafici in quanto ovviamente ho installato il server in modo testuale ed è amministrabile solamente da terminale SSH. Devo dire che una microSD da 16 Gb è senz’altro consigliabile, e anzi dal momento che il server ospita anche MySQL, un’altra usb-pen da 16Gb collegata ad una delle porte USB e montata come /var/lib/mysql fa decisamente comodo.