Raspberry Pi 4 USB Boot

  • Posted on
  • by
  • in

Raspberry_logo.pngIn questo post voglio condividere l'esperienza fatta per far avviare un Raspberry Pi 4 B dalla porta USB 3.0. Il Raspberry Pi 4, come il precedente Pi 3 è una piccola scheda che contiene un piccolo ma completo PC desktop, molto versatile, studiato per l'educazione dei ragazzi nell'ambito dell'Informatica, della robotica e della scienza in generale. Funziona molto bene con la sua micro SD card e con il sistema operativo Raspbian (il sistema operativo ufficiale del Raspberry, basato su una distribuzione Linux Debian).

Siccome la versione 4 del Raspberry ha due interessanti porte USB 3.0, ho voluto provare a fare il boot di Raspian dalla porta USB 3.0. Ho preso una penna USB 3.0 da 32 giga e ci ho scritto sopra l'immagine di Raspbian utilizzando l'utility Raspberry Pi Imager. Ho inserito la pennetta nella porta USB 3.0 del Raspberry Pi4, ho avviato senza la micro Sd card e non funziona, dà errore di incompatibilità con alcuni file di configurazione nella cartella di boot. Il Raspberry è progettato per avviarsi dalla porta della micro sd card e non dalla porta USB. Tuttavia ho voluto cercare su Internet se c'era qualche guida che spiegasse come poter fare ad avviare il Raspberry dalla porta USB 3.x. Con sorpresa ho trovato diverse guide che mi sono servite e tornate utili, ma che subito non mi hanno risolto il problema.

In effetti, quasi tutte le guide dicono di aggiornare il firmware del bootloader, in attesa di un aggiornamento ufficiale di Raspbian, cosa che ho fatto. Dopo aver aggiornato il firmware del bootloader seguendo le istruzioni del sito https://www.raspberrypi.org , ho scoperto che la distribuzione per Raspbery LibreElec funziona bene e parte senza problemi, mentre la distribuzione Raspbian che interessa a me parte da USB, ma poi si blocca con una serie di errori e incompatibilità sui file della partizione di /boot, come quelli della serie start*.elf.

Raspberry Pi 4

Documentandomi e leggendo le sudate esperienze di altri utenti su Internet e quelle di riviste specializzate del settore, servendomi di un altro PC, ho provato a sostituire i file start*.elf della cartella o, meglio, della partizione di /boot della penneta USB, con quelli della micro SD card originale già precedentemente aggiornati. Ciò è servito a superare l'errore di incompatibilità, ma a mandare il Raspberry nel pallone, purtroppo. Allora senza perdere la pazienza, navigando sui siti dedicati al Raspberry, ho scoperto che alcuni smanettoni dicono di scrivere nel file /boot/cmdline.txt l'istruzione root=/dev/sda2, dove /dev/sda2 e la partizione numero 2 di root della pennetta USB, (la /dev/sda1 è la partizione numero 1 di boot della penna USB, ma la numerazione letterale a, b, c, ecc. dipende da quante pennette USB hai collegato al Raspberry). Così il file cmdline.txt nel mio caso, con una sola pennetta USB collegata, diventava:

console=serial0,115200 console=tty1 root=/dev/sda2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh splash plymouth.ignore-serial-consoles

Ciò è servito a fare uscire il Raspberry dal pallone. Tuttavia, a dare un altro errore in fase di avvio era l'impossibilità del sistema di avvio di estendere una cartella particolare di sistema. A generare l'errore in tutta la sua forza scoraggiante ci pensava la partizione di root formattata e limitata dall'utility Imager allo stretto necessario. In effetti la partizione di root sulla pennetta è limitata a qualche GigaByte solo sufficiente a contenere i file di sistema della distribuzione Raspbian scelta. Di conseguenza ho dovuto estenderla mettendo la pennetta in un altro PC Linux. Utilizzando quindi l'utility Dischi di Linux, ho esteso la partizione di Root della penna USB alla sua massima capienza, di circa 30 gigabyte.

Tuttavia in fase di avvio il Raspberry continuava a dare ancora un altro errore e si bloccava. Allora ho provato a sostituire anche i file della serie fixup*.dat nella partizione di /boot, con quelli nella partizione di boot della micro SDcard. Soltanto dopo questa ultima correzione/sostituzione il Raspberry è partito correttamente dalla porta USB 3.0 con la distribuzione Raspbian, chiamata anche Raspberry Pi OS 32 bit, completa. Il sistema ha quindi avviato il wizard di configurazione e ha aggiornato il sistema scaricando i file da Internet.

Raspberry Pi OS BootPer quanto riguardo l'incremento, il miglioramento della reattività e velocità del sistema operativo su penna USB 3.x, devo dire che non ho ancora avuto modo di notare grosse differenze rispetto al sistema operativo su micro Sd card.

Update del 20/08/2020. Facendo il test con l'utility Speed Test uffciale di Raspbian, il risultato è Fail, il test non viene superato. Ciò dimostra, in questo caso, che le prestazioni in lettura/scrittura di una generica chiavetta USB 3.0 inserita nella porta USB 3.0 del Raspberry sono peggiori delle prestazioni ottenute da una micro SD inserita nel lettore SD del Raspberry, dove invece lo speed test viene superato.