SD-Karte nach Stromausfall nicht mehr Bootbar

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo Zusammen,

    ich hatte den Rasp.Pi mit Raspianweezy betrieben.
    Nach einem Stromausfall bootet die SD-Karte leider nicht mehr.

    Lege ich diese in einen WindowsPC, wird mir sofort vorgeschlagen die Karte zu formatieren. Ich kann also nicht mehr direkt auf die Karte zugreifen.

    Komme ich irgendwie noch an die Daten ran bzw. kann die diese vlt. wieder so herstellen, das sie bootbar ist ?

    Vielen Dank schonmal für eure Hilfe.

  • Hi,

    mir wäre wichtig die Hauptpartition zumindest teilweise wieder lesbar zu machen, da ich vorallem die ganzen Konfigurationsdatein speichern möchte.

    Gibt es eine Möglichkeit das Dateisystem wiederherzustellen ?

    Unter Linux wird die SD-Karte gar nicht gemountet.

    Einmal editiert, zuletzt von BigT (13. Januar 2013 um 21:05)

  • Boote von einer Linux-LiveCD, versuche die Partition mit dem Befehl 'testdisk' zu reparieren und repariere das Filesystem anschliessend mit 'fsck.ext4 -f /dev/...'
    Falls das nicht klappen sollte, dann kannst du immer noch mit dem Befehl 'photorec' (lasse dich nicht von dem Namen täuschen) die Daten retten.
    Wenn du ein Linux System auf dem Rechner hast, dann kannst du auch einfach das Paket 'testdisk' installieren, es enthält beide oben genannten Befehle.

    P.S. Mit testdisk habe ich gestern erst die 2. Partition auf meiner SD-Karte retten können.

    Gruß
    Stefan

  • Ich habe es ein wenig getestet.
    Was meintest du damit, "mit Testdisk" zu reparieren" ?

    Wenn ich mit Testdisk nach den Partitionen suche, findet er leider keine auf der SD-Karte. Soll ich dann eine anlegen ?

    Mit dem Befehl

    Code
    fsck.ext4 -f /dev/sdb


    bekomme ich eine Meldung: "Superblock ist unlesbar bzw. beschreibt kein gültiges ext2 Dateisystem....."

    Unter Photorec wurden leider auch keine Daten kopiert. Es kommt immer die Ausgabe das 0 Dateien gefunden wurden.

    Einmal editiert, zuletzt von BigT (15. Januar 2013 um 10:16)

  • Zitat von BigT pid="4132" dateline="1358241220"


    Ich habe es ein wenig getestet.
    Was meintest du damit, "mit Testdisk" zu reparieren" ?

    Wenn ich mit Testdisk nach den Partitionen suche, findet er leider keine auf der SD-Karte. Soll ich dann eine anlegen ?

    Bei mir hat testdisk beide Partitionen angezeigt. Ich habe dann die 2. Partition ausgewählt und dann reparieren lassen.

    Zitat von BigT pid="4132" dateline="1358241220"


    Mit dem Befehl

    Code
    fsck.ext4 -f /dev/sdb


    bekomme ich eine Meldung: "Superblock ist unlesbar bzw. beschreibt kein gültiges ext2 Dateisystem....."

    Mit "/dev/sdb" hast du die komplette sdcard ausgewählt und das kann so nicht funktionieren, weil du schon das zu prüfende Filesystem auswählen musst, z.B. so: 'fsck.ext4 -f /dev/sdb2'
    'fsck.ext4' hat bwi mir allerdings auch erst funktioniert, nachdem testdisk die Partitionstabelle wieder hergestellt hatte.

    Zitat von BigT pid="4132" dateline="1358241220"


    Unter Photorec wurden leider auch keine Daten kopiert. Es kommt immer die Ausgabe das 0 Dateien gefunden wurden.


    Sehr eigenartig, bist du sicher, daß du das richtige device ausgewählt hast?
    Was sagt denn 'fdisk -l /dev/sdb'?

    Gruß
    Stefan

  • Zitat von BigT pid="4132" dateline="1358241220"


    Unter Photorec wurden leider auch keine Daten kopiert. Es kommt immer die Ausgabe das 0 Dateien gefunden wurden.


    Sehr eigenartig, bist du sicher, daß du das richtige device ausgewählt hast?
    Was sagt denn 'fdisk -l /dev/sdb'?
    [/quote]

    Kann ich evtl. versuchen die SD-Karte zu formatieren und dann mit einem undelete-tool zu arbeiten ?
    Denn Partitionen werden leider nicht gefunden.

    Folgendes spuckt Testdisk noch aus:
    Partition sector doesn't have the endmark 0xAA55


    Achso, noch eine Frage. Welchen Partitionstyp muss ich denn bei Testdisk auswählen ?
    Ich habe immer Intel/PC Partition genommen, das andere erschien mir nicht logisch ;)

    Übrigens, vielen Dank für deine Hilfe!

    Einmal editiert, zuletzt von BigT (16. Januar 2013 um 09:55)

  • Zitat von BigT pid="4168" dateline="1358323489"

    Hmm, eigentlich sollte das so ungefähr aussehen (Beispiel 32GB):

    Code
    Disk /dev/sdd: 32 GB, 32292449280 bytes
    255 heads, 63 sectors/track, 3926 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
    
       Device Boot      Start         End      Blocks   Id  System 
    /dev/sdd1   *           1           8       64228    6  FAT16
    Warning: Partition 1 does not end on cylinder boundary.                   
    /dev/sdd2               8        3927    31479367   83  Linux
    Warning: Partition 2 does not end on cylinder boundary.
    Zitat von BigT pid="4168" dateline="1358323489"


    Kann ich evtl. versuchen die SD-Karte zu formatieren und dann mit einem undelete-tool zu arbeiten ?

    Nein, auf keinen Fall. Schreibzugriffe, jeder Art, solltest du am besten ganz vermeiden, wenn photorec, oder ein anderes undelete Tool noch eine Chance haben soll.

    Zitat von BigT pid="4168" dateline="1358323489"


    Denn Partitionen werden leider nicht gefunden.

    Als erstes musst du die Partitionstabelle irgendwie mit testdisk wieder herstellen. Falls du noch eine baugleiche sdcard mit ähnlicher Einrichtung besitzt, könntest du auch die Partitionstabelle von dort kopieren.

    Zitat von BigT pid="4168" dateline="1358323489"


    Achso, noch eine Frage. Welchen Partitionstyp muss ich denn bei Testdisk auswählen ?

    Ich habe immer Intel/PC Partition genommen, das andere erschien mir nicht logisch ;)

    Ja, Intel ist auch richtig.

    Zitat von BigT pid="4168" dateline="1358323489"


    Übrigens, vielen Dank für deine Hilfe!

    Kein Problem

    Gruß
    Stefan

  • Zitat von Skelli pid="4172" dateline="1358326844"


    Als erstes musst du die Partitionstabelle irgendwie mit testdisk wieder herstellen. Falls du noch eine baugleiche sdcard mit ähnlicher Einrichtung besitzt, könntest du auch die Partitionstabelle von dort kopieren.

    Wenn ich jetzt eine 2. 16 GB SD-Karte besorge, diese genau so formatiere wie die andere, könnte ich die Partitionstabelle kopieren ?

    Wie funktioniert das genau ?

    Über die Laufwerksverwaltung kann ich die SD-Karte nicht einhängen, da sie ja keine gültige Partitionstabelle besitzt.

    Code
    sudo mount /dev/sdb /media


    bringt da auch keinen Erfolg.

    Grüße

  • Zitat von BigT pid="4212" dateline="1358411255"

    Wenn ich jetzt eine 2. 16 GB SD-Karte besorge, diese genau so formatiere wie die andere, könnte ich die Partitionstabelle kopieren ?

    Ja, das sollte eigentlich funktionieren, wenn die sdcard nicht völlig kaputt ist und nicht mehr beschreibar ist.

    Zitat von BigT pid="4212" dateline="1358411255"


    Wie funktioniert das genau ?

    So sicherst du den MBR+Partitionstabelle von der heilen sdcard:

    Code
    dd if=/dev/sda of=mbr_sicherung bs=512 count=1

    und so ist der andere Weg:

    Code
    dd if=mbr_sicherung of=/dev/sda bs=512 count=1

    "/dev/sda" musst du natürlich anpassen (s. fdisk -l)

    Quelle:
    http://wiki.ubuntuusers.de/Shell/dd

    Zitat von BigT pid="4212" dateline="1358411255"


    Über die Laufwerksverwaltung kann ich die SD-Karte nicht einhängen, da sie ja keine gültige Partitionstabelle besitzt.

    Code
    sudo mount /dev/sdb /media


    bringt da auch keinen Erfolg.

    Das überrascht mich jetzt nicht.

    Viel Glück
    Stefan

    Nachtrag:

    Von meiner sdcard habe ich jetzt mit dd ein vollständiges Backup gemacht und das kann ich auch nur jedem empfehlen, weil die SD-Karten anscheinend ziemlich empfindlich sind.

    Backup:

    Code
    dd if=/dev/sdd | gzip > /mnt/backup/image-raspi.img.gz

    Restore:

    Code
    gunzip -c /mnt/backup/image-raspi.img.gz | dd of=/dev/sdd

    Einmal editiert, zuletzt von Skelli (17. Januar 2013 um 11:48)

  • Zitat von Skelli pid="4215" dateline="1358415367"
    Code
    dd if=/dev/sda of=mbr_sicherung bs=512 count=1

    So wie ich das jetzt gelesen habe, liest dieser Befehl die ersten 512 Byte ein, in dem sich meist der Bootsektor befindet.

    Heißt dass, ich kann auch eine 8 GB SD-Karte nutzen, Hauptsache die Partitionierung ist gleich ?

  • Zitat von BigT pid="4255" dateline="1358520760"
    Zitat von BigT pid="4255" dateline="1358520760"


    So wie ich das jetzt gelesen habe, liest dieser Befehl die ersten 512 Byte ein, in dem sich meist der Bootsektor befindet.

    Der MBR und die Partitionstabelle.

    Zitat von BigT pid="4255" dateline="1358520760"


    Heißt dass, ich kann auch eine 8 GB SD-Karte nutzen, Hauptsache die Partitionierung ist gleich ?

    Wenn du von deiner 16GB Karte nur 8GB partitioniert hattest, dann kannst du das machen, ansonsten stimmen die Werte von der 2. Partition nicht überein.
    Man könnte das aber evtl. trotzdem machen und dann anschliessend die Partitionstabelle mit testdisk versuchen zu reparieren.

    Gruß
    Stefan

  • Hi, ich habe es nun getestet. Folgendes kam dabei raus.

    #1 Das kopieren bringt folgende Meldung:

    Code
    sudo dd if=mbr_sicherung of=/dev/sdb bs=512 count=1
    1+0 Datensätze ein
    1+0 Datensätze aus
    512 Bytes (512 B) kopiert, 0,00198196 s, 258 kB/s

    #2 fdisk -l sagt:

    Code
    Disk /dev/sdb: 16.2 GB, 16219373568 bytes
    64 Köpfe, 32 Sektoren/Spur, 15468 Zylinder, zusammen 31678464 Sektoren
    Einheiten = Sektoren von 1 × 512 = 512 Bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Festplattenidentifikation: 0x00000000
    
    
    Festplatte /dev/sdb enthält keine gültige Partitionstabelle


    Gibt es noch eine Möglichkeit ?

  • Also ich habe nochmal mit

    Code
    dd if=/dev/sda of=mbr_sicherung bs=512 count=1

    &

    Code
    dd of=mbr_sicherung if=/dev/sdx bs=512 count=1


    versucht die Karte zu beschreiben. Dabei kommen keine Fehlermeldungen. sudo fdisk -l findet die Karte danach nicht mehr. Entferne ich sie und stecke sie neu ein, findet fdisk die Karte wieder, jedoch ohne gültige Partitionstabelle.

    Gibt es noch weitere Möglichkeiten ?

    Ergänzung:

    Code
    sudo fdisk -l

    zeigt bei der neuen SD-Karte folgendes:

    Device Boot Start End Blocks Id System
    /dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA)
    /dev/mmcblk0p2 122880 31504383 15690752 83 Linux

    Wieso ist die erste Partition Fat32 ? Und wieso beginnt diese erst bei 8192 ?


    Grüße

    Einmal editiert, zuletzt von BigT (26. Januar 2013 um 00:11)

  • Hallo,

    du könntest noch mal probieren, den MBR mit sfdisk von der heilen sdcard zu sichern und auf die kaputte sdcard zu kopieren.


    Zitat


    Partitionstabelle sichern

    • Eingabe: MBR-Partitionstabelle des Datenträgers /dev/sdX [3]
    • Ausgabe: Backup_sdX.MPT im eigenen Homeverzeichnis


    sudo sfdisk -d /dev/sdX >${HOME}/Backup_sdX.MPT
    Partitionstabelle zurückladen

    • Eingabe: Backup_sdX.MPT aus dem Verzeichnis /backup
    • Ausgabe: MBR-Partitionstabelle des Datenträgers /dev/sdX[3]

    sudo sfdisk /dev/sdX </backup/Backup_sdX.MPT


    Quelle: <http://wiki.ubuntuusers.de/fdisk>

    Nicht ganz dumm wäre es wohl auch, mit dd ein komplettes Backup von der kaputten sdcard zu machen und
    die Reparaturversuche dann immer mit einer Kopie dieser Image Datei zu machen. Statt /dev/sd<sonstwas> kannst
    du nämlich auch so eine Datei mit Pfad angeben.

    Ich habe bisher immer alles mit testdisk repariert bekommen und so langsam gehen mir jetzt leider die Ideen aus.
    Vielleicht solltest du das Problem nochmal in einem anderen Linux Forum schildern.

    Gruß
    Stefan

    Zitat von BigT pid=4621 dateline=1359154885


    Ergänzung:

    Code
    sudo fdisk -l


    zeigt bei der neuen SD-Karte folgendes:

    Device Boot Start End Blocks Id System
    /dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA)
    /dev/mmcblk0p2 122880 31504383 15690752 83 Linux

    Wieso ist die erste Partition Fat32 ? Und wieso beginnt diese erst bei 8192 ?

    Die erste Partition mit Fat32 benötigt das Bios des Raspberries um einen Kernel booten zu können.
    Man hat vermutlich Fat32 dafür genommen, weil mit diesem uralten Filesystem alle Betriebssysteme
    klar kommen und nicht weil es das beste ist.
    Warum mmcblk0p1 erst mit dem Block 8192 anfängt, kann ich dir jetzt leider auch nicht sagen.

    Gruß
    Stefan

    Einmal editiert, zuletzt von Skelli (5. Februar 2013 um 17:52)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!