Save this card!
Bei mir ist die SD-Karte in einem Raspi ausgefallen. Kann passieren, ist kein Beinbruch; Also neue SD-Karte her, Backup drauf... verdammt, da war doch was?
Ende Remastered
Wie komme ich auf die Idee, dass die SD-Karte defekt ist? Naja, der bislang zuverlässigste Raspi war plötzlich offline und "Strom weg/Strom dran" hat daran auch nichts verbessert. Da das Anschließen eines Bildschirms, um den Start-Vorgang zu beobachten, aufwändiger ist, als das Prüfen der SD-Karte am Desktop, war dies der nächste Schritt. Ergebnis: Automount funktionierte zwar, aber die "root"-Partition ließ sich nicht auslesen. Also schauen, wir mal, was dmesg dazu sagt:
# dmesg
...
[16606.985014] mmc0: new ultra high speed SDR104 SDHC card at address 0001
[16606.997285] mmcblk0: mmc0:0001 EB1QT 29.8 GiB (ro)
[16606.999594] mmcblk0: p1 p2
[16607.499686] EXT4-fs (mmcblk0p2): INFO: recovery required on readonly filesystem
[16607.499689] EXT4-fs (mmcblk0p2): write access unavailable, cannot proceed (try mounting with noload)
[16702.627184] EXT4-fs (mmcblk0p2): INFO: recovery required on readonly filesystem
[16702.627187] EXT4-fs (mmcblk0p2): write access unavailable, cannot proceed (try mounting with noload)
[16708.890126] EXT4-fs (mmcblk0p2): INFO: recovery required on readonly filesystem
[16708.890132] EXT4-fs (mmcblk0p2): write access unavailable, cannot proceed (try mounting with noload)
Eindeutig wurde die SD-Karte im Kartenleser mit zwei Partitionen erkannt, aber hier schon ein Fehler auf der Partition "p2" festgestellt - genau dort befindet sich die "root" Partition mit allem was wichtig ist.
copy safe
Über safecopy bin ich vor einiger Zeit in den Kali-Tools gestolpert und wollte das schon länger mal ausprobieren.
Installiert ist safecopy unter Ubuntu recht einfach mit:
So richtig schwierig ist die Handhabung von savecopy nicht, die entsprechende Partition (hier: mmcblk0p2) kann recht einfach in eine Datei (hier: sdcard.img) weggeschrieben werden. Der Pfad sollte vollständig angegeben werden, denn safecopy erfordert root-Rechte:
# safecopy /dev/mmcblk0p2 /home/user/sdcard.img
Das geht dann eine Weile, je nach Größe der SD-Karte. Danach kann man das geschriebene Abbild mounten (hier mittels losetup) und hoffen, dass die Daten, die man zu retten gehofft hatte, nicht auf den kaputten Bereichen lagen:
# losetup /dev/loop50 /home/user/sdcard.img
# fdisk -l /dev/loop50
# cp -r /media/user/rootfs/home/pi/docker_vol/* /home/user/raspi48-sdcard/docker_vol_rescue/
# chown -R user:user /home/user/raspi48-sdcard/
# losetup -d /dev/loop50
Fazit
"Daten retten" macht wirklich nur Spaß, wenn es um nix geht. Im besten Fall bekommt man zurück, was benötigt wird. Wenn es dumm läuft fehlt einiges an Konfig-Dateien und Daten, um ein Ersatz-System vernünftig hochzuziehen. Ein Backup ist in jedem Fall besser. Jammern werde ich nicht – "No backup, no merci"