Posso montar uma partição a partir de uma imagem completa da unidade? [duplicado]

3
    

Esta pergunta já tem uma resposta aqui:

    

Nota: Embora eu concorde que esta pergunta é basicamente uma duplicata da pergunta acima, eu sinto que a resposta do alienth (abaixo) é mais concisa, então sugiro que você dê uma olhada antes de ir para a outra pergunta. p>

Eu periodicamente backup / imagem / clone minha unidade do sistema Ubuntu inteiro para outra unidade com:

dd if=/dev/sda of=/media/disk1/backup.iso

Funciona muito bem quando preciso restaurar a unidade após um experimento, falha da unidade, etc.

No entanto, gostaria agora de montar uma partição a partir do .iso (ou seja, o que teria sido / dev / sda1 quando eu estava dd'ando a unidade). Se eu tivesse feito o backup com:

dd if=/dev/sda1 of=/media/disk1/backup.iso

então o .iso seria facilmente montável usando o utilitário de volume de montagem do ubuntu. Mas o utilitário não funciona para uma iso de todo o disco. Existe uma maneira de montar o sda1 da iso original?

    
por Fred Hamilton 18.09.2015 / 23:05

2 respostas

10

Você precisará determinar onde a imagem do disco começa sua partição. Para fazer isso, execute o seguinte:

sudo parted /media/disk1/backup.iso unit s print

A saída será parecida com a seguinte:

Model:  (file)
Disk /tmp/file: 200000s
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start  End      Size     Type     File system  Flags
 1      2048s  199999s  197952s  primary

Você precisa obter o tamanho do setor lógico e multiplicá-lo pelo Start da partição que deseja montar. Nesse caso, se eu quiser montar a primeira partição, a posição será 2048 * 512 ou 1048576 .

Você pode então montar a partição usando uma configuração de loopback, conectando o valor determinado acima no parâmetro offset .

mount -o loop,offset=1048576 /media/disk1/backup.iso /mnt/mydisk

    
por 18.09.2015 / 23:16
1

Existe uma maneira de ver uma tabela de partições dentro de uma imagem de disco completo. Dois, na verdade.

A primeira maneira:

# losetup /dev/loop0 /media/disk1/backup.iso
# fdisk /dev/loop0 # Be very careful with this!
Command: w

Idealmente, isso deve criar dispositivos de loop /dev/loop0p1 , /dev/loop0p2 e assim por diante para as partições em backup.iso . Você pode montá-los normalmente como dispositivos de loop; Provavelmente, é prudente fazer isso somente leitura, para não corromper seu backup. Provavelmente, existem maneiras mais seguras de acionar a leitura da partição do que usar fdisk diretamente, como partprobe ou kpartx ; no entanto, tive problemas de confiabilidade com eles e fdisk é a melhor maneira que encontrei.

O segundo caminho é mais difícil. Envolve a leitura manual do início da partição ( fdisk -l /dev/loop0 ), em seguida, refaz losetup com uma opção --offset apropriada para fazer o dispositivo de loop começar no início da partição. Precisamente o número que você passa depende da saída de fdisk , mas é um deslocamento em bytes, igual ao bloco inicial vezes o tamanho do bloco. Nesse ponto, você pode montar /dev/loop0 diretamente (novamente, somente leitura é prudente).

    
por 18.09.2015 / 23:16

Tags