Duplizieren einer SD-Card mit dem Raspberry Pi

Das Erstellen einer bootfähigen SD-Speicherkarte für den Raspberry Pi bzw. das Beschreiben einer SD-Speicherkarte mit einem Betriebssystem, wie Raspbian gehört zu den eher nervigen Tätigkeiten beim Arbeiten mit dem Raspberry Pi. Je nach dem mit welchem Betriebssystem man arbeitet, also Windows, Linux oder Mac OS, stehen einem mehrere Möglichkeiten zur Verfügung um sich eine SD-Speicherkarte mit einem Betriebssystem zu erstellen.

Wenn man dann mal eine Weile mit einem Raspberry Pi herumexperimentiert hat, möchte man gerne mit einem frischen System beginnen, oder nach erfolgreicher Lösung eines Problems eine Sicherung, also ein Image, erstellen.

Das kann man natürlich an einem separaten Rechner machen und sich einfach den Inhalt einer Speicherkarte als Image-Datei ziehen. Die kann man dann schön archivieren und später wiederverwenden.

Wenn es aber darum geht, einfach nur eine SD-Karte zu duplizieren. Beispielsweise weil man für jemand anderen eine Konfiguration weitergeben möchte, dann ist das Erstellen eines Image und anschließend schreiben auf eine andere SD-Karte eher umständlich. Das direkte Umkopieren zwischen zwei Speicherkarten wäre die Lösung.

Duplizieren einer SD-Card mit dem Raspberry Pi

Dazu braucht man einen USB-Speicherkarten-Leser mit jeweils einem SD- und einem Micro-SD-Speicherkarten-Slot.

Aufgabe

  1. Erstellen Sie ein Skript für das Erstellen von SD-Card-Duplikaten.

Lösung

Die folgende Lösung zielt darauf ab mittels eines USB-Kartenlesers und einem Raspberry Pi eine SD-Speicherkarte zu duplizieren. Dazu muss der USB-Kartenleser zwei Ports haben. Einen für SD-Speicherkarten und einen für Micro-SD-Speicherkarten. In der Regel wird man keine zwei normale und zwei kleine Ports bekommen.

In der Regel kann der Raspberry Pi jeden USB-Speicherkartenleser erkennen. Steckt man Speicherkarten in den Kartenleser ein, dann werden die als Laufwerke in der Form sda, sdb, sdc, usw. ins System eingebunden. Allerdings werden sie nicht gemountet. Das ist für die folgende Lösung auch nicht gewünscht. Wenn also ein automatisches mounten aktiviert ist, müssen die Laufwerke vor dem Duplizieren Software-mäßig ausgeworfen werden (unmount).

Zuerst prüft man, ob eventuell Laufwerke eingebunden sind:

df

Man erkennt diese Laufwerke an der Bezeichnung "/dev/sda", "/dev/sdb" und fortlaufend, die zusätzlich mit einer Nummer gekennzeichnet sind. Exemplarisch werfen wir zwei dieser Laufwerke raus.

umount /dev/sda1
umount /dev/sdb1

Nachdem die Laufwerke Software-seitig "ausgehängt" sind können wir mit der Erstellung der Duplikate fortfahren.

Im diesem konkreten Anwendungsfall steht ein USB-Speicherkartenleser von Hama zur Verfügung, der normale SD-Karten und auch die kleinen Micro-SD-Karten aufnehmen kann. Dafür gibt es je einen Steckplatz. Also insgesamt zwei, was für unseren Fall, das Duplizieren einer SD-Karte vollkommen ausreicht.

Die Idee ist jetzt den Vorgang ein wenig zu automatisieren, damit man beim Duplizieren nicht jedes mal neu überlegen muss, welche Befehle eingegeben werden müssen. Dazu erstellen wir zwei Dateien. Eine für das Duplizieren von SD auf Micro-SD. Und die andere für das Duplizieren von Micro-SD auf SD.

Dazu legen wir die beiden Dateien an, schreiben die entsprechenden Befehle hinein und machen die Dateien anschließend ausführbar.

nano copymSD2SD.sh

Hier trägt man ein:

#!/bin/bash
sudo dd if=/dev/sdb of=/dev/sda bs=1MB
exit 0

Die Datei erzeugt ein Duplikat von der Karte im Micro-SD-Slot auf die Karte im normalen SD-Slot.
Speichern und schließen: Strg + O, Return, Strg + X.

nano copySD2mSD.sh

Hier trägt man ein:

#!/bin/bash
sudo dd if=/dev/sda of=/dev/sdb bs=1MB
exit 0

Die Datei erzeugt ein Duplikat von der Karte im normalen SD-Slot auf die Karte im Micro-SD-Slot.
Speichern und schließen: Strg + O, Return, Strg + X.

Anschließend muss man beide Dateien noch ausführbar machen.

sudo chmod +x copymSD2SD.sh
sudo chmod +x copySD2mSD.sh

Um nun eine SD-Karte zu duplizieren geht man folgendermaßen vor:

Um vom Micro-SD-Port auf den SD-Port zu duplizieren:

./copymSD2SD.sh

Um vom SD-Port auf den Micro-SD-Port zu duplizieren:

./copySD2mSD.sh

Nach der Eingabe auf der Kommandozeile passiert erst einmal gar nichts. Allerdings kann man beobachten, dass die Aktivitäts-LED im USB-Leser blinkt. Das ist ein gutes Zeichen.

Irgendwann, wenn das Skript fertig ist, wird es zur Kommandozeile zurückkehren. Das kann etwas dauern. Je nach dem, wie groß die Speicherkarten sind, desto länger dauert es. Die Ausgabe zeigt dann eine Auswertung an, wie viele Datensätze ein- und ausgelesen wurden.

Wenn die Anzahl der Datensätze sowohl "ein" als auch "aus" gleich sind, dann war das Duplizieren erfolgreich.

Im Fehlerfall kommt zum Beispiel diese Ausgabe:

dd: Schreiben von „/dev/sda“: Auf dem Gerät ist kein Speicherplatz mehr verfügbar
7949+0 Datensätze ein
7948+0 Datensätze aus
7948206080 Bytes (7,9 GB) kopiert, 1157,9 s, 6,9 MB/s

Hier war auf der Ziel-Speicherkarte nicht genug Speicherplatz. Das muss aber kein echtes Problem sein. Wenn man die erstellte SD-Karte ausprobiert, wird sie im Normalfall funktionieren.

Weitere verwandte Themen:

Teilen:

Produktempfehlungen