Raspberry Pi, il piccolo computer con cuore GNU-Linux pensato per interagire con il mondo! 🙂
Tutti noi usiamo i computer per lavorare, navigare, giocare… ma lo avete mai usato per interagire con il mondo? Adesso scrivere un programmino per accendere una luce è alla portata di tutti. Fantastico no?
Primo avvio
Per poter usare la Raspberry Pi, è necessario scaricare il sistema operativo dal sito ufficiale e copiarlo su una micro sd (trovate la guida qui). Se dovete usare la Raspberry Pi per applicazioni embedded vi consiglio di sfruttare la leggerezza della distribuzione Raspbian Jessie Lite (oggi è 30 marzo 2016). Questa distribuzione è minimal, con relativo guadagno in termini di tempi di boot.
Una volta creata la micro sd, avviate la Raspberry Pi. Per accedere inserire come username “pi” e come password “raspberry” (ovviamente senza gli apici doppi) che sono le credenziali di default per ogni sistema operativo raspbian.
Configurare la Raspberry Pi
Essendo molto leggera come distribuzione Raspbian Jessie Lite non ha il supporto del desktop grafico. E a noi questa cosa fa piacere. Nasce però immediatamente l’esigenza della connessione ad una rete per collegarla ad internet e controllarla da remoto in “ssh“. Se avete una Dongle WiFi usb allora è necessario configurare il sistema affinché riconosca la vostra WiFi di casa.
Configurare la WiFi
Entrare in modalità super utente con il comando
sudo su
Modificare il file di configurazione WiFi con il seguente comando
nano /etc/wpa_supplicant/wpa_supplicant.conf
aggiungendo in coda al file le seguenti righe:
network={ ssid="nome wifi" psk="password wifi" }
A questo punto salvare ed uscire dal programma “nano” e riavviare la Raspberry Pi con il comando
reboot
potete farlo perché siete loggati come root.
Connessione tramite ssh
La connessione ssh alla Raspberry Pi è disabilitata di default. Ci sono 2 metodi per abilitare il collegamento ssh alla vostra RBPI.
1) Inserire la scheda SD in un pc e creare un file vuoto chiamato ssh nella partizione di boot. Il comando da usare nella partizione di boot è:
touch ssh
con questo metodo non abbiamo bisogno di collegare la Raspberry Pi ad un monitor e ad una tastiera.
2) Se la Raspberry Pi è collegata ad un monitor e ad una tastiera, allora da terminale digitiamo il comando:
sudo raspi-config
e navigando nelle varie sezioni scegliere “Interfacing Options”
Poi scegliere SSH
Quindi scegliere YES.
Ora riavviate la Raspberry Pi. Da questo momento potete accedere tramite ssh.
Installare Java8 Oracle sulla Raspberry Pi
Usando il super user, cerchiamo il nome del pacchetto java8 usando il comando
apt-cache search java8
otteniamo quindi una lista che ci permetterà di individuare il pacchetto
oracle-java8-jdk - Javaâ„¢ Platform, Standard Edition 8 Development Kit
quindi lo installiamo
apt install oracle-java8-jdk
Ricerca della Raspberry Pi usando nmap
Supponiamo il nostro pc portatile o desktop abbia un indirizzo del genere 192.168.43.243 e che la raspberry pi sia collegata alla stessa rete.
Con il comando nmap possiamo ricercare l’ip della raspberry pi, es:
nmap -sn 192.168.43.
di seguito il risultato
Starting Nmap 6.40 ( http://nmap.org ) at 2017-06-28 22:14 CEST Nmap scan report for 192.168.43.1 Host is up (0.0089s latency). Nmap scan report for raspberrypi (192.168.43.145) Host is up (0.012s latency). Nmap scan report for andrea-Precision-M4800 (192.168.43.243) Host is up (0.00031s latency). Nmap done: 256 IP addresses (3 hosts up) scanned in 3.07 seconds
leggendo il risultato troviamo l’ip della nostra raspberry pi:Â 192.168.43.145
Per collegarci quindi:
ssh pi@192.168.43.145
oppure ancora più semplicemente, usando il nome dell’host:
ssh pi@raspberrypi
In quest’ultimo caso non è necessario nemmeno conoscere l’ip della raspberry pi.
Settaggio indirizzo IP statico.
Per praticità settiamo un ip statico alla nostra raspberry pi, così sapremo che per collegarci basterà semplicemente usare quell’ip. Vediamo come fare:
Modificare il file di configurazione dell’interfaccia di rete.
sudo nano /etc/network/interfaces
Sulla mia Raspberry Pi Zero ho installato una dongle WiFi, quindi andrò a modificare l’interfaccia wlan0, modificando le seguenti righe:
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
in:
iface wlan0 inet static
address 192.168.1.5
netmask 255.255.255.0
gateway 192.168.1.1
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
Questo e tutto, riavviate e accedete usando l’ip statico che avete settato.
raspi-config
Il programma che Raspbian mette a disposizione per la configurazione di base della Raspberry Pi è raspi-config. Bisogna eseguire questo comando in modalità super utente.
sudo raspi-config
comparirà la seguente schermata:
Migliorare i tempi di boot
Raspbian Jessie Lite, è incredibilmente leggero. Ciononostante, possiamo spingere ancora di più sull’acceleratore e cercare di raggiungere il limite in termini di tempi di boot. Ma perché? I motivi sono tantissimi, ma a noi basta sapere che per le applicazioni IoT più il sistema parte in fretta, meglio è. 🙂
Come si fa? Beh il Raspbian Jessie Lite, come quasi tutti i sistemi linux da qualche anno a questa parte, monta un boot manager che si chiama “Systemd”, che mette a disposizione una serie di strumenti con i quali possiamo fare hacking per ridurre il tempo di boot.
Il primo comando ci permette di sapere il tempo di boot sia del kernel che della parte utente:
systemd-analyze
il risultato è questo:
Startup finished in 2.330s (kernel) + 29.536s (userspace) = 31.867s
Boot tuning
Cerchiamo di migliorare i tempi di boot. Come primo passo espandiamo il file system della Raspberry Pi per tutto il disco usando l’opzione numero 1 di raspi-config.
Startup finished in 2.324s (kernel) + 27.129s (userspace) = 29.453s
Abbiamo guadagnato 2.407s.
Usando ancora il tool raspi-config ma selezionando l’opzione 4, scegliamo “Fast Boot without waiting for network connection”… riavviamo e controlliamo i tempi.
Startup finished in 2.438s (kernel) + 17.123s (userspace) = 19.562s
Abbiamo guadagnato 9.891s. E la connessione ssh funziona correttamente perché l’ip è rimasto 192.168.1.5
Analizziamo i tempi di boot
Possiamo guadagnare altro tempo interrompendo qualche servizio che non ci interessa. Esiste un comando che ci permette di sapere i tempi di boot dei servizi che partono all’avvio di Raspbian, ed è:
systemd-analyze blame
Risultato
4.261s networking.service
2.289s keyboard-setup.service
2.021s systemd-logind.service
1.661s console-setup.service
1.370s raspi-config.service
1.310s alsa-restore.service
1.148s kbd.service
1.096s dhcpcd.service
1.065s systemd-fsck-root.service
1.048s triggerhappy.service
937ms systemd-setup-dgram-qlen.service
910ms fake-hwclock.service
766ms dev-mqueue.mount
725ms kmod-static-nodes.service
660ms systemd-journal-flush.service
647ms rc-local.service
597ms systemd-udev-trigger.service
478ms systemd-tmpfiles-setup.service
412ms plymouth-read-write.service
364ms rsyslog.service
342ms systemd-modules-load.service
242ms systemd-tmpfiles-setup-dev.service
236ms systemd-sysctl.service
225ms systemd-update-utmp-runlevel.service
223ms systemd-user-sessions.service
201ms systemd-fsck@dev-mmcblk0p1.service
179ms boot.mount
174ms sys-kernel-config.mount
165ms plymouth-quit-wait.service
145ms systemd-remount-fs.service
144ms systemd-update-utmp.service
136ms systemd-random-seed.service
109ms sys-kernel-debug.mount
74ms udev-finish.service
67ms plymouth-quit.service
64ms systemd-udevd.service