RPI mit SSD -- schneller und sicherer ohne Crash

RPI mit SSD -- schneller und sicherer ohne Crash

Howto: Umzug eines konfigurierten Raspberry PI-Systems auf eine USB-SSD

Hier wird der Einsatz einer SSD als Root-Dateisystem zusammen mit einer SD-Karte als Boot-Medium beschrieben. Diese Vorgehensweise ist für alle RPI's möglich. Das native Booten von USB mit einem RPI3 wird hier beschrieben.

Der Raspberry Pi wird standardmäßig mit einer SD-Karte als Massenspeicher ausgeliefert. An diesem Ansatz ist prinzipiell nichts auszusetzen. Allerdings setzen viele Schreibzugriffe auf dieses Medium der Freude an der Stabilität schnell Grenzen, und auch ich habe bereits SD-Karten zerschrieben. Gerade mit dem Einsatz vieler Docker-Container ist die Gefahr gestiegen.

Benötigt werden:

  • SD-Karte (bereits vorhanden, System bereits eingerichtet)
  • SSD, 2,5", SATA (möglichst keine Harddisk, Stichwort Stromaufnahme)
  • USB nach SATA-Adapter oder kleines Leer-Gehäuse für externe USB-Laufwerke

Die nachfolgenden Schritte werden hier unter macOS beschrieben und sind unter Linux ähnlich:

  • (1) ein Image der SD-Karte erstellen
  • (2) dieses Image auf die SSD schreiben
  • (3) einen Eintrag in der cmdline.txt ändern
  • (4) Neustart -> Fertig!

(1) Zunächst wird der RPI heruntergefahren und von der SD-Karte ein Image erstellt, welches als Backup dann auf die SSD geschrieben wird.
Also die SD-Karte in den Slot des Mac's gesteckt, kurz gewartet und auf dem Mac ein Terminal geöffnet (Strg-Leertaste und dann terminal eingeben)

# diskutil list 
...
/dev/disk3 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *8.0 GB     disk3
   1:             Windows_FAT_32 boot                    66.1 MB    disk3s1
   2:                      Linux                         7.9 GB     disk3s2
...

Hier werden nun die einzelnen Speichermedien des Mac's aufgelistet
ACHTUNG: WICHTIG: Hier nun das richtige Medium auswählen und sich merken ( in diesem Beispiel ist es die Platte /dev/disk3, erkennbar an zwei Partitionen FAT32 und Linux und der Größe 8GB.
Diese Bezeichnung gilt nun für alle nachfolgenden Schritte. Sollte es bei Ihnen also die /dev/disk2 verweisen, so gilt dies als "2" für alle Schritte.

Damit MacOS die Partitionen freigibt, werden diese zunächst ungemounted:

# diskutil umount /dev/disk3 

Dann kann ein Image der SD-Karte gezogen werden. ACHTUNG: Damit es schneller geht, werden wir nun auf das RAW Device zugreifen, d.h. aus disk3 wird nun rdisk3!!

# sudo dd if=/dev/rdisk3 of=raspi.img bs=8m 

Dies wird nun etwas dauern, Ungeduldige dürfen mit CTRL+t "nachschauen", wie viele Bytes denn schon geschrieben sind.

load: 1.04  cmd: dd 962 uninterruptible 0.00u 4.54s
723+0 records in
722+0 records out
6056574976 bytes transferred in 314.570090 secs (19253499 bytes/sec)

950+0 records in
950+0 records out
7969177600 bytes transferred in 440.643784 secs (18085306 bytes/sec)

Nach Beendigung liegt im Benutzerverzeichnis des Mac's eine Datei mit dem Namen raspi.img als Sicherheitskopie vor. Die SD-Karte kann nun ausgeworfen werden.

# diskutil umountDisk /dev/disk3 

Haben Sie den unterschied gesehen? Auch hier ist der Befehl ähnlich dem ersten Befehl "umount", allerdings wird hier mit "umountDisk" nun der gesamte Datenträger ausgeworfen, ähnlich dem "Rechtsklick - Datenträger auswerfen" auf dem Desktop.

(2) Nun wird dieses Image auf die SSD geschrieben. ACHTUNG: die Einträge von InputFile if und OutputFile of werden nun vertauscht.

SSD per USB verbinden und auch zunächst unmounten:

# diskutil umount /dev/disk3 

und zurücksichern:

# sudo dd if=raspi.img of=/dev/rdisk3 bs=8m 

(3) Abschließend muss dem Raspberry Pi nun noch mitgeteilt werden, dass er nach dem Einschalten und Booten von der SSD nach dem Laden des Kernels auf die SSD zugreifen soll. Dies passiert in der Datei cmdline.txt.
Die können wir über den Desktop editieren. Auf dem Desktop den Datenträger "Boot" öffnen, die Datei "cmdline.txt" mit Doppelklick öffnen und den Eintrag

root=/dev/mmcblk0p2 

durch

root=/dev/sda2

ersetzen. Ersteres war der Eintrag auf die zweite Partion der SD-Karte (MMC-Block-Device), zweiteres ist der neue Eintrag auf die zweite Partition der SSD.

(4) Nun die SSD auswerfen (Rechtsklick - "boot" auswerfen), alles an RasPi anschließen (SD-Karte und SSD via USB), füran startet der RasPi nach dem Boot von der SD mit dem Root-Dateisystem von der SSD schneller und sicherer. Und im "Fall des Knalls" hat man eine Datensicherung, die man einfach auf die SSD wieder zurücksichert.