quinta-feira, 10 de junho de 2010

Como montar uma imagem de um disco rígido

Um arquivo imagem de disco rígido, gerado por programas denominados "Disk Dump", pode ser montado para leitura da mesma forma que imagens ISO de CDs e DVDs. O sistema Linux possui algumas ferramentas para realizar esta operação.

Uma imagem gerada pelo comando, por exemplo, "dd if=/dev/sda of=imagem.dd bs=4096 conv=noerror,sync" é uma cópia integral de toda a superfície do disco rígido. É uma cópia crua (raw), em baixo nível, dos dados do disco.

Primeiramente é necessário conhecer algumas informações da imagem do disco. Mais precisamente o setor de início e o tamanho da unidade do setor. Normalmente as partições iniciam no setor 63 mas no Windows Vista ou superior o primeiro setor é o 2047. O seguinte comando retorna estas informações:

fdisk -lu imagem.dd

Um exemplo de saída está nas linhas a seguir:

Disk imagem.dd: 0 MB, 0 bytes
255 heads, 63 sectors/track, 0 cylinders, total 0 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0xf27ef27e

    Device Boot      Start         End      Blocks   Id  System
imagem.dd1   *          63    26700029    13349983+   7  HPFS/NTFS
Partition 1 has different physical/logical endings:
     phys=(1023, 254, 63) logical=(1661, 254, 63)

Agora devemos associar a imagem à um dispositivo de loop. Isto é feito pela ferramenta "losetup". Esta ferramenta configura e controla os dispositivos de loop. O seguinte comando retorna o primeiro dispositivo de loop livre:

losetup -f

Assim, podemos fazer a associação do dispositivo de loop ao arquivo imagem:

losetup -o $((63*512)) /dev/loop0 imagem.dd

Podemos confirmar a associação obtendo informações do dispositivo de loop, com o comando abaixo:

losetup /dev/loop0

Um exemplo de saída é:

/dev/loop0: [0802]:2967800 (/root/imagem.dd), offset 32256

Agora é só montar o dispositivo de loop, consequentemente a imagem do disco rígido, com um comando semelhante ao apresentado abaixo:

mount -o ro,noatime,noexec /dev/loop0 /mnt/hdd

Para desassociar o arquivo imagem com o respectivo dispositivo de loop, basta executar o próximo comando (antes desmonte o dispositivo com "umount /mnt/hdd"):

losetup -d /dev/loop0

Os comandos apresentados neste artigo servem em um cenário de uma imagem de disco rígido que possua uma única partição. Uma situação diferente, pode necessitar de outros comandos.

2 comentários:

  1. Olá Daniel, também sou de Sorocaba.
    Encontrei seu artigo por acaso e foi bastante útil.
    Obrigado e abraços.

    Jupercio Juliano
    Engenheiro da Computação

    ResponderExcluir