Solaris/Linux/FreeBSDでCD-Rを焼こう |
YAMAMORI Takenori ●yamamori |
§研究編 [ISO9660/RockRidge/Jolietの詳細]
以上のように,CD-ROMには,普通にマウントして見られる情報以外の 様々なデータが記録されています.そこで,それらのデータを マウントせずに表示するためのツールを,ISO9660の理解を兼ねて 作成してみました.名付けて“liso.c”(list ISO)です.
このプログラムは,極力少ないソースの行数で, 効果的にCD-ROMの内容を表示するようにしました. コンパイル時には,mkisofs-1.12のソースの中に含まれる,“iso9660.h”を カレントディレクトリにコピーする必要があります.
このプログラムを使って,手持ちのいろいろなCD-ROMの 内部情報を表示させてみるとおもしろいと思います. 普通にマウントして見えるファイル情報以外のものが見えます. 「あの雑誌の付録のCD-ROMは実はこういう状態で焼かれていたのか」 とかわかります.
なお,ISO9660のパステーブルは,表示しても面白みがなかったので 表示していません.
このプログラムは,非常に簡略化して作成したため, 以下のような注意事項があります.
また,実際にISO9660関係のプログラムを作ってみると,
そのデータ構造が実はイマイチであることもわかります.
(コラム「ちょっとハズシのISO9660データ構造」参照)
“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 〜〜〜〜〜〜〜〜 省略 〜〜〜〜〜〜〜〜 |