Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Raspberry PI che poi sar protagonista del secondo tutorial, una guida adatta a tutti,
informatici e smanettoni (al secolo makers) per imparare a configurarlo corretta-
mente, ottimizzarlo per la navigazione web, utilizzarlo per creare un Dropbox perso-
nale dove salvare i propri file per renderli accessibili dalla stessa rete Ethernet o Wifi
alla quale connesso il nostro RasPI o addirittura tramite internet fino ad un altro PC
o dispositivo mobile. Vedremo anche come realizzare un media center completo di
telecomando IR, sfruttando uno dei tanti telecomandi che abbiamo in casa ;)
Infine, vorrei far notare sulla copertina il cambio di simbolo iniziale che precede la
numerazione e che identificher anche in seguito gli EOS-Book extra riservati agli
abbonati Platinum!
Emanuele Bonanni
3}
Embedded GNU/Linux
partendo da zero
1. Ricompilare il kernel
Introduzione lavorando.
C
reare un sistema GNU/Linux da zero costi- Per agevolare la lettura, larticolo strutturato in
Tuttavia, oltre allaspetto didattico, ci sono an- integrazione e test su QEMU [2]
che risvolti pratici Tutti i passaggi illustrati di seguito sono stati te-
interessanti: conoscere i componenti e gli stru- stati su un sistema desktop GNU/Linux usando
menti base che servono a costruire un sistema la recente distribuzione Ubuntu 12.04.1.
purpose messe a disposizione dal fornitore del Linux consiste nello scegliere unarchitettura
prodotto o della board di sviluppo su cui stiamo target. Dato che larticolo ha un taglio prevalen-
temente orientato allembedded e vista la pre-
Embedded G N U/Li nux par t endo da zer o {4
Toolchain di cross-compilazione
La toolchain un insieme di strumenti (tipica-
mente un compilatore, un linker e delle librerie)
che ci permettono di generare le applicazioni
per il sistema target a partire dai sorgenti. La
GNU toolchain tipica costituita dal compilatore
GCC, le binutils (strumenti per la manipolazione
dei binari) e le librerie glibc.
Per questa prima fase ci vengono in aiuto le
toolchain pre-compilate (creare un sistema da
zero non implica necessariamente di doverci ri-
compilare anche gli strumenti per creare il siste-
ma stesso).
Embedded G N U/Li nux par t endo da zer o {5
In rete si trovano molte toolchain pre-compilate, Per lutente o il programmatore di alto livello
nel nostro caso utilizzeremo la Linaro Toolchain Linux sempre lo stesso, indipendentemen-
Binaries [3], una toolchain ottimizzata per le pi te da dove gira la propria applicazione.
recenti famiglie di CPU ARM (Cortex A8, A9, La prima fase della ricompilazione del kernel
etc.). consiste nel processo di configurazione. Esso
Il setup della toolchain costituito dai seguenti permette di scegliere la particolare architettura
passaggi: che vogliamo utilizzare per il layer di basso li-
download dei binari della toolchain da internet: vello, assieme a tutti i driver e le funzionalit di
https://launchpad.net/linaro-toolchain-binari- alto livello che vogliamo fornire alle applicazioni
es/trunk/2012.09/+download/... user-space.
estrazione del pacchetto .tar.bz2:
Come abbiamo detto la piattaforma Versati-
le Express gi supportata
setup della variabile di ambiente PATH per pienamente dal kernel Linux,
rendere disponibili i binari della toolchain quindi possiamo procedere direttamente alla
dalla shell corrente: configurazione senza dover applicare patch o
modificare codice:
Riferimenti
1. http://en.wikipedia.org/wiki/Board_support_
package
2. http://en.wikipedia.org/wiki/QEMU
3. https://launchpad.net/linaro-toolchain-
binaries/+download
4. http://wiki.qemu.org/Main_Page
5. http://www.arm.com/products/tools/deve-
lopment-boards/versatile-express/i...
Di seguito il link per accedere direttamente allarticolo sul Blog e partecipare alla discussione:
http://it.emcelettronica.com/embedded-gnulinux-partendo-da-zero-ricompilare-kernel
Embedded G N U/Li nux par t endo da zer o {8
N
ella prima puntata (http://it.emcelettronica. cluso nellimmagine del kernel ad una locazione
com/embedded-gnulinux-partendo-da-ze- prefissata e viene estratto dal kernel stesso in
ro-ricompil...) abbiamo visto come ricompi- RAM durante linizializzazione.
lare un kernel Linux per una generica board di Questa soluzione ha il vantaggio di non ri-
sviluppo virtuale ARM-based. Il kernel rappre- chiedere nessun device driver aggiuntivo
senta una sorta di contenitore di applicazioni per flash, dischi o supporti di memoria ester-
che girano in spazio utente. In questa nuova ni di qualsiasi natura, dato che per il kernel
puntata vedremo come preparare i contenuti sufficiente poter accedere solo alla RAM per
dello spazio utente, ovvero come preparare un montare linitramfs. Spesso questo approccio
root filesystem minimale.Il kernel rappresen- viene utilizzato in ambito embedded nelle fasi
ta una sorta di contenitore di applicazioni che iniziali di testing delle nuove board per avere
girano in spazio utente. In questa nuova pun- praticamente a tempo zero un sistema GNU/Li-
tata vedremo come preparare i contenuti dello nux funzionante.
spazio utente, ovvero come preparare un root Vediamo un esempio pratico di un initramfs con-
filesystem minimale. tenente un unico file: il classico esempio hello
world.
Creare un root filesystem in RAM: Per prima cosa scriviamo un semplice program-
linitramfs ma C in /tmp/init.c:
Nella puntata precedente ci siamo lasciati con il
seguente errore restituito dal kernel che abbia-
mo compilato:
nario stesso tutte le librerie necessarie, invece pi di tempo al boot per ridurre lo spazio oc-
di tentare di caricarle dinamicamente a run-time. cupato pu essere vantaggioso, ad esempio se
Come abbiamo detto il nostro initramfs conterr dovessimo collocare kernel e initramfs in una
un unico file, quindi a run-time non sar possi- flash di dimensioni ridotte, o scaricarli da una
bile trovare le librerie dinamiche allinterno del connessione di rete lenta, etc.
filesystem. Linitramfs che abbiamo creato noi richiede uno
Quiz #2: come mai il programma C che abbia- spazio di 244KB:
mo scritto contiene un loop che non esce mai?
Risposta #2: In Linux ogni processo viene ge-
nerato come figlio di un altro processo. Quando
un processo padre termina prima del processo
figlio questultimo viene immediatamente adot- E giunto il momento di testare se tutto funziona.
tato dal processo di sistema speciale init (il Utilizziamo quindi lo stesso comando visto nella
cui PID 1), che ne diviene il nuovo processo puntata scorsa per avviare la board virtuale, con
padre. Questa operazione viene chiamata re- laggiunta dellopzione -initrd /tmp/initramfs
parenting, ed avviene automaticamente a cura per caricare anche linitramfs:
del kernel. La terminazione del processo init
viene vista dal kernel come un errore irreversi-
bile e quando accade il kernel entra nello stato
di panic. Per questo motivo il nostro init non pu Il risultato il seguente:
Booting Linux on physical CPU 0
terminare.
A questo punto possiamo spostarci in /tmp e
creare linitramfs:
E importante notare che il binario contenuto
allinterno dellinitramfs stato chiamato init.
Questo perch il kernel si aspetta di trovare un
file con questo nome; se rinominiamo il file que-
sto non verr eseguito al termine del processo
di boot.
Notare inoltre che con gzip -9 abbiamo com-
presso linitramfs. Il kernel supporta vari formati
di compressione e riesce ad accedervi anche in
questo caso, a costo di spendere un po pi di
tempo in fase di boot per effettuare la decom-
pressione. Tuttavia, in certi casi, perdere un po
Embedded G N U/Li nux par t endo da zer o {10
Di seguito il link per accedere direttamente allarticolo sul Blog e partecipare alla discussione:
http://it.emcelettronica.com/embedded-gnulinux-partendo-da-zero-preparazione-del-root-filesystem
Embedded GN U/Li nux par t endo da zer o {12
3. Integrazione e test
Introduzione ded. Difatti praticamente tutte le note piattafor-
N
elle puntate precedenti (http:// me embedded Linux-based utilizzano BusyBox
it.emcelettronica.com/embedded-gnuli- (evaluation board, ricevitori, dispositivi mobile
nux-partendo-da-zero-ricompil... e http:// come tablet, smartphone, etc. anche Android!).
it.emcelettronica.com/embedded-gnulinux-par- Vediamo di seguito i passi necessari per inte-
tendo-da-zero-preparaz...) abbiamo analizzato grare BusyBox nel nostro sistema.
rispettivamente la ricompilazione del kernel e Per prima cosa possiamo reperire i sorgenti di-
la preparazione di un root filesystem minimale rettamente dal repository git di BusyBox:
usando linitramfs.
In questa puntata vedremo come completare il $ git clone git://busybox.net/busybox.git
root filesystem dotandolo dei tipici comandi pre- Successivamente dobbiamo specificare la con-
senti in qualsiasi distribuzione GNU/Linux. Infi-
figurazione di ci che vogliamo compilare e in-
ne vedremo alcuni esempi pratici per testare la
cludere nel nostro ambiente. Analogamente a
funzionalit della micro-distribuzione custom da
quanto abbiamo fatto con il kernel possiamo
noi creata.
lanciare un make menuconfig nel modo se-
guente:
I comandi della shell
$ cd busybox
La volta scorsa ci siamo lasciati con un root fi-
lesystem dotato di un unico binario eseguibile: / $ make ARCH=arm CROSS_COMPILE=arm-
init. Questo sufficiente per permettere al ker- linux-gnueabihf- \
nel di lanciare una nostra applicazione custom OPTIMIZE_FOR_CPU=armv7-a CONFIG_
al termine del boot, ma abbastanza diverso PREFIX=/tmp/initrd menuconfig
da quello che si aspetta di trovare in un tipico Al solito, con lopzione CROSS_COMPILE ab-
sistema GNU/Linux. biamo dato indicazione al sistema id build di
Quello che manca una vera e propria shell BusyBox quale cross-compilatore utilizzare (lo
completa, dotata dei comandi che caratterizza- stesso con cui abbiamo compilato precedente-
no qualsiasi distribuzione GNU/Linux. mente il kernel) e con ARCH=arm e OPTIMIZE_
FOR_CPU abbiamo specificato larchitettura
BusyBox target per i file binari che dovranno essere ge-
BusyBox[1] conosciuto anche come il coltel- nerati. Con CONFIG_PREFIX, invece, specifi-
lino svizzero dellembedded Linux. Si tratta di chiamo la directory dove vogliamo che BusyBox
un progetto open-source (GPLv2) in grado di vada ad installare tutti i binari.
fornire un intero set di comandi e utility presenti Se non vogliamo scorrere tutti i singoli men del
nella suite GNU. make menuconfig di BusyBox possiamo utiliz-
Lintero progetto stato scritto con un partico- zare la configurazione riportata come allegato a
lare occhio di riguardo allottimizzazione dello questo articolo (busybox-config.txt). Per fare ci
spazio occupato dai binari, il che lo rendono basta lanciare i comandi seguenti:
particolarmente appetibile nellambito embed-
Embedded G N U/Li nux par t endo da zer o {13
telligente per distinguere un comando dallal- qualsiasi informazione kernel allo user-space.
tro. Ad esempio quando eseguiamo il binario / Successivamente durante lo sviluppo della se-
bin/cat dalla shell, questo di fatto esegue /bin/ rie di kernel 2.5 stato introdotto il sysfs, come
busybox, ma durante allinterno del codice il metodo pi strutturato per separare le informa-
nome del binario risulta /bin/cat. zioni relative ai processi (procfs), rispetto alle
Alla fine possiamo immaginare il main di informazioni relative ai device o al sistema in
BusyBox nel modo seguente (con le dovute genere.
semplificazioni del caso): Infine la directory /dev [5] ospita tutti i file spe-
ciali che forniscono laccesso ai device driver,
int main(int argc, char **argv) utilizzando le stesse interfacce per laccesso ai
{ classici (open, read, seek, write, close, etc.). Ad
if (!strcmp(argv[0], /bin/cat)) { esempio /dev/sda rappresenta il primo di stora-
/* implementazione di cat */ ge rilevato dal sistema, /dev/console il termina-
} else if (!strcmp(argv[0], /bin/ls)) { le, etc. Anche in questo caso vale il principio
/* implementazione di ls */ delleverything is a file, effettuando ad esem-
} else ... pio una read() su /dev/sda, il kernel attiva il de-
A questo punto ci mancano solo pochi passi per vice driver che gestisce il dispositivo di storage
completare un tipico root filesystem GNU/Linux: in questione, e ritorna allapplicazione utente
inizializzare /proc, /sys e /dev. un buffer contenente i dati reperiti sullo stora-
Il proc filesystem (o procfs) [3], montato gene- ge. Il mapping tra file e device driver in kernel
ricamente sotto /proc, uno pseudo-filesystem space viene effettuato utilizzando una coppia
usato dal kernel per esportare le informazioni di numeri detti major e minor number (esistono
sui processi alle applicazioni che girano in spa- delle convenzioni sui nomi dei file che si trova-
zio utente. Tale filesystem si trova solitamente no sotto /dev, ma il nome del file dal punto di
montato nella directory /proc. Questo filesystem vista del kernel totalmente arbitrario).
non utilizza nessun dispositivo di storage, solo Per quanto riguarda /proc e /sys sufficien-
unastrazione messa a disposizione del kernel te creare i mount-point come directory vuote.
per dare una visione dei processi come file, nel Dopo che il kernel partito dovremo predispor-
pieno rispetto della filosofia delleverything is a re uno script di inizializzazione per montare tali
file [2]. filesystem nei mount-point predisposti.
Il sysfs, montato genericamente in /sys [4],
anchesso uno pseudo-filesystem. Anchesso $ cd /tmp/initrd
viene utilizzato dal kernel per esportare infor- $ mkdir proc sys
mazioni allo spazio utente, ma che non hanno $ ls -l
niente a che vedere con i processi (es. la di- total 24
mensione di un disco, il numero di cpu, o infor- drwxrwxr-x 2 righiandr righiandr 4096 Dec 14
mazioni di debug. Inizialmente nei vecchi kernel 15:07 bin
(serie 2.4) esisteva solo il procfs, che veniva uti- drwxrwxr-x 2 righiandr righiandr 4096 Dec 14
lizzato come grande contenitore per esportare 17:11 proc
Embedded G N U/Li nux par t endo da zer o {15
Conclusioni
In questa puntata abbiamo visto come popola-
re linitramfs implementando una vera e propria
micro-distribuzione GNU/Linux, integrando cos
quello che avevamo visto nelle puntate prece-
denti e chiudendo la serie teorica GNU/Linux
partendo da zero.
Riferimenti
1. http://www.busybox.net/
2. http://en.wikipedia.org/wiki/Everything_
is_a_file
3. http://en.wikipedia.org/wiki/Procfs
4. http://en.wikipedia.org/wiki/Sysfs
5. http://en.wikipedia.org/wiki/Device_file
Di seguito il link per accedere direttamente allarticolo sul Blog e partecipare alla discussione:
http://it.emcelettronica.com/embedded-gnulinux-partendo-da-zero-integrazione-e-test
Embedded G N U/Li nux par t endo da zer o {18
L
a Raspberry Pi [1] (o pi brevemente RPi nella ROM del SoC Broadcom
da ora in poi) un computer vero e proprio BCM2835. Il primo stage reperisce dalla prima
realizzato su una singola scheda elettronica partizione dellSD card esterna il boot-loader di
sviluppato dalla Raspberry Pi Fundation, unor- secondo livello (bootloader.bin), che si occu-
ganizzazione di beneficenza che ha sede nel pa di leggere tutti gli altri file necessari al boot,
Regno Unito. Lo scopo di tale progetto di pro- compresa limmagine del kernel (kernel.img),
muovere lo studio dellinformatica, in particolar caricando tutto nellSDRAM. A questo punto il
modo in ambito accademico. Proprio per questa boot-loader ha terminato il suo compito e passa
ragione tale dispositivo facilmente accessibi- il controllo al kernel.
le a costi molto contenuti (il prezzo va da $25 NOTA: ricompilare un kernel da zero su una bo-
per la prima versione a $35 per la seconda della
ard come la RPi pu essere visto anche come
versione).
unottima opportunit per realizzare un labo-
Per maggiori dettagli sulle specifiche della bo-
ratorio di kernel development. La board po-
ard si rimanda allarticolo seguente:
tr essere utilizzata in seguito anche per fare
http://it.emcelettronica.com/computer-meno-di-
esperimenti sul kernel Linux senza aver paura
25-dollari-con-arm11-e-hdmi.
di danneggiare o compromettere il dispositivo
In questo nuovo articolo vedremo come ricom-
stesso. Difatti per ripristinare il kernel originale
pilare un kernel e come preparare un root filesy-
basta semplicemente sovrascrivere il file kernel.
stem minimale per la RPi, partendo dai sorgenti
img presente nella partizione di boot della SD
e da una SD card vuota.
card, ad esempio inserendo lSD card in un PC.
Per una visione pi generica sulla procedura di
ricompilazione del kernel si consiglia la lettura
Prerequisiti
degli articoli precedenti della serie Embedded
una RaspBerry Pi
GNU/Linux partendo da zero:
una SD card (la nostra sar una distro ultra-
http://it.emcelettronica.com/embedded-gnuli-
minimale quindi va bene di qualsiasi dimen-
nux-partendo-da-zero-ricompil...
sione)
http://it.emcelettronica.com/embedded-gnuli-
un PC con una distribuzione GNU/Linux
nux-partendo-da-zero-preparaz...
una connessione a Internet per scaricare i
http://it.emcelettronica.com/embedded-gnuli-
sorgenti e il cross-compilatore
nux-partendo-da-zero-integraz...
$ make ARCH=arm CROSS_COMPILE=arm- Copiamo i file del boot loader e la nostra imma-
Test finale
Per testare la distribuzione sufficiente inserire
lSD card nello slot
presente sulla RPi e riavviare la scheda, colle-
gandola ad un monitor o a un televisore HDMI e sione del kernel che sta girando sulla board con
vedere cosa compare a video. il comando uname -r.
Come possiamo vedere il kernel risulta essere
proprio la nostra versione: 3.2.27-eos+.
Riferimenti
[1] http://www.raspberrypi.org/
[2] http://it.emcelettronica.com/computer-meno-
di-25-dollari-con-arm11-e-hdmi
[3] http://it.emcelettronica.com/raspberry-pi-tu-
torial-installazione-distro-...
Di seguito il link per accedere direttamente allarticolo sul Blog e partecipare alla discussione:
http://it.emcelettronica.com/embedded-gnulinux-partendo-da-zero-test-sulla-raspberry-pi
23}
N
sono tuttora disponibili per lauto-costruzione
ato nel 2006 con lintento di promuovere lo
della prima versione di RasPI, ma chi di voi pro-
studio dellinformatica, sopratutto a livello
ver a costruirlo non si aspetti la stessa fluidit
scolastico, e di realizzare un PC a basso
del RasPI attuale: la prima versione, infatti, ave-
costo utilizzabile da tutti, inizialmente RasPI era
va una frequenza di clock di 22.1MHz e 512 KB
basato su un microcontrollore Atmel, e le sue di- di SDRAM, contro gli attuali 700Mhz del proces-
mensioni erano molto diverse da quelle attuali. sore ARM11 e i 512MB di SDRAM in dotazione
al Modello B.
Successivamente stato rimodernato nel 2009
con la prima versione dotata di processore ARM
e di dimensioni notevolmente ridotte rispetto
alla versione del 2006. A questo punto RasPI
assomigliava ad una chiavetta USB e per la pri-
ma volta dotato di un uscita HDMI. Ma solo nel
2011 stata presentata la versione che noi ora
R a s p b e r r y P I Tu t o r i a l {24
lasciando solo lo spazio libero. Dopo di che se- Oltre a RasPI abbiamo bisogno di:
gniamoci con quale nome il sistema chiama la - Mouse e tastiera;
Memory inserita (es. mmcblk0). - Un alimentatore con connettore micro USB (un
carica batterie per cellulari va benis-
simo, controllate eventualmente che
sia presente nellelenco compatibili-
t);
- Un monitor con ingresso HDMI o un
Ora siamo pronti a procedere: apriamo il termi- adattatore HDMI/DVI per i monitor pi vecchiot-
nale e iniziamo a compilare il comando dd. ti;
Un esempio pu essere: - Il cavo per la connessione ad internet via
dd if=/home/utente/Scrivania/Raspbian.img of=/ ethernet.
dev/mmcblk0 Pronti? Alimentiamolo!
Qualora fossero necessari i permessi da ammi- Appena viene alimentato, RasPI inizia subito a
nistratore baster aggiungere un sudo funzionare visualizzando sul monitor la fase di
sudo dd if=/home/utente/Scrivania/Raspbian. boot ed avvio. Ad avvio terminato, ci trovere-
img of=/dev/mmcblk0 mo di fronte ad una schermata che ci mette a
disposizione le prime configurazioni
pre-avvio.
sualizzazione su schermo presenti delle bande RasPI e avere quindi una maggior velocit del
nere laterali, abilitate loverscan. sistema. Tuttavia, nonostante tutte le schede
Configure_keyboard: qua possiamo imposta- RasPI supportino lincremento di frequenza im-
re il layout della tastiera per avere una piena posto da Raspbian senza perdere stabilit, ne
compatibilit con i simboli che altrimenti risulte- viene sconsigliato luso per non accorciare la
rebbero in posizioni diverse. Scegliamo quindi vita alla schedina.
Configure_keyboard e attendiamo che RasPI Ssh: abilita/disabilita il controllo di RasPI via
raccolga le dovute informazioni. Ci troveremo ssh. Gi abilitato di default, permette di prende-
ora di fronte ad una lista di modelli preimposta- re i comandi di RasPI utilizzando un semplice
ti di tastiere. Se non siamo a conoscenza del programma per laccesso via ssh da ethernet
modello esatto, o se non presente nella lista, come Putty su windows, o il comando ssh no-
scegliamo il valore di default e procediamo con meutente@ip_RasPI su mac e linux.
la configurazione. Dobbiamo ora inserire il tipo Boot_behaviour: abilitando tale opzione, al
di layout basandoci sulla lingua utilizzata: pro- prossimo riavvio RasPI ci presenter il suo De-
cediamo quindi scegliendo Italiano e confermia- sktop. Se non abilitato, al termine del prossimo
mo. Infine ci viene chiesta la funzione di alcuni avvio RasPI si avvier in modalit testuale met-
tasti come AtlGr, se non conosciamo la funzione tendoci a disposizione la sola riga di comando
possiamo lasciare tutto di default e terminiamo e non lambiente Desktop, ricordiamoci quindi
la configurazione. di abilitarla.
Change_pass: con Change_pass cambiamo Update: con Update aggiorniamo i pacchetti
la password daccesso a RasPI di default ra- presenti in RasPI, compresi alcuni componenti
spberry per lutente pi. della lingua utilizzata per il sistema. Consiglio
Change_locale: permette di impostare una quindi di selezionare tale opzione prima proce-
lingua da utilizzare per il sistema. Tuttavia la dere al primo avvio vero e proprio, ricordando
lingua base rimane linglese in quanto molti che ci richiede laccesso ad internet.
dei pacchetti di Raspian utilizzano solo lingle- Configurato ci che ci serviva? Allora clicchia-
se nellinterfaccia grafica. Si pu quindi evitare mo Finish e aspettiamo che RasPI ci presenti il
questo passaggio. suo Desktop!
Change_timezone: imposta il fuso orario, la Se avete scelto di espandere la partizione prin-
data e lora. Ricordo per che RasPI non include cipale allintera Memory, il primo avvio pu du-
nel suo hardware un RTC(Realm Time Clock) e rare anche pi di 5 minuti proprio perch RasPI
non quindi in grado di ricordare lora e la data sta modificando la partizione principale. Potete
se viene rimossa lalimentazione. La data e lora rendervi conto del fatto che sta lavorando dal
vengono comunque sincronizzate ogni qual vol- led ACT acceso di colore giallo.
ta vi sia una connessione ad internet.
Memory_split: modifica il quantitativo di me- Lambiente desktop
moria disponibile alla GPU, di default 64. Terminato lavvio, se ci siamo ricordati di abilita-
Overclock: loverclock permette di aumentare re la visualizzazione del desktop, ci troveremo
la frequenza di clock del processore AMR di davanti allambiente desktop basato su LXDE
R a s p b e r r y P I Tu t o r i a l {27
pante, ed utilizzare leditor di testo preinstallato. lazione di una nuova stampante e leventuale
La configurazione di una nuova stampante ri- condivisione in rete. Terminata linstallazione,
chiede lutilizzo di una connessione ad internet dovremo comunicare a CUPS che noi abbiamo i
per scaricare i driver necessari, inoltre sar poi permessi per poter accedere alla gestione delle
possibile condividere la stampante installata in stampanti, quindi da riga di comandi digitiamo:
rete, in modo tale da poter rendere disponibile sudo usermod -a -G lpadmin pi
la stampante anche ad altri eventuali PC com- Se durante la fase di configurazione di RasPI
presi nella rete Ethernet. abbiamo cambiato il nome dellutente principa-
Ma prima di stampare qualcosa, dobbiamo scri- le, dovremo sostituire il pi presente nel coman-
verlo... do con il nome del nuovo utente.
Per creare un nuovo file di testo possiamo clic- Confermiamo, e siamo pronti per accedere alla
care sul men di start, andare su Other/Altro e schermata di configurazione della stampante.
cliccare su LeafPad, si aprir cos un file di testo Apriamo il browser internet, e andiamo allindi-
bianco pronto per accettare tutto ci che voglia- rizzo http://127.0.0.1:631 e ci troveremo nella
mo scrivere. pagina principale di CUPS.
Scegliamo la stampante corretta, nel mio caso E ora siamo pronti per stampare il nostro file di
testo precedentemente scritto
la Epson WP-4515 e confermiamo.
Nella pagina successiva possiamo dare un
nome alla stampante, ed eventualmente condi-
viderla in rete prima di procedere alla selezione
del modello corretto. Ci verr proposta una lista
di modelli di stampanti, e noi dovremo scegliere
quello giusto affinch CUPS carichi i driver adat-
ti. Se il modello non presente, potete provare
con un modello simile purch sia della stessa
marca, oppure scaricare dal sito del produttore
il file PPD contenente i driver della stampante
da voi utilizzata e fornirli a CUPS nellapposita
casella.
Con un ultimo click su conferma, potremo im-
postare il tipo di carta utilizzato di default e ter-
minare linstallazione della stampante, magari
stampando anche un testo di prova per verifica-
re che tutto sia andato a buon fine.
Di seguito il link per accedere direttamente allarticolo sul Blog e partecipare alla discussione:
http://it.emcelettronica.com/raspberry-pi-tutorial-installazione-distro-configurazione-e-stampa
R a s p b e r r y P I Tu t o r i a l {30
N
ella distribuzione che abbiamo installa- collegato uno schermo con una bassa risoluzio-
to la volta scorsa, Raspbian, troviamo ne, o nel caso in cui si utilizzi ladattatore HDMI-
preinstallati: Midori, Dillo e Netsurf. Questi tre Se avete seguito la guida precedente per la
browser sono molto leggeri e permettono una configurazione della stampante tramite CUPS,
navigazione abbastanza fluida, tuttavia vi sono vi potr esser capitato una non corretta impagi-
In conclusione
Se siete interessati al mondo RasPI ma non
avete ancora fatto il passo dellacquisto perch
limitati dalla mancanza di un monitor per poterlo
usare, ora sapete che il monitor pu essere vi-
sto come un accessorio opzionale ed quindi
possibile prendere il totale controllo di RasPi
da remoto via linea di comando o con tutto lam-
biente desktop. Pi avanti vedremo come rea-
lizzare un piccolo server simile a DropBox con
RasPi e potremo sfruttare il controllo remoto per
lasciare RasPi in una posizione a noi comoda
anche priva di monitor durante tutto il tempo in
cui lavorer come server per ospitare i nostri
dati.
Di seguito il link per accedere direttamente allarticolo sul Blog e partecipare alla discussione:
http://it.emcelettronica.com/raspberry-pi-tutorial-navigazione-internet-controllo-remoto
S
icuramente ormai tutti conoscerete DropBox, sono sempre alla portata di un utente qualsiasi
il servizio che gratuitamente permette di che magari deve andare in vacanza e vuole fare
avere 2GB di spazio internet nel quale po- un backup di tutte le foto che scatta su un server
ter caricare file e foto per poterle poi condivide- sicuro. Allora facciamoci aiutare da RasPI!
re su pi dispositivi. Come DropBox, esistono
molti altri siti, ma tutti mettono a disposizione Protocollo SFTP
Lultima volta abbiamo visto lSSH, un protocol-
un limitato numero di GB che pu per aumen-
lo di rete che permette di stabilire una connes-
tare (fino ad un massimo di 16GB per DB) nel
sione remota tramite due dispositivi nella stessa
caso in cui si invitino altre persone, si aggiuga-
rete per linvio di comandi da terminale, lSFTP
no dispositivi, si carichino foto e via dicendo.
( SSH File Transfer Protocol) invece un proto-
I problemi con questi siti per, si riducono sem-
collo di rete che ci permette di inviare o spostare
pre agli stessi: i nostri file si trovano sul server
file tra un Host ed un Client in maniera sicura e
di qualcun altro e nel momento in cui lo spazio cifrata. LSFTP utilizza come base il protocollo
messo gratuitamente a disposizione non ci do- SSH, che come abbiamo gi visto supportato
vesse pi bastare, i costi per aumentarlo non nativamente da RasPI, il che semplifica molto la
R a s p b e r r y P I Tu t o r i a l {36
A questo punto sar necessario un riavvio, connessi a RasPI, vedremo i file presenti sulla
dopo il quale per connetterci via SSH non sar Memory. In alto, troviamo quattro TextBox, nella
pi possibile, qualora la connessione avvenisse prima inseriremo il tipo di protocollo e lindirizzo
da Linux o Mac, utilizzare il semplice comando: IP di RasPI, nel secondo il nome utente dellu-
ssh NomeUtente@IndirizzoIP tente appena creato, in seguito la password,
ma dovremo usare: ed infine la porta da noi precedentemente se-
ssh -p NumeroPorta NomeUtente@IndirizzoIP lezionata. Con un click su Connessione Rapi-
un esempio: da potremo accedere a tutti i file contenuti nella
ssh -p 51000 pi@192.168.1.4 Memory. In alternativa possiamo inserire nella
Se utilizziamo Windows invece, dovremo sem- prima TextBox il comando cos composto:
plicemente impostare il numero della porta in sftp://NomeUtente:Password@IP_RasPI:Porta
Putty o nel programma utilizzato. Usando i dati di default ed un IP e porta a caso:
sftp://pi:raspberry@192.168.1.5:50265
Connessione dalla rete locale
Ora che RasPI pronto per lo scambio di file
con i dati da noi impostati, possiamo gi pro-
varlo utilizzando un PC o Smartphone collegato
alla stessa rete. Per farlo, ci faremo aiutare da
Filezilla, un programma gratuito che permette di
collegarci ad un dispositivo Host con i pi dif-
fusi protocolli di invio e ricezione file. Una volta
scaricata la versione Client dal sito ufficiale e
dopo averlo installato, ci troveremo di fronte alla
seguente interfaccia grafica: Via web?
Ora viene il bello, ovviamente non possibile
stabilire una connessione con RasPI dallester-
no della nostra rete LAN o WiFi, infatti se per
puro sfizio provate avviare Filezilla su un PC
connesso ad una diversa connessione internet,
e ad inserire lindirizzo lIP della connessione in-
ternet alla quale connesso RasPI che potete
trovare cercando my ip su google con Midori,
Filezilla vi comunicher che non stato possibi-
le stabilire una connessione. Perch? Semplice,
il vostro Modem blocca ogni accesso dal Web
Come possiamo notare, il programma suddi- alla vostra rete privata, e guai se non lo facesse!
viso in due parti, sito locale e sito remoto. Per poter accedere dal web, magari da un altro
In Sito Locale troviamo il nostro computer con PC connesso ad internet, dobbiamo ora aprire
tutti i suoi file mentre in Sito Remoto, una volta la porta che abbiamo precedentemente inserito
R a s p b e r r y P I Tu t o r i a l {38
nel file di configurazione SSH, nel nostro mo- potete trovare lapertura delle porte sotto la voce
dem di casa. In commercio vi sono centinaia di Port Forwarding Port Mapping o Virtual Ser-
modem, uno diverso dallaltro, pare evidente ver o in alternativa con una semplice ricerca in
quindi che sarebbe impossibile indicare passo- internet inserendo il modello del vostro modem
passo i procedimenti per aprire le porte deside- troverete la guida su come aprire le porte per
rate su ogni modello, tuttavia il percorso molto certi programmini. A questo punto, apriamo la
simile per tutti i modem. Innanzitutto dobbiamo porta che abbiamo impostato su RasPI e natu-
conoscere lindirizzo IP del nostro modem: ralmente indichiamo il suo indirizzo IP, mentre
alla richiesta del protocollo indicheremo TCP,
Windows salviamo, e chiudiamo il browser internet.
Indifferentemente dal tipo di Windows utilizzato,
andiamo su Start>Programmi>Accessori>Prom
pt dei comandi E nel terminale appena aperto
inseriamo il comando ipconfig. Alla voce Ga-
teway predefinito troveremo lindirizzo IP del
modem.
Il nostro RasPI-DropBox ora pronto! Possia- ci spostiamo nella cartella appena decompres-
mo aprire, salvare, e spostare file da RasPI al sa
PC in uso attraverso Internet o via Ethernet. cd noip-2.1.9-1
installiamo il DUC
No-IP! sudo make
Rimane un problema, e se il modem si riavvia sudo make install
e lindirizzo IP cambia? Come faccio a comu- avviamolo, ed eseguiamo la prima configurazio-
nicare con RasPI se non conosco pi il suo ne
IP? Semplice, No-IP! No-ip un servizio gra- sudo /usr/local/bin/noip2
tuito con il quale possiamo avere un indirizzo Ci verranno ora chiesti i dati con cui ci siamo
internet simile a mariorossi.no-ip.org il quale ci registrati sul sito noip.com, iniziando con la mail
reindirizzer verso lIP della nostra connessione e la password, successivamente dovremo in-
Internet alla quale connesso RasPI, non solo, serire ogni quanti minuti sincronizzare lIP con
nel momento in cui il modem venisse riavviato, il dominio e ci viene consigliato un intervallo di
un software che installeremo su RasPI comu- 30 minuti. Non inserite un tempo tropo ristret-
nicher automaticamente il nuovo IP in modo to come possono essere 5 o 10 minuti, 20-30
tale che collegandoci allindirizzo fornito, potre- minuti sono pi che accettabili e non obbliga-
mo sempre connetterci con RasPI! Ma andiamo no RasPI a continue comunicazioni con noip.
per gradi, innanzitutto dobbiamo registrarci su Infine, indicheremo il dominio precedentemen-
www.noip.com indicando, durante la registra- te creato, ed ecco il nostro RasPI-Box pronto
zione, il nome del nostro futuro dominio nella ad essere raggiunto inserendo al posto dellIP
sezione Hostname. LHostname che indichere- in Filezilla, lindirizzo che abbiamo precedente-
mo, sar quello a cui dovremo connetterci con mente creato.
Filezilla per comunicare con RasPI, sar quin-
di opportuno salvarlo da qualche parte insieme
alla mail e la password utilizzata per la registra-
zione. A registrazione effettuata, dobbiamo in-
stallare lapplicazione DUC (Dynamic Update
Client) su RasPI, quindi da terminale daremo i
seguenti comandi:
Creiamo una nuova cartella e la chiamiamo noip
mkdir /home/pi/noip
ci spostiamo allinterno della cartella
cd /home/pi/noip
scarichiamo il file dinstallazione del DUC wget
http://www.no-ip.com/client/linux/noip-duc-li- Non ci rimane che far si che il DUC si avvii ogni
nux.tar.gz qual volta viene acceso RasPI! Sempre da ter-
decomprimiamo il file appena scaricato minale quindi, creeremo uno script per avviare
tar vzxf noip-duc-linux.tar.gz il DUC ad ogni accensione:
R a s p b e r r y P I Tu t o r i a l {40
Di seguito il link per accedere direttamente allarticolo sul Blog e partecipare alla discussione:
http://it.emcelettronica.com/raspberrypi-tutorial-realizziamo-nostro-dropbox-con-raspi
R a s p b e r r y P I Tu t o r i a l {41
A
ndiamo per gradi, prima di addentrarci nella - Un telecomando IR, possibilmente non gi uti-
ricezione dei comandi impartiti da un tele- lizzato da un altro dispositivo per evitare conflitti
comando IR, dobbiamo necessariamente - Un sensore IR siglato TSOPxxxx
prendere confidenza con la distribuzione che - Semplici cavetti per collegare il sensore ai pin
andremo ad utilizzare: Raspbmc. di I/O di Rpi
Raspbmc una distribuzione basata su Debian Come avrete notato, il punto forte sicuramen-
come anche Raspbian, la quale porta sulla no- te lesiguo numero di componenti necessari,
stra piccola schedina il pi diffuso programma oltre al fatto che un TSOPxxx non costa pi
per MediaCenter: XBMC. Insieme a XBMC, ar- di 1,5 ed reperibile in quasi tutti i negozi di
riva la quasi totale compatibilit con gli Add-on componentistica elettronica. Il telecomando IR
per esso messi a disposizione, possiamo quindi che andremo ad utilizzare non deve avere par-
vedere direttamente sul televisore in streaming ticolari caratteristiche, ma per una pi facile in-
tutte le puntate dei pi famosi programmi televi- terazione tra noi e Raspbmc lideale sarebbe un
sivi, film, e molto altro. telecomando con le quattro frecce direzionali ed
Procediamo quindi con linstallazione di Ra- il tasto OK centrale, per poterci muovere age-
spbmc! Sul sito ufficiale troviamo tre Download, volmente nel men.
il primo si riferisce ad un programma con una Per quanto riguarda il sensore TSOP invece,
semplice interfaccia grafica il quale ci guider c da fare una piccola precisazione prima di
nellinstallazione di Raspbmc in un supporto procedere allacquisto. Vi sono svariati sensori
esterno da noi scelto, il secondo ed il terzo fan- con tale sigla, i quali differiscono in tensione di
no rifermento al classico file .img da scaricare e
alimentazione, frequenze captate e tipo di se-
scrivere successivamente su Memory Card con
gnale in uscita.
lo stesso procedimento con cui, negli articoli
Come gi saprete, su Rpi sono presenti dei pin
precedenti, abbiamo installato Raspbian. I due
file .img messi a disposizione differiscono nel di I/O per il collegamento di sensori, pulsanti,
fatto che il primo un file molto leggero il quale, rel e per far interagire RPI con il mondo ester-
dopo averlo scritto su Memory ed avviato in Rpi, no. Tali pin, se utilizzati come ingressi per la
scaricher tutto il necessario dalla rete Internet. ricezione di un segnale, accettano come tensio-
Il secondo invece contiene lintera distribuzione ne massima in ingresso 3.3V, dovremo quindi
Raspbian la quale richiede solo di esser scritta scegliere un sensore IR in grado di ricevere
su Memory e poi avviata.
fedelmente i comandi impartiti dal telecoman-
Dopo aver preso un po di confidenza con que-
do con una tensione inferiore ai classici 5V dei
sta distribuzione, possiamo passare alla lista
segnali TTL.
della spesa. Per permettere a Rpi di ricevere i
R a s p b e r r y P I Tu t o r i a l {42
Tra questi, vi il TSOP34138 il quale presen- Per aiutarvi nellindividuazione dei pin, potete
ta proprio le caratteristiche e laffidabilit da noi utilizzare limmagine qui riportata.
ricercate, potrete utilizzare anche modelli diffe-
renti, ma non sempre la ricezione del comando
avverr in modo corretto ne verr garantita una
buona distanza tra il ricevitore ed il telecoman-
do. Le prove iniziali le ho realizzate con un sen-
sore IR recuperato da un vecchio registratore, Controllate pi volte che il collegamento avven-
ed infatti dopo il metro e mezzo mi era impos- ga nei giusti pin, un errore potrebbe portare alla
sibile impartire i comandi dal telecomando e ho rottura del vostro Rpi, come ad esempio alimen-
quindi dovuto acquistare un sensore pi adatto tare il sensore dai 5V e non dai 3.3V. A collega-
allo scopo. mento effettuato, possiamo passare a conosce-
di utilizzeremo il comando modprobe per cari- venienti dal telecomando, LIRC dovr innanzi-
carlo: tutto decifrarli, per poi permetterci di mappare il
sudo modprobe lirc_rpi telecomando. Procediamo con i comandi:
successivamente chiuderemo i processi che sudo kill $(pidof lircd)
tengono impegnato LIRC: sudo irrecord -d /dev/lirc0 ~/lircd.conf
sudo kill $(pidof lircd) ed inizier quindi la fase di apprendimento.
ed ora siamo pronti per verificare che Rpi sia in Come ci viene anche riportato sul terminale,
grado di ricevere i segnali provenienti dal tele- dobbiamo premere uno ad uno i vari tasti del
comando. Dopo aver dato il comando: telecomando, premendo ogni singolo tasto per
mode2 -d /dev/lirc0 circa un secondo. Alla pressione del tasto, ap-
Rpi rimarr in attesa della pressione di un ta- pariranno uno o pi punti sul terminale, verran-
sto sul telecomando. Se il sensore IR corret- no cos composte due linee da 80 punti al ter-
tamente collegato a Rpi, alla pressione di un mine delle quali sar possibile indicare lesatto
qualsiasi tasto vedremo apparire una serie di comando da dare ad ogni singolo tasto.
dati simili a:
pulse 576 Mappatura dei tasti
space 548 Terminata la procedura di apprendimento, ci
pulse 602 verr ora chiesto di mappare i tasti che voglia-
space 1663 mo utilizzare con XBMC. Se vogliamo avere un
pulse 549 interazione base, ci bastano le sole frecette ed
space 549 il tasto OK. Dovremo ora inserire testualmente il
comando da assegnare al tasto premuto, dalle-
lenco che potete trovare allegato allarticolo tro-
vate una lista di tutti i comandi assegnabili, qui
riporto i soli comandi base:
KEY_UP
KEY_DOWN
KEY_LEFT
KEY_RIGHT
KEY_ENTER
Se non appare nulla, controllate che il sensore Linserimento case sensitive, quindi dovrete
IR sia connesso sui giusti pin, ripetete la serie di rispettare il maiuscolo. Pu succedere che du-
comandi sopra indicati, o provate ad allontanar- rante la scrittura nel terminale, la tastiera non
vi o avvicinarvi al sensore. Se vi trovate troppo corrisponda per quanto riguarda i segni, per in-
vicini non sar in grado di ricevere correttamen- serire lunderscore o trattino basso quindi, do-
te i comandi, posizionatevi quindi alla distanza vrete premere la combinazione Shift + ?. Per
di circa un metro. comodit, potete anche eseguire tutta la confi-
Decodifica dei segnali gurazione di LIRC via SSH, quindi da un qualsi-
Ora che Rpi in grado di ricevere i segnali pro- asi PC connesso alla stessa rete di RPi potrete
R a s p b e r r y P I Tu t o r i a l {44
Di seguito il link per accedere direttamente allarticolo sul Blog e partecipare alla discussione:
http://it.emcelettronica.com/raspberrypi-controlliamo-media-center-con-comune-telecomando-ir