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:
- Scaricare l'immagine e decomprimerla
- Clonare partizione di boot (mbr compreso)
- Opzionale: eliminare la seconda partizione della scheda sd
- Creare e formattare una partizone sul disco esterno
- Informare il bootloader che la partizione di root si trova sul disco estero
- Copiare il file system di root
- Modificare l'fstab in modo che usi la partizione del disco estero come partizione di root
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 ext4Bene, 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=131071Abbiamo 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/sddCodice: Seleziona tutto
4. Creare e formattare una partizone sul disco esternoAnnotate il suo uuid.
Se ad esempio il disco estero si chiama sdb e la partizione sdb1
Codice: Seleziona tutto
blkid | grep sdb15. 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-1E3A3795F98CForse è cambiato qualcosa nella sintassi.
Ad ogni modo, inserende
Codice: Seleziona tutto
root=/dev/sda6. 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
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/fstabCodice: Seleziona tutto
UUID=<l'id di sdb1> / ext4 defaults,noatime 0 1Codice: Seleziona tutto
umount /tmp/p2
umount /tmp/esternoSe mi sapete consigliare come usare l'uuid anche nel cmdline.txt ve ne sarei grato.

