2007年09月27日

UDF1.02 1-8 ECMA167の一般事項と制限

ECMA167 の注意事項と制限を箇条書きにしておきます。

記録していないセクタ、論理セクタ、論理ブロック、及びそれらの余ったバイトは全て 0x00 で埋められます。

記述子、ファイル、ディレクトリなどは全て先詰めです。セクタや論理セクタや論理ブロックの
途中から始まることはありません。

ファイルやディレクトリなどが複数の論理ブロックにまたがるときは、前の論理ブロックの最後まで記録し、次の論理ブロックにそのまま続けます。最後の論理ブロックの余ったバイトは 0x00 で埋めます。

一つのディレクトリ構造 (ファイルセット) が持てるファイルとディレクトリの合計数は 232 未満です。

ECMA167 にもファイル名の制限のレベルがあります。ただ、UDF1.02 の方で決められている内容を守れば問題ありません。


追伸
posted by 七癖 at 09:06| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする

2007年09月25日

UDF1.02 1-7 ファイルへのアクセス

ディスク内のファイルへアクセスするための順序は、

→ボリューム認識列でNSR記述子を確認

→開始点

→ボリューム認識列
 → LVD (論理ボリューム) を選択
  → LVD からパーティションの番号を読み取る
   → その番号の PD からパーティションの場所を読み取る
    → LVD からファイル集合記述子列の場所を読み取る

→ファイル集合記述子列
 →FSD 内のルートディレクトリの ICB の場所

→ルートディレクトリのファイルエントリ
→ルートディレクトリ本体
 →ルートディレクトリ内の目的の子ディレクトリの ICB の情報

→子ディレクトリのファイルエントリ
→子ディレクトリ本体
 →子ディレクトリ内の目的の孫ディレクトリの ICB の情報

→ディレクトリのファイルエントリ
→ディレクトリ本体
 →ディレクトリ内の目的のファイルの ICB の情報

→ファイルのファイルエントリ
 →(分割) ファイル本体の場所

→(分割) ファイル本体

こんな具合です。
posted by 七癖 at 10:21| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする

2007年09月23日

UDF1.02 1-6 要素

1論理ボリューム=1パーティションの DVD-ROM のボリュームは、
次の種類の要素で成り立っています。


ボリュームセット┐
 ┌──────┘
 │       ┌ボリューム認識列────────────────┬(CD001)(ISO9660用)
 │┌ボリューム1┤開始点(2個)───────────────┐ │BEA01
 └┤      │主ボリューム記述子列──────────┐ │ │NSR02
  └      │副ボリューム記述子列──────────┤ │ │その他
         │論理ボリューム保全列────────┐ │ │ │TEA01
         │パーティション0──┐       │ │ │ └空白
         │          │       │ │ │
         │その他       │       │ │ └──AVDP
         └空白        │       │ │
                    │       │ └───┬PVD
                    │       │     │IUVD
                    │       │     │PD
                    │       │     │LVD
                    │       │     │USD
                    │       │     │TD
                    │       │     └空白
                    │       │
                    │       └─────┬LVID
                    │             │TD
                    │             └空白
                    │ 
                    └┬ファイル集合記述子列──┬FSD
                     │各ディレクトリ────┐│TD
                     │各ファイルエントリ─┐│└空白
                     │各ファイル本体──┐││
                     │         ││└─FIDの配列
                     │その他      ││ 
                     └空白       │└──FE
                               │
                               └──┬分割ファイル0
                                  │分割ファイル1
                                  └…

右への線は、左のブロックが内包している要素を示します。
ファイルが分割されていないことは多いです。
「その他」や「空白」は、無いこともあります。
UDF Bridge での ISO9660 のディレクトリ群とパステーブルは、パーティションに隣接して置いたり、パーティション内に置かれたりします。

多分、これだけ見ると誤解されると思いますが、理解の足しになるかと思います。
posted by 七癖 at 10:31| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする

2007年09月21日

UDF1.02 1-5 三構造

ECMA167 ディスクフォーマットでは、大きく三つの構造があります。

・ボリューム認識部
・ボリュームシステム
・ファイルシステム

です。

ボリューム認識部は、その媒体に最初にアクセスする場所であり、
このディスクがどんな形式でフォーマットされているかが書かれています。
また、起動に関する情報が有る場合もあります。
ISO9660 との共通部分も多いです。
ここは、先頭の空白とボリューム認識列からなります。

ボリュームシステムは、ファイルシステムを置く論理ボリュームと
パーティションを制御し、ファイルシステムの場所を記述します。
ボリュームに収まるパーティションとそれを集めた
論理ボリュームという概念によって、
一つのディスクを複数のドライブに分けたり、
複数のディスクを一つのドライブとして扱ったり出来ます。
ただ、これらは結構煩雑なので、
DVD-ROM では、 論理ボリュームとパーティションは共に一つです。
ここは、開始点とボリューム記述子列、論理ボリューム保全列などからなります。

ファイルシステムは論理ボリューム、実際にはパーティションに置かれ、
ファイル本体とディレクトリ構造を制御します。
ここは、ファイル集合記述子列と、
ファイル及びディレクトリ毎に一つづつあるファイルエントリ、
ディレクトリ本体、分割ファイル本体などからなります。

posted by 七癖 at 10:19| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする

2007年09月19日

UDF1.02 1-4 訳語

前の用語、略語以外で、必要と思われる用語の訳を挙げておきます。

訳語一覧
英語訳語備考
Volume recognition sequenceボリューム認識列CD001, BEA01, NSR02, TEA01 などを持つ
Volume Structure Descriptorボリューム構造記述子PVD, IUVD, PD, LVD, USD の総称
Volume Descriptor Sequenceボリューム記述子列ボリューム構造記述子と終端からなる
Logical volume integrity論理ボリューム保全列LVID と終端からなる
File Set Descriptor Sequenceファイル集合記述子列FSD と終端からなる
Allocation Descriptor配置記述子short_ad, long_ad, ext_ad の 3 種がある
Allocation Descriptors配置記述子列配置記述子の配列


posted by 七癖 at 08:20| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする

2007年09月17日

UDF1.02 1-3 略語

このブログでは、以下の略語を使います。

略語元名備考
UDFUniveral Disk Formatユニバーサルディスクフォーマット
IDIdentifier識別子、名
BPByte position記述子の先頭(バイト0)からのバイト位置
RBPRelative byte positionその構造体の先頭(バイト0)からの相対的なバイト位置
bytesbytesバイトの数
LSNlogical sector number論理セクタ番号
LSslogical sectors論理セクタの数
LBNlogical block number論理ブロック番号
LBslogical blocks論理ブロックの数
 
PVDPrimary Volume Descriptor基本ボリューム記述子
AVDPAnchor Volume Descriptor Pointer開始点
VDPVolume Descriptor Pointerボリューム記述子ポインタ
IUVDImplementation Use Volume Descriptor処理方法用ボリューム記述子
PDPartition Descriptor区画記述子
LVDLogical Volume Descriptor論理ボリューム記述子
USDUnallocated Space Descriptor未割付け空間記述子
TDTerminating Descriptor終端記述子
LVIDLogical Volume Integrity Descriptor論理ボリューム保全記述子
FSDFile Set Descriptorファイル集合記述子
FIDFile Identifier Descriptorファイル識別記述子
AEDAllocation Extent Descriptor割付け範囲記述子
IEIndirect Entry間接エントリ
TETerminal Entry終端エントリ
ICBInformation Control Block 情報制御ブロック
FEFile Entryファイルエントリ
EAHDExtended Attribute Header Descriptor拡張属性ヘッダ記述子
USEUnallocated Space Entry未割付け空間エントリ
SBDSpace Bitmap Descriptor空間ビットマップ記述子
PIEPartition Integrity Entryパーティション保全エントリ
EFEExtended File Entry拡張ファイルエントリ


posted by 七癖 at 10:09| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする

2007年09月13日

UDF1.02 1-2 用語

幾つかの用語と訳語を説明します。ここだけ読んでも判らない場合が多いと思います。

1.ビットとバイト (bit&byte)
 一つのビットは 0 か 1 をとります。
 1 バイトは 8 ビットで、1 バイトがデータ表記の基本単位となります。
 要するに、よくあるコンピュータの考え方と同じです。

2.記述子 (descriptor)
 それぞれのバイトが意味を持った、連続したデータの固まり。
 C言語の構造体に相当しますが、変数の位置を変更したり隙間をあけたり、といったことをやってはいけません。コンパイラが勝手にやる場合があるので注意してください。先頭からの位置が重要なのです。

3.処理方法 (implementation)
 散々悩んだのですが、インプリメンテンションの訳語は、これで行きます。
 これ自体は記述のための共通形式という面が強く、変数 "Implementation Use" の使い方はお任せ、となっていたりするので困るのです。

4.名 (identifier, ID)
 "識別子" が正確な訳語です。
 名称を指す文字列以外に、数値などの付帯情報がつく場合もあります。

5.セクタ (物理セクタ) (sector)
 媒体上のデータにバイト単位でアドレスを割り振ってアクセスするには細かすぎるので、セクタというある程度まとまったデータ単位に区切ってそれにアドレスを割り振り、アクセスします。

6. (物理)セクタの大きさ、(物理)セクタサイズ (sector size)
 セクタの内、アドレスやエラー訂正コードなどを除いた、ユーザーが実際に使用できるデータ領域のバイト数です。

7.ボリューム (volume)
 順番に並べられたセクタの集合。
 例えば、DVD-ROM の片面、CD の 1 データトラックなどが 1 つのボリュームになります。

8.セクタ番号 (sector number)
 セクタ毎に割り振られたアドレス。
 ボリュームの先頭のセクタ番号は 0 で、1、2、…と続きます。

9.ボリュームセット (volume set)
 ボリュームの集合。
 UDF1.02 では、ジュークボックス内の全ての DVD をまとめて呼ぶ場合、といった程度の意味ですが、本来の ECMA167 では複数のボリュームをまとめて取り扱うための概念です。

10.ボリューム番号 (Volume Sequence Number)
 ボリュームセット内のボリュームには 1、2、3、…と番号がついています。

11.論理セクタ (logical sector)
 ボリュームの割り振りの単位。
 512 バイトの整数倍の大きさで、ボリューム内で大きさは全て同じです。各論理セクタの先頭は物理セクタの (ユーザーデータの) 先頭から始まり、論理セクタの長さ分続きます。1 つの物理セクタで足りなければ次の物理セクタへ続きます。次の論理セクタは、前の論理セクタが終わった物理セクタの次の物理セクタから始まります。物理セクタの余った箇所は 0 で埋められます。
 こう書くとややこしいですが、これは媒体内でセクタの大きさが異なっている場合に対応させるためです。UDF1.02 では、物理セクタと論理セクタの大きさとアドレスはそれぞれ同じです。

12.論理セクタ番号 (logical sector number) [LSN]
 論理セクタは、ボリュームの先頭から 0、1、2、と順番に番号を割り振ります。同じ番号に 2 つの論理セクタが対応したり、欠番があることはありません。
 なお、ボリュームは最小 256 論理セクタです。

13.パーティション (partition)
 ボリューム内の連続した論理セクタの集合。
 ボリュームセット内のパーティションには番号が割り振られており、0 〜 65535 の値をとります。

14.論理ボリューム
 一つ以上のパーティションの集合。
 ボリュームセットが持つある意味仮想的なボリュームです。
 ECMA167 では、パーティションは、別々のボリュームに属していてもかまいません。つまり、論理ボリュームは複数のディスクをあたかも一つのドライブとして見せかけるための仕掛けになります。また、ボリュームの中に複数の論理ボリュームがあってもかまいません。こちらは一枚のディスクを複数のドライブに分けるための仕掛けです。
 ただし DVD-ROM では、論理ボリューム、パーティション共に一つです。

15.論理ブロック (logical block)
 論理ボリューム、パーティションの割り振りの単位。
 512 バイトの整数倍の大きさで、パーティション内で大きさは全て同じです。各論理ブロックの先頭は論理セクタの先頭から始まり、論理ブロックの長さ分続きます。一つの論理セクタで足りなければ次の論理セクタへ続きます。次の論理ブロックは、前の論理ブロックが終わった論理セクタの次の論理セクタから始まります。論理セクタの余った部分は 0 で埋められます。
 DVD-ROM では、論理セクタと論理ブロックの大きさは同じです。

16.論理ブロック番号 (logical block number) [LBN]
 各論理ブロックには、パーティションの先頭から 0、1、2、…と番号が割り振られます。パーティションの先頭からの番号なので、セクタや論理セクタと大きさは同じ場合でも番号は異なります。サイズが同じなら間隔は同じです。
 パーティション内で同じ論理ブロック番号のありませんが、全てのパーティションの論理ブロック番号は 0 から始まりますので、(複数のパーティションをもつ) 論理ボリュームでは、論理ブロックのアドレスを、パーティション番号と論理ブロック番号の組で表します。

17.論理ブロックの数 (the size in logical blocks) [LBs]
 連続した論理ブロックの数。複数の論理ブロックをまとめて扱うときに使います。
 "論理ブロックの大きさ" だと1論理ブロックあたりのバイト数になってしまうし、"論理ブロック数" だと上の"論理ブロック番号"あるいは"論理ブロックアドレス"と間違えそうなので、"数"の前に"の"を入れます。

18.ファイルセット
 ファイルとディレクトリの集合。
 ディレクトリ階層の情報、個々のファイル本体とその情報、ディレクトリ階層上の位置などの全てのデータの集まりです。

19.場所 (extent)
 連続したデータの固まりの、先頭位置とその大きさ。
 単位はバイトだったりセクタ、論理セクタ、論理ブロックだったりします。
 正確な訳語は "範囲" です。
posted by 七癖 at 09:51| Comment(0) | TrackBack(1) | ファイルシステム | このブログの読者になる | 更新情報をチェックする

2007年09月11日

UDF1.02 1-1 導入

 UDF は Univeral Disk Format の略であり、そのバージョン UDF1.02 は DVD-ROM や DVD-VIDEO で使われるディスクフォーマットです。試しに CD-RW にこのフォーマットで焼いてみたところ、私の Windows Me で読み取れました。

 なお、Univeral Disk Format 及び UDF は OSTA の商標らしいです。

 UDF1.02 は、ISO/IEC 13346 (ECMA-167) のサブセットです。ECMA-167 は豊富な機能を持つディスクフォーマットですが、それゆえに複雑であり、DVD というメディアでは実現に無理のある機能も少なくありません。そこで、使用する文字種を規定するなど、 ECMA-167 に幾つかの制限を定めて使いやすくしたのが UDF1.02 です。

 OSTA の UDF 仕様書には、ECMA-167 で書かれている内容が既知のものであるとして書かれておりません。

 このブログでは、ECMA-167 と UDF1.02 を混ぜて説明をしてゆきます。

参考文献

Standard ECMA-167 3rd Edition
Volume and File Structure for Write-Once and Rewritable Media using Non-Sequential Recording for Information Interchange
http://www.ecma-international.org/publications/standards/Ecma-167.htm
 今回の基礎資料
 ISO/IEC 13346 が見つからないので、これを使います。
 ですから、文中では ISO/IEC 13346 ではなく ECMA167 と書きます。

OSTA UDF1.02
OSTA Univeral Disk Format Specification Revision 1.02
http://www.osta.org/specs/index.htm
 今回の基礎資料
 文中では UDF1.02 と書きます。

ECMA Technical Report TR/71
DVD Read-Only Disk - File System Specifications
http://www.ecma-international.org/publications/techreports/E-TR-071.htm
 DVD-ROM の実装方法。UDF1.02 の実際の使い方と EMCA-119 (ISO 9660) との共存、つまり UDF Bridge の作り方です。

DVD-書換形ディスクのボリューム構造及びファイル構造
http://www.y-adagio.com/public/standards/tr_dvdram/main.htm
 UDF1.50、それも DVD-RAM 用ですが、結構役に立ちます。訳語の大半はここから取りました。
 他にも、
http://www.y-adagio.com/public/standards/tr_udf15/main.htm
http://www.y-adagio.com/public/standards/tr_udf20/main.htm
 など、この Y-ADAGIO のサイトの内容を多く参考にしています。

オレンジフォーラム
http://www.cds21solutions.org/osj/j/
http://www.cds21solutions.org/osj/j/udf/index.html
 導入には便利です。

UDF の歴史
posted by 七癖 at 09:22| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする

2007年09月09日

udf1.02 マイナス1 今後の予定

ISO9660/joliet の説明から大分経ってしまいましたが、近い内に UDF1.02 の説明を始めようと思います。

取り合えず、説明する順序を決め、半分くらいの下書きを用意しました。

手間取ったのは、ECMA167 があまりに豪華なのと、UDF1.02 の方にも追記、上書きを考慮した部分が結構多かったからです。DVD-ROM だけに制限すれば楽なのですが、なぜこの変数がゼロなのかを説明するために、いろんな機能の説明が必要になって、その使われていない機能を理解しようとして、仕様書の迷宮を彷徨っていました。せっかくなので理解できた範囲で説明する予定ですが、余計こんがらがるような気がします。

まだ理解していないのが、
・ICB (え〜)
・拡張属性の多く。
・Stream (NSR03 で追加。ちなみにほとんどの DVD-ROM は NSR02。)
・PID (UDF1.02 では使用せず)
・IE、TE
・path component
・ECMA167 の Part.5 全て。(UDF1.02 ではサポートせず)
などです。ファイルシステム関係が多いですね。DVD イメージで見た事無いものも多いです。

細分したため現状で 56 回。もう少し増えそうです。年を越すかも。
posted by 七癖 at 10:45| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。