ISOがUSBドライブに正しく記録されていることを確認するにはどうすればよいですか?

ISOがUSBドライブに正しく記録されていることを確認するにはどうすればよいですか?

フォローするこれら 標準インストーラを使用してDebianEeePCをインストールする方法私のUSBにDebian ISOを書くDebian Wikiの指示です。

dd if=debian-*-netinst.iso of=/dev/sdX

を使用すると、sha1sumダウンロードしたISOファイルのチェックサムを確認できます。 USBスティックに問題がなく、ISOが完全にコピーされたことを確認するために、USBスティックデバイスのチェックサムをどのように確認できますか?

答え1

これを使用して、cmpすべてがうまくコピーされたことを確認できます。

$ cmp -n `stat -c '%s' debian-X-netinst.iso` debian-X-netinst.iso /dev/sdX

この解決策は - のチェックサムを明示的に計算しませんが、/dev/sdX比較ソース(たとえばdebian-X-netinst.iso

単に末尾のブロック(isoファイルより大きい可能性が高い)dd if=/dev/sdX | sha1sumを取得するため、単純に一致しないチェックサムが生成される可能性があります。/dev/sdX

末尾のバイトを比較しcmp -nないでください。/dev/sdX

呼び出す USB 大容量記憶装置の品質に編集証がある場合は、デバイスを取り出し、再度挿入して比較しますblockdev --flushbufs /dev/sdX。それ以外の場合、ブロックの全部または一部がカーネルVM(キャッシュ)から取得された可能性があり、実際にはすべてのビットハードウェアが壊れていました。

答え2

Julienの答えは仕事をしますが、より簡単で迅速な方法があります。

sudo head -c <image size> /dev/sdX | sha1sum

答え3

ddおよびmd5sum/のみ使用すれsha1sumば十分ですが、前述のようにデバイスのファイルサイズが異なるため、合計が異なる場合がありますのでご注意ください。

ここではまだできます。

まず、ファイルのサイズを知る必要があります。

$ stat -c '%s' debian-live-8.2.0-amd64-lxde-desktop.iso
1003487232

その後、システムコールをより良くするには、2の倍数にすることをお勧めします。たとえば、40962つの製品の積はファイルサイズとまったく同じでなければなりません。それ以外の場合は、少なすぎるか少なすぎるかどうかを確認します。多くのバイト 多くの場合、無効なチェックサムが生成されます。

$ bc
bc 1.06.95
scale = 9
1003487232 / 4096
244992.000000000

嬉しいですね。4096 × 244992 = 10034872324096が私にとっては良く(おそらくあなたには良いようです)、ブロックサイズ4096(一般)とブロック数を使用できます244992

USBキーにファイルを書き込むことを忘れないでください...

$ dd if=debian-live-8.2.0-amd64-lxde-desktop.iso of=/dev/sd? && sync

既知のブロックサイズとブロック数を使用すると、キーから正しいバイト数を読み取って確認できます。

$ dd if=/dev/sdb bs=4096 count=244992 | sha1sum
b0dbe4ca8f526d1e43555459c538607d4a987184

(はい、md5sumそれよりはるかに高速ですが、明らかにsha1sumボトルネックではありません。ボトルネックはUSBスループットです。ご理解いただきありがとうございます。)

または短く言うと:

dd if=/dev/sdb bs=4096 count=$(($(stat -c '%s' the.iso) / 4096)) | sha1sum

答え4

@Kyle Jonesの回答に基づいて

diff <(md5sum debian-XYZ-netinst.iso | awk '{print $1}') <(dd if=/dev/sdX | md5sum | awk '{print $1}')

md5sumより高速なので、使用する必要がありますsha1sum(大容量ファイルを確認するときは時間が節約されます)。

関連情報