私はディスクイメージを持っています。それは「全体」のディスクイメージです。たとえば、複数のパーティションが含まれていて、それらのone(最初のものではない)だけを外部のパーティションにクローンしたいのです。複数のパーティションが存在するドライブ(ディスクの最初のパーティションにクローンを作成していません...)
イメージをFDiskすると、次のようになります。
#fdisk -l 2013-02-09-wheezy-raspbian.img ディスク2013-02-09-wheezy-raspbian.img:1939 MB、1939865600バイト 255ヘッド、63セクター/トラック、235シリンダー、合計3788800セクター 単位= 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:8014 MB、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を使用してそれをクリーンアップしますが、とにかく何か他のものが必要です。
# 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
または直接何か、つまり、入力のブロックをスキップして、パーティションが配置されている場所から読み取りを開始します。ただし、ループデバイスを使用して実際のパーティションを表示する方が適しています。
あなたはできる:
Sudo partx --add -v 2013-02-09-wheezy-raspbian.img
# time Sudo dd if=/dev/loop0p1 |pv -s 80M |Sudo dd of=/dev/sdc1
time Sudo dd if=/dev/loop0p2 |pv -s 4G |Sudo dd of=/dev/sdc2
Sudo partx --delete -v /dev/loop0
これで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
または、1つのコマンドでそれを行うこともできます
dd if=2013-02-09-wheezy-raspbian.img of=/dev/sdc2 bs=512 skip=122880
書き込む前に、/ dev/sdc2をアンマウントしてください。
losetup -fP yourImage.img
dd
を使用する必要がある場合は、dd if=/dev/loop0p1 of=image.img
を使用できますが、cat
の方が良いと思います。ルートシェルでは、単にcat /dev/loop0p1 > image.img
を実行します。どちらの例も、最初のパーティションが必要であり、割り当てられたループバックデバイスが/dev/loop0
であると想定しています。losetup -d /dev/loop0
を使用してデバイスを切り離すことができます。ここでも、/dev/loop0
がループバックデバイスであると想定しています。このようなものはうまくいくはずです:
dd if=/path/to/2013-02-09-wheezy-raspbian.img2 of=/dev/sdc2 bs=4096 conv=notrunc,noerror
if=複製するイメージを設定します
of=イメージのクローンを作成するターゲットパーティションを設定します