Führen Sie den Befehl aus fdisk -l <img file>
. Wenn es sich bei den .img
Dateien um vollständige Datenträger handelt, beispielsweise um eine KVM-VM, handelt es sich in der Regel um einen virtuellen Datenträger.
Beispiel
Ich habe eine CentOS KVM VM, die wie folgt aussieht file
:
$ file centostest.img
centostest.img: x86 boot sector; partition 1: ID=0x83, active, starthead 1, startsector 63, 208782 sectors; partition 2: ID=0x8e, starthead 0, startsector 208845, 20755980 sectors, code offset 0x48
Laufen fdisk
damit:
$ sudo /sbin/fdisk -lu /kvm/centostest.img
last_lba(): I don't know how to handle files with mode 81ed
You must set cylinders.
You can do this from the extra functions menu.
Disk /kvm/centostest.img: 0 MB, 0 bytes
255 heads, 63 sectors/track, 0 cylinders, total 0 sectors
Units = sectors of 1 * 512 = 512 bytes
Device Boot Start End Blocks Id System
/kvm/centostest.img1 * 63 208844 104391 83 Linux
/kvm/centostest.img2 208845 20964824 10377990 8e Linux LVM
Partition 2 has different physical/logical endings:
phys=(1023, 254, 63) logical=(1304, 254, 63)
Wenn Sie eine dieser Partitionen mounten möchten, können Sie dies wie folgt tun:
fdisk (Zylinderleistung)
- Blockgröße von 512 Bytes und der Startblock ist 63.
- Der Versatz beträgt 512 * 63 = 32256.
fdisk (Sektorausgabe)
- Blockgröße von 512 Bytes und der Startblock ist 1.
- Der Versatz beträgt 512 * 1 = 512.
Der Befehl mount wäre also:
in Zylindern
$ mount -o loop,offset=32256 centostest.img /mnt/tmp
So hängen Sie die andere Partition ein (512 * 208845 = 106928640):
$ mount -o loop,offset=106928640 centostest.img /mnt/tmp
in Branchen
$ mount -o loop,offset=512 centostest.img /mnt/tmp
So hängen Sie die andere Partition ein (512 * 14 = 7168):
$ mount -o loop,offset=7168 centostest.img /mnt/tmp
HINWEIS
Dies funktioniert nur, wenn mount den Typ des Dateisystems in der "Partition" bestimmen kann, die Sie bereitstellen möchten. Möglicherweise müssen Sie einbeziehen -t auto
oder genau angeben, mount
dass dies -t ext4
beispielsweise der Fall ist .
Verweise
# mount -t auto -o ro,loop,offset=512 gmapsupp.img /mnt/iso/
\mount: you must specify the filesystem type
# fdisk -l gmapsupp.img Disk gmapsupp.img: 0 MB, 0 bytes 255 heads, 63 sectors/track, 0 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System gmapsupp.img1 1 9 65536 0 Empty Partition 1 has different physical/logical endings: phys=(1023, 15, 8) logical=(8, 40, 32) Partition 1 does not end on cylinder boundary.
-t auto
der Typ der Partition identifiziert werden kann. Sie müssen nur versuchen, andere zu sehen, was funktioniert.W95 FAT16 (LBA)
-t vfat
konnte meine 1. Partition nicht mounten.Dient
parted
zum Identifizieren von Versatzwerten.Jetzt haben Sie Versatzwerte und können diese zum Mounten von Dateisystemen verwenden.
quelle
Es sieht so aus, als ob @slm etwas Wonky Mathe hat oder zumindest nicht mit der
fdisk -l
Ausgabe übereinstimmt . In den Überarbeitungen sieht es so aus, als würde deru
Parameter zu fdisk hinzugefügt und von Zylindern zu Sektoren geändert. Keine Ahnung, aber auf meiner Seite macht es nichts, da die Standardeinstellung Sektoren sein sollte.Auf meinem Bild:
Woher
In meinem Beispiel sagt fdisk start at 2048 * 512 block size = 1048576.
quelle
Eine moderne Version des
file
Befehls meldet den Startsektor viel bequemer als fdisk oder parted:file $img Armbian_jw.img: DOS/MBR boot sector; partition 1 : ID=0x83, start-CHS (0x40,0,1), end-CHS (0x3ff,3,32), startsector 8192, 2883584 sectors
Diese einzeilige Ausgabe kann folgendermaßen geschrieben werden:
quelle
losetup -P
AutomatisierungDie folgenden Skripte stellen automatisch alle Partitionen eines Images bereit.
Verwendung:
Quelle:
Getestet in Ubuntu 16.04.
quelle