Solaris/Linux/FreeBSDでCD-Rを焼こう

YAMAMORI Takenori ●yamamori

§研究編 [ISO9660/RockRidge/Jolietの詳細]

●CD-ROMの内容を,マウントせずにリストする“liso.c”の作成

以上のように,CD-ROMには,普通にマウントして見られる情報以外の 様々なデータが記録されています.そこで,それらのデータを マウントせずに表示するためのツールを,ISO9660の理解を兼ねて 作成してみました.名付けて“liso.c”(list ISO)です.

このプログラムは,極力少ないソースの行数で, 効果的にCD-ROMの内容を表示するようにしました. コンパイル時には,mkisofs-1.12のソースの中に含まれる,“iso9660.h”を カレントディレクトリにコピーする必要があります.

このプログラムを使って,手持ちのいろいろなCD-ROMの 内部情報を表示させてみるとおもしろいと思います. 普通にマウントして見えるファイル情報以外のものが見えます. 「あの雑誌の付録のCD-ROMは実はこういう状態で焼かれていたのか」 とかわかります.

なお,ISO9660のパステーブルは,表示しても面白みがなかったので 表示していません.

このプログラムは,非常に簡略化して作成したため, 以下のような注意事項があります.

また,実際にISO9660関係のプログラムを作ってみると, そのデータ構造が実はイマイチであることもわかります.
(コラム「ちょっとハズシのISO9660データ構造」参照)

liso”の実行例を以下に示します.

●“liso”の実行例
$ liso /dev/cdrom
---------------- type = 1 "CD001" ---   ← PVDの内容を表示
            system_id = LINUX                           
            volume_id = CDROM                           
        volume_set_id =
      path_table_size = 0000000a
    type_l_path_table = 00009800
         publisher_id =
          preparer_id =
       application_id = MKISOFS ISO 9660 FILESYSTEM BUILDER & CDRECORD CD-R/DVD CREATOR
    copyright_file_id =                                      
     abstract_file_id =                                      
bibliographic_file_id =                                      
        creation_date = 04/10/2000 01:21:34.00 +0000
    modification_date = 04/10/2000 01:21:34.00 +0000
      expiration_date = 00/00/0000 00:00:00.00 +0000
       effective_date = 04/10/2000 01:21:34.00 +0000

---------------- type = 2 "CD001" ---   ← SVD(Joliet)の内容を表示
            system_id = LINUX           
            volume_id = CDROM           

〜〜〜〜〜〜〜〜 省略 〜〜〜〜〜〜〜〜

------- ISO 9660 (Rock Ridge)           ← ISO9660(RockRidge)の
                                           ディレクトリレコードの始まり

〜〜〜〜〜〜〜〜 省略 〜〜〜〜〜〜〜〜
                        ISO9660の        タイム ISO9660の     RockRidgeの
開始位置  サイズ フラグ タイムスタンプ   ゾーン ファイル名    エントリ
   ↓       ↓    ↓      ↓               ↓      ↓         ↓
0000f000 22d4e3bc 00 04/09/2000 18:44:00 +0000 HOME_TAR.GZ;1  RR NM PX TF 
  修正時刻 →  mtime=04/09/2000 18:44:00 +0000 home.tar.gz      ← RockRidgeの
  参照時刻 →  atime=04/10/2000 00:34:16 +0000 100444 1 1000/1000  ファイル名
ステータス →  ctime=04/09/2000 19:45:08 +0000   ↑   ↑     ↑
  更新時刻                                  ファイル リンク   uid/gid
(上記3つの時刻はいずれもRockRidgeのデータ)  モード カウント

〜〜〜〜〜〜〜〜 省略 〜〜〜〜〜〜〜〜

------- Joliet                          ← Jolietの
                                           ディレクトリレコードの始まり

〜〜〜〜〜〜〜〜 省略 〜〜〜〜〜〜〜〜
                                         タイム Jolietの
開始位置  サイズ フラグ タイムスタンプ   ゾーン ファイル名
   ↓       ↓    ↓      ↓               ↓      ↓
0000e000 00000800 02 04/10/2000 01:19:15 +0000 .              
0000e000 00000800 02 04/10/2000 01:19:15 +0000 ..             
0000f000 22d4e3bc 00 04/09/2000 18:44:00 +0000 home.tar.gz    
22d5d800 02e2aaad 00 04/09/2000 16:31:13 +0000 web.tar.gz     

〜〜〜〜〜〜〜〜 省略 〜〜〜〜〜〜〜〜

To 『Solaris/Linux/FreeBSDでCD-Rを焼こう』index


このページは、技術評論社 SoftwareDesign 2000年6月号、『CD-R/CD-ROM完全ガイド』の原稿を元に、Web 用に再構成したものです。
To 謎の処理系 SunOS 4.1.4 Home
yamamori