sudo mount -o loop,offset="$(file vexpress.img | awk 'BEGIN { RS=";"; } \
/partition 2/ { print $7*512; }')" \
-t auto vexpress.img /mnt/tmp
O que o comando acima está fazendo é realmente simples:
Ele encontra o setor inicial da partição 2 da imagem vexpress.img
, multiplica por 512 e toma o resultado como offset para montar como um dispositivo de loop.
O comando mount
aceita valor de deslocamento em byte . Cada setor tem 512 bytes, portanto, multiplicar o deslocamento do setor inicial por 512 resultará no deslocamento inicial em bytes.
Aqui está uma maneira alternativa de fazer isso: (Eu uso uma imagem raspbian raw como exemplo)
-
Encontre o deslocamento:
$ fdisk -lu 2016-09-23-raspbian-jessie-lite.img Disk 2016-09-23-raspbian-jessie-lite.img: 1.3 GiB, 1389363200 bytes, 2713600 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 Disklabel type: dos Disk identifier: 0x5a7089a1 Device Boot Start End Sectors Size Id Type 2016-09-23-raspbian-jessie-lite.img1 8192 137215 129024 63M c W95 FAT32 (LBA) 2016-09-23-raspbian-jessie-lite.img2 137216 2713599 2576384 1.2G 83 Linux
O deslocamento inicial da partição dois é 137216
. Como seu vexpress.img
, a partição 2 é a partição raiz na qual estamos interessados.
-
Matemática simples:
$ perl -e "print 137216*512" 70254592
-
Monte:
sudo mount -o loop,offset=70254592 vexpress.img /mnt/tmp