ISOがUSBスティックにエラーなしで書き込まれたかどうかを確認するにはどうすればよいですか?


10

私は、Debian Wikiのこれらの DebianEeePC HowTo InstallUsingStandardInstallerの指示に従って、Debian ISOをUSBに書き込みました。

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

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


USBはユニバーサルシリアルバスです。確かに、そのバスに接続されているある種のデバイス(フラッシュドライブ、イーサネット、サウンドカードなど)を意味しますか?
ステファンChazelas

@StephaneChazelas、質問を編集しました。
maxschlepzig 2013年

回答:


17

cmpすべてが正常にコピーされたかどうかを確認するために使用できます。

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

このソリューションは明示的にチェックサムを計算しません/dev/sdX-比較のソース(つまりdebian-X-netinst.iso)に対してすでにこれを行っているので、それを行う必要はありません。

単にaをdd if=/dev/sdX | sha1sum実行すると、末尾のブロックが取得されるため(/dev/sdXおそらくisoファイルよりも大きいため)、不一致のチェックサムが生成される可能性があります。

cmp -nあなたを介してあなたの後続のバイト/dev/sdXが比較されていないことを確認してください。

呼び出すUSB大容量記憶装置の品質について偏執的である場合はsync、取り出して再度挿入し、比較を行います。そうでない場合、すべてまたは一部のブロックがカーネルVM(キャッシュ)からのものである可能性があります-実際にはおそらくビットハードウェア上で台無しにされています。


1
ちょっと、そこ!これを行うと、最初の行ですぐに不一致が発生します。原因は何ですか?
SarpSTA 2018年

3

ジュリアンの答えはうまくいきますが、これを行うためのより簡単で高速な方法があります。

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

したがって、1行で:head -c $(stat -c '%s' the.iso) /dev/sdc | sha1sum
Julien Palard

3

ddmd5sum/ を使用sha1sumするだけで十分ですが、前述したように、デバイスのサイズはファイルのサイズと同じではないため、合計が異なります。

ここでまだそれを行う方法

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

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

次に、syscallでクールにするには、2の2のべき乗の倍数としてこれを取得することをお勧めします。2つ4096の乗算は、ファイルのサイズを正確に生成する必要があります。他の方法では、チェックが少なすぎるか、バイトが多すぎるため、チェックサムが間違っています。

$ bc
bc 1.06.95
scale = 9
1003487232 / 4096
244992.000000000

私は嬉しい4096 × 244992 = 1003487232ので、4096は私にとって(そしておそらくあなたにとっても)良いので、ブロックサイズ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

おかげで$ dd if=/dev/sdb1 bs=4096 count=<filesize/4096> | md5sum 、usbスティックに書き込まれたDebianイメージのmd5sumをチェックして、それをDebian md5sumsと比較できました。
Paul Rougieux 2017

0

@Kyle Jonesの回答に基づく

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

md5sumより速いので使用する必要がありますsha1sum(大きなファイルをチェックするときに時間を節約できます)


6
つまりmd5sum、少なくとも2倍の速さですか?OPにsha1sumはダウンロードサイトからのが既にあり、それを計算する必要がないためです。USBからの読み取りは、sha1 / md5の計算ではなく、制限要因になります。
Anthon、2013年

1
ZFSをSHA-256チェックサムで処理能力の高いミッドレンジシステムで実行しています。回転する錆にあるプールのスクラブ(すべてのデータを読み取り、すべてのチェックサムを検証する)の間でも、制限要因はCPUではなくディスクI / Oスループットです。多くのUSBメモリスティックが、特にUSB 2.0で接続されている場合、それよりもはるかに優れたスループットを維持できるとは思えません。
CVn 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.