2002 年 9 月 1 日 (日) 自宅

DVD-ROM の文字化けの原因を探るべく、 ISO-9660 イメージファイルを作っている FreeBSD マシンで、 イメージファイル自体を ISO-9660 でマウントしてチェックを行うことにしました。

# vnconfig vn0 fb462dvd.img
# mount -t cd9660 /dev/vn0c /mnt
# cd /mnt
# cd 4.6.2-RELEASE/packages/All
# ls -1 | xargs md5 > /var/tmp/pkg.md5
# diff /var/tmp/pkg.md5 CHECKSUM.MD5 | less

[image]

ん……、化けてるよ。 ということで、 ISO-9660 イメージを作成する時点でデータ化けが起こっていることが判明しました。

[image]

しかし DVD-R に書き込むまでは、 以下のように 2 度 ftp を行っているため、 本当に ftp で問題が起こっていないかも検証するべきでしょう。

  1. イメージ作成用 FreeBSD マシンで ISO-9660 ファイルを作成
  2. それを FreeBSD マシンに ftp
  3. イメージ作成マシンを再起動して Windows XP でブート
  4. ISO-9660 ファイルをもう一度 ftp
  5. RecordNow MAX4 で DVD-R に焼く

ということで、 ftp で問題が出ていないことを確認するため、 DVD-R 焼きの Windows XP から、 二番目の FreeBSD マシンに ftp でもう一度 put し、 この MD5 チェックサムを確認すると、 全く同一であることが分かります やはり ftp は無実のようです。

[image] [image]

実は、家に帰る時点では切り分けが出来ていなかったため、 DVD-R メディアの質の可能性も考慮して、 念のためにメディアを数種類買ってきたのですが…。 間違えて DVD+R メディアも買ってしまった! やめてほしいよね、こういう紛らわしい規格を乱立させるのは…。

[image]

ちなみに、三菱と富士の DVD-R メディアはこんなやつ。

[image] [image]

で、念のために DVD-R に焼く過程まで含めて MD5 チェックサムをチェックすることにしました。 まず、イメージファイルを先ほどの手順で Windows XP に転送し、 DVD-R にイメージを書き込みます。

[image]

で、もう一度そのマシンを FreeBSD で起動し、 次のコマンドで DVD-R のイメージをファイルに保存し、MD5 チェックサムを比較します。 結果、全く同一であり、DVD-R に焼く過程も特に問題ないものであることが分かります。

# dd if=/dev/racd0c of=hoge.iso bs=2048
# md5 hoge.iso /ext/hosokawa/DVD/fb462dvd.iso

[image] [image]

また、 その DVD を FreeBSD からマウントして packages/All の下の MD5 チェックサムをとっても、 特に問題がないことが分かります。

[image]

従って、データ化けの原因は完全に切り分けが終了し、 イメージ作成時のみに特定されました。 イメージを作成していたディスクは、 先日導入した Promise のカードに接続されていた 120GB ディスクだったのですが、 何となくこの Promise のカードか、 FreeBSD の ata(4) ドライバの Promise サポート、 もしくは UltraATA ケーブルが怪しい気がする (ケーブルはカードについてきたやつなんだけど)。 ということで、イメージファイル 4.7GB を単純に同じディレクトリに cp してみて、 MD5 チェックサムをチェックしたのですが…、なんと、チェックサムが違うのです! 大ショック!!!

しかし、別の 40GB ディスクを Windows XP から扱った限りは、 Promise のカードに接続されているにも関わらず、 先ほどの ftp でのテストで分かるように問題なく動作しているんですよねー。 とりあえず、これ以上の切り分けをやっている暇はないので、 まずは 120GB ディスクで行っていた DVD-ROM のベースになるツリーを廃棄 (データの内容が信頼できないため)、 以前使用していたディスクにあるツリーをベースにもう一度作業をやりなおすことに。

しかし今度はきちんとイメージを作ったにも関わらず、 DVD-R からブートしなくなってしまいました。 そこで Web をいろいろ google で検索し、 このページを発見。 なんと、El-Torito CD-ROM ブートのためのブートイメージは、 先頭から 4GB を越える場所にあってはいけないとのこと。 まあ、CD-ROM を想定して作られた規格だから無理もないんだけど、 また 4GB かよ… (^^;。 (そういえば、最近の El-Torito って、 HDD のイメージでもブートできるらしい、と初めて知った)

そこで、DVD 用ルートディレクトリに 00boot/ というディレクトリを作り、 以下の操作をしてディレクトリエントリの順番を ASCII コード順に再度初期化します。

# mkdir ../temp
# mv .??* * ../temp/
# mv ../temp/{.??*,*} .

これで、mkisofs のオプションに -v -v (2 度) をつけ、 何セクタ目に boot.flp が来るかをきちんと確認して作ったイメージを使い、 VMware の DVD-ROM エミュレーションで起動。 その結果…無事に起動! 素晴らしい。

[image] [image]

packages/All に関する MD5 の diff も問題なし!

[image]

あとは、実際に DVD-ROM に焼いて、 実物マシンで動作チェック!

[image] [image] [image]

このときに使ったイメージファイルを置いた 40GB ディスクを、 そのまま納品メディアとすることにします。 ふう、何とか間に合ったか…。


このサイトへのリンクには何ら許可は必要ありません。 ただし、無断で写真をダウンロードして他の場所に掲載したり、 画像加工の素材として利用するなど、再配布に当たる行為はしないようにしてください。 また、このサイトへのリンクであることを明示すること無しに <img src="..."> などで他のページの内部に画像ファイルを取り込むことも、 ご遠慮下さい。