combiner des partitions en une seule image disque

13

J'ai 3 images. Chaque image a été réalisée en clonant (par jj) une partition (ces partitions formatées à l'aide du système de fichiers ext3). Une partition est amorçable avec GRUB1 (CentOS)

Comment puis-je les combiner en une seule image disque?

(Je peux copier les images des partitions à l'aide de la commande dd, mais je ne sais pas comment créer une table de partitions et faire fonctionner le démarrage).

Dima
la source
1
Qu'essayez-vous vraiment de faire? Cloner un système fonctionnel sur un nouveau matériel, etc.? Les trois partitions de différents points de montage se trouvaient-elles sur un seul système?
Mike Renfro
Quel est le but? vous pouvez utiliser des périphériques de bouclage pour travailler avec des images de système de fichiers, mais modifier des images de disque plutôt que des images de partition / système de fichiers est beaucoup plus délicat.
Michael Lowman

Réponses:

15

Créez une image disque. La commande suivante créera une image clairsemée 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

Partitionnez l'image avec fdisk:

# fdisk mydisk.img

Assurez-vous de créer des partitions au moins aussi grandes que celles que vous avez imaginées! Pour cet exemple, j'ai créé la disposition suivante:

# 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

Utilisez kpartxpour créer des périphériques correspondant à chacune des partitions:

# 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

Cela créera des entrées sous /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

Vous pouvez maintenant copier vos images de partition sur vos partitions:

# 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

Maintenant, supprimez les mappages de périphériques:

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

Et vous êtes prêt!

Remarques

  • Vous pouvez également accomplir la même chose en utilisant ddet le seekparamètre (pour commencer à écrire à l'offset approprié dans votre fichier image disque) au lieu d'utiliser kpartx, mais je pense que l'utilisation kpartxest moins sujette aux erreurs.

  • Cela ne donnera pas une image de démarrage. Si vous le souhaitez, vous devrez également y installer un chargeur de démarrage.

larsks
la source