web-dev-qa-db-ja.com

ddパーティションイメージファイルをディスクイメージファイルにコピーします

ディスクイメージを作成し、それにmbrをコピーしています。

_dd if=/dev/zero bs=2M count=256 > ./hd.img
dd if=mbr.bin of=hd.img conv=notrunc
sfdisk --force ./hd.img < partitions.sfdisk
_

ここで、_partitions.sfdisk_は次のようになります。

_2048,,0x83,*
_

_fdisk -lu hd.img_はこれをリストします:

_./hd.img1  *     2048 1048575  1046528  511M 83 Linux
_

_512_バイトのセクターで。

ここで、ループデバイスを作成せずに_hd.img1_を_ext4_でフォーマットしたいと思います。そこで、512MB - (2048 x 512)バイトのサイズの2番目の画像_hd.img1_を作成しました。実行しました

_mkfs.ext4 hd.img1
_

そして今、作成したパーティション_hd.img1_の位置にある_hd.img_を_hd1.img_にコピーしたいと思います。

それも可能ですか? _hd.img1_のオフセット(スキップ)でdd _2048 x 512_する必要がありますか?

_dd if=hd.img1 of=hd.img skip=2048 bs=512
_

これを行うと、sfdiskで作成されたパーティションテーブルが上書きされたように見えるので、明らかに何か間違ったことをしています。

1
Stefan

skipは入力内をスキップします。 outputファイルの開始位置を移動するには、seekを使用します。

から man dd

seek=BLOCKS

出力の開始時にBLOCKSobsサイズのブロックをスキップします

skip=BLOCKS

入力の開始時にBLOCKSibsサイズのブロックをスキップします

1