Intenta ejecutar el comando fdisk -l <img file>
. Por lo general, si los .img
archivos son discos completos de, por ejemplo, una máquina virtual KVM, técnicamente son un disco virtual.
Ejemplo
Tengo una máquina virtual CentOS KVM que se muestra así con el file
comando:
$ 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
Corriendo fdisk
con eso:
$ 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 desea montar una de estas particiones, puede hacerlo de la siguiente manera:
fdisk (salida del cilindro)
- tamaño de bloque de 512 bytes y el bloque de inicio es 63.
- El desplazamiento es 512 * 63 = 32256.
fdisk (salida del sector)
- tamaño de bloque de 512 bytes y el bloque de inicio es 1.
- El desplazamiento es 512 * 1 = 512.
Entonces el comando de montaje sería:
en cilindros
$ mount -o loop,offset=32256 centostest.img /mnt/tmp
Para montar la otra partición (512 * 208845 = 106928640):
$ mount -o loop,offset=106928640 centostest.img /mnt/tmp
en sectores
$ mount -o loop,offset=512 centostest.img /mnt/tmp
Para montar la otra partición (512 * 14 = 7168):
$ mount -o loop,offset=7168 centostest.img /mnt/tmp
NOTA
Esto solo funcionará si mount puede determinar el tipo de sistema de archivos dentro de la "partición" que está intentando montar. Es posible que deba incluir -t auto
o ser específico y decir mount
que es -t ext4
por ejemplo.
Referencias
# 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
pueda identificar el tipo de partición. Tendrás que probar otros para ver qué funciona.W95 FAT16 (LBA)
-t vfat
no pudo montar mi primera partición.Se usa
parted
para identificar valores de desplazamiento.Ahora tiene valores de desplazamiento y puede usarlos para montar sistemas de archivos.
fuente
Parece que @slm tiene algunas matemáticas inestables, o al menos no coincide con la
fdisk -l
salida. De las revisiones parece que se agrega elu
parámetro a fdisk cambió de cilindros a sectores. No sé, pero no hace nada en la mía ya que el valor predeterminado debería ser sectores.En mi imagen:
Dónde
En mi ejemplo, fdisk dice comenzar en 2048 * 512 tamaño de bloque = 1048576.
fuente
Una versión moderna del
file
comando informa al sector de inicio de una manera mucho más conveniente que fdisk o 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
Esta salida de una línea se puede escribir así:
fuente
losetup -P
automatizaciónLos siguientes scripts montan automáticamente todas las particiones de una imagen.
Uso:
Fuente:
Probado en Ubuntu 16.04.
fuente