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).

Dima
fonte
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.

larsks
fonte