未割り当てパーティションのないUSBドライブのイメージを作成します


13

次のような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)は、DDの通常の操作である約8GBです。

質問:私は何を探していますが、私の結果ファイルは、GBは約1となるように、直接、未割り当て領域なしで私のUSBハードドライブのクローンを作成する方法です解凍代わりに8ギガバイトの。私が尋ねる理由は、出力ファイル(myimage.img)がシミュレータープログラムによってイメージを起動するために使用されているためです。シミュレータは8 GBのファイルを処理できますが、ディスク領域を無駄にしたくありません。


1
これは、興味深い解決策と多少似た問題です:serverfault.com/q/281628/141604

回答:


15

私が正しく理解していれば、ディスクの先頭から最後のパーティションの末尾までのイメージを作成する必要があります。

そのためのパラメーター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は、以前の104の代わりfdisk -u -lに、最後のパーティションの最後に取得した数+ 1に設定されます。のデフォルトのブロックサイズddは512バイトで、これはfdisk -u -l出力で使用される単位でもあります。

GPTパーティションのバックアップパーティションテーブルはディスクの最後に保存されますが、GPTを使用していないので問題ありません。


2

必要なドライブの部分だけを読み取るようにddに指示する必要があるだけです。探しているパラメーターはですcount

したがって、シリンダーサイズを8,225,280にして、103を使用しているシリンダーの数を掛けると、847,203,840バイトになります。1メガバイトのブロックサイズを使用しているので、そのバイトをメガバイト(808)に変換します。

だからあなたのコマンドは dd if=... of=... bs=1M count=808

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.