Weil die SD-Karte auch nicht ewig lebt, hier eine Anleitung, wie man Images von SD-Karten unter Ubuntu erstellt und klont ohne dazu irgendwelche Software von Drittanbietern zu verwenden. Das geht nämlich auch hervorragend mit Bordmitteln. Dazu stelle ich drei Methoden vor:
- Die manuelle Methode mit dd über ein Image:
Hier wird ein Image als BackUp erzeugt, das man dann auf eine neue SD-Karte schreiben kann. - Eine einfache Methode mit einem Kartenleser, bei der man durekt von Karte zu Karte kopiert.
- Die Reperaturmethode, wenn die SD-Karte defekte Sektoren hat und man die Daten retten möchte. Sie funktioniert in der Regel auch bei schwierigen Fällen, in denen sich SD-Karten mit den vorigen beiden Methoden nicht klonen lassen.
Allerdings gilt es einige Punkte zu beachten:
! Beim Klonen müssen die Sektorengrößen gleich sein. Bei den meisten kleinen SD-Karten ist die Sektorengröße 512 kb , was man mit sudo fdsik -l im Terminal überprüfen sollte.
! SD-Karten lassen sich nicht so einfach von größeren Karten auf kleinere Karten kopieren. Dazu muss man mit gparted Partitionen anpassen und auch partitionsweise kopieren.
! Auch angebllich gleich große SD Karten können Abweichungen in der Größe haben. Auch das lässt sich mit sudo fdsik -l festetllen. Die Zielkarte muss gleich viele oder mehr Sektoren haben.
! Bei Problemen sollte man einen anderen Kartenlesen, einen Kartenleser ohne USB-Kabel oder einen internen Kartenleser verwenden.
Die manuelle Methode mit dd
Zuerst stellt man die Device-ID der SD-Karte im Kartenleser mit lsblk fest. Jeder Datenträger hat eine Kennung mit drei Buchstaben (gewöhnlich sdx) und die Partitionen werden dahinter mit einer Ziffer angegeben.
:~$ lsblk
Die Ausgabe zeigt alle Datenträger mit ihren Partitionen, die am Gerät angeschlossen sind.
Die SD-Karte erkennt man an der Größe und in diesem Fall am dritten Buchstaben in sdc, da sie nach der Festplatte sda gemountet wurde. Je nachdem, wie man die SD-Karte verbindet, kann sie auch z.B. als mmcblk0 angezeigt werden.
Erstellen der img-Datei
Das Erstellen des Images des Datenträgers im home-Verzeichnis des aktuellen Benutzers erfolgt mit
:~$ sudo dd if=/dev/sdc of=~/raspberry.img
Dabei gibt es aber keine Fortschrittsanzeige, so dass man geduldig abwarten muss, bis der Befehl abgearbeitet wurde.
Sobald das Image komplett auf die Festplatte geschrieben wurde, wirft man die SD-Karte aus und steckt eine leere SD-Karte gleicher Größe an. Ist die neue SD-Karte größer, dann hilft gparted nach dem Kopieren weiter. Mit lsblk wird wieder die Device-ID ermittelt.
Wie man hier sieht, muss die Ziel-SD-Karte nicht zwingend die selbe Device-ID bekommen.
Rücksichern der img-Datei
Die Ziel-SD-Karte muss zwingend eine Partitionstabelle msdos enthalten, die man mit gparted erstellen kann, denn ansonsten wird sie vom System nicht gefunden.
Das Image wird nun auf die Karte zurück geschrieben, was je nach USB-Geschwindigkeit und Größe des Images ziemlich lange dauern kann. Bei einer 16 GB-Karte kann man da schon mal mit dem Hund raus gehen.
Tipp: Ab Ubuntu 16.04 und der Version 8.24 der core-utils kann man für dd den Fortschritt anzeigen lassen, indem man an den dd-Befehl hinten status=progress anhängt. Die Version der core-utils kann man mit dd –version feststellen.
:~$ sudo dd if=~/raspberry.img of=/dev/sdb status=progress
Um sicher zu stellen, dass auch gepufferte Daten auf die Karte geschrieben werden, verwendet man
:~$ sync
Komfortabel kopieren
Mit einem Kartenleser, der Zugriff auf zwei SD-Karten erlaubt, ist das Kopieren von SD-Karten am komfortabelsten. Ich verwende dazu den Hama Multi-Kartenleser 8 in 1 (u.a. microSD/SDHC, SD/SDHC, MMC, USB 2.0), den man bei Amazon für knapp 5 Euro bekommt.
Die Ziel-SD-Karte kommt mit einem Adapter in den oberen Schacht und ihre Bezeichnung wird wieder mit lsblk festgestellt. Nehmen wir an, ihre Bezeichnung ist sdc. Wie oben schon angemerkt, muss die SD-Karte eine Partitionstabelle besitzen, sonst schlägt dd mit der Meldung „Kein Medium gefunden“ fehlt. Die zu kopierende SD-Karte kommt in den unteren Schacht (ich nenne sie hier sdb) und jetzt wird kopiert mit
:~$ sudo dd bs=512 if=/dev/sdb of=/dev/sdc
Vorsicht, denn dd überschreibt gnadenlos alles! Man muss sich sicher sein, was die Quelle (if=) und was das Ziel (of=) ist!
Danach noch die evtl. gepufferten Daten schreiben mit
:~$ sync
Hartnäckige Fälle
Funktionieren die beiden oben genannten Methoden nicht, gibt es unter Ubuntu das Paket gddrescue. Dazu installiert man mit
:~$ sudo apt update :~$ sudo apt install gddrescue ddrescueview
Das Kopieren von einer SD-Karte auf eine andere erfolgt mit
:~$ sudo ddrescue -f -n /dev/sdb /dev/sdc logfile1
Auch hier ist wieder Vorsicht bei den Laufwerksbezeichnugen geboten.
Sollte die SD-Karte beschädigt sein, kann man folgendes versuchen:
:~$ sudo ddrescue -d -f -r3 /dev/sde /dev/sdx logfile2
Hier versucht ddrescue bei Lesefehlern dreimal (r=3) defekte Sektoren zu lesen. Mit dem Parameter -d wird der Cache des Kernels umgangen, was nicht auf allen System funktioniert. ddrescue kann auch Images erzeugen, indem man als Ziel eine Datei angibt:
:~$ sudo ddrescue -f -r3 /dev/sde /home/user/image.img logfile3
Dieses Image kann man wie bei der ersten Methode mit dd auf eine neue Karte schreiben.
Mit dem Tool ddrescueview, lässt sich das Logfile grafisch darstellen.
:~$ ddrescueview logfile1
Falls der Beitrag weitergeholfen hat, wäre eine Rückmeldung in den Kommentaren oder über das Kontaktformular nett. Danke!
Vielen Dank für den Artikel! Ich konnte mit ddrescue eine SD Karte, die anfing kaputt zu gehen noch klonen und der Klon war wieder voll einsatzfähig (unter altem Ubuntu 12)! Hat mir eine Menge Zeit und Ärger gespart.
Hallo, ich bin neu bei Linux, habe mir auf einen Laptop LinuxMint geladen.Möchte mit dem Befehl dd eine MiniSD Karte klonen, Betriebssyszem vom Holzvergaser.
Bis hierhin ist alles soweit klar:~$ sudo dd if=/dev/sdc of=~/raspberry.img
Meine Frage muss ich bei meinem Klone auch raspberry.img eingeben?
Hallo Sandra,
Der Befehl schreibt den Inhalt von sdc in eine Datei mit Namen raspberry.img. Diesen Dateinamen kannst Du frei wählen und die Datei wird in Dein Home-Verzeichnis geschrieben.
Dabei ist „if“ (InFile) die Quelle und „of“ (OutFile) ist das Ziel.
LG!
Hallo Thomas, vielen lieben Dank, okay ich hab die Sicherung von meinem Holzvergaserofen jetzt auf der Festplatte.
Um das jetzt auf eine neue Karte zu bekommen:
Frage: Die Ziel-SD-Karte muss zwingend eine Partitionstabelle msdos enthalten, die man mit gparted erstellen kann, denn ansonsten wird sie vom System nicht gefunden.
Könntest Du mir bitte auch noch das erklären, mit dem gparted?
Dankeschön
Öffne ein Termin (STRG + ALT + T) und gib dort sudo gparted ein. Rechts oben wählst Du in gparted das Laufwerk aus (Vorsicht! Besser mit lsusb in einem weiteren Terminal prüfen, das es auch garantiert das richtige Laufwerk ist!). Dann im Menü evtl. vorhandene Partitionen löschen, dann die Partitionstabelle erstellen auswählen, das Format (hier msdos) wählen und dann eine neue Partition mit Neu erstellen. Jede Aktion kannst Du gleich mit STRG + Eingabetaste ausführen.