Eu tenho uma imagem de disco, é uma imagem de disco "inteira", por exemplo, contém várias partições e quero clonar apenas uma delas (não a primeira ..) 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 ...)
FDisk'ing a imagem dá isto:
# fdisk -l 2013-02-09-wheezy-raspbian.img Disco 2013-02-09-wheezy-raspbian.img: 1939 MB, 1939865600 bytes 255 cabeças, 63 setores / pista, 235 cilindros, total de 3788800 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 finais 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ças, 62 setores / pista, 1022 cilindros, total de 15652864 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 finais 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 à direita, usarei o GParted para limpar isso e preciso disso para qualquer outra coisa.
Respostas:
Se
--partscan
não funcionar, você também pode usar um dos seguintes:ou soluções de mapeamento de partição semelhantes.
Você provavelmente deve montá-lo primeiro apenas para ver se é a coisa certa ou o quê.
Claro que você também pode ler a saída fdisk e dar
dd
oskip=131072
ou o que quer diretamente, ou seja, torná-lo saltar esta quantidade de blocos de entrada para que ele começa a ler para onde a partição está localizado; mas é melhor ver partições reais com um dispositivo de loop.fonte
losetup
comando não funcionou - dizia opção não reconhecida--find
. Eu removi isso, dizia que não reconhecia--show
. Tirar isso fez com que reclamasse--partscan
, e nesse momento percebi que o comando não faria nada por mim tão cedo. Eu decidi tentar os outros, mas ambospartx
ekpartx
retornar "comando não encontrado".dd if=2013-02-09-wheezy-raspbian.img of=/dev/sdc skip=122880
, mas isso retornadd: ‘2013-02-09-wheezy-raspbian.img’: cannot skip: Invalid argument
.skip
dependebs
, portanto, se você usoubs=1M
(ou tem um alias que faz isso), isso explicaria por que não funciona. tente combs=512
. Além disso, por que 122880 quando fdisk diz 131072? Também é o meu losetuplosetup from util-linux 2.22.2
. o mesmo para o partx. O kpartx é do multipath-tools (mapeador de dispositivos usado).kpartx
é para LVM.partprobe
também fará o trabalho, a partir do pacote separado.Algo assim deve funcionar:
if = define a imagem que você deseja clonar
of = define a partição de destino na qual você deseja clonar a imagem
fonte
dd: opening ‘2013-02-09-wheezy-raspbian.img2’: No such file or directory
losetup -fP yourImage.img
dd
, você pode fazerdd if=/dev/loop0p1 of=image.img
, mas acho que você gostariacat
melhor. Em um shell raiz, simplesmente façacat /dev/loop0p1 > image.img
. Ambos os exemplos pressupõem que você deseja a primeira partição, e o dispositivo de auto-retorno designado foi/dev/loop0
losetup -d /dev/loop0
. Mais uma vez, isso pressupõe que esse/dev/loop0
é o seu dispositivo de loopback.fonte
Você poderia fazer:
fonte
Você pode copiar apenas a segunda partição para uma imagem separada com este
e depois disso você pode copiá-lo no lugar da partição no disco
ou você pode até fazê-lo em um comando
Apenas certifique-se de desmontar / dev / sdc2 antes de escrever nele.
fonte