Installare raspbian su disco esterno

Installazione, configurazione e utilizzo di Debian su Raspberry pi
Rispondi
sirio81
Hero Member
Hero Member
Messaggi: 1104
Iscritto il: 13/02/2006, 5:04
Contatta:

Installare raspbian su disco esterno

Messaggio da sirio81 »

Premetto che volevo creare una guida sul wiki ma il tempo non me lo permette per il momento e ho un punto in sospeso che spero mi aiutiate a risolvere.
Veniamo subito al sodo.

Perchè installare raspbian su disco esterno?
I motivi possono essere molteplici ma riporto quelli che interessano a me:
- quando salta la corrente il file system su scheda sd di corrompe facilmente (prima versione raspberry)
- velocità di scrittura migliore rispetto ad una sd.

Come fare?

Questa guida spiega come fare, inoltre mette a disposizione uno script che si dovrebbe arrangiare (a me ha dato problemi che ho anche risolto).
Ad ogni modo l'approccio usato non mi piace: esegue il dd dell'intera immagine; fa partire raspbian; scaricare lo script; lo script crea una partizione, la formatta; copia il filesystem di root; modifica i file di configurazione.
Secondo me si possono saltare un po' di passaggi copiando in necessario dall'immagine sulla scheda sd e sul disco esterno direttamente.

Procedura:
  1. Scaricare l'immagine e decomprimerla
  2. Clonare partizione di boot (mbr compreso)
  3. Opzionale: eliminare la seconda partizione della scheda sd
  4. Creare e formattare una partizone sul disco esterno
  5. Informare il bootloader che la partizione di root si trova sul disco estero
  6. Copiare il file system di root
  7. Modificare l'fstab in modo che usi la partizione del disco estero come partizione di root
1. Scaricare l'immagine e decomprimerla
Penso vi sappiate arrangiare per scaricare il file zip e decomprimerlo dal sito di rapsbian.

2. Clonare partizione di boot (mbr compreso)

Diamo un'occhiata alle partizioni del file immagine...

Codice: Seleziona tutto

parted 2016-03-18-raspbian-jessie-lite.img unit s print
Model:  (file)
Disk /home/valerio/tmp/2016-03-18-raspbian-jessie-lite.img: 2658304s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start    End       Size      Type     File system  Flags
 1      8192s    131071s   122880s   primary  fat16        lba
 2      131072s  2658303s  2527232s  primary  ext4
La partizione di boot (la prima) finisce al settore 131071.
Bene, collego la mia scheda sd al lette di schede che la chiama sdd e procedo a clonare l'immagine fino al settore 131071.
(Vi ricordo che ogni settore sono 512 byte).

Codice: Seleziona tutto

dd if=2016-03-18-raspbian-jessie-lite.img of=/dev/sdd bs=512 count=131071
3. Opzionale: eliminare la seconda partizione della scheda sd
Abbiamo copiato l'mbr e la prima partizione. La seconda partizione (sdd2) esiste nella tabella delle partizioni ma non contene niente e non ci serve. La possiamo quindi eliminare comodamente con cfdisk

Codice: Seleziona tutto

cfdisk /dev/sdd

Codice: Seleziona tutto

4. Creare e formattare una partizone sul disco esterno
Con cfdisk o gparted potete creare una partizione sul disco esterno a vostro piacimento. Formattatela con ext4.
Annotate il suo uuid.
Se ad esempio il disco estero si chiama sdb e la partizione sdb1

Codice: Seleziona tutto

blkid | grep sdb1
(Nota: a breve arriviamo al mio problema)

5. Informare il bootloader che la partizione di root si trova sul disco estero
Aprite il file cmdline.txt che si trova sulla scheda sd.
La guida dice di inserire l'uuid secondo questo esempio

Codice: Seleziona tutto

root=PARTUUID=ED5E1D73-8EAA-4C40-99A6-1E3A3795F98C
Così facendo però raspbian si ferma al boot perchè non riesce a trovare la partizione di root.
Forse è cambiato qualcosa nella sintassi.
Ad ogni modo, inserende

Codice: Seleziona tutto

root=/dev/sda
raspbian poi parte correttamente.

6. Modificare l'fstab in modo che usi la partizione del disco estero come partizione di root
Montiamo la seconda partizione del file immagine;
montiamo il disco esterno
copiamo i dati

Codice: Seleziona tutto

mkdir /tmp/p2 /tmp/esterno
mount parted 2016-03-18-raspbian-jessie-lite.img /tmp/p2 -o loop,offset=$((131072*512))
mount /dev/sdb1 /tmp/esterno
rsync -ax /tmp/p2/ /tmp/esterno
Note: avrete notato che per montare la seconda partizione del file immagine ho usato il suo settore d'inizio (131072).
Mi raccomando, NON dimenticate l'ultimo slash /tmp/p2/ nel comando rsync o vi copirà la cartella anzichè il suo contenuto.

7. Modificare l'fstab in modo che usi la partizione del disco estero come partizione di root

Codice: Seleziona tutto

nano /tmp/esterno/etc/fstab
Qua possiamo usare l'uuid anzichè il nome device

Codice: Seleziona tutto

UUID=<l'id di sdb1> /  ext4    defaults,noatime  0       1
Bene, smontate tutto e collegate schedina e disco al raspberry.

Codice: Seleziona tutto

umount /tmp/p2
umount /tmp/esterno
Nota: in questo esempio ho fatto creare sdb1. Se non prevedete di creare altre partizioni, potete formattare l'intero disco ed usare sdb come device di root (mkfs.ext4 /dev/sdb).

Se mi sapete consigliare come usare l'uuid anche nel cmdline.txt ve ne sarei grato.
Avatar utente
HAL 9000
wiki member
wiki member
Messaggi: 1595
Iscritto il: 10/08/2009, 10:01

Re: Installare raspbian su disco esterno

Messaggio da HAL 9000 »

Ottimo, quando posso la proverò, e proverò a utilizzare il PARTUUID al posto del percorso. :)

Per la guida, non preoccuparti troppo delle scelte stilistiche, quelle si possono sempre modificare in seguito, e sono di secondaria importanza rispetto al contenuto della guida.

Come scheletro, per avere una bozza da cui partire, ti basta davvero soltanto qualcosa del genere:

Codice: Seleziona tutto

{{Stub}}
== Perché installare raspbian su disco esterno? ==
...

== Procedura ==
=== Scaricare l'immagine e decomprimerla ===
<pre>
al posto del tag CODE qua sul forum
</pre>
...

=== Clonare partizione di boot (mbr compreso) ===
...

...

{{Autori
|Autore = ~~~~
}}

[[Categoria:Derivate da Debian]]
E farà da sé la tabella con l'indice delle sezioni, mentre "~~~~" sarà sostituito con il tuo nome utente e un timestamp.

Quindi basta copia-incollare il tuo messaggio sostituendo quanto racchiuso tra il tag [code]...[/code] con <pre>...</pre>; e aggiungere "=="/"===" al posto dei tag per il grassetto per i titoli delle sezioni/sottosezioni.
Ricordarsi di modificare il primo messaggio della discussione per aggiungere [RISOLTO] prima del titolo, quando conclusa.

Wiki: APT e Repository, Comandi utili, Collabora.
Manuali di Debian 12 "bookworm" (PC): installazione, aggiornamento.
sirio81
Hero Member
Hero Member
Messaggi: 1104
Iscritto il: 13/02/2006, 5:04
Contatta:

Re: Installare raspbian su disco esterno

Messaggio da sirio81 »

Grazie per le dritte HAL 9000!
Rispondi