Premessa
Questa non vuole essere una guida, ma un “foglio” o in inglese “cheat sheet” di riferimento per le più varie informazioni su RaspberryPi, la priorità sarà la rapidità di dare un riferimento a dove e cosa cercare per fare una determinata cosa.
Come molti lettori converranno, il titolo è esagerato, perché i comandi utili per linux sono a dir poco infiniti come le possibilità del RaspberryPi, ma ho scelto di raccogliere qui quelli che ho trovato più utili in questi anni e creare questa pagina come base per svilupparli nell’apposito forum con l’aiuto di tutti.
Partiamo col dire che per rendere il tutto più stringato ed immediato, se nella vostra distribuzione non avete il comando descritto, basterà installarlo eseguendo da terminale
sudo apt install -y [comando]
e se non lo trovate
apt list [comando]*
oppure
apt search [comando]*
mentre se aveste problemi di permessi insufficienti, basterà eseguire prima
sudo su
Per ogni quesito o approfondimento aiutiamoci tutti insieme nel nostro forum.
Iniziamo con le Basi
- man [nome comando] : apre il manuale del comando con tutte le informazioni utili
- ls : elenca file e cartelle
- cd [percorso] : si sposta nella directory
- mkdir [nome cartella] : crea una cartella
- touch [nome file] : crea un file vuoto
- rm : cancella file o directory vuote
- cp [percorso 1] [percorso 2] : copia file o cartelle
- mv [percorso 1] [percorso 2] : muove file o cartelle o rinomina file
- nano [nome file] : modifica i file di testo
- cat [nome file] : legge i file di testo. aggiungi
| egrep -v "^\s*(#|$)"
per nascondere tutte le voci commentate - head [nome file] : legge le prime righe di un testo o output
- tail [nome file] : legge le ultime righe di un file, fondamentale per i log
- grep : fondamentale per cercare un testo in un file o output , utilissimo l’articolo sulle espressioni regolari
- apt : installa, cerca e rimuove le applicazioni ed aggiorna il sistema operativo
- ps -aux | grep [nome programma]: visualizza e cerca il nome di un processo attivo
- top o htop : visualizzano l’utilizzo delle risorse dei vari processi
- killall [nome processo] : uccide tutti i task attivi con quel nome
- kill [pid] : uccide solo un processo preciso in base al suo pid
- chown [utente:gruppo] [file o cartella] : cambia il proprietario di file e cartelle
- chmod +x [file] : rende eseguibile uno script
- chmod : cambia i permessi di file e cartelle
- ssh utente@computer : si connette tramite ssh ad un computer che abbia il server ssh attivo
- ufw limit [porta] : apre una porta sul firewall software limitandone l’uso in caso di attacchi
- ssh-copy-id utente@computer : aggiunge la chiave personale all’host remoto, cosi da poter fare il login senza password
- rsync : copia i file e cartelle utile per i backup, usando ssh-copy-id si eseguono backup in remoto con semplicità
- hostname -I : visualizza tutti gli ip del RaspberryPi
- lsusb : visualizza tutti i dispositivi USB, utile per controllare le chiavette wifi
- iwconfig e ifconfig : per controllare lo stato delle schede di rete
- tar -zxvf [file.tar.gz] : estrare gli archivi
- du e df : visualizzano lo spazio usato
- ping [ip o host] : invia pacchetti per vedere se un host risponde
- nmap : scansiona la rete
- curl e wget : invia e scarica dati
- ctrl + l : svuota il terminale
- pag. giu: scrive la tilde ~
- ctrl + r : cerca nell’elenco dei comandi lanciati in precedenza
- pip e pip3 : gestiscono i moduli Python 2 e Python 3, rispettivamente
- openssl rand -base64 10 : genera un valore casuale
- certbot : abilita i certificati per i siti web locali
Installazione del sistema operativo
Il sistema operativo più usato nelle guide è quello ufficiale, Raspbian , esso è basato su Debian quindi una garanzia di stabilità nonché di varietà di applicazioni già pronte da scaricare tramite apt.
Alcune delle distribuzioni che ho usato e mi sento di raccomandare sono :
- DiePi : se cerchi la semplicità degli script già pronti, la stabilita di Raspbian e l’ottimizzazione del team di DietPi
- MotionEyeOs: la distro già pronta per la video sorveglianza basata su motion, sconsiglio le cam usb perché non mi sembrano ottimizzate
- Osmc : un must per l’intrattenimento multimediale
- RetroPie e RecalBoxOs : fondamentali per il retrogaming
- OpenMediaVault : se vuoi un sistema Nas
- ZeroShell : se cerchi un firewall
Ovviamente le distribuzioni sono tantissime, il bello è anche provarle e trovare quella più adatta alle nostre necessità.
L’installazione si esegue semplicemente scaricando il file della distribuzione e copiarlo dentro un SD (tramite il programma Etcher, che è in grado di gestire anche file compressi, scompattandoli al volo prima di scriverli).
Come buona norma, la fase successiva consiste nell’abilitare SSH e il WiFi, per esempio in Raspbian creando i file ssh (vuoto) e wpa_supplicant.conf dentro la partizione /boot.
Il file wpa_supplicant.conf: sarà così composto:
country=IT ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="NomeWiFi" psk="miaPassword" key_mgmt=WPA-PSK }
Una volta connessi al RaspberryPi aggiorniamo tutto , nel caso di Raspbian, con il comando
sudo su apt update ; apt install -y raspi-config ; apt dist-upgrade -y ; reboot now
(ci può volere del tempo, abbiate pazienza).
Al riavvio avremmo il sistema operativo aggiornato, il comando cambia in base alla distribuzione usata. Successivamente in Raspbian configuriamo il resto tramite raspi-config.
Ora sarà necessario connettersi al nostro sistema , per farlo si possono usare programmi come SSH : per connettersi al terminale e con MobaXTerm è possibile passare i programmi grafici dal menu X11 , attenzione: alla disconnessione si chiuderanno i comandi avviati a meno che non venga usato prima il comando screen oppure mosh , mentre per la gestione grafica, RealVnc è un ottimo candidato, anche se RaspberryPi non brilla molto in velocità, non è pensato per essere il sostituto di un computer desktop.
Dopo aver connesso il tutto, sarà obbligatorio mettere in sicurezza il nostro sistema, se esposto ad internet, quindi sarà sufficiente seguire la nostra guida sulla sicurezza.
I file utili
Adesso è tutto operativo, iniziamo allora a dare un occhiata ad alcuni dei file utili:
- ~/.bashrc : è lo script che viene eseguito da terminale appena dopo il login e varia in base all’utente
- ~/.bashrc_aliases : raccoglie tutti gli alias dei nostri comandi preferiti, se ad esempio voglio che scrivendo ippubblico ricavi il mio ip pubblico , mi basterà aggiungere
alias ippubblico=’curl ifconfig.me’
su BitBucket trovi la mia versione personale - resolv.conf : il file dove impostare i server dns statici
- hostname : è abbastanza esplicativo, il nome dell’RaspberryPi o host
- hosts : il file dove forzare l’associazione ip > nome macchina o dominio
- wpa_supplicant : contiene la configurazione del wifi
- interfaces : gestisce le impostazioni di rete
- fstab : invece le partizioni e come vengono montate
GPIO
La parte più divertente nell’usare un RaspberryPi è assolutamente la facilità e grande varietà di dispositivi fisici collegabili, sensori, motori, luci LED e molto altro.
La linee guida rapidissime sono: imparare un po’ di Python 3.X (attenzione che è leggermente diverso da Python 2.X), cosi da poter scrivere i nostri script preferiti programmandoli poi con crontab -e . Su internet ti imbatterai in migliaia di guide, spesso obsolete, quindi fai attenzione ed usa le librerie gpiozero aggiornate essendo semplici ed in grado di svolgere ogni compito. Il sito di GpioZero raccoglie vari esempi molto utili per iniziare e nel caso non ci fosse una libreria già predisposta per il tuo sensore, basterà usare la classe generica GPIODevice .
Ogni sensore ha il suo datasheet da cercare nel sito del fornitore cosi da poter comprendere bene come utilizzarlo, spesso si usano resistenze chiamate di pullup per far rilevare bene il sensore (gli esperti perdonino questa semplificazione), mentre per abbassare le tensioni si calcola la resistenza del valore corretto, propongo anche di dare un occhiata al sito EveryCircuit
Bene, abbiamo il RaspberryPi aggiornato, con il nostro script attivo, ora è giunto il momento di inviare un po’ di notifiche e grafici con RpiNotify per Telegram, Mutt per le email ed una bella dashboard