Skip to content

Un Raspberry Pi 5 con un SSD NVMe al posto della microSD è più veloce e soprattutto più affidabile: le microSD, con le scritture continue di un server, prima o poi si rovinano. In questa guida installo Raspberry Pi OS Lite (64 bit) su un SSD collegato tramite una scheda di espansione M.2 e faccio partire il Raspberry direttamente dall’SSD.

Cosa serve

  • Raspberry Pi 5 con alimentatore ufficiale da 27 W
  • scheda di espansione PCIe per SSD M.2 (qui una Geekworm X1001)
  • SSD NVMe M.2
  • una microSD, usata solo per la preparazione
  • un adattatore USB per SSD NVMe, per scrivere l’immagine dal computer
  • Raspberry Pi Imager sul computer

Scorciatoia: se il firmware (EEPROM) del Raspberry è già aggiornato e l’ordine di avvio è già impostato sull’SSD, basta il passo 2 e il passo 6: si scrive l’immagine sull’SSD e si parte.

1. Preparare la microSD

Con Raspberry Pi Imager scrivi sulla microSD Raspberry Pi OS Lite (64-bit). Nelle impostazioni di Imager configura nome utente, password e SSH, così puoi collegarti al Raspberry dalla rete.

Monta sul Raspberry sia la scheda con l’SSD sia la microSD, poi avvialo: per ora parte dalla microSD.

2. Preparare l’SSD

Collega l’SSD al computer con l’adattatore USB e scrivi anche su questo Raspberry Pi OS Lite (64-bit) con Imager, con le stesse impostazioni.

Al termine, sul computer compare la partizione bootfs dell’SSD. Apri il file config.txt e aggiungi in fondo:

[all]
dtparam=pciex1
dtparam=pciex1_gen=3

La prima riga attiva il connettore PCIe a cui è collegato l’SSD (dtparam=nvme è un sinonimo, basta una delle due). La seconda porta il collegamento alla velocità Gen 3, circa il doppio della Gen 2 predefinita.

Rimonta l’SSD sulla scheda di espansione del Raspberry.

3. Aggiornare il sistema e il firmware

Collegati al Raspberry in SSH, ancora avviato dalla microSD, e aggiorna sistema e firmware:

sudo apt update
sudo apt full-upgrade -y
sudo rpi-eeprom-update -a
sudo reboot

4. Far vedere l’SSD al Raspberry

Aggiungi le stesse righe anche al config.txt della microSD:

sudo nano /boot/firmware/config.txt
[all]
dtparam=pciex1
dtparam=pciex1_gen=3

Riavvia con sudo reboot, poi verifica che l’SSD sia riconosciuto:

lspci

Deve comparire una riga simile a questa:

0000:01:00.0 Non-Volatile memory controller: ...

5. Impostare l’avvio dall’SSD

sudo raspi-config

Vai in 6 Advanced Options → A4 Boot Order → B2 NVMe/USB Boot e conferma. Poi apri la configurazione del firmware:

sudo rpi-eeprom-config --edit

Il contenuto deve diventare così:

[all]
PCIE_PROBE=1
BOOT_UART=1
POWER_OFF_ON_HALT=1
BOOT_ORDER=0xf416
  • PCIE_PROBE=1: fa cercare l’SSD sul connettore PCIe anche alle schede di espansione che non si annunciano da sole, come la X1001;
  • BOOT_ORDER=0xf416 si legge da destra verso sinistra: prima l’SSD NVMe (6), poi la microSD (1), poi una chiavetta USB (4), e se non trova nulla ricomincia (f);
  • POWER_OFF_ON_HALT=1: quando spegni il Raspberry, riduce al minimo il consumo.

Salva e chiudi: le modifiche vengono scritte nel firmware al riavvio successivo.

6. Partire dall’SSD

Spegni il Raspberry con sudo poweroff, togli la microSD e riaccendilo. Ora parte dall’SSD. Per verificarlo:

findmnt /

Nella colonna SOURCE deve comparire /dev/nvme0n1p2.

Note

  • La velocità Gen 3 non è certificata ufficialmente da Raspberry Pi. Con la maggior parte degli SSD funziona senza problemi; se noti blocchi o errori sul disco, togli la riga dtparam=pciex1_gen=3.
  • La microSD puoi tenerla da parte come sistema di emergenza: con l’ordine di avvio impostato, se l’SSD non risponde il Raspberry parte dalla microSD.
  • Riferimenti: le guide di Geekworm su avvio da NVMe con il Raspberry Pi 5, sulla scheda X1001 e sull’aggiornamento del firmware.
Torna su