La Raspberry Pi è stata progettata per eseguire il boot automaticamente dalla scheda microSD. Questo aspetto può risultare molto comodo per i principianti visto che cosi si può ottenere un sistema pronto con il semplice flash di una microSD, cosi come avviene in ambito Android. Ma questa feature può anche rappresentare un rischio di perdita di dati visto che le microSD hanno la tendenza ad esaurire il loro ciclo vitale molto velocemente se usate per avviare un sistema operativo.
Per questo oggi vederemo come eseguire il boot da un disco esterno connesso via USB. A partire dalla Raspberry Pi 3 non è più necessaria un'alimentazione supplementare per i dischi esterni, dunque uno dei principali limiti di questa board ARM è stato superato con le ultime versioni in commercio. Per prima cosa formattiamo il disco in EXT4:
sudo mkfs.ext4 /dev/sdX1
Per scoprire esattamente come è stato chiamato il disco che ci interessa possiamo usare questo comando che ci indicherà tutti i dischi e le partizioni presenti:
sudo fdisk -l
Adesso montiamo il disco:
sudo mount /dev/sdX /mnt
Ora installiamo rsync, un tool che si occupa di tenere sincronizzati i dati tra diverse directory:
sudo apt-get install rsync
Dunque copiamo tutto il contenuto della microSD all'interno del disco esterno tramite rsync:
sudo rsync -axv / /mnt
Quindi andiamo ad indicare alla distribuzione il nuovo disco di boot modificando il file cmdline.txt, per sicurezza però è meglio creare prima un backup del suddetto file:
cp /boot/cmdline.txt /boot/cmdline.txt.bak
sudo nano /boot/cmdline.txt
In particolare ci interessa la voce "root=", dova va scritta la posizione del disco esterno (ovvero /dev/sdX1) e inoltre sarà necessario aggiungere la voce "rootdelay=5" alla fine del file, in modo da regolare il tempo di attesa prima di montare il root filesystem. Il file apparirà dunque cosi:
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/sdX1 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait rootdelay=5
Infine non resta che aggiungere il disco esterno dentro fstab cosi da montare la root in modo automatico durante il boot:
sudo nano /mnt/etc/fstab
Inseriamo dunque il disco esterno nella seconda riga del file:
/dev/sdX1 / ext4 defaults,noatime 0 1
e blocchiamo il boot dalla microSD andando a commentare la sua riga con un cancelletto (#):
#/dev/mmcbXXXX / ext4 defaults,noatime 0 1
Alla fine delle modifiche il file dovrebbe apparire in questo modo:
proc /proc proc defaults 0 0
/dev/sda1 / ext4 defaults,noatime 0 1
/dev/mmcbXXXX /boot vfat defaults 0 2
#/dev/mmcbXXXX / ext4 defaults,noatime 0 1
Ora l'intero sistema si trova dentro il disco esterno, tuttavia i file di boot sono ancora presenti dentro la microSD e sarà necessario tenerla sempre montata sulla Raspberry Pi.
Per approfondire: Make Tech Easier