将分区合并到一个磁盘映像

我有3张图片 每个图像都是通过克隆(通过dd分区(使用ext3文件系统格式化这些分区)完成的。 一个分区可以启动GRUB1(CentOS)

我怎样才能把他们结合到一个磁盘映像?

(我可以使用dd命令复制分区映像,但我不知道如何创build分区表并使引导工作)。

创build一个磁盘映像。 以下命令将创build一个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 

用fdisk分区映像:

 # fdisk mydisk.img 

确保您创build的分区至less与您所映像的一样大! 对于这个例子,我创build了以下布局:

 # 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 

使用kpartx创build对应于每个分区的设备:

 # 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 

这将在/dev/mapper下创build条目:

 # 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 

现在,您可以将分区映像复制到分区上:

 # 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 

现在删除设备映射:

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

你们都准备好了!

笔记

  • 你也可以通过使用ddseek参数来完成同样的事情(开始在你的磁盘镜像文件中的适当的偏移处写),而不是使用kpartx ,但是我认为使用kpartx不太容易出错。

  • 这不会导致可启动的映像。 如果你想要的话,你还必须安装一个引导装载程序。