Durchsuchen Sie .img ohne zu mounten

13

Gibt es eine Möglichkeit, eine IMG-Datei zu durchsuchen, ohne sie anzuhängen? Ich habe eine IMG-Datei, die ich aus einem Clonezilla-Partitions-Snapshot generiert habe. Ich habe irgendwie Probleme beim Mounten der Datei mit dem Befehl mount -o loop sda5.img /mnt/.

dmesg | tail zeigt mir folgenden fehler:

[1325.395286] EXT4-fs (loop0): Ungültige Geometrie: Die Blockanzahl 11221248 überschreitet die Größe des Geräts (11218432 Blöcke).

Hat jemand eine Idee, wie man ohne Mounten surft oder was diesen Fehler verursachen könnte?

Ahatius
quelle
Das sieht schlimm aus .
Uri Herrera
related: unix.stackexchange.com/questions/32008/…
Ciro Santilli am

Antworten:

18

Wenn es sich um ein Image einer gesamten Festplatte handelt oder wie in Ihrem Fall um ein Image einer erweiterten Partition, müssen Sie das Partitionslayout und die Offsets jeder Partition in der Datei kennen, um sie bereitstellen zu können.

Dazu benötigen Sie das partedTool, das Sie mit dem folgenden Befehl installieren können:

apt-get install parted

partedStarten Sie es nach der Installation mit dem Pfad zu Ihrer Image-Datei. Eine partedEingabeaufforderung wird angezeigt:

$ parted /path/to/image/file/sda5.img
GNU Parted 2.3
.....
(parted)

Geben Sie in dieser Eingabeaufforderung (mit dem Präfix (parted)) die folgenden Befehle ein:

(parted) unit B
(parted) print
.....
Number  Start          End            Size           Type     File system  Flags
 1      1048576B       1573912575B    1572864000B    primary  ntfs         boot
 2      1573912576B    156774694911B  155200782336B  primary  ntfs
 3      156774694912B  171454758911B  14680064000B   primary  ntfs
 4      171454758912B  180044693503B  8589934592B    primary

(parted) q

Die Tabelle in der Ausgabe zeigt Ihnen die Offsets jeder Partition in der Datei und den Dateisystemtyp in jeder Partition. Um beispielsweise die erste Partition in der obigen Beispielausgabe bereitzustellen, müssen Sie den folgenden Befehl eingeben:

sudo mount -o loop,ro,offset=1048576 /path/to/image/file/sda5.img /mnt/partition

Stellen Sie sicher, dass dies /mnt/partitionzuerst vorhanden ist.

Bieger
quelle
1
Ok, ich denke, das Problem könnte sein, dass ich beim Ausführen des Druckbefehls eine Fehlermeldung erhalte, weil dort eine unbekannte Partitionstabelle steht. Schätze das Bild ist kaputt?
Ahatius
Sieht sehr danach aus, als wäre es kaputt. Aber versuchen Sie zuerst, Ihren Fehler bei Google zu suchen.
Bender
Can't have a partition outside the disk!Fehler mit wie mit gparted getrennt ...
Philippe Gachoud
8

Ich habe das gleiche Problem mit einem ext4-Image, das aus einem Clonezilla-Snapshot generiert wurde.

Was für mich tatsächlich funktionierte, war die Erweiterung der Datei auf die Größe, die die Partitionstabelle mit Hilfe von Truncate meldet. Der in meinem Fall gemeldete Fehler dmesg war:

[15687.653868] EXT4-fs (loop0): bad geometry: block count 18482176 exceeds size
  of device (18352672 blocks)

Also habe ich die Länge der Datei angepasst mit:

truncate -o -s 18482176 /path/to/partition.img

(^ Beachten Sie, dass dies die erste und größere der beiden Zahlen im Protokoll ist.)

Danach freute sich Mount und ich konnte auf meine Daten zugreifen.

Anthony Lenton
quelle
Dies funktionierte für mich, obwohl die Größe falsch war, ich denke, die Blockgrößen waren unterschiedlich, so dass ich die Größe in Bytes angeben musste. Seien Sie vorsichtig, da Sie Daten verlieren können, wenn Sie Ihre Bilddatei auf eine Größe kürzen, die kürzer als die Originalgröße ist.
Golimar
1
Woher weißt du die richtige Größe? Bitte fügen Sie die Befehle hier hinzu.
Hunsu
@ Hunsu Die Größe wird in der Fehlermeldung (dmesg) angegeben.
Melebius