Vai al contenuto
Home » Domotica Fai da te » Raspberry Pi » Raspberry Pi 3B+ boot from USB SSD or HDD external drive

Raspberry Pi 3B+ boot from USB SSD or HDD external drive

    Raspberry Pi 3 B+ HDD hard disk esterno | Raspberry boot da USB

    Raspberry Pi 3B+ boot from USB SSD o HDD External drive: come eliminare ogni preoccupazione per la perdita di dati a causa della corruzione della scheda SD grazie all’uso di un disco esterno nella mia guida passo passo.

    Raspberry memoria e scheda SD

    Raspberry Pi è stato progettato, in tutte le sue versioni, per funzionare con una scheda SD quale supporto di memoria:

    Raspberry SD Card

    Una scheda SD, per quanto normalmente si misurino esclusivamente le performance in termini di velocità di lettura e scrittura, ha un numero massimo di scritture garantite dal produttore dopo le quali può diventare non più affidabile e di fatto richiedere la sostituzione (in modo non prevedibile !).

    Quando dovete scegliere la scheda SD per il vostro nuovo Raspberry Pi ricordate sempre che:

    • la capacità minima raccomandata con Raspberry Pi OS è di 8 GB, potete ovviamente salire
    • la classe della scheda SD, che definisca la velocità di scrittura continua, non è normalmente importante se non per applicazioni che richiedono performance elevate (come ad esempio i database)
    • tutti i modelli recenti di Raspberry Pi utilizzando il formato micro SD

    Raccomando comunque di scegliere un modello di scheda SD con velocità di scrittura minima di almeno 30 MB/s corrispondente alle classi di velocità UHS 3 (U3) o Video 30 (V30).

    Puoi approfondire leggendo la mia guida per scegliere scheda micro SD per Raspberry Pi.

    La frequenza di scrittura delle applicazioni che utilizzate, inclusi i log, determinano la durata effettiva: il risultato è comunque il rischio di perdere i dati.

    Per gestire questo problema ci sono due azioni:

    • ridurre la frequenza delle scritture sulla scheda SD
    • collegare un hard disk esterno che diventi la memoria primaria

    Raspberry Pi 3B+ boot from USB SSD or HDD external drive: riduzione scritture scheda SD

    Vediamo quali sono le soluzioni possibili per ridurre la frequenza delle scritture su disco in un Raspberry Pi.

    Identificare file ed applicazioni con frequenti scritture su disco

    Il passo preliminare è quello di identificare i file che vengono scritti dalle applicazioni più frequentemente mediante il comando iotop:

    sudo apt-get install iotop
    sudo iotop -bktoqqq

    Il cui output indica i processi che hanno maggiormente contributo all’I/O sul vostro sistema.

    Se conoscete bene le applicazioni che girano sul vostro Raspberry Pi, il miglior approccio è quello di abbassare la verbosità dei log a quanto effettivamente necessario.

    Mettere i log su RAM disk

    L’idea è quella di mettere in RAM disk i file di log modificati più frequentemente: in questo modo potremmo ridurre drasticamente ridurre le scritture su disco ed anche migliorare le performance.

    Ovviamente:

    • dobbiamo avere memoria sufficiente per farlo
    • possiamo farlo esclusivamente con dati di natura transitoria di cui non abbiamo bisogno dopo un eventuale riavvio del sistema

    Per facilitarvi nel compito, la raccomandazione è quella di configurare le applicazioni in modo che tutte utilizzino il la medesima directory per scrivere i propri file di log.

    Nel mio caso ho creato i seguenti drive in RAM all’interno del file di configurazione /etc/fstab:

    tmpfs   /var/log        tmpfs   defaults,noatime,nosuid,mode=0755,size=50m    0 0
    tmpfs   /home/pi/log    tmpfs   defaults,noatime,nosuid,mode=0755,size=100m    0 0
    tmpfs   /tmp            tmpfs   defaults,noatime,mode=1777,size=30m

    Per farlo in modo ancora più semplice è possibile installare Log2RAM che tra l’altro, si occupa anche periodicamente o allo shutdown di scrivere comunque su disco. In questo modo ci portiamo a caso il vantaggio della riduzione delle scritture ma riducendo comunque il rischio di perdere dati.

    Disabilitare log di sistema

    Prima di procedere con Raspberry Pi 3 B+ HDD hard disk esterno, possiamo comunque ridurre le scritture sulla scheda SD disabilitando molti dei log di sistema.

    Potete farlo facilmente modificando il file /etc/rsyslog.conf aggiungendo all’inizio della sezione:

    ###############
    #### RULES ####
    ###############

    la riga seguente:

    *.*     ~

    Potete anche eventualmente disattivarli in modo più fine commentando invece le singole righe del file di configurazione.

    Nel mio caso specifico ho disabilitato solamente daemon.log e syslog che erano di gran lunga i file più voluminosi.

    Raspberry Pi 3B+ boot from USB SSD or HDD external drive: come collegare

    Per poter espandere lo spazio di archiviazione oltre quello della scheda SD di sistema e’ possibile collegare Raspberry Pi 3 B+ HDD hard disk esterno USB.

    Raspberry Pi 3 hard disk HDD

    Sul mercato si trovano dischi USB in formato 2.5″ e 3.5″ con le caratteristiche seguenti:

    • HDD hard disk esterno USB 2.5″: contenitore di dimensioni ridotte e di solito auto-alimentato attraverso il cavo USB stesso
    • HDD hard disk esterno USB 3.5″: contenitore di dimensioni maggiori e solitamente con alimentatore proprio da collegare alla presa elettrica

    Nel caso di alimentazione mediante il cavo USB abbiamo le ulteriori opzioni:

    • collegamento diretto alla presa USB del Raspberry Pi, ma attenzione ai limiti di potenza
    • collegamento tramite un bus USB

    Per semplificare il numero di componenti, ho deciso di procedere con l’alimentazione dell’HDD hard disk esterno utilizzando direttamente una presa USB del mio Raspberry Pi 3.

    Raspberry Pi 3B+ boot from USB SSD or HDD external drive: alimentatore

    Il primo dubbio e’ verificare se i consumi totali siano compatibili col mio alimentatore Raspberry da 2.000 mA / 10 W:

    Per verificare la versione hardware del vostro Raspberry Pi potete usare questo astruso comando:

    rev=$(awk '/^Revision/ { print $3 }' /proc/cpuinfo) && curl -L perturb.org/rpi?rev=$rev

    che però fornisce un risultato molto facile da leggere:

    Versione hardware Raspberry Pi

    Tramite un paio di autorevoli siti disponibili in rete:

    Possiamo facilmente confrontare i consumi dei vari modelli di Raspberry Pi:

    Potenza assorbita Raspberry Pi

    Che ci dicono che in condizioni di massima occupazione della CPU gli assorbimenti massimi sono:

    ModelloPotenzaCorrente
    Raspberry Pi 4 B7,6 W1.520 mA
    Raspberry Pi 3 A+5,4 W1.080 mA
    Raspberry Pi 3 B+6,4 W1.280 mA
    Raspberry Pi 3 B5,9 W1.180 mA
    Potenza assorbita Raspberry Pi

    Occorre anche aggiungere gli eventuali assorbimenti delle periferiche aggiuntive collegate al vostro Raspi.

    Ho quindi ordinato un Toshiba Canvio Basics, uno degli hard disk esterni più venduti, probabilmente per l’eccellente rapporto qualità / prezzo:

    Raspberry Pi 3 hard disk Toshiba Canvio Basics
    Toshiba Canvio Basics

    Verificandone la scheda tecnica, vediamo che l’assorbimento massimo dell’hard disk esterno Toshiba Canvio Basics tramite bus USB è pari a 900 mA:

    Scheda tecnica Toshiba Canvio Basics
    Scheda tecnica Toshiba Canvio Basics

    Sommando i consumi massimi di Raspberry Pi 3 B+ HDD hard disk esterno otteniamo una potenza massima assorbita pari a 8,15 W / 1.630 mA.

    Direi che il mio alimentatore Raspberry dovrebbe farcela in agilità a supportare Raspberry Pi 3 B+ HDD hard disk esterno, ci sono comunque molte opzioni tra cui scegliere:

    Visto che ci siamo vediamo come ottimizzare al massimo i consumi, ad esempio leggendo Raspberry Pi Zero – Conserve power and reduce draw to 80mA.

    I principali accorgimento possibili per risparmiare energia sono i seguenti:

    AzioneRisparmio
    (mA)
     
    Disattivare HDMI25Se il vostro Raspberry non e' collegato ad un display o TV, potete risparmiare energia disattivando l'HDMI mediante il comando /usr/bin/tvservice -o (-p per attivarlo).
    Per disattivare l'HDMI all'accensione basata aggiungere la linea di comando al file di configurazione /etc/rc.local.
    Disattivare i LED5 per LEDPotete risparmiare ulteriore energia spegnendo i LED del vostro Raspberry.
    Ridurre gli accessori> 50Ogni dispositivo collegato al Raspberry consuma energia: un mouse o una tastiera consumano fino a 50-100 mA. Se non li utilizzate effettivamente scollegateli.
    Attenzione al software installato> 100Se sul vostro Raspberry girano innumerevoli applicazioni in background, la CPU viene consumata comunque. Rimuovete tutte le applicazioni che non vi servono effettivamente.

    Raspberry Pi 3B+ boot from USB SSD or HDD external drive: collegamento

    Una volta collegati Raspberry Pi 3 hard disk esterno e verificato che il sistema continua a funzionare occorre configurarlo.

    Raspberry Pi 3B+ boot from USB SSD or HDD external drive – Scelta file system

    Attenzione: la scelta del formato e’ irreversibile pena una nuova formattazione del disco con conseguente perdita dei dati.

    Le opzioni sono le seguenti:

    • NTFS: formato di Windows ma con grossi problemi di prestazioni su Raspberry Pi. Sconsigliato.
    • FAT: vecchio formato di Windows con massima compabilita’ nella versione FAT32 (con limite di 4 GB sulla dimensione dei file).
    • OSX: formato di Apple non compatibile con Windows.
    • EXT: formato nativo di Linux con massime prestazioni. Utilizzabile comunque su Windows ed Apple.

    La mia scelta e’ EXT4 poiché conto di utilizzare il disco esclusivamente col Raspberry Pi.

    Raspberry Pi 3B+ boot from USB SSD or HDD external drive – Verifica disco

    Per verificare l’effettivo collegamento del disco esterno, potete eseguire questo comando:

    sudo blkid
    /dev/mmcblk0p1: LABEL="boot" UUID="0F5F-3CD8" TYPE="vfat" PARTUUID="19f14882-01"
    /dev/mmcblk0p2: UUID="0aed834e-8c8f-412d-a276-a265dc676112" TYPE="ext4" PARTUUID="19f14882-02"
    /dev/sda: LABEL="TOSHIBA EXT" UUID="C826CBA726CB94BA" TYPE="ntfs" PARTUUID="0d6345c3-01"
    /dev/mmcblk0: PTUUID="19f14882" PTTYPE="dos"

    Che ci indica chiaramente come il nostro disco TOSHIBA EXT sia effettivamente visibile dal sistema.

    Raspberry Pi 3B+ boot from USB SSD or HDD external drive – Verifica partizione del disco

    Ora possiamo verificare il nome della partizione corrispondente al nostro disco esterno:

    sudo fdisk -l
    Disk /dev/sda: 931,5 GiB, 1000204883968 bytes, 1953525164 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x0d6345c3
    Device Boot Start End Sectors Size Id Type
    /dev/sda * 2048 1953521663 1953519616 931,5G 7 HPFS/NTFS/exFAT

    Il secondo disco elencato, nel mio caso /dev/sda, è il disco USB connesso (possiamo riconoscerlo anche dalla capacità molto grande). Potete notare come fosse già formattato e pronto all’uso con Windows.

    Raspberry Pi 3B+ boot from USB SSD or HDD external drive – Formattazione del disco

    Per formattare la partizione del nuovo disco col filesystem EXT4, perdendo tutti i dati eventualmente memorizzati, usiamo il comando seguente:

    sudo mkfs.ext4 /dev/sda -L etichetta_volume

    dove /dev/sda è il nome della partizione da formattare e l’opzione -L permette di assegnare un’etichetta.

    Potete verificare l’elenco delle partizioni mediante il comando lsblk.

    Raspberry Pi 3B+ boot from USB SSD or HDD external drive – Directory e permessi del disco

    Completata la formattazione del disco, possiamo montare una directory associata all’hard disk esterno da agganciare al file system principale del sistema. Per convenzione i dischi esterni sono sempre montati all’interno della directory /mnt.

    Creiamo quindi una sottodirectory /mnt/ext_hdd con il comando mkdir:

    sudo mkdir /mnt/ext_hdd

    Cambiamone i permessi di accesso con chmod per renderla accessibile in lettura e scrittura da tutti gli utenti del sistema:

    sudo chmod 777 /mnt/ext_hdd

    Raspberry Pi 3B+ boot from USB SSD or HDD external drive – Mount del disco

    Finalmente montiamo il disco sulla stessa directory con il comando mount:

    sudo mount /dev/sda /mnt/ext_hdd

    Raspberry Pi 3B+ boot from USB SSD or HDD external drive – Mount automatico del disco

    Per impostare il sistema in modo da montare automaticamente il disco esterno ogni volta che si effettua un riavvio basta fare una modifica al file di configurazione /etc/fstab:

    sudo nano /etc/fstab

    Aggiungendo, dopo le partizioni di sistema associate alla scheda SD, una riga per la partizione del disco esterno:

    /dev/sda    /mnt/ext_hdd     auto     defaults,user   0   1

    Al riavvio il disco, se acceso prima del Raspberry Pi, verrà rimontato automaticamente. Nel caso ci dimenticassimo di accendere il disco, è sempre possibile montarlo manualmente in un secondo momento come già descritto in precedenza.

    Raspberry Pi 3B+ boot from USB SSD or HDD external drive: boot da USB

    A partire dalla versione Raspberry Pi 3 non è più necessaria un’alimentazione supplementare per i dischi esterni, dunque possiamo pensare di spostare tutto sul nostro hard disk esterno.

    Raspberry Pi 3B+ boot from USB SSD or HDD external drive – Installazione rsync

    Ora possiamo installare rsync, un tool che tiene sincronizzati i dati tra diverse directory:

    sudo apt-get install rsync

    Raspberry Pi 3B+ boot from USB SSD or HDD external drive – Copia scheda SD su disco esterno

    Copiamo l’intero contenuto della scheda SD all’interno del disco esterno tramite rsync:

    sudo rsync -axv / /mnt/ext_hdd

    Raspberry Pi 3B+ boot from USB SSD or HDD external drive – Modifica cmdline.txt

    Ora indichiamo il nuovo disco di boot modificando il file cmdline.txt, di cui e’ meglio creare una copia di backup preliminare:

    sudo cp /boot/cmdline.txt /boot/cmdline.txt.bak
    sudo nano /boot/cmdline.txt

    In particolare ci interessa la voce root=, dove va scritta la posizione del disco esterno (ovvero /dev/sda). Inoltre occorre aggiungere la voce rootdelay=5 alla fine del file, in modo da impostare un tempo di attesa prima di montare il file system di root.

    La nuova riga di configurazione sarà dunque la seguente:

    dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/sda rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait rootdelay=5

    Infine blocchiamo il boot dalla scheda SD andando a commentare la riga della sua partizione sul file /etc/fstab:

    #/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1

    Il risultato sarà il seguente:

    df -k
    File system 1K-blocchi Usati Disponib. Uso% Montato su
    /dev/root 960378896 2224584 909299940 1% /
    devtmpfs 495484 0 495484 0% /dev
    tmpfs 500092 0 500092 0% /dev/shm
    tmpfs 500092 12900 487192 3% /run
    tmpfs 5120 4 5116 1% /run/lock
    tmpfs 500092 0 500092 0% /sys/fs/cgroup
    /dev/mmcblk0p1 43436 22138 21298 51% /boot
    tmpfs 100016 0 100016 0% /run/user/1000

    Notate che ora tutto il sistema si trova nel disco esterno, ad eccezione dei file di boot ancora presenti nella scheda SD che sarà necessario tenere sempre inserita nel Raspberry Pi.

    E’ anche possibile configurare il firmware su scheda in modo da abilitare il Raspberry boot da USB hard disk esterno senza ricorrere più alla scheda SD come spiegato in HOW TO BOOT FROM A USB MASS STORAGE DEVICE ON A RASPBERRY PI 3.

    Se ti e’ piaciuto scoprire come collegare Raspberry Pi 3 B+ HDD hard disk esterno e come fare Raspberry boot da USB, puoi anche scoprire come ho usato il mio Raspberry Pi per hackerare la mia pompa di calore, leggi Rotex HPSU Compact hack con Raspberry Pi e PiCAN2: prima parte.

    Leggi tutti i miei articoli su Raspberry Pi:

    Iscriviti alla nostra newsletter per rimanere sempre aggiornato

    Ultimo aggiornamento Amazon Affiliate 2022-11-23 at 20:38

    11 commenti su “Raspberry Pi 3B+ boot from USB SSD or HDD external drive”

    1. ciao avrei una domanda avrei un msxvr ( e un computer msx fatto con un raspberry pi3+ ) visto che e un bel pò lento vorrei velocizzarlo passando il software su un ssd e farlo partire da li .

      come potrei fare ?
      esiste un modo di modificare l’immagine della sua sd da windows ?
      grazie e buona giornata

      1. Ciao Alex,

        innanzitutto complimenti per possedere questo oggetto!
        Sinceramente non saprei, ho cercato qualcosa in rete ma non ho trovato nulla.
        Due domande:
        1) hai provato a leggere la SD da PC per capirne la struttura?
        2) hai un modo per accedere al Linux sottostante (ammesso che ci sia)?

    2. Salvatore Mannino

      Si funziona benissimo, la domanda che vorrei porre è:
      dal momento che adesso il sistema viene eseguito dall’ hard disk, tutto quello faccio compreso aggiornamenti avvengono sull’hard disk, giusto? Suppongo che fare un back up di sistema come facevo con Win32DiskImager facendo l’ immagine della SD, adesso invece vada fatto sull’ hard disk, non so se è valido lo stesso strumento.
      A questo punto però non dovrebbe più servire tenere aggiornata la SD. Della quale mi piacerebbe sapere
      quali sono i file essenziali da tenere, suppongo che tutto il resto può anche essere eliminato.
      Grazie mille per eventuali delucidazioni

      Saluti Salvatore

      1. Ciao,
        scusa non capisco come fai ad alimentare un ssd da usb:

        Come da te citato:
        “Sommando i consumi massimi di Raspberry Pi 3 B+ HDD hard disk esterno otteniamo una potenza massima assorbita pari a 8,15 W / 1.630 mA”.

        “modello 3 B+ = 5,1 W / 980 mA”

        1630-980= 650mA –> la porta usb erogo al massimo 500mA

        1. Ciao Gregorio,

          leggi nella documentazione What are the power requirements?

          “The Raspberry Pi B+ and 2 Model B can supply 600mA/1.2A to downstream USB peripherals, switchable by a firmware setting. This allows the vast majority of USB devices to be connected directly to these models, assuming the upstream power supply has sufficient available current.”

            1. Ciao Gregorio,

              devi leggere la documentazione aggiornata. Non trovi quel comando in questo articolo perché non serve più: a partire dal Raspberry 3B quella configurazione e’ diventata di default.
              La tua osservazione e’ errata.

    Lascia un commento

    Il tuo indirizzo email non sarà pubblicato.

    Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

    La mia Casa Elettrica

    GRATIS
    VISUALIZZA