GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie finde ich den Offset eines Ext4-Dateisystems?

Ich habe eine fehlerhafte Festplatte, die die ersten Sektoren der Festplatte nicht schreiben oder lesen kann. Es gibt nur E/A-Fehler und das ist alles, was es gibt. Es gibt andere Bereiche auf der Festplatte, die (meistens) in Ordnung zu sein scheinen.
Ich versuche, eine Partition (ext4) zu mounten und zu sehen, ob ich auf einige Dateien zugreifen kann, die ich wiederherstellen möchte. Da der mount Befehl unterstützt einen offset Option sollte ich in der Lage sein, das Dateisystem zu mounten, obwohl die Partitionstabelle nicht lesbar und nicht beschreibbar ist. Das Problem ist, wie man den Offset findet. Keines der ext4-Tools scheint diese spezielle Funktion zu haben.

Akzeptierte Antwort:

Es gibt keinen Standard-Offset per se, da Sie die Partition natürlich an beliebiger Stelle beginnen können. Aber nehmen wir für einen Moment an, dass Sie nach der ersten Partition suchen und diese mehr oder weniger mit Standardeinstellungen erstellt wurde. Es gibt dann zwei Orte, an denen Sie es finden können, vorausgesetzt, Sie verwenden eine herkömmliche DOS-Partitionstabelle:

  1. Beginnend bei (512 Byte) Sektor 63. Dies war lange Zeit Tradition und funktionierte, bis jemand 4K-Festplatten auf den Markt brachte…
  2. Beginnend bei (512 Byte) Sektor 2048. Dies ist die neue Tradition, 4K-Festplatten aufzunehmen.
  3. Eine Bonusoption! Starten bei Sektor 56. Das passiert, wenn jemand die 63-Start-Partition verschiebt, um sie an einem 4K-Sektor auszurichten.

Um fortzufahren, sollten Sie sich jetzt Ihr bevorzugtes Hex-Dump-Tool holen und ein wenig über das ext4-Festplattenlayout lernen. Insbesondere beginnt es mit 1024 Byte Auffüllung, die ext4 ignoriert. Als nächstes kommt der Superblock. Sie können den Superblock erkennen, indem Sie nach der magischen Zahl 0xEF53 bei Offset 0x38 (vom Start des Superblocks oder 0x438 vom Beginn der Partition oder 1080 in Dezimalzahl) suchen. Die magische Zahl ist Little-Endian. Es wird also tatsächlich als 0x53EF auf der Festplatte gespeichert.

So sieht das mit xxd -a aus :

0000000: 0000 0000 0000 0000 0000 0000 0000 0000 ................
*
0000400: 0040 5d00 0084 7401 33a0 1200 33db a600 [email protected]]...t.3...3...
0000410: 4963 5300 0000 0000 0200 0000 0200 0000 IcS.............
0000420: 0080 0000 0080 0000 0020 0000 6637 0952 ......... ..f7.R
0000430: 6637 0952 0200 1600 53ef 0100 0100 0000 f7.R....S.......
0000440: 9938 f851 004e ed00 0000 0000 0100 0000 .8.Q.N..........

Beachten Sie, dass Sie beim Angeben des Offsets zum Mounten (oder Loosetup) den Offset dort angeben müssen, wo das Padding beginnt – nicht beim Superblock.

Verwandt:Sie können keine YouTube-Benachrichtigungen zu Kommentaren finden?

Nun, wenn es nicht die erste Partition ist oder sich anderweitig nicht an einer der zwei (drei) erwarteten Stellen befindet, müssen Sie im Grunde nach der magischen Zahl 0xEF53 suchen. Das ist testdisk (empfohlen in einem Kommentar) tut es für Sie.


Linux
  1. So erstellen Sie ein Dateisystem auf einer Linux-Partition oder einem logischen Volume

  2. Lösung:Auf Ext3- oder Ext4-Partition kann nicht geschrieben werden

  3. So finden Sie die Mount-Optionen des aktuell gemounteten Dateisystems

  4. Wie finde ich die UUID eines Dateisystems

  5. Wie mounte ich ein Dateisystem in einer schreibgeschützten Umgebung?

So finden Sie die installierte Version von Redhat Linux

So ändern Sie die UUID der Partition im Linux-Dateisystem

So finden Sie den gemounteten Dateisystemtyp in Linux

Wie verschiebt man die Ext4-Partition vor die Boot-Partition?

Wie ändere ich das Partitionsschema auf Ihrem Linux-Server?

Android - Wie finde ich den Pfadnamen der Swap-Partition auf der SD-Karte?