Essayez d'exécuter la commande fdisk -l <img file>
. Généralement, si les .img
fichiers sont des disques entiers, par exemple une machine virtuelle KVM, ils sont techniquement un disque virtuel.
Exemple
J'ai une machine virtuelle KVM CentOS qui apparaît comme telle avec la file
commande:
$ 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
Courir fdisk
avec:
$ 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)
Si vous souhaitez monter l'une de ces partitions, procédez comme suit:
fdisk (sortie cylindre)
- taille de bloc de 512 octets et le bloc de départ est 63.
- Le décalage est 512 * 63 = 32256.
fdisk (sortie secteur)
- taille de bloc de 512 octets et le bloc de départ est 1.
- Le décalage est 512 * 1 = 512.
Donc, la commande mount serait:
en cylindres
$ mount -o loop,offset=32256 centostest.img /mnt/tmp
Pour monter l'autre partition (512 * 208845 = 106928640):
$ mount -o loop,offset=106928640 centostest.img /mnt/tmp
en secteurs
$ mount -o loop,offset=512 centostest.img /mnt/tmp
Pour monter l’autre partition (512 * 14 = 7168):
$ mount -o loop,offset=7168 centostest.img /mnt/tmp
REMARQUE
Cela ne fonctionnera que si mount peut déterminer le type de système de fichiers dans la "partition" que vous essayez de monter. Vous devrez peut-être inclure -t auto
, ou être spécifique et dire mount
que c'est -t ext4
par exemple.
Les références
# 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
peut identifier le type de la partition. Vous devrez simplement essayer les autres pour voir ce qui fonctionne.W95 FAT16 (LBA)
-t vfat
pas parvenue à monter ma 1ère partition.Utilisez
parted
pour identifier les valeurs de décalage.Vous avez maintenant des valeurs de décalage que vous pouvez utiliser pour monter des systèmes de fichiers.
la source
On dirait que @slm a des maths débiles, ou du moins ne correspond pas à la
fdisk -l
sortie. D'après les révisions, il semble que l'ajout duu
paramètre à fdisk a changé de cylindres en secteurs? Je sais pas, mais ça ne fait rien sur le mien car le défaut devrait être secteurs.Sur mon image:
Où
Dans mon exemple, fdisk dit de commencer à 2048 * 512 blocs = 1048576.
la source
Une version moderne de la
file
commande rapporte le secteur de démarrage de manière beaucoup plus pratique que fdisk ou 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
Cette sortie one-liner peut être scriptée comme ceci:
la source
losetup -P
automatisationLes scripts suivants montent automatiquement toutes les partitions d'une image.
Usage:
La source:
Testé dans Ubuntu 16.04.
la source