Monta uma partição lógica única a partir da imagem de todo o disco (dispositivo)

-1

O método abaixo funciona para montar uma partição primária a partir da imagem de disco, mas falha ao tentar montar uma partição lógica em uma partição estendida. Existe uma maneira de contornar isso? Eu tenho 3 partições lógicas sob a partição estendida e nenhuma delas será montada usando as etapas abaixo.

Get the partition layout of the image

$ sudo fdisk -lu sda.img
...
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
...
  Device Boot      Start         End      Blocks   Id  System
sda.img1   *          56     6400000     3199972+   c  W95 FAT32 (LBA)

Calcule o deslocamento desde o início da imagem até o início da partição

Tamanho do setor * Start = (no caso) 56 * 512 = 28672

Monte em / dev / loop0 usando o deslocamento

sudo losetup -o 28672 /dev/loop0 sda.img

Agora a partição reside em / dev / loop0 . Você pode fsck , montá-lo etc

sudo fsck -fv /dev/loop0
sudo mount /dev/loop0 /mnt

Desmontar

sudo umount /mnt
sudo losetup -d /dev/loop0
    
por Tim Regeant 17.07.2014 / 03:22

1 resposta

0

Aqui está um script que eu uso para montar partições de arquivos de imagem. Veja os comentários no início do script para informações de uso.

#!/bin/bash

# mount_image, a program that mounts a specific partition from a RAW
# disk image file, such as a full-disk dd copy or a file used by QEMU.
# Note that compressed and other space-saving formats (qcaw2, etc.)
# will NOT work!

# Use:
# mount_image image_file partition_number mount_point
#
# For instance,
#
# mount_image image.raw 2 /mnt/shared
#
# mounts partition 2 from image.raw at /mnt/shared.

# This program relies on my GPT fdisk (gdisk) program to help identify
# partitions. I could have used regular fdisk, but this would have
# limited the program to working with MBR-formatted disks. With gdisk,
# both MBR- and GPT-formatted disks will work.

gdisk -l $1 > /tmp/mount_image.tmp
let StartSector='egrep "^   $2|^  $2" /tmp/mount_image.tmp | fmt -u -s | sed -e 's/^[ \t]*//' | head -1 | cut -d " " -f 2'

let StartByte=($StartSector*512)

echo "Mounting partition $2, which begins at sector $StartSector"

mount -o loop,offset=$StartByte $1 $3

rm /tmp/mount_image.tmp
    
por Rod Smith 17.07.2014 / 19:15