Solaris/Linux/FreeBSDでCD-Rを焼こう |
| YAMAMORI Takenori ●yamamori@kt.rim.or.jp |
§研究編 [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
〜〜〜〜〜〜〜〜 省略 〜〜〜〜〜〜〜〜
|