Effettuare il backup (ed eventuale ripristino) del proprio Raspberry Pi

6 minuti di lettura
Scopi della guida
  • Dotarsi di un backup aggiornato del proprio Raspberry ed eventualmente ripristinarlo
  • Livello di difficoltà: basso
Concetti affrontati:
  • utilizzo software
Componenti software utilizzate:
  • Varie (in base al computer in uso)
Prerequisiti
Dispositivi fisici utilizzati:
  • Un computer (Window/Mac/Linux)
GUIDA maggiormente indicatA per
Note e disclaimer
  • qualsiasi modifica all'impianto elettrico dev'essere effettuata da personale qualificato;
  • qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (la presente guida ha puro scopo didattico);
  • qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere la garanzia.

Abstract

Il Raspberry Pi, lo sappiamo, è uno strumento insostituibile: costa poco, consuma pochissima energia elettrica, è estremamente versatile. Tutto quello che serve per chi è appassionato di domotica e non solo.

Raspberry presenta però un piccolo difetto, ovvero la tendenza, nel tempo e a fronte di specifiche condizioni (sbalzi di tensione, per esempio) nel corrompere improvviamente la microSD sul quale giace il sistema operativo, i nostri software e le nostre configurazioni.
Per corrompere intendiamo danneggiare – in modo definitivo o meno – la memoria flash della piccola scheda, rendendola inutilizzabile.

Corrompere la propria microSD significa trovarsi, di colpo, con il Rasberry (e quindi la domotica, se è l’uso che se ne fa) completamente fuori gioco. Tale situazione è solitamente indicata dal seguente messaggio, al boot:

Kernel Panic : VFS :Unable to mount root fs on unknown-block

Praticamente, un’antipatica sentenza di morte.

microSD


Backup

Non si capisce l’importanza di un backup fino alla prima perdita di dati“.

Si tratta di un adagio tanto banale quanto concreto. Una volta persi i propri dati, per lo più sono persi sul serio, pertanto sarà tardi per piangere sulla microSD corrotta. Sarà per tanto il caso di imparare, prima che si verifichi l’irreparabile, una buona tecnica per effettuare il backup.

Solitamente, nel caso di schede SD (SD, MiniSD, microSD, è la stessa cosa) l’approccio è quello di collegarle a un computer e crearsi un’immagine dello stato della scheda, ovvero un unico file che contenga, bit a bit, il contenuto della scheda. Di fatto non si tratta di copiare i file, ma di copiare letteralmente i blocchi di dati in maniera raw, grezza, per quelli che sono.

È quindi buona regola, di tanto in tanto, spegnere il proprio Raspberry ed effettuare il backup per poi storicizzarlo in un luogo sicuro. Tornerà utile in caso la microSD ci abbandoni di colpo.

Vediamo ora come effettuare un’immagine di backup.

Collegare la microSD al computer

Innanzitutto, spegnere (tramite comando “sudo shutdown nowvia SSH, oppure “spegni” da interfaccia grafica – mai disconnettendo l’alimentazione) l’unità Raspberry e sfilare la microSD.

Per collegarla al computer tipicamente viene utlizzato un adattatore. Ne esistono di vari tipi: alcuni permettono di collegarsi direttamente alla porta USB; altri invece “trasfomano” da formato microSD a SD (in questo caso il computer dovrà possedere una porta per l’inserimento di questo formato.

 

Backup con Windows

Il software (gratuito) più utilizzato per effettuare questo tipo di backup tramite windows è Win32 Disk Imager, la quale funziona con qualsiasi tipo di SD connessa al computer.

Cominciamo con il download di tale software da SourceForge. Il download parte pochi istanti dopo l’apertura della pagina.

Una volta installato, eseguendo il software apparirà una finestra come questa:

Win32 Disk Imager

Nel percorso “Image File” andremo ad indicare il nome dell’immagine che vogliamo creare, tipicamente usando l’estensione “.img“; nel campo “Device” andremo a scegliere il disco del quale effettuare backup, in questo caso la lettera assegnata alla SD che abbiamo collegato al computer.

Cliccare ora su “Read“.

Al termine, disconnettere la microSD con la solita procedura Windows, come fosse una chiavetta o un disco USB.

Il backup è stato effettuato.

Backup con macOS

Gli utenti Apple hanno già a disposizione un potente strumento di backup, vale a dire il comando “dd“.

Lanciare, innanzitutto, l’applicazione “Terminale“.
Dopo aver connesso l’SD al computer, eseguire il comando:

diskutil list

per elencare e schermo i dischi connessi e riconosciuti dal sistema operativo:

diskutil list - Terminale MAC

Il disco con una partizione di boot “Windows_FAT_32” e con una partizione “Linux” è tipicamente il disco microSD di cui vogliamo effettuare backup.

Prima di effettuarlo, è necessario “smontare” il disco usando il comando:

diskutil unmountDisk /dev/diskX

dove la X è il numero di disco da smontare (nel caso dell’esempio è il numero 1).

Effettuiamo ora il backup tramite il comando:

sudo dd if=/dev/diskX of=~/SDCardBackup.dmg

dove la X è, anche in questo caso, il numero di disco da smontare (nel caso dell’esempio è il numero 1).
Tale comando creerà un file immagine chiamato “SDCardBackup.dmg” nella cartella del vostro utente macOS.

La procedura può esser lunga e non dà evidenza di procedere. Lasciate semplicemente lavorare il computer fino al termine del backup.

Infine, smontate nuovamente la microSD, prima di disconnetterla:

diskutil unmountDisk /dev/diskX

Backup con Linux

Gli utenti Linux hanno a disposizione una procedura analoga a quella macOS.

Innanzitutto, prima di connettere la SD eseguire il seguente comando:

df -h

il quale elencherà dischi e partizioni connesse. L’output sarà analogo al seguente:

Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 29834204 15679020 12892692 55% /
/dev/root 29834204 15679020 12892692 55% /
devtmpfs 437856 0 437856 0% /dev
tmpfs 88432 284 88148 1% /run
tmpfs 5120 0 5120 0% /run/lock
tmpfs 176860 0 176860 0% /run/shm
/dev/mmcblk0p1 57288 14752 42536 26% /boot

Connettere ora la microSD ed eseguire nuovamente il comando. L’output sarà analogo al seguente:

Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 29834204 15679020 12892692 55% /
/dev/root 29834204 15679020 12892692 55% /
devtmpfs 437856 0 437856 0% /dev
tmpfs 88432 284 88148 1% /run
tmpfs 5120 0 5120 0% /run/lock
tmpfs 176860 0 176860 0% /run/shm
/dev/mmcblk0p1 57288 14752 42536 26% /boot
/dev/sda5 57288 9920 47368 18% /media/boot
/dev/sda6 6420000 2549088 3526652 42% /media/41cd5baa-7a62-4706-b8e8-02c43ccee8d9

per differenza sarà possibile capire quale sia il dev assegnato alla microSD.

La parte indicata in rosso determina il nome disco (la nostra microSD) mentre il numero alla sua destra determina la/le partizione/i. Dato che vogliamo creare un’immagine completa dell’unità, utilizzeremo solo il nome disco.

Eseguire quindi il comando:

sudo dd if=/dev/sda of=~/SDCardBackup.img

Tale comando creerà un file immagine chiamato “SDCardBackup.dmg” nella cartella del vostro utente macOS.

Restore

Il restore (o ripristino) è la procedura inversa del backup, ovvero ripristinare un’immagine precedentemente creata su una nuova microSD (qualora quella corrotta non funzioni più per guasto).

Ripristino con Windows

Sempre utilizzando l’utility indicata nella procedura di backup (ovvero “Win32 Disk Imager”) potremo ripristinare un’immagine precedentemente creata.

Connettere la microSD al computer e poi eseguire l’applicazione:

Win32 Disk Imager

Nel capo “Image File” selezionare a questo punto l’immagine da ripristinare precedentemente creata.
Nel campo “Device” selezionare la lettera corrispondente alla microSD connessa al computer.

Cliccare dunque “Write” per avviare il ripristino.

Al termine, disconnettere la microSD con la solita procedura Windows – come fosse una chiavetta o un disco USB.

La microSD contiene ora i dati precedentemente salvati su immagine disco di backup ed è disponibile all’uso.

Ripristino con macOS

Lanciare, innanzitutto, l’applicazione “Terminale“.
Dopo aver connesso l’SD al computer, eseguire il comando:

diskutil list

per elencare e schermo i dischi connessi e riconosciuti dal sistema operativo:

diskutil list - Terminale MAC

Il disco con una partizione di boot “Windows_FAT_32” e con una partizione “Linux” è tipicamente il disco microSD sul quale ripristinare il backup.

Prima di effettuare tale procesura, è necessario “smontare” il disco usando il comando:

diskutil unmountDisk /dev/diskX

dove la X è il numero di disco da smontare (nel caso dell’esempio è il numero 1).

Effettuiamo ora il restore tramite il comando:

sudo dd if=~/SDCardBackup.dmg of=/dev/diskx

dove la X è il numero di disco da smontare (nel caso dell’esempio è il numero 1) e “~/SDCardBackup.dmg” è il percorso e il nome del file immagine da ripristinare.

La procedura può esser lunga e non dà evidenza di procedere. Lasciate semplicemente lavorare il computer fino al termine del ripristino.

Infine, smontate nuovamente la microSD, prima di disconnetterla:

diskutil unmountDisk /dev/diskX

La vostra microSD è pronta all’uso.

Ripristino con Linux

Innanzitutto, prima di connettere la SD eseguire il seguente comando:

df -h

il quale elencherà dischi e partizioni connesse. L’output sarà analogo al seguente:

Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 29834204 15679020 12892692 55% /
/dev/root 29834204 15679020 12892692 55% /
devtmpfs 437856 0 437856 0% /dev
tmpfs 88432 284 88148 1% /run
tmpfs 5120 0 5120 0% /run/lock
tmpfs 176860 0 176860 0% /run/shm
/dev/mmcblk0p1 57288 14752 42536 26% /boot

Connettere ora la microSD ed eseguire nuovamente il comando. L’output sarà analogo al seguente:

Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 29834204 15679020 12892692 55% /
/dev/root 29834204 15679020 12892692 55% /
devtmpfs 437856 0 437856 0% /dev
tmpfs 88432 284 88148 1% /run
tmpfs 5120 0 5120 0% /run/lock
tmpfs 176860 0 176860 0% /run/shm
/dev/mmcblk0p1 57288 14752 42536 26% /boot
/dev/sda5 57288 9920 47368 18% /media/boot
/dev/sda6 6420000 2549088 3526652 42% /media/41cd5baa-7a62-4706-b8e8-02c43ccee8d9

per differenza sarà possibile capire quale sia il dev e le partizioni assegnate alla microSD.

La parte indicata in rosso determinano i nomi delle partizioni attribuite alla nostra microSD.

Nell’esempio, sda5 e sda6 sono le due partizioni del disco sda.

Ora, prima di effettuare il ripristino è necessario smontare le due partizioni tramite il comando “unmount”, il quale si applica, nel caso dell’esempio, così:

sudo umount /dev/sda5
sudo umount /dev/sda6

Smontate le partizioni, eseguire il comando:

sudo dd bs=4M if=~/SDCardBackup.img of=/dev/sda

dove la sda è il nome disco sul quale effettuare il ripristino (praticamente, il nome di una partizione, ma senza numero) e “~/SDCardBackup.dmg” è il percorso e il nome del file immagine da ripristinare.

Al termine della procedura, eseguire il comando:

sudo sync

e solo dopo disconnettere la microSD, ora pronta all’uso.


Please comment below