In questa puntata affronteremo un tema complesso, il backup del sistema operativo del Raspberry Pi.
Non è argomento facile, soprattutto perché occorre lavorare un bel po’ con il terminale, Linux e il codice. Ma converrete con me che il backup della scheda del raspi sia più che necessario.
Se già ci dà fastidio quando, mentre stiamo scrivendo un testo, il nostro notebook si spegne perché è finita la batteria, figuriamoci quanto possa essere “poco funzionale” se, mentre state preparandovi a sperimentare con il raspi qualcosa di nuovo, compare un segnale di allarme o, peggio, il raspi si spegne e al riavvio si blocca senza andare più avanti. In questi casi, l’unica soluzione è riportare alla situazione iniziale, ma perdendo tutte le aggiunte (compreso wifi, abilitazione ssh, inc e samba, che abbiamo visto nelle puntate precedenti) e dovendo faticosamente ripartire daccapo.
In questi casi, converrete con me, se avessimo un sistema di backup incrementale per rapsberry come esiste, ad esempio, per Mac, sarebbe eccezionale.
Ma non c’è e bisogna arrangiarsi.
Come avrete visto montando la scheda microsd su un computer, Raspbian non monta solo il sistema operativo, ma costruisce (almeno) due partizioni dinamicamente connesse, come nell’immagine 1, “BOOT” e “RECOVERY”, più almeno un’altra non visibile. Fare il backup significa quindi dover fare una copia di tutta la scheda e non delle singole partizioni. Esiste un modo per “clonare” l’intera scheda, ma occorre un pc con Linux installato e un po’ di pazienza.
Il fulcro del tutto è il programma gparted, disponibile per Linux, che consente di gestire le partizioni su un hard disk, interno od esterno, ma anche schede sd, pendrive ecc… (non è che ci sia poi gran differenza).
Fase 1: installare e lanciare gparted
Lanciare il terminale (ad esempio Lxterminal) di una distribuzione linux.
dopo aver aggiornato il sistema con il comando
sudo apt-get update
installare il programma gparted digitando il comando
sudo apt-get install gparted
Come si intuisce dal nome, si tratta di un programma per modificare (creare, eliminare, ridimensionare, spostare, etc.) le partizioni dei dischi, ma anche di chiavette USB, schede SD, etc.
L’installazione non è molto lunga ma, poiché richiede i permessi da amministratore, viene sempre lanciata con sudo
e richiederà di inserire la password. Una volta completata l’istallazione, lanciare gparted digitando:
sudo gparted
Fase 2: ridimensionare la scheda SD
Vi chiederete il perché di questo paragrafo. E’ vero, infatti, che raspbian non occupa molto spazio (gira anche su una microSD da un 1GB sebbene non proprio benissimo), ma tende ad occupare tutto lo spazio disponibile con le sue partizioni. Dunque, se avete una scheda da 16 GB, Raspbian occuperà tutti e 16 i GB a disposizione e così via. E’ quindi utile ridurre le partizioni al loro effettivo uso per risparmiare spazio (e poter eventualmente ricopiare la nostra versione anche su schede più piccole).
Per ridimensionare occorre avere un po’ di pazienza.
Innanzitutto, occorre determinare il nome della periferica secondo Raspbian. Noi ormai sappiamo come fare, ma lo scriviamo lo stesso, non preoccupatevi:
sudo disk -l
Troveremo l’elenco delle periferiche connesse. Per capire quale sia quella che ci interessa occorre fare attenzione alle dimensioni delle partizioni, che devono coincidere con le dimensioni della scheda (visto anche quanto detto sopra).
Supponiamo che la scheda sia
/dev/sdb
Smontiamo le partizioni eventualmente installate già automaticamente con il comando umount
:
sudo umount /dev/sdbx
dove la x sta per il numero della partizione da smontare.
Ora lanciamo da terminale gparted:
sudo gparted
Questa è la grafica del programma:
Nella schermata, selezionare la scheda SD (stesso nome visto con fidsk).
Selezionare la partizione principale (quella più grossa) nell’elenco in basso, poi premere il pulsante “ridimensiona”
Trascinare la maniglia di destra lasciando un po’ di spazio libero nella partizione.
Confermare le impostazioni cliccando su “Ridimensiona/sposta”.
Ora gparted farà il resto. Se tutto è andato liscio, uscirà un messaggio di conferma, altrimenti riproveremo lasciando un po’ più di spazio libero nella partizione (purtroppo, si deve andare a tentativi).
Fase 3: determinare i settori da copiare
Visto che abbiamo ridotto la porzione di scheda occupata, non ha senso clonare tutta la scheda; occorre però stabilire fin dove occorre copiare. Per scoprire quanto dello spazio a disposizione è stato occupato e qual è l’ultimo settore occupato, occorre digitare il comando
sudo fidsk -lu /dev/sdx
dove x è la lettera attribuita all’intera scheda.
Verrà fuori uno schema come quello in immagine 5:
Le grandezze sono espresse in settori di 512 byte ciascuno. Il numero che interessa è il settore finale dell’ultima partizione, a cui occorre aggiungere un’unità perché i settori cominciano da 0 e non da 1.
Fase 4: creare il file immagine
Ora il comando per creare una immagine (.img) della nostra scheda microSD con raspbian è
sudo dd if=/dev/sdx of=rasperry_sd.img bs=512 count=XXXX
dove XXX sta per il valore dell’ultimo settore indicato da disk + 1.
Dopo qualche minuto di apparente inattività (sorry, il terminale non dà informazioni sull’andamento dell’operazione, ma solo del termine della stessa), al ritorno del prompt dei comandi ci ritroveremo con il file immagine della scheda SD (raspberry_sd.img) nella cartella corrente, pronto per essere poi reinstallato al momento opportuno.
E se volessimo utilizzare un altro sistema operativo?
Pazienza, ci stiamo lavorando.
Pazientate, gente, pazientate…alla prossima