Criei uma imagem do meu cartão SD do Raspberry Pi usando dd
:
sudo dd if=/dev/sdf of=/home/myusername/raspberry-backup-2014-04-10.img
O cartão SD inclui duas partições (uma vfat, uma ext4) que são montadas automaticamente quando eu conecto o cartão.
Minha pergunta: Como posso montar essas partições a partir do arquivo .img?
Mais detalhes:
$ fdisk -l raspberry-backup-2014-04-10.img
Disk raspberry-backup-2014-04-10.img: 3974 MB, 3974103040 bytes
255 heads, 63 sectors/track, 483 cylinders, total 7761920 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: 0x000981cb
Device Boot Start End Blocks Id System
raspberry-backup-2014-04-10.img1 8192 122879 57344 c W95 FAT32 (LBA)
raspberry-backup-2014-04-10.img2 122880 7761919 3819520 83 Linux
wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error
problemasudo fdisk -l /dev/loop0
afirma: Disk / dev / loop0 não contém uma tabela de partição válida.Respostas:
Para evitar a necessidade de criar imagens separadas para cada partição ou instalar um utilitário como
kpartx
, você pode montar cada partição individualmente especificando umoffset
nomount
comandoPrimeiro examine as partições no arquivo de imagem e determine o deslocamento usando
fdisk
:Pegue o
Start
setor da partição desejada e multiplique esse valor peloUnits
tamanho. Então, se você quiser a segunda partição, receberá540672 * 512 = 276824064
.Agora crie uma pasta e monte a partição:
Quando você terminar de fazer o que deseja com os dados da partição:
fonte
Após alguns testes adicionais, eu mesmo encontrei a solução:
kpartx
Este comando criou
/dev/mapper/loop0p1
e/dev/mapper/loop0p2
. Posteriormente, essas partições podem ser montadas diretamente para a frente:fonte
se seu objetivo é explorar ou modificar o conteúdo de uma partição (sistema de arquivos), esta linha de comando montará o sistema de arquivos do dump do cartão sd my_sdcard_dump.img no diretório mount_dir .
fonte
Lidar com uma imagem de um disco inteiro com várias partições é bastante complicado . O Linux não foi projetado para ler uma tabela de partição de um arquivo regular, mesmo quando conectado a um dispositivo de loopback, portanto, você deve identificar cuidadosamente os desvios das partições e passá-los para o
mount
comandoA maneira preferível seria criar imagens separadas de cada partição:
Agora você pode tratar facilmente esses arquivos como se fossem partições individuais em um disco, montando-os como faria normalmente em uma partição de disco real, mapeando-os para um dispositivo de loop . Um dispositivo de loop, ou dispositivo de loopback, é um dispositivo virtual que fornece uma camada de conversão para o Linux tratar um arquivo como um dispositivo de bloco (como um disco ou partição).
Os dispositivos de loop são normalmente
/dev/loop0
terminados/dev/loop8
. Identifique um dispositivo de loop não utilizado com olosetup
comando:Esta resposta indica um dispositivo de loop não atribuído. Agora podemos atribuir o dispositivo de loop a um dos nossos arquivos de imagem:
Ausência de saída deste comando indica sucesso. Agora,
/dev/loop0
para a maioria dos propósitos, é funcionalmente equivalente ao/dev/sdf1
do seu cartão SD, e você pode montá-lo como faria normalmente:Repita o processo usando outro dispositivo de loop para montar a outra partição. Quando terminar, desmonte os sistemas de arquivos e des atribua os dispositivos de loop:
fonte