Jak zweryfikować dysk CD na podstawie obrazu ISO?


10

Mam fizycznie wypaloną płytę CD i jej oryginalny obraz ISO. Nie podano referencyjnych plików sum kontrolnych dla zawartości płyty CD. Jak sprawdzić, czy rzeczywista płyta CD jest poprawna (odpowiada oryginalnemu obrazowi) i czy jest w pełni czytelna?


Czy chcesz sprawdzić dane na płycie CD zaraz po nagraniu? Ponieważ większość narzędzi do nagrywania oprogramowania ma opcję sprawdzania zapisanych danych (wcześniej Nero).
Silviu

Wiem, ale muszę to sprawdzić nie zaraz po procedurze nagrywania, ale po pewnym czasie (po tym, jak program nagrywania został już zamknięty), może nawet na innym komputerze. O ile mi wiadomo, Nero nie oferuje inicjowania procedury weryfikacji niezależnie od procedury nagrywania - jego funkcja weryfikacji jest jedynie dodatkiem do nagrywania i może się zdarzyć dopiero po nagraniu. Chcę włożyć płytę CD, wybrać plik ISO i kliknąć, aby zweryfikować ... Kolejnym ograniczeniem jest to, że nie chcę tego robić pod Linuksem, ponieważ podejrzewam, że mój sterownik CD / IDE systemu Windows nie jest w porządku.
Ivan

To naprawdę trudne, nagrywasz bootowalną płytę CD czy czyste dane?
stokrotka

Płyta rozruchowa ..
Ivan

Do Twojej wiadomości, niektóre ISO systemu Linux mają wbudowaną opcję rozruchu w celu weryfikacji ich zawartości. Możesz użyć tej opcji, aby sprawdzić wszystkie pliki na dysku z plikiem zawierającym sumy kontrolne. Możesz także uruchomić md5sumsię i porównać, jeśli nie chcesz uruchamiać dysku CD / DVD.
Skylar Ittner,

Odpowiedzi:


5

Najpierw zgrywasz dysk CD do pliku tymczasowego:

dd if=/dev/sr0 of=copy.iso

Następnie należy sprawdzić, czy copy.isoi orig.isomają tę samą wielkość, na przykład:

stat -c '%s %n' orig.iso copy.iso

Jeśli rozmiar jest identyczny, łatwo:

sha1sum orig.iso copy.iso

Zauważyłem jednak, że w niektórych przypadkach rozmiar może się nieznacznie różnić, ponieważ w kopii lub oryginalnym obrazie występują zera końcowe. Na przykład jeśli copy.isojest mniejszy niż orig.iso:

sha1sum copy.iso
head -c $(stat -c %s copy.iso) orig.iso | sha1sum

Oczywiście powinieneś również sprawdzić, czy końcowe bajty to tylko zera:

od -j $(stat -c %s copy.iso) orig.iso

Pierwszy wiersz, z wyjątkiem przesunięcia, powinien składać się wyłącznie z zer. Druga linia powinna być gwiazdką. Gwiazdką jest unikanie pokazywania kolejnych identycznych linii.


+1 za sumy kontrolne. Jest to zazwyczaj faktyczny standard porównywania plików (lub katalogów) i nie dbający o znajomość różnic (jak ma to miejsce w przypadku diff): bardziej minimalny.
nikitautiu

lub możesz zrobić, head -c $(stat -c %s /path/to/master.iso) /dev/sr0 | sha1sumaby uniknąć konieczności tworzenia obrazu spalonej płyty CD.
Hitechcomputergeek

4

Jeśli nadal masz ISO, możesz porównać je bajt po bajcie, używając cmp. Jest to dość proste polecenie i wychodzi z pierwszej znalezionej różnicy, więc jest znacznie szybsze niż tworzenie sumy kontrolnej, jeśli rzeczywiście wystąpił błąd na początku.

cmp /dev/cdrom /path/cdrom.iso

Możliwe wyniki sukcesu:

  • brak danych wyjściowych: jest identyczny i wszystko w porządku. Możesz dołączyć && echo OKdo polecenia, jeśli brak danych wprowadza w błąd.
  • cmp: EOF on cdrom.iso: jest identyczny, ale cdrom ma więcej bajtów niż twój plik ISO. Wynika to zwykle z zerowania wypełnienia na końcu cdrom. Ponieważ w praktyce nie ma to znaczenia, nadal jest sukcesem.

Możliwe skutki niepowodzenia:

  • cmp: EOF on /dev/cdrom: z jakiegoś powodu dane na CDROM są niekompletne. Być może twoje ISO było zbyt duże, aby zmieścić się na prawdziwej płycie CD.
  • /dev/cdrom cdrom.iso differ: byte 18296321, line 71780: istnieje nieoczekiwana różnica między CDROM a obrazem ISO.

podczas gdy raporty różnic różnią się, twoja metoda cmp jest niesamowita!
qrtLs

3

Jeśli plik ISO jest taki sam, jak używany do nagrania płyty CD, oto moje dwie ulubione:

diff /dev/sr0 /tmp/file.iso

Porównuje nagrany obraz z plikiem obrazu. Jeśli czujesz się bardziej masochistyczny, możesz spróbować czegoś takiego:

sha1sum /dev/sr0 /tmp/file.iso

i porównaj podpisy. Ten jest bardziej przydatny, jeśli już gdzieś masz sumę SHA1. Oba polecenia odczytują nośnik do końca.

Jeśli chcesz to zrobić tak, jak sugeruje @ Marki555, najpierw musisz zainstalować zarówno napęd optyczny, jak i obraz. Oto kompletny skrypt: (możesz oczywiście zrezygnować z sudorootowania - ogólnie zły pomysł)

sudo mkdir /tmp/{a,b}
sudo mount /dev/sr0 /tmp/a -o ro # or whatever
sudo mount /tmp/file.iso /tmp/b -o loop,ro
diff -dur /tmp/{a,b}
sudo umount /tmp/a
sudo umount /tmp/b
sudo rmdir /tmp/{a,b}

3
cmp [-l]lepiej nadaje się do plików binarnych. Diff działa najlepiej na tekście.
derobert

2

Możesz sprawdzić, czy płyta CD jest w pełni czytelna, używając dd(na przykład dd if=/dev/cdrom of=/dev/null). Ale nie można go bezpośrednio porównać z obrazem ISO. Każde oprogramowanie utworzy nieco inny plik ISO (być może niektóre inne nagłówki lub wypełnienie), chociaż wszystkie te różne obrazy ISO zapewnią tę samą zawartość CD (struktura katalogu, atrybuty pliku i zawartość pliku).

Możesz więc zamontować tylko CD, zamontować obraz ISO i porównać go na poziomie systemu plików za pomocą jakiegoś narzędzia do porównywania katalogów (przepraszam, nie użyłem go jeszcze na Linuksie).


diff -rporównuje rekursywnie zawartość katalogu.
Kevin

5
Ponieważ płyta CD została nagrana z już przygotowanego obrazu ISO, podczas nagrywania nie ma nic innego do zbudowania, więc można bezpośrednio porównać CD z obrazem ISO.
psusi

0

Brasero może to zrobić: Narzędzia -> Sprawdź integralność ...


Brasero to aplikacja graficzna (Gnome) dostępna w dowolnej dystrybucji Linuksa. Zainstaluj go, a następnie przejdź do Edycja -> Wtyczki i zaznacz Suma kontrolna pliku (jest zaznaczona domyślnie). Zobacz tutaj
Milan Kerslager
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.