Problem beim Anzeigen des Superblocks im ext3-Dateisystem

2312
user29218

Ich habe versucht, den Superblock mit dem Befehl "dd" im ext3-Dateisystem anzuzeigen.

dd if=/dev/sda3 bs=4096 skip=1 count=1 of=superblock 

Das Ergebnis in der Superblock-Datei ist jedoch nicht korrekt (ich vergleiche den Wert der Inodes-Zählung, die ich von dumpe2fs erhielt). Die Gerätedatei / dev / sda3 wird am Bootblock gestartet und dann der Superblock der Gruppe0? Und eine andere Frage ist der Bootblock und die Größe des Superblocks sind beide BLOCKSIZE (hier ist 4096)? Das Plattenformat von ext2 / ext3 (ich denke, dass sie gleich sind) wird unten gezeigt:

alt text

1

2 Antworten auf die Frage

2
Diego Torres Milano

Der Startblock des ext2 / ext3-Dateisystems ist 1024 Byte lang, nicht 4096. Verwendung

 $ sudo tune2fs -l /dev/sda3 

um Dateisystemparameter als Blockgröße anzuzeigen, und

 $ sudo dumpe2fs -hx /dev/sda3 

um den Superblock zu bekommen. Ebenfalls

 $ sudo dd if=/dev/sda3 bs=1k skip=1 count=4 

wird den Superblock bekommen.

0
user29218

Danke für die Antwort von dtmilano. Ich hatte es schon probiert, bevor ich die Frage stellte. Aber ich denke, das Ergebnis ist falsch. Das Problem ist, ich habe vergessen, den kleinen Endian zu konvertieren !!

Im Folgenden schreibe ich meine Schritte zur Referenz auf:

$ sudo dd wenn = / dev / sda3 bs = 1k überspringen = 1 zählen = 4

Die erste Zeile im Superblock lautet: 0000000: 0000 3a04 fdc4 3904 a616 3600 45f6 fc00 ..: ... 9 ... 6.E ...

Also gemäß der struct ext3_super_block-Deklaration in ext3_fs.h: / 00 / __le32 s_inodes_count; / * Inodes count / __le32 s_blocks_count; / Anzahl der Blöcke * /

Die Anzahl der Inodes ist 043a0000 = 70909952 (0000 3a04 sollte in 043a0000 konvertiert werden). Die Anzahl der Blöcke ist 0439c4fd = 70894845

Es ist das gleiche wie die Ausgabe von dumpe2fs: Inode count: 70909952 Block count: 70894845