Jak sprawdzić, czy ISO zostało zapisane na mojej pamięci USB bez błędów?


11

I po tych DebianEeePC HowTo InstallUsingStandardInstaller instrukcji na Debian Wiki, aby napisać do mojego Debiana ISO USB.

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

Za pomocą sha1summogę sprawdzić sumy kontrolne pobranego pliku ISO. Jak mogę sprawdzić sumę kontrolną urządzenia pamięci USB, aby upewnić się, że pamięć USB nie ma żadnych problemów i że ISO zostało idealnie skopiowane?


USB to uniwersalna magistrala szeregowa. Z pewnością masz na myśli jakieś urządzenie podłączone do tej magistrali (np. Dysk flash, ethernet lub karta dźwiękowa)?
Stéphane Chazelas,

@StephaneChazelas, zredagował pytanie.
maxschlepzig

Odpowiedzi:


18

Możesz użyć cmpdo sprawdzenia, czy wszystko zostało dobrze skopiowane:

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

To rozwiązanie nie oblicza jawnie sumy kontrolnej twojego /dev/sdX- ale nie musisz tego robić, ponieważ już to zrobiłeś dla źródła porównania (tj debian-X-netinst.iso.).

Wykonanie tylko a dd if=/dev/sdX | sha1summoże dać niepasującą sumę kontrolną tylko dlatego, że otrzymujesz końcowe bloki ( /dev/sdXnajprawdopodobniej jest większy niż plik ISO).

Za pośrednictwem cmp -nupewnij się, że nie /dev/sdXsą porównywane żadne końcowe bajty .

Jeśli masz paranoję na punkcie jakości swojego urządzenia pamięci masowej USB, do którego dzwonisz sync, wysuń go, włóż ponownie, a następnie wykonaj porównanie - w przeciwnym razie wszystkie lub niektóre bloki mogą pochodzić z jądra VM (pamięci podręcznej) - w rzeczywistości być może bitów na sprzęcie są zepsute.


1
No hej! Kiedy to robię, otrzymuję natychmiastowe niedopasowanie na pierwszej linii. Co może być przyczyną?
SarpSTA

3

Odpowiedź Juliena spełnia swoje zadanie, ale istnieje prostszy i szybszy sposób:

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

Tak więc w jednym wierszu:head -c $(stat -c '%s' the.iso) /dev/sdc | sha1sum
Julien Palard

3

Wystarczy użyć ddi md5sum/ sha1sum, ale, jak powiedziano wcześniej, bądź ostrożny, twoje urządzenie nie jest tego samego rozmiaru co plik, więc sumy będą się różnić.

Oto jak możesz to zrobić

Najpierw musisz znać rozmiar pliku:

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

Następnie, aby zachować spokój ze swoimi syscallami, lepiej uzyskać to jako wielokrotność ładnej potęgi dwóch takich jak 4096, mnożenie dwóch MUSI dać dokładnie rozmiar pliku, innymi słowy, zaznaczysz za mało lub za dużo bajtów, co daje złą sumę kontrolną.

$ bc
bc 1.06.95
scale = 9
1003487232 / 4096
244992.000000000

Jestem szczęśliwy, 4096 × 244992 = 1003487232więc 4096 jest dla mnie dobry (i prawdopodobnie dla ciebie), więc mogę użyć rozmiaru bloku 4096(typowego) i liczby bloków 244992.

Nie zapomnij zapisać pliku na kluczu USB ...

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

I wiedz, używając znanego rozmiaru bloku i liczby bloków, możesz odczytać dokładną liczbę bajtów z klucza i sprawdzić je:

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

(Tak, md5sumjest o wiele szybszy niż, sha1sumale to oczywiście nie jest twoje wąskie gardło, wąskie gardło to przepustowość USB, dziękuję za zauważenie).

Lub w skrócie:

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

Dzięki $ dd if=/dev/sdb1 bs=4096 count=<filesize/4096> | md5sum , mogłem sprawdzić md5sum obrazu Debiana zapisanego na pendrivie i porównać go z md5sums Debiana.
Paul Rougieux,

0

Na podstawie odpowiedzi @Kyle Jones

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

powinieneś użyć, md5sumponieważ jest szybszy niż sha1sum(pozwoli to zaoszczędzić czas podczas sprawdzania dużego pliku)


6
Masz na myśli, że md5sumjest co najmniej dwa razy szybszy? Musi tak być, ponieważ OP ma już sha1sumstronę pobierania i nie musi tego obliczać. A odczyt z USB będzie czynnikiem ograniczającym, a nie obliczeniem sha1 / md5.
Anthon

1
Używam ZFS z sumą kontrolną SHA-256 w systemie średniego zasięgu pod względem mocy obliczeniowej. Nawet podczas szorowania (który odczytuje wszystkie dane i weryfikuje wszystkie sumy kontrolne) w pulach rezydujących na wirującej rdzie, czynnikiem ograniczającym jest przepustowość operacji we / wy dysku, a nie procesor. Wątpię, aby wiele kart pamięci USB wytrzymało znacznie lepszą przepustowość, szczególnie jeśli jest podłączone przez USB 2.0.
CVn
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.