Avviare Raspberry Pi tramite disco esterno (SSD o altro)

5 minuti di lettura
● Resta sempre aggiornato grazie al nostro canale Telegram e alla nostra newsletter settimanale!
SCOPI DEL PROGETTO:
  • Abbandonare l’uso di microSD in luogo di un disco esterno (più performante e affidabile)
  • Livello di difficoltà: medio/basso
  • Costo: variabile (in base al disco esterno scelto)
CONCETTI AFFRONTATI:
  • Configurazione hardware
COMPONENTI SOFTWARE UTILIZZATE:
  • bootcode.bin (spiegato a seguire)
  • Raspbian (necessario in alcuni casi)
DISPOSITIVI FISICI UTILIZZATI:
PROGETTO MAGGIORMENTE INDICATO PER:

Tutti gli ambienti

Note e disclaimer
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata ed realizzata SOLO da personale qualificato;
  • qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno puro scopo didattico);
  • qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere garanzia, omologazioni e certificazioni di qualità.
Revisione progetto: 1.0

Abstract

microSD
una microSD.

Come noto a molti, l’adozione di Raspberry Pi quale micro-computer a basso consumo per l’esecuzione di funzioni più o meno complesse (HUB domotico, postazione di gioco, server eccetera) prevede l’uso di un microscopico hard-disk, ovvero una microSD: tale componente, disponibile sul mercato in tagli diversi, contiene i dati e il sistema operativo in esecuzione sull’unità.

Tale elemento, purtroppo, rappresenta il tallone d’Achille di quello stupendo strumento che è il Raspberry: spesso fragile, la microSD tende a guastarsi con relativa facilità, specialmente nel caso di esemplari bi bassa qualità costruttiva. La soluzione per chi necessiti di alta affidabilità è quella di utilizzare un disco esterno, collegato via USB, il quale “prenda il posto” – operativamente – della microSD.

La procedura descritta in questo progetto si applica ai modelli Raspberry Pi 2B (1.2), 3A+, 3B e 3B+ (per il 4 siamo in attesa di un aggiornamento firmware che lo consenta): viene spiegato come scegliere il disco esterno, come implementarlo da zero oppure, anche nel caso si stia già usando il Raspberry Pi con microSD, come provvedere ad una migrazione del sistema operativo in uso e dei relativi dati dalla microSD al disco esterno.

N.b. Ovviamente la procedura descritta in questo progetto è reversibile, pertanto se in futuro si volesse tornare alla sola microSD sarà sufficiente disconnettere il disco esterno, reinserire la microSD ed effettuare l’accensione del Raspberry, il quale tornerà ad avviarsi “internamente” come d’abitudine.

Si parte

Disco esterno

Scelta

Ad oggi le tecnologie disponibili sul mercato consumer tra le quali scegliere per l’adozione su Raspberry Pi (e non solo) sono essenzialmente tre:

  • hard disk tradizionali SATA;
  • hard disk SSD SATA;
  • hard disk SSD PCIe M.2.

Il primo caso tratta di dischi tradizionali ormai obsoleti e dunque citati solo per puro dovere di cronaca (che quindi non ci sentiamo di consigliare né tratteremo come oggetto del presente progetto).

Il secondo e il terzo caso rappresentano invece le strade da battere. I dischi SSD (genericamente detti) utilizzano tecnologie “allo stato solido” che stanno conquistando il mercato per grandi prestazioni, grande affidabilità e basso costo. Solitamente, questi dischi presentano un’interfaccia di connessione in standard Serial ATA o, brevemente, SATA. Quelli basati su interfaccia di connessione PCI-Express (PCIe) M.2, invece, sono versioni ulteriormente potenziate, dalle dimensioni ridotte e dal costo più alto, solitamente utilizzati su computer molto potenti.

Per montare un hard disk SSD su Raspberry Pi serve:

Dato che il presente progetto, per il momento, è valido solo per i modelli Raspberry Pi 2B, 3B e 3B+ (quindi dotati di porta USB 2.x, a differenza del Raspberry Pi 4, per il momento non supportato, dotato della veloce USB 3.x), utilizzare un hard disk SSD PCIe M.2 abbinato a un adattatore USB 3.x avrebbe poco senso, perché le notevoli prestazioni interne garantite da questo standard non sarebbero utilizzabili fino in fondo. Meglio quindi utilizzare un SSD SATA applicato a un adattatore o case USB 2.0/SATA.

Preparazione

A questo punto è necessario “montare” il sistema operativo da utilizzarsi sul Raspberry sul nuovo disco realizzato tramite adattatore/case USB e disco.

Coloro che vogliano “migrare” i contenuti dalla vecchia microSD al nuovo disco non dovranno far altro che spegnere il Raspberry e poi seguire la procedura di backup/ripristino; diversamente, coloro che vogliano installare la distribuzione Raspbian da zero non dovranno far altro che seguire questa procedura – la quale nei princìpi è adatta anche a qualsiasi altra distribuzione (HASSIO, Retropie eccetera). Ovviamente, nella procedura si fa riferimento come supporto storage alla microSD, mentre in questo caso si utilizzerà il disco esterno collegato via USB (ma concettualmente poco cambia).

N.b. In caso di migrazione da microSD, essa deve avvenire verso un disco di dimensioni pari o superariori alla dimensione massima della microSD stessa (eg. non è possibile migrare da una microSD da 32gb a un hard disk da 16).
Inoltre, in caso si migri una microSD su un disco di dimensioni maggiori della stessa si consiglia l’adozione di GParted come tool dedicato al successivo ridimensionamento della partizione al fine di sfruttare per intero la dimensione del disco esterno (vedi guide esterne).

Una volta montato Raspbian o una qualsiasi distribuzione sul disco USB, saremo pronti ad avviare il Raspberry con un disco esterno.

Primo avvio da disco esterno

Utenti 2B (1.2) e 3B+

In caso si utilizzi uno di questi due modelli di Raspberry, la procedura è semplice: è infatti sufficiente sfilare la microSD, collegare il disco precedentemente preparato ad una porta USB qualsiasi disponibile sul Raspberry e accendere l’unità che, in assenza di problemi, si avvierà come voluto da disco esterno.

Utenti 3A+ e 3B

Chi utilizzi un Raspberry Pi 3A+ o 3B ha invece necessità di eseguire – al fine di rendere l’unità avviabile tramite disco esterno – un comando specifico che abiliti tale possibilità.

Per farlo è necessario collegarsi via SSH (oppure collegandosi fisicamente tramite tastiera e monitor) al sistema operativo Raspbian ed eseguire via terminale un comando specifico.

N.b. Se l’utente, sulla vecchia microSD, monta già un sistema operativo Raspbian, meglio: è sufficiente utilizzare il terminare ed eseguire il comando che segue. L’alternativa è quella di installare Raspbian sulla microSD (dopo, ovviamente, aver effettuato l’eventuale migrazione dei suoi contenuti sul nuovo disco) al fine di collegarsi ed effettuare l’esecuzione del comando.

Una volta collegatisi al terminale di Raspberry, eseguire i seguenti due comandi:

echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt
sudo reboot

Al termine del riavvio causato dal secondo comando, l’unità sarà operativa per un eventuale avvio via USB. Per fare ciò spegnere l’unità, sfilare la microSD e collegare su una delle porte del Raspberry il disco esterno; infine accendere l’unità che, in assenza di problemi, si avvierà come voluto da disco esterno.


Maggiori informazioni sulla natura del comando sopra indicato sono disponibili sul sito della Raspberry Foundation.

Perfezionamento con bootcode.bin

Arrivati a questo punto il Raspberry è operativo tramite disco esterno collegato via USB e senza alcuna microSD inserita.

Basta? , ma è stato notato che l’assenza di una microSD nello slot dell’unità causa l’avvio di processi anomali i quali arrivano ad allocare fino al 10% CPU, causandone un’immotivato assorbimento elettrico nonché il parziale, relativo surriscaldamento.

Per evitare ciò, Raspberry Foundation ha messo a disposizione un file chiamato bootcode.bin il quale, letto all’avvio del Raspberry Pi, impedisce questo comportamento. A tal scopo è sufficiente copiarlo – facilmente, tramite un computer di appoggio – sulla microSD (a questo punto inutilizzata), previa sua formattazione in formato FAT32. Ovviamente questa procedura necessita di un adattatore USB/microSD (che si dovrebbe già avere a disposizione).

Una volta preparata la microSD in questo modo è sufficiente inserirla nel Raspberry e accenderlo (ovviamente con il disco USB connesso): l’unità prima cercherà la microSD, la troverà, eseguirà il bootcode.bin in essa contenuta il quale indicherà di cercare il disco esterno e di avviarne (correttamente, senza processi anomali) il sistema operativo.


L’adozione dei bootcode.bin, inoltre, risolve il problema di alcuni dischi esterni che, collegati via USB, al boot non vengono alimentati elettricamente in tempi congrui, rendendoli indisponibili al sistema, il quale non riesce ad effettuare l’avvio.

Maggiori informazioni su bootcode.bin sono disponibili sul sito della Raspberry Foundation.