Linux

將分區合併到一個磁碟映像

  • June 17, 2011

我有 3 張圖片。每個圖像都是通過複製(通過 dd)一個分區(這些分區使用 ext3 文件系統格式化)來完成的。一個分區可以用 GRUB1 (CentOS) 引導

如何將它們組合到一個磁碟映像?

(我可以使用 dd 命令複製分區映像,但我不知道如何創建分區表並使啟動工作)。

創建磁碟映像。以下命令將創建一個 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

你都準備好了!

筆記

  • 您也可以通過使用ddandseek參數(在磁碟映像文件中的適當偏移量處開始寫入)而不是 using來完成同樣的事情kpartx,但我認為 usingkpartx不太容易出錯。
  • 這不會產生可引導映像。如果需要,您還必須在其上安裝引導載入程序。

引用自:https://serverfault.com/questions/281628