Monte uma partição a partir de um arquivo bruto de disco de máquina virtual

Pode ser útil para qualquer pessoa que trabalhe com virtualização, por exemplo, se você deseja montar uma imagem de modelo com várias partições localmente para modificá-la, enviar algumas configurações, etc …

Por exemplo, vamos chamar nosso arquivo de imagem de FooBar-disk1.raw

fdisk -l FooBar-disk1.raw

Disk FooBar-disk1.raw: 322.1 GB, 322122547200 bytes
255 heads, 63 sectors/track, 39162 cylinders, total 629145600 sectors
Units = sectors of 1 * 512 = 512 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
FooBar-disk1.raw1 * 63 12611024 6305481 83 Linux
FooBar-disk1.raw2 12611025 25222049 6305512+ 83 Linux
FooBar-disk1.raw3 25222050 629137529 301957740 5 Extended
FooBar-disk1.raw5 25222113 29447144 2112516 83 Linux
(...)

Para montar uma partição, temos que encontrar seu setor inicial, multiplicá-lo pelo tamanho de um setor (aqui são 512 bytes).

Em seguida, podemos montar a partição, usando seu endereço inicial como um deslocamento no comando de montagem:

Para montar a partição 1 em / mnt:

mount -o offset=$((63*512)) FooBar-disk1.raw /mnt

Para montar a partição 2 em / mnt:

mount -o offset=$((12611025*512)) FooBar-disk1.raw /mnt