web-dev-qa-db-ja.com

ISOイメージに対してCDを検証する方法は?

物理的に焼き付けたCDとその元のISOイメージを持っています。 CDコンテンツの参照チェックサムファイルは提供されませんでした。実際のCDが正しく(元のイメージに対応)、完全に読み取り可能であることを確認するにはどうすればよいですか?

10
Ivan

まず、CDを一時ファイルにリッピングします。

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

次に、copy.isoorig.isoが同じサイズかどうかを確認します。たとえば、次のようにします。

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

サイズが同じであれば簡単です。

sha1sum orig.iso copy.iso

ただし、コピーまたは元の画像のいずれかに後続ゼロが存在するため、サイズが多少異なる場合があることに気付きました。たとえば、copy.isoorig.isoより小さい場合:

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

もちろん、後続バイトがゼロであることも確認する必要があります。

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

オフセットを除いて、最初の行はゼロのみでなければなりません。 2行目はアスタリスクである必要があります。アスタリスクは、連続する同一の行を表示しないようにするためのものです。

5
Francesco Turco

ISOファイルがCDの書き込みに使用されたものと同じである場合、以下が私の2つのお気に入りです。

diff /dev/sr0 /tmp/file.iso

記録された画像を画像ファイルと比較します。あなたがもう少しマゾヒズムを感じるなら、あなたはこのようなことを試すことができます:

sha1sum /dev/sr0 /tmp/file.iso

署名を比較します。これは、SHA1サムがすでにどこかにある場合に、より便利です。どちらのコマンドもメディアを最後まで読み取ります。

@ Marki555が提案する方法でそれを行う場合は、最初に光学ドライブとイメージの両方をマウントする必要があります。これが完全なスクリプトです:(もちろん、rootであれば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
Alexios

ISOがまだある場合は、cmpを使用してバイト単位でISOを比較できます。これは単純なコマンドであり、最初に見つかった違いで終了するので、実際に早い段階で実際にエラーが発生した場合にチェックサムを作成するよりもかなり高速です。

cmp /dev/cdrom /path/cdrom.iso

成功の可能性のある結果:

  • 出力なし:同一であり、すべて問題ありません。出力がないために混乱する場合は、コマンドに&& echo OKを追加できます。
  • cmp: EOF on cdrom.iso:同一ですが、CD-ROMにはISOファイルよりも多くのバイトがあります。これは通常、CD-ROMの最後のゼロパディングが原因です。それは実際には問題ではないので、それはまだ成功です。

失敗した場合の考えられる結果:

  • cmp: EOF on /dev/cdrom:何らかの理由で、CDROMのデータが不完全です。 ISOが大きすぎて実際のCDに収まらない可能性があります。
  • /dev/cdrom cdrom.iso differ: byte 18296321, line 71780:CDROMとISOイメージの間に予期しない違いがあります。
3
frostschutz

ddを使用して、CDが完全に読み取り可能であることを確認できます(例:dd if=/dev/cdrom of=/dev/null)。ただし、ISOイメージと直接比較することはできません。これらの異なるISOイメージはすべて同じCDコンテンツ(ディレクトリ構造、ファイル属性、およびファイルコンテンツ)を提供しますが、各ソフトウェアはわずかに異なるISOファイル(おそらくいくつかの異なるヘッダーまたはパディング)を作成します。

したがって、CDをマウントし、ISOイメージをマウントし、ある種のディレクトリ比較ツールを使用してファイルシステムレベルで比較することしかできません(申し訳ありませんが、Linuxではまだ使用していません)。

2
Marki555