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


13

我有3张图片。通过克隆(按dd)分区(这些分区使用ext3文件系统格式化)来完成每个映像。一个分区可通过GRUB1(CentOS)引导。

如何将它们合并到一个磁盘映像?

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


1
您到底想做什么?将工作系统克隆到新硬件等上?来自单个安装点的三个分区是否在单个系统上?
Mike Renfro

目标是什么?您可以使用环回设备来处理文件系统映像,但是修改磁盘映像而不是分区/文件系统映像要复杂得多。
Michael Lowman

Answers:


15

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

确保您创建的分区至少与您所成像的分区一样大!对于此示例,我创建了以下布局:

# 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创建对应的分区中的每一个设备:

# 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以下位置创建条目:

# 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不太容易出错。

  • 这不会导致可引导映像。如果需要,还必须在其上安装引导加载程序。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.