Как проверить CD против ISO-образа?

Когда x86_64 иначе amd64 архитектура был представлен в дереве ядра Linux, это было в отдельном поддереве от i386. Таким образом, было arch/i386/kernel/trampoline.S на одной стороне и arch/x86_64/kernel/trampoline.S с другой стороны.

Эти две архитектуры была объединена в 2.6.24. Это было сделано, потому что было много кода вместе — в конце концов, все x86-64 процессоры являются x86 процессорами. В то время PPC и ppc64 были уже вместе, и было решено объединить x86 и x86-64 также в сингл x86 архитектура.

Некоторые файлы характерны для одного или другой подархитектуры, таким образом, эти две версии остаются друг вместе с другом: arch/x86/kernel/trampoline_32.S перемещенный от arch/i386/kernel/trampoline.S и arch/x86/kernel/trampoline_64.S перемещенный от arch/x86_64/kernel/trampoline.S.

10
23.07.2014, 22:42
5 ответов

Если файл ISO - тот же, раньше записывал CD, то вот мои два фаворита:

diff /dev/sr0 /tmp/file.iso

Сравнивает зарегистрированное изображение с файлом изображения. Если Вы чувствуете себя более мазохистскими, Вы могли бы попробовать что-то вроде этого:

sha1sum /dev/sr0 /tmp/file.iso

и сравните подписи. Это более полезное, если у Вас уже есть сумма SHA1 где-нибудь. Обе команды прочитают носитель в конец.

Если Вы хотите сделать это, путь @Marki555 предлагает, Вы захотите смонтировать и оптический диск и отобразить сначала. Вот полный сценарий: (можно, конечно, обойтись без sudo если Вы - корень — плохая идея, в целом),

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}
4
27.01.2020, 20:02
  • 1
    cmp [-l] лучше подходит для двоичных файлов. Разность работает лучше всего над текстом. –  derobert 11.09.2012, 18:21

Можно проверить, что CD полностью читаем при помощи dd (например, dd if=/dev/cdrom of=/dev/null). Но Вы не можете сравнить его непосредственно с ISO-образом. Каждое программное обеспечение создаст немного отличающийся файл ISO (возможно, некоторые различные заголовки, или дополняющий), хотя эти различные ISO-образы все обеспечат то же содержание CD (структура каталогов, атрибуты файла и содержание файла).

Таким образом, можно только смонтировать CD, смонтировать ISO-образ и сравнить его на уровне файловой системы при помощи некоторого инструмента сравнения каталога (извините, я еще не использовал никого на Linux).

2
27.01.2020, 20:02
  • 1
    diff -r сравнит содержание каталога рекурсивно. –  Kevin 27.05.2012, 23:37
  • 2
    Так как CD был записан из уже подготовленного изображения ISO, нет ничего, чтобы быть созданным по-другому при записи, таким образом, можно непосредственно сравнить CD с изображением ISO. –  psusi 28.05.2012, 05:35

Во-первых, Вы разрываете свой CD во временный файл:

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

Затем Вы проверяете если copy.iso и orig.iso имейте тот же размер, например, с:

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

Если размер идентичен, это легко:

sha1sum orig.iso copy.iso

Но я заметил, что в определенных случаях размер может немного отличаться, потому что существуют конечные нули или в копии или в исходном изображении. Например, если copy.iso меньше, чем orig.iso:

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

Конечно, необходимо также проверить, что запаздывающие байты, просто обнуляет:

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

Первая строка, за исключением смещения, должна быть, обнуляет только. Вторая строка должна быть звездочкой. Звездочка должна постараться не показывать последовательные идентичные строки.

5
27.01.2020, 20:02
  • 1
    +1 для контрольных сумм. Это обычно - фактический стандарт для сравнения файлов (или каталоги) и не забота о знании различий (как имеет место с разностью): более минимальный. –  nikitautiu 11.09.2012, 16:22
  • 2
    или Вы можете сделать head -c $(stat -c %s /path/to/master.iso) /dev/sr0 | sha1sum постараться не должным быть сделать изображение записанного CD. большое спасибо –  Hitechcomputergeek 21.12.2016, 23:57

Если у Вас все еще есть ISO, Вы можете сравнить их байт за байтом, используя cmp. Это достаточно простая команда, и она выходит на первой найденной разнице, так что это значительно быстрее, чем делать контрольную сумму, если на самом деле есть ошибка на ранней стадии.

cmp /dev/cdrom /path/cdrom.iso

Возможные результаты при успешном выполнении:

  • нет вывода: она идентична и все в порядке. Вы можете добавить && эхо OK к команде, если отсутствие вывода сбивает вас с толку.
  • cmp: EOF на cdrom.iso: идентично, но cdrom имеет больше байт, чем ваш iso-файл. Обычно это происходит из-за нулевой набивки в конце cdrom. Так как на практике это не имеет значения, это все равно успешно.

Возможные результаты на неудачу:

  • cmp: EOF на /dev/cdrom: по каким-то причинам данные на вашем компакт-диске неполные. Возможно, ваш ISO был слишком велик, чтобы поместиться на настоящий CD.
  • /dev/cdrom cdrom.iso отличается: байт 18296321, строка 71780: есть некоторая неожиданная разница между вашим CDROM'ом и ISO-образом.
3
27.01.2020, 20:02

Брасеро может это сделать :Инструменты -> Проверить целостность...

0
27.01.2020, 20:02

Теги

Похожие вопросы