Duplizieren einer SD-Card mit dem Raspberry Pi

ELektronik-KOmpendium.de
Online

Preis auf Anfrage

Wichtige informationen

  • Kurs
  • Online
Beschreibung

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. Dazu braucht man einen USB-Speicherkarten-Leser mit jeweils einem SD- und einem Micro-SD-Speicherkarten-Slot.

Wichtige informationen

Was lernen Sie in diesem Kurs?

Image
Schreiben
Linux

Themenkreis

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:
  • Raspberry Pi: SD-Speicherkarten
  • Script/Datei ausführen oder ausführbar machen
  • Backup von Daten auf dem Raspberry Pi erstellen
  • Betriebssystem für den Raspberry Pi auf eine SD-Speicherkarte installieren
  • Minimal-Raspbian auf eine 2-GByte-SD-Card installieren
  • Kali Linux für den Raspberry Pi installieren

Hinweis: Dieses Tutorial ist Teil einer Aufgaben und Übungen mit dem Raspberry Pi-Reihe, die für Lern- und Ausbildungszwecke erstellt wurde. Die dargestellte Lösung ist Teil einer konkreten Aufgabenstellung, die Schüler, Auszubildende und Studenten, lösen sollen. Deshalb muss der hier aufgezeigte Weg nicht der Optimalfall sein.