combinar partições a uma imagem de disco


13

Eu tenho 3 imagens. Cada imagem foi feita clonando (por dd) uma partição (essas partições formatadas usando o sistema de arquivos ext3). Uma partição pode ser inicializada com o GRUB1 (CentOS)

Como posso combiná-los em uma imagem de disco?

(Eu posso copiar as imagens das partições usando o comando dd, mas não sei como criar a tabela de partições e fazer a inicialização funcionar).


1
O que você realmente está tentando fazer? Clonar um sistema em funcionamento em um novo hardware, etc.? As três partições foram de diferentes pontos de montagem em um único sistema?
— Mike Renfro

Qual é o objetivo? você pode usar dispositivos de loopback para trabalhar com imagens do sistema de arquivos, mas modificar imagens de disco em vez de imagens de partição / sistema de arquivos é muito mais complicado.
— Michael Lowman

Respostas:


15

Crie uma imagem de disco. O comando a seguir criará uma imagem esparsa 10G :

# dd if=/dev/zero of=mydisk.img bs=1 count=0 seek=10G
0+0 records in
0+0 records out
0 bytes (0 B) copied, 1.6554e-05 s, 0.0 kB/s
# ls -lh mydisk.img
-rw-r--r--. 1 root root 10G Jun 17 15:27 mydisk.img

Particione a imagem com o fdisk:

# fdisk mydisk.img

Crie partições que sejam pelo menos tão grandes quanto as que você imaginou! Para este exemplo, criei o seguinte layout:

# fdisk -l mydisk.img
Disk mydisk.img: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 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: 0x5519250f

     Device Boot      Start         End      Blocks   Id  System
mydisk.img1            2048     2099199     1048576   83  Linux
mydisk.img2         2099200     4196351     1048576   83  Linux

Use kpartxpara criar dispositivos correspondentes a cada uma das partições:

# kpartx -av mydisk.img
add map loop0p1 (253:3): 0 2097152 linear /dev/loop0 2048
add map loop0p2 (253:4): 0 2097152 linear /dev/loop0 2099200

Isso criará entradas em /dev/mapper:

# ls -l /dev/mapper
lrwxrwxrwx. 1 root root       7 Jun 17 15:33 loop0p1 -> ../dm-3
lrwxrwxrwx. 1 root root       7 Jun 17 15:33 loop0p2 -> ../dm-4

Agora você pode copiar suas imagens de partição para suas partições:

# dd if=image_of_partition_1.img of=/dev/mapper/loop0p1 bs=1M
# dd if=image_of_partition_2.img of=/dev/mapper/loop0p2 bs=1M

Agora remova os mapeamentos do dispositivo:

# kpartx -dv mydisk.img
del devmap : loop0p2
del devmap : loop0p1
loop deleted : /dev/loop0

E está tudo pronto!

Notas

  • Você também pode realizar a mesma coisa usando ddo seekparâmetro (para começar a escrever no deslocamento apropriado no arquivo de imagem do disco) em vez de usar kpartx, mas acho que o uso kpartxé menos suscetível a erros.

  • Isso não resultará em uma imagem inicializável. Se você quiser isso, também precisará instalar um gerenciador de inicialização nele.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.