
Eu tenho uma imagem de disco, é uma imagem de disco "completa", por exemplo, contém várias partições e quero clonar apenasumdeles (não o primeiro ..) em uma partição em uma unidade externa com várias partições (também não estou clonando na primeira partição do disco ...)
Fazer o FDisk da imagem dá o seguinte:
# fdisk -l 2013/02/09-wheezy-raspbian.img Disco 2013-02-09-wheezy-raspbian.img: 1939 MB, 1939865600 bytes 255 cabeçotes, 63 setores/pista, 235 cilindros, total de 3.788.800 setores Unidades = setores de 1 * 512 = 512 bytes Tamanho do setor (lógico/físico): 512 bytes/512 bytes Tamanho de E/S (mínimo/ideal): 512 bytes/512 bytes Identificador de disco: 0x00014d34 Sistema de identificação de blocos de início de inicialização do dispositivo 2013-02-09-wheezy-raspbian.img1 8192 122879 57344 c W95 FAT32 (LBA) 2013-02-09-wheezy-raspbian.img2 122880 3788799 1832960 83 Linux #
e o dispositivo de bloco fica assim:
# fdisk -l /dev/sdc Disco /dev/sdc: 8014 MB, 8014266368 bytes 247 cabeçotes, 62 setores/pista, 1.022 cilindros, total de 1.565.2864 setores Unidades = setores de 1 * 512 = 512 bytes Tamanho do setor (lógico/físico): 512 bytes/512 bytes Tamanho de E/S (mínimo/ideal): 512 bytes/512 bytes Identificador de disco: 0x00000000 Sistema de identificação de blocos de início de inicialização do dispositivo /dev/sdc1 2048 131071 64512 e W95 FAT16 (LBA) /dev/sdc2 131072 15652863 7760896 83 Linux #
Quero que a segunda partição da imagem substitua a segunda partição do dispositivo de bloco. Não se preocupe com o espaço livre corrompido, usarei o GParted para limpá-lo e, de qualquer maneira, preciso dele para outra coisa.
Responder1
# losetup --find --show --partscan --read-only 2013-02-09-wheezy-raspbian.img
/dev/loop7
# dd if=/dev/loop7p2 of=/dev/narnia bs=1M
Se --partscan
não funcionar, você também pode usar um dos seguintes:
# partx -a /dev/loop7
# kpartx /dev/loop7
ou soluções semelhantes de mapeamento de partição.
Você provavelmente deveria montá-lo primeiro só para ver se é a coisa certa ou o quê.
É claro que você também pode ler a saída do fdisk e fornecer dd
o skip=131072
ou qualquer coisa diretamente, ou seja, fazê-lo pular tantos blocos de entrada para que ele comece a ler onde a partição está localizada; mas é melhor ver partições reais com um dispositivo de loop.
Responder2
Algo assim deve funcionar:
dd if=/path/to/2013-02-09-wheezy-raspbian.img2 of=/dev/sdc2 bs=4096 conv=notrunc,noerror
se= define a imagem que você deseja clonar
de= define a partição de destino onde você deseja clonar a imagem
Responder3
- Monte a imagem como um dispositivo de loopback:
losetup -fP yourImage.img
- Agora você pode acessar cada partição da imagem diretamente. Se você precisar usar
dd
, você pode fazerdd if=/dev/loop0p1 of=image.img
, mas acho que você gostaria decat
algo melhor. Em um shell root, simplesmente façacat /dev/loop0p1 > image.img
. Ambos os exemplos assumem que você deseja a primeira partição e que o dispositivo de loopback atribuído a você foi/dev/loop0
- Quando terminar de usar o dispositivo de loopback, você pode desconectá-lo com
losetup -d /dev/loop0
. Mais uma vez, isso pressupõe que esse/dev/loop0
seja o seu dispositivo de loopback.
Responder4
Você pode copiar apenas a segunda partição para uma imagem separada com este
dd if=2013-02-09-wheezy-raspbian.img of=second.img bs=512 skip=122880
e depois disso você pode copiá-lo no lugar da partição no disco
dd if=second.img of=/dev/sdc2 bs=512
ou você pode até fazer isso em um comando
dd if=2013-02-09-wheezy-raspbian.img of=/dev/sdc2 bs=512 skip=122880
Apenas certifique-se de desmontar /dev/sdc2 antes de escrever nele.