次のような8GB USBドライブがシステムに接続されています。
[root@Host]# fdisk -l /dev/sdb
Disk /dev/sdb: 8462 MB, 8462008320 bytes
255 heads, 63 sectors/track, 1028 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x5c0894d9
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 9 72261 e W95 FAT16 (LBA)
/dev/sdb2 10 103 755055 83 Linux
[root@Host]#
したがって、基本的に私のFATパーティションは約70 MB、ext2パーティションは約740MB、残りのスペース(約7 GB)は未割り当てです。 USBハードドライブをddすると、次のようになります。
dd if=/dev/sdb of=myimage.img bs=1M
出力ファイル(myimage.img)は約8GBで、ddの通常の操作です。
質問:私が探しているのは、割り当てられていないスペースなしでUSBハードドライブを直接複製して、結果ファイルが約1 GBになるようにする方法です非圧縮 8 GBではなく==。私が尋ねる理由は、出力ファイル(myimage.img)がシミュレータープログラムによってイメージを起動するために使用されているためです。シミュレータは8 GBのファイルを処理できますが、ディスク領域を無駄にしたくありません。
私が正しく理解していれば、ディスクの先頭から最後のパーティションの末尾までのイメージを作成する必要があります。
これを行うdd
のパラメーターはcount=
です。最後のパーティションは103で終わり、カウントは1(104)追加する必要があり、ユニットサイズは8225280バイトです(fdisk -l
出力によると)。したがって、次のようにコマンドを変更するだけです。
dd if=/dev/sdb of=myimage.img bs=8225280 count=104
ただし、代わりにfdisk -u -l /dev/sdb
を実行することをお勧めします。シリンダーはこの時代にはもうあまり重要ではないので、丸めエラーを回避するためにセクター数を確認することをお勧めします。次に、実行する必要があります:
dd if=/dev/sdb of=myimage.img count=...
ここで、countは、最後のパーティションの最後にfdisk -u -l
から取得した数に設定されます。以前は104であったものではなく、プラス1です。dd
は512バイトです。これは、fdisk -u -l
が出力で使用する単位でもあります。
GPTパーティションのバックアップパーティションテーブルはディスクの最後に保存されますが、GPTを使用していないので問題ありません。
必要なドライブの一部のみを読み取るようにddに指示する必要があるだけです。探しているパラメーターはcount
です。
したがって、8,225,280のシリンダーサイズに103を使用しているシリンダーの数を掛けると、847,203,840バイトになります。 1メガバイトのブロックサイズを使用しているので、そのバイトをメガバイト(808)に変換します。
したがって、コマンドはdd if=... of=... bs=1M count=808