Como posso montar uma partição a partir da imagem criada em dd de um dispositivo de bloco (por exemplo, HDD) no Linux?

30

Eu tenho uma imagem de todo o disco criado usando dd . A estrutura do disco segue:

kent@cow:~$ sudo fdisk -l

Disk /dev/sda: 750.1 GB, 750156374016 bytes
255 heads, 63 sectors/track, 91201 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000b8508

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           5       90872   729929303+  83  Linux
/dev/sda2           90873       91201     2642692+   5  Extended
/dev/sda5           90873       91201     2642661   82  Linux swap / Solaris

A imagem foi criada usando:

dd if=/dev/sda of=image750.img

Como eu poderia, se fosse possível, montar / dev / sda1 da imagem para que eu pudesse ler o conteúdo?

Não é uma opção para clonar o HDD novamente, eu sei como fazer isso se eu tivesse clonado a única partição sozinha. Espero que ainda seja possível com a imagem atual.

    
por Deleted 07.03.2010 / 12:38

7 respostas

42

Hoje em dia, existe uma maneira melhor, sem necessidade de usar deslocamentos ou kpartx:

losetup --partscan --find --show disk.img

mount /dev/loop0p1 /mnt

para liberar loop0, use após umount:

losetup -d /dev/loop0
    
por 06.12.2013 / 09:06
11

Eu encontrei esse problema hoje e queria atualizar as respostas apenas como um lembrete para mim mesmo. Em vez de calcular o deslocamento por conta própria, você pode usar uma ferramenta que fornece dispositivos montáveis a partir de uma imagem dd: kpartx

link

link

No caso em questão, seria necessário algo como

sudo kpartx -a image750.img
sudo mount /dev/mapper/loop1p1 /mount/point -o loop,ro

onde loop1p1 representa a primeira partição, loop1p2 pela segunda, etc.

    
por 06.09.2013 / 17:39
5

Você tem a primeira parte: fdisk -l para encontrar o deslocamento inicial. Pegue esse número, multiplique por 512 e você terá a opção de deslocamento para montar. Então, para sda1 no seu caso, 5 * 512 = 2560. Em seguida, execute o mount:

mount -o loop,offset=2560 -t auto /path/to/image.dd /mount/point
    
por 07.03.2010 / 16:07
4

A montagem em loop é apenas parte da resposta.

Veja o link para obter ajuda sobre como especificar a partição. Eu acho que mount -o loop, offset = 32256 /path/to/image750.img / mnt funcionará para você. mas você realmente deveria ler o tutorial mencionado.

    
por 07.03.2010 / 14:17
1

losetup -P automation

Método mencionado pelo link (adicionado no util-linux v2.21, adicionado Ubuntu 16.04), aqui estão as funções para automatizá-lo ainda mais. Uso:

$ los my.img
/dev/loop0
/mnt/loop0p1
/mnt/loop0p2

$ ls /mnt/loop0p1
/whatever
/files
/youhave
/there

$ sudo losetup -l
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                                                                                      DIO
/dev/loop1         0      0         0  0 /full/path/to/my.img

$ # Cleanup.
$ losd 0
$ ls /mnt/loop0p1
$ ls /dev | grep loop0
loop0

Fonte:

los() (
  img="$1"
  dev="$(sudo losetup --show -f -P "$img")"
  echo "$dev"
  for part in "$dev"?*; do
    if [ "$part" = "${dev}p*" ]; then
      part="${dev}"
    fi
    dst="/mnt/$(basename "$part")"
    echo "$dst"
    sudo mkdir -p "$dst"
    sudo mount "$part" "$dst"
  done
)
losd() (
  dev="/dev/loop$1"
  for part in "$dev"?*; do
    if [ "$part" = "${dev}p*" ]; then
      part="${dev}"
    fi
    dst="/mnt/$(basename "$part")"
    sudo umount "$dst"
  done
  sudo losetup -d "$dev"
)

módulo de loop max_part config

Método decente antes do util-linux v2.21.

loop é um módulo do kernel, embutido no kernel no Ubuntu 14.04.

Se você configurá-lo corretamente, o Linux automaticamente dividirá os dispositivos para você.

cat /sys/module/loop/parameters/max_part

diz quantas partições loop dispositivos podem gerar.

Por padrão, é 0 no Ubuntu 14.04 e é por isso que não ocorre divisão automática.

Para alterá-lo, podemos adicionar:

options loop max_part=31

para um arquivo em /etc/modprobe ou:

GRUB_CMDLINE_LINUX="loop.max_part=31"

para /etc/default/grub e, em seguida, sudo update-grub .

Como definir um parâmetro de módulo também é coberto em: link

Após a reinicialização, quando você faz:

sudo losetup -f --show my.img

monta a imagem em um dispositivo /dev/loopX e monta automaticamente as partições em /dev/loopXpY devices.

Portanto, este é o método mais conveniente se você estiver disposto a reinicializar.

Veja também

por 12.09.2015 / 13:00
0

Se você tem o sistema de arquivos do modo Usuário como fusível, então em ambientes de desktop gosta do Gnome e tem ferramentas instaladas como o gnome-disk-image-mounter, então ele nem mesmo root com o botão direito e abre com ele.

    
por 12.08.2014 / 21:01
0

Acredito que montagens em loop é a resposta -

sudo mkdir /path/to/dir/
mount -o loop example.img /path/to/dir/

O acima deve montá-lo nesse diretório.

Isso deve ser desmontado:

umount /path/to/dir
    
por 07.03.2010 / 13:00