Wie überprüfe ich, ob die ISO fehlerfrei auf meinen USB-Stick geschrieben wurde?

10

Ich habe diese Anweisungen von DebianEeePC HowTo InstallUsingStandardInstaller im Debian-Wiki befolgt , um eine Debian-ISO auf meinen USB zu schreiben.

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

Mit sha1sumkann ich die Prüfsummen meiner heruntergeladenen ISO-Datei überprüfen. Wie kann ich die Prüfsumme des USB-Sticks überprüfen, um sicherzustellen, dass der USB-Stick keine Probleme hat und die ISO perfekt kopiert wurde?

Dorf
quelle
USB ist ein universeller serieller Bus. Sicherlich meinen Sie eine Art Gerät, das an diesen Bus angeschlossen ist (wie ein Flash-Laufwerk, ein Ethernet oder eine Soundkarte)?
Stéphane Chazelas
@StephaneChazelas, hat die Frage bearbeitet.
Maxschlepzig

Antworten:

17

Sie können cmpdamit überprüfen, ob alles einwandfrei kopiert wurde:

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

Diese Lösung berechnet nicht explizit die Prüfsumme von Ihnen /dev/sdX- aber Sie müssen dies nicht tun, da Sie dies bereits für die Quelle des Vergleichs getan haben (dh debian-X-netinst.iso).

Wenn Sie nur a ausführen, dd if=/dev/sdX | sha1sumkann dies zu einer falsch übereinstimmenden Prüfsumme führen, nur weil Sie nachfolgende Blöcke erhalten ( /dev/sdXwahrscheinlich größer als die ISO-Datei).

Stellen cmp -nSie sicher, dass keine nachgestellten Bytes auf Ihrem /dev/sdXverglichen werden.

Wenn Sie in Bezug auf die Qualität Ihres von Ihnen aufgerufenen USB-Massenspeichergeräts paranoid sind sync, werfen Sie es aus, setzen Sie es erneut ein und führen Sie dann den Vergleich durch - andernfalls stammen möglicherweise alle oder einige Blöcke nur von der Kernel-VM (Cache) -, wenn in Wirklichkeit möglicherweise Bits vorhanden sind auf der Hardware sind vermasselt.

maxschlepzig
quelle
1
Sie da! Wenn ich das mache, erhalte ich sofort eine Nichtübereinstimmung in der ersten Zeile. Was kann die Ursache sein?
SarpSTA
3

Juliens Antwort macht den Job, aber es gibt einen einfacheren und schnelleren Weg, dies zu tun:

sudo head -c <image size> /dev/sdX | sha1sum
Lucas
quelle
Also, in einer einzigen Zeile:head -c $(stat -c '%s' the.iso) /dev/sdc | sha1sum
Julien Palard
3

Es reicht aus, nur ddund md5sum/ zu verwenden sha1sum, aber wie bereits erwähnt, seien Sie vorsichtig, Ihr Gerät hat nicht die gleiche Größe wie Ihre Datei, sodass die Summen unterschiedlich sind.

Hier, wie Sie es noch tun können

Zuerst müssen Sie die Größe der Datei kennen:

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

Um mit Ihren Syscalls cool zu sein, sollten Sie dies als Vielfaches einer schönen Zweierpotenz erhalten 4096. Die Multiplikation der beiden MUSS genau die Größe der Datei ergeben. Auf andere Weise überprüfen Sie zu wenig oder zu viele Bytes, was zu einer falschen Prüfsumme führt.

$ bc
bc 1.06.95
scale = 9
1003487232 / 4096
244992.000000000

Ich bin glücklich, 4096 × 244992 = 1003487232also ist 4096 gut für mich (und wird es wahrscheinlich für Sie tun), damit ich eine Blockgröße von 4096(typisch) und eine Blockanzahl von verwenden kann 244992.

Vergessen Sie nicht, die Datei auf den USB-Stick zu schreiben ...

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

Und wissen Sie, dass Sie anhand der bekannten Blockgröße und der Blockanzahl die genaue Anzahl der Bytes aus dem Schlüssel ablesen und überprüfen können:

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

(Ja md5sumist viel schneller als, sha1sumaber das ist hier eindeutig nicht Ihr Engpass. Der Engpass ist der USB-Durchsatz, danke, dass Sie es bemerkt haben.)

Oder kurz gesagt:

dd if=/dev/sdb bs=4096 count=$(($(stat -c '%s' the.iso) / 4096)) | sha1sum
Julien Palard
quelle
Dank mit $ dd if=/dev/sdb1 bs=4096 count=<filesize/4096> | md5sum konnte ich die md5sum eines Debian-Bildes überprüfen, das auf einen USB-Stick geschrieben wurde, und es mit Debian md5sums vergleichen.
Paul Rougieux
0

Basierend auf der Antwort von @Kyle Jones

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

Sie sollten verwenden, md5sumweil es schneller ist als sha1sum(dies spart Zeit, wenn Sie große Dateien überprüfen)

HVNSweeting
quelle
6
Du meinst md5sumist mindestens doppelt so schnell? Es muss sein, dass das OP bereits das sha1sumvon der Download-Site hat und das nicht berechnen muss. Und das Lesen von USB wird ein begrenzender Faktor sein, nicht die sha1 / md5-Berechnung.
Anthon
1
Ich verwende ZFS mit SHA-256-Prüfsumme auf einem verarbeitungsleistungsfähigen Mittelklassesystem. Selbst während Scrubs (die alle Daten lesen und alle Prüfsummen überprüfen) in Pools, die sich auf rotierendem Rost befinden, ist der begrenzende Faktor der E / A-Durchsatz der Festplatte und nicht die CPU. Ich bezweifle, dass viele USB-Speichersticks einen viel besseren Durchsatz erzielen, insbesondere wenn sie über USB 2.0 angeschlossen sind.
ein CVn