Installare Raspbian su Hard Disk esterno o pennetta USB

RaspianHD

 

Buongiorno a tutti! A causa degli esami non riusciamo ad essere troppo presenti sul blog. In ogni caso abbiamo preparato qualche chicca per voi. In questi giorni mi sono munito – finalmente – anche io di un fastastico Raspberry. Ho scelto l'ultima versione disponibile: il Raspberry Pi 2.
La guida di oggi vuole aiutarvi ad installare il sistema operativo Raspbian su una chiavetta o su un HDD esterno. Perchè? Beh una delle cose che non ci è mai piaciuta troppo di questo fantastico mini-pc è appunto la memoria su cui è installato il sistema operativo. I costruttori infatti, per i più disparati motivi, hanno utilizzato una una micro-sd – o una SD a seconda del modello – come storage di massa. Per l'utilizzo originale, ossia quello istruttivo, va più che bene. Se però dobbiamo utilizzare il nostro lampone preferito per qualcosa di più impegnativo non è sufficiente. Il motivo principe è che le memorie flash soffrono le scritture ripetute, abbassandone notevolmente il ciclo di vita. Per questo motivo abbiamo deciso di utilizzare il Raspberry con l'ausilio di un HardDisk connesso via USB, su cui girerà il sistema operativo.

 

 

PASSAGGI PRELIMINARI

Per questa guida abbiamo utilizzato il Raspberry Pi 2, ma è perfettamente compatibile con le altre versioni in commercio. Per chi non ne avesse uno, noi abbiamo acquistato lo starter kit per poter iniziare subito con tutto il necessario: cavi, case, memoria e caricatore. Piacevole sorpresa è la presenza di NOOBS, l'installatore ufficiale di Raspbian, già preinstallato nella scheda di memoria.

La scheda MicroSD non è molto performante, ma per il nostri scopi andrà benissimo. Per quanto riguarda l'Hard Disk, noi abbiamo utilizzato questo con il suo adattatore per USB, ma un qualunque HDD abbiate funziona benissimo.

Una volta spacchettato il tutto installiamo Raspbian sul nostro Raspberry, utilizzando il già citato NOOBS.
Si può facilmente installare direttamente Raspbian seguendo questa guida di Daniele.

Il passo successivo è quello di impostare la lingua del sistema – system locale in gergo – la disposizione e la lingua della tastiera. Per farlo seguiamo questa guida.

Ora siamo a cavallo. Abbiamo tutto il necessario e non ci resta che iniziare. La procedura durerà dai 15 ai 30 minuti a seconda di quanto “grande” è il sistema operativo e di quanto è “veloce” la vostra periferica di archiviazione.

PROCEDURA

Apriamo il terminale del nostro Raspberry e ci appropriamo innanzitutto dei privilegi di root con:

sudo -i

a questo punto, dopo aver collegato il nostro Hard Disk, lanciamo il comando:

lsblk

per stampare così a video tutte le partizioni presenti. Nel nostro caso la nostra periferica è stata montata correttamente in /dev/sda. Ora dobbiamo formattarla nel modo corretto dando:

fdisk /dev/sda

nel dialogo inseriamo:

  1. d e premiamo su invio, per eliminare il contenuto.
  2. Poi diamo n
  3. e p per creare una nuova partizione primaria.

Naturalmente è possibile utilizzare un numero diverso di partizioni, ad esempio dedicandone una solo al sistema operativo – / o root che dir si voglia – e un'altra dedicata solo allo storage dei dati – assegnandogli la partizione /home. Ora noi abbiamo creato solo una partizione, se avete intenzione di fare qualcosa di più complesso vi rimandiamo alla guida avanzata al partizionamento da terminale.

Una volta che siamo soddisfatti digitiamo w per scrivere su disco le modifiche. L'ultimo passo è la formattazione delle partizioni in ext4. Diamo così il comando:

mke2fs -t ext4 -L rootfs /dev/sda1

Arrivati a questo punto ridiamo il comando:

lsblk

e identifichiamo la partizione su cui vogliamo inserire la root del sistema. A questo punto montiamo la partizione all'interno di /mnt con il comando:

mount /dev/sda /mnt

ovviamente se abbiamo più partizioni da montare basterà creare alcune tante cartelle quanto bastano per poi montare dentro le nostre partizioni.

Ora non ci resta che copiare tutto il contenuto della partizione / (root) con il comando rsync:

rsync -axv / /mnt

Utilizziamo rsync al posto di dd per il semplice fatto che il primo comando è più rapido dato che non copia anche lo spazio libero.
La faccenda durerà molto, quindi apriamo un'altra finestra del terminale e, una volta che abbiamo riacquistato i privilegi di root, proseguiamo.
È giunta l'ora di informare il nostro sistema operativo che è stato sfrattato dalla scheda sd e da ora in poi risiederà all'interno di /dev/sda1. Come fare? Dato che, per come è stato costruito, il Raspberry lancerà sempre qualunque sistema operativo dalla scheda sd, /boot dovrà restare per forza lì dov'è.

Per prima cosa notifichiamo l'avvenuto spostamento modificando il file cmdline.txt. Facciamo prima una copia di backup con:

cp -v /boot/cmdline.txt /boot/cmdline.orig

Apriamo il file con:

nano /boot/cmdline.txt

e cerchiamo una stringa simile a root=/dev/mmcblk0p2, che rappresenta la vecchia partizione. Ora la dobbiamo sostituire con root=/dev/sda1
Il risultato finale dovrà essere simile a questo:

cmdline

Salviamo e chiudiamo con ctrl-x e andiamo avanti.

Ora dobbiamo modificare l'ultima entry all'interno di /mnt/etc/fstab con:

nano /mnt/etc/fstab

Anche qui al posto di /dev/mmcblk0p2 dobbiamo inserire /dev/sda1 per notificare al sistema la nuova posizione della root.
Salviamo di nuovo con ctrl-x e riavviamo il sistema con:

reboot

Al riavvio, una volta fatto il login, verifichiamo con:

lsblk

che sia andato tutto bene, ossia che le partizioni siano state montate correttamente, ma sinceramente se avete fatto il login era già segno che era andato tutto per il meglio.

Al prossimo post 😉

Dottore in Informatica. Appassionato di computer fin dal primo PC Olivetti con Windows 95 e la bellezza di 8 MB di RAM.
Utilizzatore Linux da 5 anni, credo profondamente nella filosofia open source.
Dopo tante distro provate sul mio fidato Toshiba, uso Fedora per lo studio e il divertimento.

4 risposte

  1. Davide Sangalli

    "nano /mnt/etc/fstab" -> "nano /etc/fstab"

    • No, è corretto:
      nano /mnt/etc/fstab
      Devi pensare alla sequenza di accensione (boot sequence): il bios (o chi per esso) cerca sulla scheda SD la partizione /boot. All'interno di questa legge il file cmdline.txt per sapere dove è la partizione di root. Ma noi abbiamo modificato e gli abbiamo indicato che questa si trova in /dev/sda1, ossia all'interno della periferica di archiviazione.
      Ora a questo punto la sequenza di avvio deve caricare il sistema operativo, e per farlo deve leggere il file /etc/fstab, che però è quello in /dev/sda1 e non in quello all'interno della SD.
      È per questa ragione che editiamo /mnt/etc/fstab e NON /etc/fstab.
      Volendo alla fine della guida sarebbe pure possibile cancellare tutti i file presenti nella scheda SD a MENO della partizione /boot.
      A presto! 🙂

  2. Ciao, sono nuovo di questo blog, e mi ha incuriosito questo articolo.
    Tra poco mi deve arrivare il Raspberry da me acquistato online, mi chiedevo alcune cose inerente a questo argomento.

    Che differenza effettiva c'è se installo il sistema operativo sulla sd (che mi pare di avere acquistato quella da 32Gb), oppure su un HD esterno da 500Gb e oltre (collegandolo con usb)? Vi sono cambiamenti di prestazioni?

    Se installo il sistema operativo su sd e poi magari installo programmi, lavoro su HD esterno....pesa molto sulle prestazioni???
    Te lo chiedo perché vorrei ottenere il "massimo" di prestazioni possibili osservando prima l'installazione del sistema operativo

    • Emanuele Lovera - Blogger

      Ciao Mattia, sono contento ti sia piaciuto l'articolo.
      Hai posto delle interessanti domande, le cui risposte dipendono dal punto di vista da cui guardi il problema.
      Partiamo dalla prima domanda: ci sono differenze se installo il SO su SD o su Hard Disk?
      Ovviamente ci sono differenze se installi il SO sulla SD o su un Hard Disk esterno. Ma... dipende. Dipende da alcuni fattori.
      1 - Il primo punto di cui ti pongo l'attenzione è l'affidabilità: un Hard Disk ha una resistenza molto alta all'usura. Una SD al contrario patisce le scritture: più ci scrivi sopra, più è probabile tu abbia degli errori ( fino ad arrivare alla completa incapacità operazionale).
      2 - Il primo collo di bottiglia che guarderei io (dato che non è sostituibile) è la presa USB 2.0. Tipicamente scambia dati a una velocità di 12-15 MB/s. Quindi se usiamo un Hard Disk esterno, è ovvio che viaggeremo a quella velocità. È veloce? È lento? Dipende.
      3 - La scheda SD: il secondo collo di bottiglia (spesso più subdolo) è quello della SD. A seconda della classe che scegli hai ovviamente differenza in velocità di trasferimento dati. Se hai comprato una Micro SD di classe 10 (sono quelle più comuni), hai circa 10 MB/s di scambio dati. Se vuoi di più allora devi utilizzare delle MicroSD pensate per chi fa video, che hanno uno scambio più veloce.

      Seconda domanda: Ci sono cambiamenti di prestazione?
      Eheh... Dipende! Tu che cosa intendi con il termine prestazione?
      La velocità di scambio dati? Allora sì, può darsi. Dipende dalla scheda SD che scegli.
      Ma la definizione di Prestazione è inevitabilmente legata a che cosa deve fare il tuo sistema. Ad esempio se ci buttiamo dentro la resistenza all'usura del nostro sistema, non ci siamo proprio. Li sì che ti conviene avere un Hard Disk.

      Vuoi ottenere il massimo dal tuo Raspberry? Pensa bene che cosa ci devi fare, e scegli di conseguenza.

      Esempio: noi abbiamo un Raspberry con archiviazione esterna, che ci fa da server Apache e cloud con Owncloud per il backup dei post di Tux Maniacs. Per quello scopo, il massimo delle prestazioni raggiungibili dal nostro Lampone è la completa operabilità 24/7.

      Ho risposto? 😉

Lascia un commento