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


10

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


書き込み直後にCDのデータをチェックするつもりですか?ほとんどの書き込みソフトウェアツールには、書き込まれたデータをチェックするオプションがあります(Neroなど)。
Silviu

私は知っていますが、書き込み手順の直後ではなく、しばらくして(書き込みプログラムが既に閉じられた後)、別のPCでもチェックを実行する必要があります。私の知る限り、Neroは書き込み手順とは独立して検証手順を開始することを提案していません。検証機能は書き込み用のアドオンにすぎず、書き込み直後にのみ実行できます。私が欲しいのは、CDを挿入し、ISOファイルを選択してクリックして確認することです...別の制約は、私のWindows CD / IDEドライバーに問題があると思われるため、Linuxでこれを実行しないことです。
Ivan

これは本当に難しいことです。起動可能なCDまたは純粋なデータを書き込みますか?
デイジー

ブータブルCD ..
Ivan

ちなみに、一部のLinux ISOには、内容を確認するための組み込みのブートオプションがあります。このオプションを使用すると、チェックサムを含むファイルに対してすべてのディスクのファイルがチェックされます。md5sumCD / DVDを起動したくない場合は、自分で実行して比較することもできます。
Skylar Ittner

回答:


5

まず、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

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


チェックサムの+1。これは通常、ファイル(またはディレクトリ)を比較するための事実上の標準であり、(diffの場合のように)違いを知る必要はありません。
nikitautiu 2012

またはhead -c $(stat -c %s /path/to/master.iso) /dev/sr0 | sha1sum、焼き付けたCDのイメージを作成する必要がないようにすることができます。
Hitechcomputergeek 16

4

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

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}

3
cmp [-l]バイナリファイルに適しています。Diffはテキストに最適です。
derobert 2012

3

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

cmp /dev/cdrom /path/cdrom.iso

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

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

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

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

diffが 'differ'を報告している間、あなたのcmpメソッドは素晴らしいです!
qrtLs

2

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

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


diff -rディレクトリの内容を再帰的に比較します。
ケビン

5
CDは既に準備されたISOイメージから書き込まれたため、書き込み時に別の方法でビルドする必要はないため、CDとISOイメージを直接比較できます。
psusi

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.