Raspbian Filesystem retten

webtaz

Lt. Junior Grade
Registriert
März 2010
Beiträge
276
Hallo zusammen,

mein Anliegen könnte auch sowohl unter Datenrettung als auch Einplatinencomputer fallen, aber da mein direktes anliegen eher ein Linux-spezifisches ist möchte ich es hier anbringen.

Vor einigen Nächten hat mein RaspberryPi3 den Dienst als DNS-Cache versagt, und ich habe ihn neugestartet (per SSH), dabei hat er sich leider aufgehängt so dass ich gezwungen war ihn per abziehen des Netzsteckers zu resetten.

Dabei hat sich wohl das Ext-Dateisystem verabschiedet.
Mein Ziel ist nun die entweder die gesamte Partition zu retten, oder aber zumindest die config Dateien für dnsmasq und openVPN zu sichern, evtl auch eine Liste der installierten Pakete zu bekommen, so dass ich möglichst einfach eine Neuinstallation auf den alten Stand bekomme. (Dass ich in Zukunft BackUps mache ist klar :( )


Was ich bisher gemacht habe:
Auf dem Raspberry wurde per Noobs Raspbian, LibreElec und OSMC installiert, wobei Raspbian das Wichtige ist.

Ich habe unter parted Magic (habe nur Windows Rechner) per "ddrescue" ein Image der gesamten microSD Karte gezogen, und mit "kpartx" die versch. Partitionen ((1,2,5,6,7,8,9,10,11,12) als Loop-Devices eingebunden unter "/dev/mappers".

Einhängen (mounten) konnte ich die zuerst nur die FAT16/FAT32 Partitionen ( 1,6,8,11), das sind aber wohl die Bootpartitionen, helfen mir nicht großartig weiter.

Mit Schreibrechten konnte ich weitere, diesmal EXT4 Partitionen mounten (5,9,10,12). Ich habe diese so zugeordnet: 5 Noobs? (im Ordner "os" gibts Ordner für LibreElec und OSMC), 9 OpenElec, 10 Shared Partition, 12 OSMC.

Nachdem Partition 2 eine Extended Part. ist, sollte Raspbian auf Partition 7 liegen.

Beim Versuch Part. 7 zu mounten erhalte ich folgende Fehlermeldung:
Code:
mount: wrong fs type, bad option, bad superblock on dev/loopX 
missing copepage or helper program, or other error

In some cases... syslog, try dmesg | tail or so.
"dmesg | tail" liefert:
Code:
[,] UDF-fs: error (device loop9): udf read_tagged: read failed. block=256 location=256 (ebenfalls bei 512)
[,]EXT4-fs (loop9) unable to read superblock

Und an dieser Stelle weiß ich nicht weiter.

Ich habe das Image auf einem USB Stick liegen, also werde ich versuchen ab jetzt in einem VM-Ubuntu weiterzumachen, da ich so besser Fehlermeldungen / Logs kopieren kann.
 
Okay. Das werd ich mal versuchen.

Was für Dateien / Ordner sollte ich denn sichern, sofern möglich?
Also offensichtlich alle die was mit dnsmasq / openvpn zu tun haben, aber wie kann ich z.B. eine liste installierter Pakete finden?

Also, schon nach dem ersten "neuen" Befehl bekomme ich eine andere Ausgabe:
sudo fsck.ext4 -v /dev/xxx liefert:
Code:
root@osboxes:/media/sf_VM-Share# fsck.ext4 -v /dev/mapper/loop0p7
e2fsck 1.43.3 (04-Sep-2016)
Superblock has an invalid journal (inode 8).
Nachdem ich ja ne Kopie vom Image habe, hab ich einfach mal überall auch bei den folgenden Abfragen "Ja" probiert. Es folgt.... viel. Ein Auszug:
Code:
....
Illegal block number passed to ext2fs_test_block_bitmap #4294967295 for metadata block map
Illegal block number passed to ext2fs_test_block_bitmap #4294967295 for metadata block map
...
Illegal block #0 (536870912) in inode 125274.  CLEARED.
Illegal block #3 (16793604) in inode 125274.  CLEARED.

Es endet mit:
Code:
 Inode 126612 is in use, but has dtime set.  Fix? yes
Inode 126613 is in use, but has dtime set.  Fix? yes
e2fsck: aborted
root: ***** FILE SYSTEM WAS MODIFIED *****
Dabei wurde wohl viel geändert, ich spiele also wieder das Original Image ein und versuche den fsck Schritt zu übergehen.
mit sudo e2fsck -b block_number /dev/mapper/loop0p7
liefert jeder BackUp block ein
Code:
 Superblock has an invalid journal (inode 8).
Also bestätige ich mal mit y.
Ähnliche, aber kürzere Ausgabe als bei dem fsck.ext4 oben:

Code:
root contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Root inode is not a directory.  Clear? yes
Inode 126217 has INDEX_FL flag set but is not a directory.
Clear HTree index? yes
Inode 126217, i_size is 565217696153600, should be 0.  Fix? yes
Inode 126217, i_blocks is 64, should be 0.  Fix? yes
Inode 125651 block 16 conflicts with critical metadata, skipping block checks.
...
Inode 125651 block 884752 conflicts with critical metadata, skipping block checks.
Inode 125424 is a zero-length directory.  Clear? yes
...
Inode 125821 block 64 conflicts with critical metadata, skipping block checks.
Inode 125627 block 1280 conflicts with critical metadata, skipping block checks.
Inode 125627 block 4096 conflicts with critical metadata, skipping block checks.
Inode 125217 block 2048 conflicts with critical metadata, skipping block checks.
Inode 126202, i_size is 562949961809920, should be 0.  Fix? yes
Inode 126218 has a bad extended attribute block 10272.  Clear? yes
...
Illegal block number passed to ext2fs_test_block_bitmap #4294967295 for metadata block map
Illegal block #853004 (1868985198) in inode 126236.  CLEARED.
Too many illegal blocks in inode 126236.
Clear inode? yes
...
Inode 126199 has a bad extended attribute block 32768.  Clear? yes
Inode 126199, i_size is 297237575474642952, should be 0.  Fix? yes
e2fsck: aborted
root: ***** FILE SYSTEM WAS MODIFIED *****

Immerhin, beim Versuch das loop-Device zu mounten bekomme ich nun eine andere Fehlermeldung.
Den "Reboot" habe ich mit einem "kpartx -d" und neumappen ersetzt.
Code:
osboxes@osboxes:/dev/mapper$ sudo mount /dev/mapper/loop0p7 /mnt/7/ -o loop
mount: mount /dev/loop1 on /mnt/7 failed: Structure needs cleaning
 
Zuletzt bearbeitet:
Wenn du es tatsächlich im Ubuntu mounten kannst, kannst du anschließend per chroot /dein/mount/point in das System wechseln und per
Code:
dpkg-query -l
die installierten Pakete ausgeben lassen. Das sind dann aber auch alle Pakete, einschließlich der Systempakete und Abhängigkeiten. Vielleicht ist es sinnvoller, nur die Pakete, die du auch tatsächlich installiert hast, anzuzeigen. Näheres dazu hier.

Generell ist immer /etc eine gute Idee, evtl. noch /var, /root und die user homes. Es kommt halt immer drauf an, was du damit so gemacht hast. Wenn openvpn und dns-cache aber alles ist, was lief, sollte das reichen.
 
Neuer Post weil anderer Weg: Testdisk. Denn bisher klappt das mounten der "wichtigen" Partition nicht.
Zuerst:
sollte ich mich Testdisk direkt das Image durchsuchen ? -> fragt mich nach Paritionstabellentyp -> PC Intel detected -> Analyse / Search for Lost paritions.
Code:
Current partition structure:
     Partition                  Start        End    Size in sectors

  1 P FAT16 LBA                0 130  3   142  62 21    2276965 [RECOVERY]

 Bad relative sector.
  2 E extended               142  62 22  1897 243 10   28205467

 Bad relative sector.
 No partition is bootable
  5 L Linux                  142  68 55   146  89  5      65534 [SETTINGS]

 Bad relative sector.
    X extended               146  89  6  1897 243 10   28139522

 Bad relative sector.
 Warning: number of heads/cylinder mismatches 4 (FAT) != 255 (HD)
 Warning: number of sectors per track mismatches 16 (FAT) != 63 (HD)
  6 L FAT32 LBA              146  89  8   154  97  7     129024 [boot]

 Bad relative sector.
>   X extended               154  97  8  1897 243 10   28010496                      

 Bad relative sector.
 Logical partition must be in its own extended partition
    X extended               146  89  6  1897 243 10   28139522
    X extended               154  97  8  1897 243 10   28010496
  7 L Linux                  154 129 40   881  39 52   11673598 [root]

 Bad relative sector.
    X extended               881  39 53  1897 243 10   16334850

 Bad relative sector.
 Logical partition must be in its own extended partition
    X extended               146  89  6  1897 243 10   28139522
    X extended               881  39 53  1897 243 10   16334850
 Logical partition must be in its own extended partition
    X extended               154  97  8  1897 243 10   28010496
    X extended               881  39 53  1897 243 10   16334850
 Warning: number of heads/cylinder mismatches 4 (FAT) != 255 (HD)
 Warning: number of sectors per track mismatches 16 (FAT) != 63 (HD)
  8 L FAT32 LBA              881  39 55   946 108 56    1048574 [NO NAME]

    Next
*=Primary bootable  P=Primary  L=Logical  E=Extended  D=Deleted
Wähle ich jetzt "Quick search" und Dann die Linux Partition mit label [root] erhalte ich:
"No Partition found or selected for recovery"
Auswahl "Deeper" search schein nochmal das ganze Image durchzulaufen und analysiert Abschnitte Zylinderweise oder so.



Macht es mehr Sinn, das Image wieder als Loop-Devices einzubinden um dann mit Testdisk das device zu durchsuchen?
--> Dabei kann er keine Partitionstabelle finden. Klar, ist ja auch nur eine Partition. Ich wähle trotzdem Intel, damit er weiß wie die Partition aussehen könnte. Er findet erstmal nichts.
Analyse liefert dann zich Partitionen "cant be recovered".


Habe jetzt mal Photorec gestartet auf das loopdevice der Partition. Aber so wie ich das nachgelesen habe, bekomme ich da unbenannte dateien raus, oder?
--> Ja. Ich lasse mal eine Dateiinhaltssuche laufen nach openvpn,dnsmasq usw.
 
Zuletzt bearbeitet:
Zurück
Oben