Comment vérifier si l'ISO a été écrite sur ma clé USB sans erreur?

11

J'ai suivi ces instructions de DebianEeePC HowTo InstallUsingStandardInstaller sur le wiki Debian, pour écrire une ISO Debian sur mon USB.

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

À l'aide de sha1sum, je peux vérifier les sommes de contrôle de mon fichier ISO téléchargé. Comment puis-je vérifier la somme de contrôle de la clé USB, pour être sûr que la clé USB ne pose aucun problème et que l'ISO a été parfaitement copiée?

Village
la source
USB est un bus série universel. Vous voulez certainement dire une sorte de périphérique connecté à ce bus (comme un lecteur flash, Ethernet ou une carte son)?
Stéphane Chazelas
@StephaneChazelas, a édité la question.
maxschlepzig

Réponses:

18

Vous pouvez utiliser cmppour vérifier si tout a bien été copié:

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

Cette solution ne calcule pas explicitement la somme de contrôle de votre /dev/sdX- mais vous n'avez pas besoin de le faire car vous l'avez déjà fait pour la source de la comparaison (c'est-à-dire debian-X-netinst.iso).

Faire juste un dd if=/dev/sdX | sha1sumpeut produire une somme de contrôle de mauvaise correspondance simplement parce que vous obtenez des blocs de fin ( /dev/sdXest probablement plus grand que le fichier iso).

Via cmp -nvous vous assurez qu'aucun octet de fin sur votre /dev/sdXn'est comparé.

Si vous êtes paranoïaque à propos de la qualité de votre périphérique de stockage de masse USB que vous appelez sync, éjectez-le, réinsérez-le, puis faites la comparaison - sinon tout ou partie des blocs peuvent simplement provenir de la VM des noyaux (cache) - alors qu'en réalité, peut-être des bits sur le matériel sont vissés.

maxschlepzig
la source
1
Héy! Lorsque je fais cela, je reçois une incompatibilité instantanée à la toute première ligne. Quelle peut être la cause?
SarpSTA
3

La réponse de Julien fait l'affaire, mais il existe un moyen plus simple et plus rapide de le faire:

sudo head -c <image size> /dev/sdX | sha1sum
Lucas
la source
Donc, en une seule ligne:head -c $(stat -c '%s' the.iso) /dev/sdc | sha1sum
Julien Palard
3

Il suffit d'utiliser ddet md5sum/ sha1sum, mais comme dit précédemment, faites attention, votre appareil n'est pas de la même taille que votre fichier, donc les sommes seront différentes.

Voici comment vous pouvez toujours le faire

Vous devez d'abord connaître la taille du fichier:

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

Ensuite, pour être cool avec vos appels système, vous feriez mieux de l'obtenir comme un multiple d'une belle puissance de deux comme 4096, la multiplication des deux DOIT produire exactement la taille du fichier, autrement, vous vérifierez trop peu ou trop d'octets, ce qui donne une mauvaise somme de contrôle.

$ bc
bc 1.06.95
scale = 9
1003487232 / 4096
244992.000000000

Je suis heureux, 4096 × 244992 = 1003487232donc 4096 est bon pour moi (et le sera probablement pour vous), donc je peux utiliser une taille de bloc de 4096(typique) et un nombre de blocs de 244992.

N'oubliez pas d'écrire le fichier sur la clé USB ...

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

Et sachez qu'en utilisant la taille de bloc connue et le nombre de blocs, vous pouvez lire le nombre exact d'octets de la clé et les vérifier:

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

(Oui, md5sumc'est beaucoup plus rapide que sha1summais ce n'est clairement pas votre goulot d'étranglement ici, le goulot d'étranglement est le débit USB, merci de l'avoir remarqué).

Ou, en bref:

dd if=/dev/sdb bs=4096 count=$(($(stat -c '%s' the.iso) / 4096)) | sha1sum
Julien Palard
la source
Merci d' $ dd if=/dev/sdb1 bs=4096 count=<filesize/4096> | md5sum avoir pu vérifier la somme md5 d'une image Debian écrite sur une clé USB et la comparer à md5sums Debian.
Paul Rougieux
0

D'après la réponse de @Kyle Jones

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

vous devez utiliser md5sumcar il est plus rapide que sha1sum(cela vous fera gagner du temps lorsque vous vérifiez un gros fichier)

HVNSweeting
la source
6
Vous voulez dire md5sumest au moins deux fois plus rapide? Cela doit être puisque l'OP a déjà sha1sumle site de téléchargement et n'a pas à le calculer. Et la lecture depuis l'USB va être un facteur limitant et non le calcul de sha1 / md5.
Anthon
1
J'utilise ZFS avec SHA-256 checksum sur un système de milieu de gamme en termes de puissance de traitement. Même pendant les scrubs (qui lit toutes les données et vérifie toutes les sommes de contrôle) sur les pools résidant sur la rouille tournante, le facteur limitant est le débit d'E / S disque, pas le CPU. Je doute que de nombreuses clés USB conservent un débit bien meilleur que cela, en particulier si elles sont connectées via USB 2.0.
un CVn