Piero V.

Boot USB su Raspberry Pi 3

Le Raspberry Pi tradizionalmente fanno il boot da schede di memoria, da SD standard con il primo modello, da MicroSD dal secondo modello in avanti.

Questo è uno dei loro peggiori difetti, a mio avviso. Non ho mai provato una grande simpatia per questo tipo di memorie, anzi, le trovo parecchio scomode, perché hanno bisogno di un lettore e talvolta anche di un adattatore, costano più delle chiavette USB, ma soprattutto mi hanno abbandonato, ormai già due volte.

La prima volta decisi di farmene una ragione e comprai un’altra microSD. Adesso, a distanza di un anno, è successo di nuovo, ma questa volta ho scoperto che su Raspberry Pi 3 esiste il boot USB nativo, un po’ come con la Orange Pi Zero.

La liberazione

Purtroppo, per poter abilitare questa funzionalità serve usare un’(ultima) volta una microSD, ma per mia esperienza posso dire che va bene praticamente qualsiasi scheda, anche molto vecchia, non HC e di qualsiasi classe. Infatti io ho usato una vecchia Kingston che sarà di classe -5 😊 . L’unico requesito è la campienza: almeno 2GB.

L’unico requisito software è invece un’installazione di Raspbian aggiornata o risalente almeno al 10 Aprile dello scorso anno. In caso contrario potete scrivere sulla microSD l’ultima immagine disponibile sul sito ufficiale della fondazione, va bene anche la versione lite.

Una volta preparata la microSD in qualsiasi modo, bisogna aprire il config.txt presente nella partizione FAT e aggiungere la seguente riga:

program_usb_boot_mode=1

quindi avviate la Raspberry e, completato il boot, riavviatela un’ultima volta. Nel caso di una nuova installazione è necessario un ulteriore riavvio, quello effettuato in automatico dopo il ridimensionamento della partizione, in compenso non serve che completiate il setup iniziale, basta direttamente il reboot.

Per scrupolo, potete controllare che sia andato tutto bene. Basta dare questo comando:

vcgencmd otp_dump | grep 17:

L’output dovrebbe essere questo:

17:3020000a

Qualora fosse così, complimenti: adesso potrete fare il boot da USB.

È quindi arrivato il momento di creare la chiavetta per la Raspberry, ma è facilissimo: è esttamente come creare una microSD. Si possono usare gli stessi identici software e, almeno per Raspbian, la stessa immagine.

Log? No grazie

Sono abbastanza convinto che una delle motivazioni principali per cui le mie microSD si siano rovinate siano i log. Quindi questa volta ho deciso di disattivarli, e in più, per precauzione, di mettere /var/log su RAM.

Per disattivarli il comando da dare da root è (pubblicato su Stackoverflow da Nicolas Guérinet, link nei riferimenti):

systemctl disable rsyslog

Invece, per quanto riguarda le directory in RAM, bisogna modificare il file /etc/fstab (da root), aggiungendo le seguenti righe:

tmpfs           /var/log        tmpfs   nodev,nosuid,noexec,nodiratime,size=200M   0 0
tmpfs           /var/tmp        tmpfs   nodev,nosuid,noexec,nodiratime   0 0
tmpfs           /var/cache/apt  tmpfs   nodev,nosuid,noexec,nodiratime   0 0

Oltre a /var/log, queste righe spostano in RAM anche /var/tmp e /var/cache/apt.

In particolare quest’ultima è la cartella dove vengono scaricati i pacchetti per gli aggiornamenti. Sui miei computer su cui ho SSD faccio la stessa identica cosa, con l’unica differenza che quelli hanno di solito più RAM. La Raspbery ha un solo gigabyte, quindi questa riga potrebbe essere un problema. Nel mio caso faccio sempre aggiornamenti piccoli e in generale installo poco software alla volta, però qualora non fosse così per voi, potreste considerare di rimuoverla o commentarla, oppure di smontare all’occorrenza questo ramdisk.

Oltre a queste directory, io sposto anche /tmp in RAM, però c’è un procedimento particolare per farlo, sui sistemi basati su Systemd, come Raspbian. Bisogna dare questi comandi (da root):

cp /usr/share/systemd/tmp.mount /etc/systemd/system/
systemctl enable tmp.mount

E con questo non ci dovrebbero più essere directory da spostare in RAM. In ogni caso, vale la pena notare che per i log potrebbe essere una buona idea anche tenerli in RAM, ma ogni tanto copiarli sullo storage con un Cronjob.

Gli ultimi settaggi

Una delle cose che mi danno più noia di quando formatto la Raspberry sono i piccoli settaggi.

Per esempio disabilito sempre il LED ACT, aggiungendo questo contenuto al /boot/config.txt:

# Disable the ACT LED
dtparam=act_led_trigger=none
dtparam=act_led_activelow=off

Inoltre io uso un trick nella configurazione di SSH per forzare il login da LAN con password, ma in remoto solo con chiavi e uso la Raspberry come access point a 5GHz con una chiavetta wireless USB aggiuntiva.

Riferimenti