DDを使用してディスクイメージからパーティションを複製する方法は?

DDを使用してディスクイメージからパーティションを複製する方法は?

「フル」ディスクイメージであるディスクイメージがあります。たとえば、複製する複数のパーティションが含まれています。一つ(最初のパーティションではありません。)複数のパーティションを持つ外部ドライブのパーティションに接続します(また、ディスクの最初のパーティションに複製していません...)。

イメージを FDisk して以下の結果を得る。

#fdisk -l 2013-02-09-wheezy-raspbian.img

ディスク 2013-02-09-wheezy-raspbian.img: 1939MB, 1939865600バイト
255ヘッド、63セクター/トラック、235シリンダー、合計3,788,800セクター
単位= 1 * 512 = 512バイトセクタ
セクタサイズ(論理/物理):512バイト/512バイト
I/Oサイズ(最小/最適): 512バイト/512バイト
ディスク識別子:0x00014d34

                         デバイス起動開始エンドブロックIDシステム
2013-02-09-wheezy-raspbian.img1 8192 122879 57344 c W95 FAT32(LBA)
2013-02-09-wheezy-raspbian.img2 122880 3788799 1832960 83 Linux
#

ブロックデバイスは次のとおりです。

#fdisk -l /dev/sdc

ディスク /dev/sdc: 8014MB, 8014266368バイト
247ヘッド、62セクター/トラック、1022シリンダー、合計15652864セクター
単位= 1 * 512 = 512バイトセクタ
セクタサイズ(論理/物理):512バイト/512バイト
I/Oサイズ(最小/最適): 512バイト/512バイト
ディスク識別子:0x00000000

   デバイス起動開始エンドブロックIDシステム
/dev/sdc1 2048 131071 64512 e W95 FAT16(LBA)
/dev/sdc2 131072 15652863 7760896 83 Linux
#

イメージの2番目のパーティションは、ブロックデバイスの2番目のパーティションを置き換えたいと思います。結局のところ、空き領域が損傷していることを心配しないでください。 GPartedを使用してクリーンアップし、とにかく他の作業に必要になります。

答え1

# losetup --find --show --partscan --read-only 2013-02-09-wheezy-raspbian.img
/dev/loop7
# dd if=/dev/loop7p2 of=/dev/narnia bs=1M

それでも問題が解決しない場合は、次のいずれ--partscanかの方法を使用できます。

# partx -a /dev/loop7
# kpartx /dev/loop7

または同様のパーティションマッピングソリューション。

正しいかどうかを確認するには、まずインストールする必要があります。

もちろん、fdisk出力を読み取って直接提供することもできます。ddつまりskip=131072、パーティションのある場所を読み始めるために多くの入力ブロックをスキップしますが、実際のパーティションを表示するにはループデバイスを使用する方が良いです。

答え2

次のように動作する必要があります。

dd if=/path/to/2013-02-09-wheezy-raspbian.img2 of=/dev/sdc2 bs=4096 conv=notrunc,noerror

もし=複製する画像の設定

~の=イメージを複製するターゲットパーティションを設定します。

答え3

  1. イメージをループバックデバイスとしてマウントします。losetup -fP yourImage.img
  2. これで、イメージの各パーティションに直接アクセスできます。やむを得ず使用する必要がある場合は、ddこの方法を使用すれdd if=/dev/loop0p1 of=image.imgば良いのですが、私の考えにはcatこの方法をもっと好むようです。ルートシェルで実行できますcat /dev/loop0p1 > image.img。どちらの例も最初のパーティションが必要で、割り当てられたループバックデバイスが次のようになっているとします。/dev/loop0
  3. ループバックデバイスを使い終わったら、を使用してループバックデバイスを取り外すことができますlosetup -d /dev/loop0。再びこれが/dev/loop0ループバック装置であると仮定する。

答え4

このコマンドを使用すると、2番目のパーティションのみを別のイメージにコピーできます。

dd if=2013-02-09-wheezy-raspbian.img of=second.img bs=512 skip=122880

その後、ディスクのパーティションの場所にコピーできます。

dd if=second.img of=/dev/sdc2 bs=512

それとも命令でもできます。

dd if=2013-02-09-wheezy-raspbian.img of=/dev/sdc2 bs=512 skip=122880

書き込み前に/ dev / sdc2をアンマウントしたことを確認してください。

関連情報