combinar particiones en una imagen de disco

13

Tengo 3 imagenes. Cada imagen se realizó clonando (por dd) una partición (estas particiones formateadas usando el sistema de archivos ext3). Una partición es arrancable con GRUB1 (CentOS)

¿Cómo puedo combinarlos en una imagen de disco?

(Puedo copiar las imágenes de particiones usando el comando dd, pero no sé cómo crear una tabla de particiones y hacer que el arranque funcione).

Dima
fuente
1
¿Qué es lo que realmente intentas hacer? ¿Clonar un sistema de trabajo en un nuevo hardware, etc.? ¿Eran las tres particiones de diferentes puntos de montaje en un solo sistema?
Mike Renfro
Cual es el objetivo? puede usar dispositivos de bucle invertido para trabajar con imágenes del sistema de archivos, pero modificar imágenes de disco en lugar de imágenes de partición / sistema de archivos es mucho más complicado.
Michael Lowman

Respuestas:

15

Crea una imagen de disco. El siguiente comando creará una imagen dispersa de 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

Particionar la imagen con fdisk:

# fdisk mydisk.img

¡Asegúrate de crear particiones que sean al menos tan grandes como las que has creado! Para este ejemplo, creé el siguiente diseño:

# 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 crear dispositivos correspondientes a cada una de las particiones:

# 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

Esto creará entradas en /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

Ahora puede copiar sus imágenes de partición en sus particiones:

# 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

Ahora elimine las asignaciones de dispositivos:

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

¡Y ya está todo listo!

Notas

  • También podría lograr lo mismo usando ddy el seekparámetro (para comenzar a escribir en el desplazamiento apropiado en su archivo de imagen de disco) en lugar de usar kpartx, pero creo que usarlo kpartxes menos propenso a errores.

  • Esto no dará como resultado una imagen de arranque. Si quieres eso, también tendrás que instalar un cargador de arranque en él.

larsks
fuente