2009年1月29日木曜日

PCで作成したCDをUNIXで読む

Windows で作成した CD-ROM(CD-R等)を UNIX で読むとロングファイルネームのファイルが全て 8.3形式に変わってしまっていたり、大文字ばかりになっていたり、小文字ばかりになっていたりします。

Windows で作成した CD-ROM(CD-R等) は、通常 Joliet といわれる形式になっています。Joliet は CD-ROM(CD-R等) の規格である ISO9660 を拡張して、8.3形式以外のファイル名を使えるようにしたものです。

しかし、UNIX では Joliet が認識できず、8.3形式のまま表示されてしまうことがあります。Linux は Windows と親和性が高い傾向にあるので、問題なく読んでくれるものが多いのですが、Solaris などは Joliet を認識できません。

Solaris などの UNIX では RockRidge という Joliet とは異なった規格が使われいることが原因です。

なので、Windows で作成した CD-ROM(CD-R等) を UNIX でも正しく読みたい場合は、RockRidge 形式でライティングすればいいのです。が、簡単にはできません。方法としては、以下の方法が考えられます。

  1. Windows で RockRidge 形式でライティングする。
  2. UNIX(Linux含む)で RockRidge 形式の ISO イメージを作成し Windows でライティングする。
ただ、1. は RockRidge 形式でライティングできるライティングソフトが見当たりません。(あるのかもしれませんが・・・)2. も、UNIX 環境へファイルを転送して ISO イメージを作成できるくらいなら、あえて CD-ROM(CD-R等) にする必要はありません。

主な用途としては、Windows で取得したファイルを UNIX にもっていきたいけれど、ネットワーク環境などが整っていないので CD-ROM に焼いてもっていくということなので、できるだけ Windows 環境だけで CD-ROM を作成しないといけません。そこで、以下の方法であれば、Windows 環境だけで UNIX 向けの RockRidge 形式の CD-ROM が作成できます。(反則気味ですが・・・)
  1. Cygwin で RockRidge 形式の ISO イメージを作成する。
    # mkisofs -R -J -T -o rockridge.iso ./files
    -R RockRidge 形式で ISO イメージを作成
    -J Joliet 形式で ISO イメージを作成(-R -J は同時に指定できます。)
    -T TRANS.TBL を作成(RockRidge 形式が使用できないシステム向けのロングファイルネーム情報)
    -o filename ISO イメージファイル名
    ./files ファイルが格納されているディレクトリ
    【-R -J -T を全て指定しておけば、ほぼ全てのシステムでロングファイルネームが扱えるということになります。】
    Manpage of MKISOFS
  2. RockRidge 形式 ISO イメージをライティングする。
すいません。Cygwin 使うだけでした・・・Cygwin なら Windows 上で処理できますから・・・