我有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
你们都准备好了!
笔记
你也可以通过使用dd
和seek
参数来完成同样的事情(开始在你的磁盘镜像文件中的适当的偏移处写),而不是使用kpartx
,但是我认为使用kpartx
不太容易出错。
这不会导致可启动的映像。 如果你想要的话,你还必须安装一个引导装载程序。