3枚の画像があります。各イメージは、(ddによって)パーティション(ext3ファイルシステムを使用してフォーマットされたこれらのパーティション)を複製することによって作成されました。 1つのパーティションはGRUB1(CentOS)でブート可能です
それらを1つのディスクイメージに組み合わせるにはどうすればよいですか?
(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
これで準備は完了です。
注記
dd
を使用する代わりに、seek
とkpartx
パラメータを使用して(ディスクイメージファイルの適切なオフセットで書き込みを開始する)、同じことを行うこともできますが、 kpartx
を使用するとエラーが発生しにくくなると思います。
これは起動可能なイメージにはなりません。それが必要な場合は、それにブートローダーをインストールする必要もあります。