UDF Comp. Test Tool

標準情報(TR)  TR X 0075:2003


UDF適合性試験ツール

UDF Compliance Test Tool



序文

この標準情報(TR)は, 財団法人光産業技術振興協会(OITDA)が受託した"光ディスクシステムの相互運用性確保のための標準化"の新規産業支援型国際標準開発事業(1998〜2000年度)の成果をもとに工業標準化の促進に関連して特に重要と判断される技術情報をまとめ, 日本工業標準調査会の審議を経て, タイプVの標準情報(TR)として公表するものである。


1. 適用範囲

この標準情報(TR)は, 可換記憶媒体のボリューム構造及びファイル構造のユニバーサルディスクフォーマット(UDF)(JIS X 0609, TR X 0039, TR X 0035を参照。)への適合性を調べるために, UDF Compliance Test Disc Specification Revision 1.0に基づいて適合性試験を行うのに必要なイメージ(可換記憶媒体上に記録されるビットパタン)の作成・記録用のUDF適合性試験ツールを規定する。


2. 引用規定

次の規格などは,この標準情報(TR)に引用されることによって,この標準情報(TR)の規定の一部を構成する。

UDF Compliance Test Disc Specification Revision 1.0, OSTA, 1999-07

JIS X 0609:1998 情報交換用非逐次記録高密度光ディスクのボリューム及びファイルの構造
 備考 Universal Disk Format Specification Revision 1.02, OSTA, 1996-08 が, この規格に対応している。

TR X 0039:2001, ユニバーサルディスクフォーマット(UDF) 1.50
 備考 Universal Disk Format Specification Revision 1.50, OSTA, 1997-02 が, この規定に一致している。

TR X 0035:2000 ユニバーサルディスクフォーマット(UDF) 2.00
 備考1 Universal Disk Format Specification Revision 2.00, OSTA, 1998-04 が, この規定に一致している。
 備考2 Universal Disk Format Specification Revision 2.01, OSTA, 2000-03 は, この規定の一部を修正している。


3. 定義

この標準情報(TR)では, TR X 0035及びTR X 0039での定義を適用する。


4. 試験ツールの構成

4.1 UDF適合性試験ツール

UDF適合性試験ツール(以降, 試験ツール)は, Proposed UDF Compliance Test Disc Specification Revision 1.00が定義する試験ディスク#2, #3, #4, #5, #6, #7のイメージを作成し, CD-R及びCD-RWメディアへの書込みを行う。

この試験ツールは, Linux version 2.2.x(Red Hat Linux 7)上で動作する。試験ツールは, 複数のコマンドユーティリティ, コマンドのパラメタファイル, コマンドを記述したシェルスクリプトファイルによって構成され, 試験ディスク毎のスクリプトファイル, コマンドのパラメタファイルを用意してある。

パッケージ形式ではなく, 適切な場所にディレクトリツリーをコピーして使用する。CD-R及びCD-RWメディアへの書込みは, ROOTの権限が必要になる。

4.2 構成

アーカイブudfcomp.zipに, 次のファイルがある。

	toolkit/  イメージ作成及びSCSI書込みのコマンドユーティリティ用のディレクトリ
		udf_mkfs	: ボリューム作成コマンド
		udf_utime	: 時刻変更
		udf_chown	: 利用者ID変更コマンド
		udf_chgrp	: グループID変更コマンド
		udf_chmod	: 許可条件変更コマンド
		udf_creat	: ファイル作成コマンド
		udf_creat_h	: ファイル作成コマンド(16進 引数)
		udf_mkdir	: ディレクトリ作成コマンド
		udf_mkdir_h	: ディレクトリ作成コマンド(16進 引数)
		udf_lnk		: ハードリンクコマンド
		udf_symlnk	: シンボリックリンクコマンド
		udf_mknod	: 特殊ファイル作成コマンド
		udf_rm		: ファイル削除コマンド
		udf_patch	: パッチコマンド

		mkpatch		: パッチイメージ作成コマンド
		scsiwrite	: SCSI書込みコマンド

	disc2/  試験ディスク#2 用のスクリプト及びパラメタファイル用のディレクトリ
	disc3/  試験ディスク#3 用のスクリプト及びパラメタファイル用のディレクトリ
	disc4/  試験ディスク#4 用のスクリプト及びパラメタファイル用のディレクトリ
	disc5/  試験ディスク#5 用のスクリプト及びパラメタファイル用のディレクトリ
	disc6/  試験ディスク#6 用のスクリプト及びパラメタファイル用のディレクトリ
	disc7/  試験ディスク#7 用のスクリプト及びパラメタファイル用のディレクトリ

4.3 試験ディスクの作成

UDF Compliancy Test Disc Specificationが規定する試験ディスクは, 次に示す手順で作成する。

4.3.1 試験ディスク#2, #3, #4, #5, #7

試験ディスク#2の作成手順を次に示す。試験ディスク#3, #4, #5, #7については, 2をそれぞれ3, 4, 5, 7に読み替える。

a) ディレクトリudfcomp/disc2に移動し, 次を入力する。

$ ./disc2.sh

b) スクリプトファイルmkcd7.shを開き, 装置ファイル名を接続されているSCSI機器の割付け順に従って適切に変更する。

c) root権限をもったIDでログインする。

d) ディレクトリudfcomp/disc2に移動する。

e) CD-R/RWレコーダにブランクメディア(#2, #4, #7の作成時はCD-R, #3, #5の作成時はCD-RW)を挿入し, 次を入力する。

$ ./mkcd2.sh

4.3.2 試験ディスク#6

a) ディレクトリudfcomp/disc6に移動し, 次を入力する。

$ ./disc6.sh

b) udfvolume.imgというイメージファイルが作成されるので, これを書込みツールを使用してディスクに書き込む。イメージファイルは, アドレス=0からのイメージとして作成される。書込みは, MODE1, プリギャップ長 = 0 として行う。


5. コマンド

5.1 コマンド一覧

試験ツールは, 次に示すコマンドの組合せで構成される。コマンドを組み合せたシェルスクリプトによって, イメージの作成及びディスクへの書込みを行う。

    (1) ボリュームファイルの作成           -- udf_mkfs
    (2) ディレクトリの作成                 -- udf_mkdir
    (3) ディレクトリの作成(16進 引数)      -- udf_mkdir_h
    (4) ファイルの作成                     -- udf_creat
    (5) ファイルの作成(16進 引数)          -- udf_creat_h
    (6) 特殊ファイルの作成                 -- udf_mknod
    (7) ハードリンクの作成                 -- udf_lnk
    (8) シンボリックリンクの作成           -- udf_symlnk
    (9) ファイルの削除                     -- udf_rm
   (10) ファイル時刻の変更                 -- udf_utime
   (11) 属性の変更                         -- udf_chmod
   (12) 利用者IDの変更                   -- udf_chown
   (13) グループIDの変更                   -- udf_chgrp
   (14) ファイルのパッチ                   -- udf_patch
   (15) AVDPの書込み                     -- udf_final
   (16) イメージの書込み                 -- scsiwrite

5.2 各コマンドの機能

コマンドの形式において, 各オプションは任意の順序で指定できる。ここで, []で囲ったものは省略でき, 囲っていないものは省略できない。

5.2.1 ボリュームファイルの作成

    [名前]
       udf_mkfs - ボリュームファイルの作成

    [形式]
       udf_mkfs -f volumespec 

    [機能]
       パラメタファイルvolumespecに従って, 初期化されたボリュームの
       イメージを出力する。udf_mkfsは, udfvolume.imgというファイル名
       のイメージファイルをカレントディレクトリに出力する。
       最新のVATデータを保存しておくためのファイルvatfile.dat及び 
       パケットライティングを行うときに必要なpacketlst.datが, カレントディレ
       クトリに作成される。
       packetlst.datには, パケットのリストが記録される。

       udf_creat, udf_mkdir等のツールを使用して, このイメージファイル
       udfvolume.imgに対してUDFフォーマットのファイル及びディレクトリを
       記録する。
      
       -f  ボリュームの構造を定義するパラメタファイルのファイル名を
           指定する。

       パラメタファイルの記述方法は, 6.に示す。

    [使用例]
       $ ./udf_mkfs -f volume.def 

5.2.2 ディレクトリの作成

    [名前]
       udf_mkdir - ディレクトリの作成

    [形式]
       udf_mkdir -p pathname [-u udfcompid ] [-a adtype] [-s serial] 
                 [-Pe partno] [-Pd partno] [-E0 embeddedEA] [-E1 icbEA] [-F] 

    [機能]
       カレントディレクトリのイメージファイルudfvolume.imgに, pathnameの
       ディレクトリを作成する。
       udf_mkdirは, pathnameのパスが存在しない場合, そのパスを自動的に作成
       する。
    
       -p 作成するディレクトリを絶対パスで指定する。

       -u ディレクトリ名のUDF圧縮識別子を指定する。
             8  : 圧縮ビット列中の1文字は8ビット 
             16 : 圧縮ビット列中の1文字は16ビット

          このオプションの指定がない場合は, UDF圧縮識別子は16とする。

       -a 作成するディレクトリのファイルエントリで使用する割付け記述子の
          タイプを指定する。 
             0 : 短割付け記述子
             1 : 長割付け記述子
             3 : 直割付け

          このオプションの指定がない場合は, 長割付け記述子を使用する。

       -s 作成するディレクトリのファイルエントリに記録するタグシリアル番号を
          指定する。
           
          このオプションの指定がない場合は, シリアル番号1を使用する。

       -Pe 作成するディレクトリのファイルエントリを置く区画番号を
           指定する。

           このオプションの指定がない場合は, 仮想区画が存在すれば
           仮想区画にファイルエントリを置く。

       -Pd 作成するディレクトリのデータが置かれる区画番号を指定する。

           このオプションの指定がない場合は, 仮想区画が存在すれば
           仮想区画にディレクトリデータを置く。

       -E0 ファイルエントリ内に記録する拡張属性を定義したパラメタファイルの
           ファイル名を指定する。

       -E1 拡張属性ICBとして記録する拡張属性を定義したパラメタファイルのファイル名
           を指定する。

           拡張属性のパラメタファイルの記述方法は, 7.に示す。

       -F 仮想区画が存在する場合, イメージファイルの最終ブロックに最新の
          VATを書き出す。

    [使用例]
       $ ./udf_mkdir -p /TIME/TIME_ZONES -u 8
           ディレクトリ/TIME が存在しない場合, /TIMEを作成し, その下に
           ディレクトリTIME_ZONESを作成する。 ディレクトリ名"TIME_ZONES"
           は, 圧縮識別子8で作成する。

5.2.3 ディレクトリの作成(16進 引数)

    [名前]
       udf_mkdir_h - ディレクトリの作成(16進 引数)

    [形式]
       udf_mkdir_h -p parent -c namecode -u udfcompid  [-a adtype] [-s serial] 
                   [-Pe partno] [-Pd partno] [-E0 embeddedEA] [-E1 icbEA] [-F] 

    [機能]
       カレントディレクトリのイメージファイルudfvolume.imgに, 16進で指定された
       ディレクトリ名のディレクトリを, 親ディレクトリparentの下に作成する。
       ディレクトリを置く親ディレクトリは, 予め作成しておく。 
       udf_mkdir_hは, コマンドラインからディレクトリ名を文字列で与えることが
       不可能な場合に使用する。
      
       -p 親ディレクトリを絶対パスで指定する。
          親ディレクトリは, 予め作成しておく。

       -u ディレクトリ名のUDF圧縮識別子を指定する。
             8  : 圧縮ビット列中の1文字は8ビット 
             16 : 圧縮ビット列中の1文字は16ビット

       -c ディレクトリ名を16進で指定する。
          デレクトリ名を構成する各バイトを2桁の16進数で表現し,2桁の16進数の間は
          ','で区切る。(スペース, タブは挿入しないこと。)

       -a 作成するディレクトリのファイルエントリで使用する割付け記述子のタイプを
          指定する。 
             0 : 短割付け記述子
             1 : 長割付け記述子
             3 : 直割付け

          このオプションの指定がない場合は, 長割付け記述子を使用する。

       -s 作成するディレクトリのファイルエントリに記録するタグシリアル番号を
          指定する。
           
          このオプションの指定がない場合は, シリアル番号1を使用する。

       -Pe 作成するディレクトリのファイルエントリを置く区画番号を
           指定する。

           このオプションの指定がない場合は, 仮想区画が存在すれば 
           仮想区画にファイルエントリを置く。

       -Pd 作成するディレクトリのデータが置かれる区画番号を指定する。

           このオプションの指定がない場合は、仮想区画が存在すれば
           仮想区画にディレクトリデータを置く。

       -E0 ファイルエントリ内に記録する拡張属性を定義したパラメタファイルの
           ファイル名を指定する。

       -E1 拡張属性ICBとして記録する拡張属性を定義したパラメタファイルのファイル名
           を指定する。

    [使用例]
       $ ./udf_mkdir -p /filename
       $ ./udf_mkdir_h -u 16 -p /filename -c 65,e5,67,2c,8a,9e,30,c7,30,a3,30,ec,30,af,30,c8,30,ea

5.2.4 ファイルの作成

    [名前]
       udf_creat - ファイルの作成

    [形式]
       udf_creat -p filename [-u udfcompid ] [-a adtype] [-s serial] [-Pe partno] [-Pd partno]
                  [-E0 embeddedEA] [-E1 icbEA] [-I implementlen] [-c contents] [-nocrc] [-F] 

    [機能]
       カレントディレクトリのイメージファイルudfvolume.imgに, ファイル名filenameの
       ファイルを作成する。
       udf_creatは, filenameのパスが存在しない場合には, パスを自動的に作成する。
      
       -p 作成するファイルのファイル名を絶対パスで指定する。

       -u ファイル名のUDF圧縮識別子を指定する。
             8  : 圧縮ビット列中の1文字は 8ビット 
             16 : 圧縮ビット列中の1文字は16ビット

          このオプションの指定がない場合は, UDF圧縮識別子は16とする。

       -a 作成するファイルのファイルエントリで使用する割付け記述子のタイプを
          指定する。 
             0 : 短割付け記述子
             1 : 長割付け記述子
             3 : 直割付け

          このオプションの指定がない場合は、長割付け記述子を使用する。

       -s 作成するファイルのファイルエントリに記録するタグシリアル番号を
          指定する。
           
          このオプションの指定がない場合は, シリアル番号1を使用する。

       -Pe 作成するファイルのファイルエントリを置く区画番号を
           指定する。

           このオプションの指定がない場合は, 仮想区画が存在すれば
           仮想区画にファイルエントリを置く。

       -Pd 作成するファイルのデータが置かれる区画番号を指定する。

           このオプションの指定がない場合は, 仮想区画が存在すれば
           仮想区画にディレクトリデータを置く。

       -E0 ファイルエントリ内に記録する拡張属性を定義したパラメタファイルの
           ファイル名を指定する。

       -E1 拡張属性ICBとして記録する拡張属性を定義したパラメタファイルのファイル名
           を指定する。

       -I 作成するファイルのファイル識別子記述子のImplementationUseフィールドの
          長さを指定する。このオプションの指定がない場合, ImplementationUse
          フィールドの長さは, 32バイトとする。
          このオプションの指定がある場合は, ファイル識別子記述子は, ブロックを
          またいで記録できる。特に指定がない場合, ファイル識別子記述子は, 
          ブロックをまたがないように記録される。 

       -nocrc このファイルの32ビットCRCの出力を行わない。

          このオプションを指定しないときは, DOS, Win95, WinNT, UNIX, Macの
          各OS固有の識別子に変換されたファイル名と, そのファイルの32ビットCRC
          とが記述されているテキストファイルを出力する。
                
       -c ファイルに書き込むデータの種別を指定する。
            0 : 次の512バイトのレコード構造のデータをファイルに記録する。

                struct FileRecord {
                    Uint32 RecordNumber;
                    Uint8  LengthOfName;
                    Uint8  NameOnDisc[];
                }

            1 : ファイルの絶対パス名を記録する。 

            0, 1以外:
                オプションの引数に渡された文字列を, udf_creatで作成するファイルに
                書き込む内容が保存されているファイル名として解釈する。このオプション
                を使用して, 任意のデータをファイルに記録できる。 

          このオプションの指定がない場合は, 種別0のデータを書き込む。

       -F 仮想区画が存在する場合, イメージファイルの最終ブロックに最新の
          VATを書き出す。

    [使用例]
       $ ./udf_creat -p /TIME/TIME_ZONES/GMT_-2400.TXT

5.2.5 ファイルの作成(16進 引数)

    [名前]
       udf_creat_h - ファイルの作成(16進 引数)

    [形式]
       udf_creat_h -p parent -c namecode -u udfcompid  [-a adtype] [-s serial] 
                 [-Pe partno] [-Pd partno] [-E0 embeddedEA] [-E1 icbEA] 
                 [-I implen] [-C contentsType] [-F] 

    [機能]
       カレントディレクトリのイメージファイルudfvolume.imgに, 16進で指定された
       ファイル名のファイルを親ディレクトリparentの下に作成する。
       ファイルを置く親ディレクトリは, 予め作成しておく。 
      
       -p 親ディレクトリを絶対パスで指定する。
          親ディレクトリは, 予め作成しておく。

       -u ファイル名のUDF圧縮識別子を指定する。
             8  : 圧縮ビット列中の1文字は 8ビット 
             16 : 圧縮ビット列中の1文字は16ビット

       -c ファイル名を16進で指定する。
          2桁の16進数表示のバイト列で, 名前を直接定義する。各バイト間は','
          で区切りる。(スペース, タブは挿入しないこと。)

       -a 作成するファイルのファイルエントリで使用する割付け記述子のタイプを
          指定する。 
             0 : 短割付け記述子
             1 : 長割付け記述子
             3 : 直割付け

          このオプションの指定がない場合は、長割付け記述子を使用する。

       -s 作成するファイルのファイルエントリに記録するタグシリアル番号を
          指定する。
           
          このオプションの指定がない場合は, シリアル番号1を使用する。

       -Pe 作成するファイルのファイルエントリを置く区画番号を
           指定する。

           このオプションの指定がない場合は, 仮想区画が存在すれば
           仮想区画にファイルエントリを置く。

       -Pd 作成するファイルのデータが置かれる区画番号を指定する。

           このオプションの指定がない場合は, 仮想区画が存在すれば
           仮想区画にファイルデータを置く。

       -E0 ファイルエントリ内に記録する拡張属性を定義したパラメタファイルの
           ファイル名を指定する。

       -E1 拡張属性ICBとして記録する拡張属性を定義したパラメタファイルのファイル名
           を指定する。

       -I 作成するファイルのファイル識別子記述子のImplementationUseフィールドの
          長さを指定する。このオプションの指定がない場合, ImplementationUse
          フィールドの長さは32バイトとする。
          このオプションの指定がある場合は, ファイル識別子記述子はブロックを
          またいで記録できる。特に指定がない場合は, ファイル識別子記述子は, 
          ブロックをまたがないように記録される。 

       -C ファイルに書き込むデータの種別を指定する。
            0 : 次の512バイトのレコード構造のデータをファイルに記録する。

                struct FileRecord {
                    Uint32 RecordNumber;
                    Uint8  LengthOfName;
                    Uint8  NameOnDisc[];
                }
               
            1 : ファイルの絶対パス名を記録する。 

            0, 1以外:
                オプションの引数に渡された文字列を、udf_creatで作成するファイルに
                書きこむ内容が保存されているファイル名として解釈する。このオプション
                を使用して, 任意のデータをファイルに記録できる。 

          このオプションの指定がない場合は, 種別0のデータを書き込む。

       -F 仮想区画が存在する場合, イメージファイルの最終ブロックに最新の
          VATを書き出す。

    [使用例]
       $ ./udf_mkdir -p /filename
       $ ./udf_creat_h -p 16 -d /filename -c 65,e5,67,2c,8a,9e,30,c7,30,a3,30,ec,30,af,30,c8,30,ea

5.2.6 特殊ファイルの作成

    [名前]
       udf_mknod - 特殊ファイルの作成

    [形式]
       udf_mknod -p filename -t filetype [-E0 embeddedEA] [-F] 

    [機能]
       カレントディレクトリのイメージファイルudfvolume.imgに, filetypeの特殊ファイルを
       作成する。udf_mknodは, filenameのパスが存在しない場合には, パスを自動的に作成する。
      
       文字形装置, ブロック形装置を作成するときには, -E0 オプションを使用して, 
       装置仕様の拡張属性を設定する。

       -p ファイル名を絶対パスで指定する。

       -t ファイルタイプを指定する。
           b : ブロック形装置
           c : 文字形装置
           p : FIFOファイル
           s : ソケット

          これら以外は, エラーになる。 シンボリックリンクファイルは, 別のコマンド
          udf_symlnkで作成できる。

       -h 0〜255の10進数で, ファイルタイプを数値で指定する。数値で指定する場合は,
          文字によるファイルタイプ指定は無視される。

       -E0 ファイルエントリ内に記録する拡張属性を定義したパラメタファイルの
           ファイル名を指定する。文字形装置, ブロック形装置を作成する
           ときは, 装置仕様の拡張属性を設定する。

       -F 仮想区画が存在する場合, イメージファイルの最終ブロックに最新の
          VATを書き出す。

    [使用例]
       $ ./udf_mknod -p /blockdevice      -t b
       $ ./udf_mknod -p /characterdevice  -t c

5.2.7 ハードリンクの作成

    [名前]
       udf_lnk - ハードリンクの作成

    [形式]
       udf_lnk -s source -t target [-F] 

    [機能]
       ファイルsourceに対するハードリンクファイルtargetを作成する。
       udf_lnkは, targetのパスが存在しない場合には, パスを自動的に作成する。
      
       -s ソースとなるファイル名を絶対パスで指定する。

       -t ハードリンクファイルを絶対パスで指定する。 

       -F  仮想区画が存在する場合, イメージファイルの最終ブロックに最新の
           VATを書き出す。

    [使用例]
       $ ./udf_creat -p /link/file
       $ ./udf_lnk   -s /link/file  -t /link/file2 

5.2.8 シンボリックリンクの作成

    [名前]
       udf_symlnk - シンボリックリンクの作成

    [形式]
       udf_symlnk -s source -t target [-p pathform] [-F] 

    [機能]
       ファイルsourceに対するシンボリックリンクファイルtargetを作成する。
       udf_symlnkは, targetのパスが存在しない場合には, パスを自動的に作成する。

       シンボリックリンクファイルのファイルに書き込むパスの形式をpathformで
       指定する。このオプションがない場合は, シンボリックリンクファイルには
       絶対パスでリンク先のファイル名が記録される。
      
       -s ソースとなるファイル名を絶対パスで指定する。

       -t シンボリックリンクファイルを絶対パスで指定する。 

       -p リンク先を指定するパスの形式を指定する。
          このパス名で指定された場所, 指定された名前のファイルがあるか
          どうかのチェックはしない。ここで指定されたパスが, ファイルに
          記録される。

       -F  仮想区画が存在する場合, イメージファイルの最終ブロックに最新の
           VATを書き出す。

    [使用例]
       $ ./udf_creat  -p /link/file
       $ ./udf_symlnk -s /link/file  -t /link/file2  -p ../link/../link/file

5.2.9 ファイルの削除

    [名前]
       udf_rm - ファイルの削除 

    [形式]
       udf_rm -p filename [-F] 

    [機能]
       ファイルfilenameを, その親ディレクトリの中から削除する。 
       udf_rmは, 親ディレクトリの中にある当該ファイルのファイル識別子記述子の削除
       ビットを1にする。
      
       -p 削除するファイル名を絶対パスで指定する。

       -F  仮想区画が存在する場合, イメージファイルの最終ブロックに最新の
           VATを書き出す。

    [使用例]
       $ ./udf_creat  -p /deletefile
       $ ./udf_rm     -p /deletefile

5.2.10 ファイル日時の変更

    [名前]
       udf_utime - ファイル日時変更

    [形式]
       udf_utime -p filename -c ctime  -m mtime -a atime -z timezone [-F] 

    [機能]
       カレントディレクトリのイメージファイルudfvolume.imgに記録されている
       ファイル名filenameのファイルの日時を変更する。

       環境変数 UDF_CTIME,UDF_ATIME 及び UDF_MTIME, UDF_TIMEZONE に設定されて
       いる値がファイルエントリに記録される。これらの環境変数の指定がない
       場合は, 時刻は現在時刻, 時間帯はローカルが記録される。

       udf_utimeは, ファイル作成時に記録された時刻を変更するのに使用する。

       -p ファイルを絶対パスで指定する。

       -c ファイル属性変更日時を指定する。
          次に例示するとおりに指定する。
               ex. -c 19980807060504030201
                    1999年8月7日 6時5 分 4.030201秒

       -m ファイル変更日時を指定する。
          指定方法はファイル属性変更日時と同じ。

       -a ファイルアクセス日時を指定する。
          指定方法はファイル属性変更日時と同じ。

       -z 時間帯を指定する。協定世界時からのオフセット(分単位)の値を 
          "GMT"に続けて指定する。

          このオプションがない場合は, ローカルの時間帯を使用するものとし, 
          時間差=0として記録する。

       -F 仮想区画が存在する場合, イメージファイルの最終ブロックに最新の
          VATを書き出す。

    [使用例]
       $ export set UDF_CTIME=19980807060504030201
       $ export set UDF_MTIME=19980807060504030201
       $ export set UDF_ATIME=19980807060504030201
       $ export set UDF_TIMENOZE=GMT0
       $ ./udf_creat -p /GMT_-2400.TXT
       $ ./udf_utime -p /GMT_-2400.TXT -c 19990401010101010101 -m 19990401010101010101 -z GMT-1440

5.2.11 属性の変更

    [名前]
       udf_chmod - ファイル/ディレクトリの属性の変更

    [形式]
       udf_chmod -p filename -m modestring [-F] 

    [機能]
       カレントディレクトリにあるイメージファイルudfvolume.imgに記録されている
       ファイル名filenameのファイル又はディレクトリの許可条件を変更する。
      
       -p ファイル又はディレクトリを絶対パスで指定する。

       -m 許可条件を指定する。 
          次の文字で、所有者, グループ, その他の順に許可条件を
          指定する。許可を与えない場合は, 各桁に'-'を設定する。

              cdrwx
                c: 属性変更許可 
                d: 削除許可
                r: 読み込み許可
                w: 書込み許可
                x: 実行許可

       -h ファイルエントリの許可条件を, 16進数で指定する。16進数は4桁の16進数として
          解釈され, 3桁以下の場合は左に0が埋められる。このオプションが指定された
          場合は, 文字による許可条件の設定は無視される。

       -F 仮想区画が存在する場合, イメージファイルの最終ブロックに最新の
          VATを書き出す。

    [使用例]
       a) 所有者, グループ, その他にすべての許可条件を与える場合
       $ ./udf_creat -p /rwe
       $ ./udf_utime -p /rwe -m cdrwxcdrwxcdrwx 

       b) 所有者, グループ, その他にすべてのRead, Write許可条件だけを与える場合
       $ ./udf_creat -p /r
       $ ./udf_utime -p /r -h 18c6 

5.2.12 利用者IDの変更

    [名前]
       udf_chown - ファイル/ディレクトリの利用者IDの変更

    [形式]
       udf_chown -p filename -u userid [-F] 

    [機能]
       カレントディレクトリのイメージファイルudfvolume.imgに記録されている
       ファイル名filenameのファイル又はディレクトリの利用者IDを変更する。
      
       -p ファイル又はディレクトリを絶対パスで指定する。

       -u 利用者IDを指定する。 
          8桁の16進数で指定する。7桁以下の場合は, 左に0を埋めた8桁の16進数と
          して扱う。 

       -F 仮想区画が存在する場合, イメージファイルの最終ブロックに最新の
          VATを書き出す。

    [使用例]
       $ ./udf_creat -p /file
       $ ./udf_chown -p /file -u 0000FFFF 

5.2.13 グループIDの変更

    [名前]
       udf_chgrp - ファイル/ディレクトリのグループIDの変更

    [形式]
       udf_chgrp -p filename -g groupid [-F] 

    [機能]
       カレントディレクトリのイメージファイルudfvolume.imgに記録されている
       ファイル名filenameのファイル又はディレクトリの利用者IDを変更する。
      
       -p ファイル又はディレクトリを絶対パスで指定する。

       -u グループIDを指定する。 
          8桁の16進数で指定する。7桁以下の場合は, 左に0を埋めた8桁の16進数と
          して扱う。 

       -F 仮想区画が存在する場合, イメージファイルの最終ブロックに最新の
          VATを書き出す。

    [使用例]
       $ ./udf_creat -p /file
       $ ./udf_chgrp -p /file -g 0000FFFF 

5.2.14 ファイルのパッチ

    [名前]
       udf_patch - ファイルのパッチ

    [形式]
       udf_patch -p filename -i image_of_patch [-F] 

    [機能]
       カレントディレクトリのイメージファイルudfvolume.imgに記録されている
       ファイル名filenameのファイルエントリ, エクステントにパッチを当てる。
       udf_patchは, ファイル名filenameのファイルエントリ及びファイルデータ
       を, image_of_patchに記録されている内容と置き換える。

       udf_patch は, ファイルエントリとファイルデータとの置換えを行うときに, 
       ファイルの32ビットCRCを計算し, 各OS固有のファイル名及びCRCを記述した
       テキストファイルを出力する。
      
       -d パッチを当てるファイルを絶対パスで指定する。
          パッチを当てる前に, このファイル名のファイルを作成しておく必要がある。

       -i パッチ用イメージファイルを指定する。 
          パッチイメージは, mkpatchコマンドで作成する。mkpatchコマンド及び
          その使用方法は, 8.に示す。

       -F 仮想区画が存在する場合, イメージファイルの最終ブロックに最新の
          VATを書き出す。

    [使用例]
       $ ./mkpatch -i patchdef.pat -o pimage
       $ ./udf_creat -nocrc  -p /file
       $ ./udf_patch -p /file -i pimage 

5.2.15 UDFボリュームファイルのクローズ

    [名前]
       udf_final - AVDPを記録し、イメージファイルを閉じる。 

    [形式]
       udf_final [-A n] [-A n-256] 

    [機能]
       カレントディレクトリのイメージファイルudfvolume.imgに, オプションで
       指定された位置に開始ボリューム記述子ポインタを記録する。
       仮想区画が存在する場合は, 最終ブロックに最新のVATを書き出す。

       開始ボリューム記述子ポインタを記録する位置の指定が最終ブロックで
       ある場合には, VAT ICBは最終ブロックに書き込まれない。
      
       -A 開始ボリューム記述子ポインタ(AVDP)を記録する位置を指定する。 
            n : 最終ブロックに開始ボリューム記述子ポインタを記録する。
                最終ブロックにVATを記録したい場合は, この引数を指定しない。
            n-256: N-256のブロックに開始ボリューム記述子ポインタを記録する。

    [使用例]
       $ ./udf_final -A n-256

5.2.16 イメージの書込み

    [名前]
       scsiwrite - イメージファイルの書込み 

    [形式]
       scsiwrite -d device -i imagefile [-p packetlst]

    [機能]
       装置ファイル名deviceで指定した装置に対して
       イメージファイルの書込みを行う。

       パケットのリストpacketlstが定義されている場合は, 
       イメージファイルimagefileをパケットのリストに従って 
       パケットライティングで書込みを行う。
     
       -d 書込みを行う装置ファイルを指定する。 
          接続されたSCSI機器の割付順によって適切に変更する。

       -i UDFフォーマットのイメージファイルを指定する。 

       -p パケットのリストが記録されているパラメタファイルを指定する。
          パケットリストファイルには, "パケットの最終アドレス + 7"の
          値が, 2進で記録されている。

    [使用例]
       $ ./scsiwrite -d /dev/sga -i udfvolume.img -p packetlst.dat 

備考1 -F オプション

イメージ作成に使用するすべてコマンドに, -F オプションがある。 udf_mkfsコマンドのパラメタファイルにおいて, VATの使用を宣言して このオプションを指定すると, イメージファイルの最終アドレスにVAT ICBのブロックを記録し, リンクブロック用のダミーのブロックを挿入する。 このときパケットライティング用のリストファイル packetlst.datが更新される。

備考2 VATデータファイル

5.に示した各コマンドを使用すると, vatfile.datというファイルが 作成される。これには, イメージファイルの最新VATデータが保存されて いる。-F オプションによって最終アドレスにVATが書き込まれるまでは, 各コマンドは, このファイルに保存されているVATデータをロードする。

イメージ作成の途中でこのファイルを削除すると, イメージファイル上に 作成したファイルを参照できなくなる。

udf_mkfsコマンドのパラメタファイルにおいてVATの使用を宣言 しなくても, このファイルは作成される。各プログラムがワークファイル として参照しているため, 消去しないこと。


6. ボリューム定義ファイルの記述

UDF適合性試験ツールのボリュームファイル作成コマンドudf_mkfsのパラメタとして指定するボリューム定義ファイルの記述方法を規定する。

6.1 基本事項

6.1.1 ボリューム定義ファイルの構造

ボリューム定義ファイルの構造を次に示す。

          Directive1  [value]
          Directive2  [value]

          Descriptor1:
          Directive1  value1  value2 ..
          Directive2  value2  value2 ..
          ENDS

          Descriptor2:
          Directive1  value1  value2 ..       
          Directive2  value1  value2 ..
          ENDS

          ...

          END

ボリューム記述子定義セクションの開始を示すラベルと, その終了を示すENDSとの間に, フィールド設定用のディレクティブとディレクティブ毎の設定値とを記述する。

定義セクション内にないディレクティブは, ボリューム全体に関するパラメタを設定するのに使用する。

ボリュームイメージの定義は, ENDで終了する。

6.1.2 ボリューム記述子の記録順序

主ボリューム記述子列の定義セクションから, 定義されている順に記述子を記録する。開始ボリューム記述子は, 全記述子を記録した後に指定された位置に記録する。

記述子が書かれないブロックに関しては, Padd定義セクションを使用して, 適切なブロック数だけパディングを行う。

6.2 ボリュームのパラメタ

   (1) DiscSize
 	機能:ディスクの容量を指定する。
	記述:"DiscSize  size"
		size : ディスクの最大ブロック数

   (2) BlockSize 
 	機能:ブロックサイズを指定する。
	記述:"BlockSize  size"
		size : ディスクのブロックサイズ

   (3) BlockCntl
 	機能:空きブロックの管理方法を指定する。
	記述:"BlockCntl  method"
		method : 0/1/2 = Bitmap/Table/Vat 
	
   (4) Anchor 
	機能:開始ボリューム記述子ポインタの位置を指定する。
	記述:"Anchor  pos"
		pos : 256 or 512 
	備考:これは, 初期化されたボリュームのイメージだけの
	      指定を行うためのディレクティブなので, 
	      N, N-256については扱わない。
	      N, N-256の開始ボリューム記述子の記録については, 
	      コマンドudf_closeで扱う。

   (5) VDS_Start 
 	機能:ボリューム記述子列の開始位置を指定する。
	記述:"BlockCntl  method"
		method : 0/1/2 = Bitmap/Table/Vat 

   (6) ISOBridge
	機能:ボリュームが, ISO 9660ブリッジをもつことを指定する。
	記述:"ISOBridge" 

   (7) UdfRevision 
	機能:UDFの規定を指定する。
	記述:"UdfRevision   vers" 
		vers = X.YY形式の数字

6.3 基本ボリューム記述子の定義

   (1) PVD:
	基本ボリューム記述子の定義セクションの
	開始を指定する。

   (2) Copyright 
 	機能:著作権ファイルのエクステントの位置及びサイズを指定する。
	記述:"Copyright  loc  len"
		loc: エクステントの位置
		len: エクステントのサイズ

   (3) Abstract
	機能:抄録ファイルのエクステントの位置及びサイズを指定する。
	記述:"Abstract  loc  len"
		loc: エクステントの位置
		len: エクステントのサイズ

   (4) VolumeID
	機能:ボリューム識別子を指定する。
	記述:"VolumeID identifier" 
		identifier: 識別子

   (5) hVolumeID
	機能:ボリューム識別子を16進で直接指定する。
	記述:"hVolumeID idcode compid" 
		idcode: 1バイトを2桁の16進数で記述。バイト間は','で区切る。
		compid: UDF圧縮識別子	

   (6) VolumeSetID
	機能:ボリューム集合識別子の8バイト目以降に記録するIDを指定する。
	記述:"VolumeSetID identifier"

   (7) ENDS
	定義セクションの終了を指定する。

6.4 論理ボリューム記述子の定義

   (1) LVD:
	論理ボリューム記述子の定義セクションの開始を指定する。

   (2) BlockSize 
 	機能:論理ブロックサイズを指定する。
	記述:"BlockSize  size"
		size: ブロックサイズ 

   (3) Integrity 
	機能:論理ボリューム保全記述子列のエクステントの位置及びサイズを指定する。
	記述:"Integrity  loc  len"
		loc: エクステントの位置
		len: エクステントのサイズ

   (4) FileSet 
	機能:ファイル集合記述子の位置を指定する。
	記述:"FileSet loc pno" 
		loc: ファイル集合記述子のエクステントの位置
		pno: ファイル集合記述子のある区画番号

   (5) VolumeID
	機能:ボリューム識別子を指定する。
	記述:"VolumeID identifier" 
		identifier: ボリューム識別子 
		compid: UDF圧縮識別子	

   (6) hVolumeID
	機能:ボリューム識別子を16進で直接指定する。
	記述:"hVolumeID idcode compid" 
		idcode: 1バイトを2桁の16進数で記述。バイト間は','で区切る。
		compid: UDF圧縮識別子	

   (7) PMap 
	機能:区画マップを指定する。
	記述:"PMap type volno pno" 
		type: "TYPE1"  タイプ1の区画マップ
		      "VMAP"   仮想区画マップ
		      "SMAP"   スペアラブル区画マップ
		volno: ボリューム番号
		pno: 区画番号

   (8) ENDS
	定義セクションの終了を指定する。

6.5 区画記述子の定義

   (1) PD:
	区画記述子の定義セクションの開始を指定する。

   (2) PartitionNo 
 	機能:区画番号を指定する。
	記述: "PartitionNo  pno"
		 pno: 区画番号 

   (3) AccessType 
	機能:アクセス種別を指定する。
	記述: "AccessType  type"
		type: アクセス種別 (1:ReadOnly,2:WriteOnce,3:ReWritable, 4:OverWrite) 

   (4) Location 
	機能:区画の開始位置及びサイズを指定する。
	記述:"Location loc len" 
		loc:  区画の開始位置 
		len:  区画のサイズ 

   (5) UnallocTbl 
	機能:未割付空間テーブルの開始位置及びサイズを指定する。
	記述:"UnallocTbl loc len" 
		loc: 未割付空間テーブルの開始位置(使用しない場合は0)  
		len: 未割付空間テーブルのサイズ(使用しない場合は0) 

   (6) UnallocBmp 
	機能:未割付空間ビットマップの開始位置及びサイズを指定する。
	記述:"UnallocBmp loc len" 
		loc: 未割付空間ビットマップの開始位置(使用しない場合は0)  
		len: 未割付空間ビットマップのサイズ(使用しない場合は0) 

   (7) FreeTbl 
	機能:自由空間テーブルの開始位置及びサイズを指定する。
	記述:"UnallocTbl loc len" 
		loc: 自由空間テーブルの開始位置(使用しない場合は0)  
		len: 自由空間テーブルのサイズ(使用しない場合は0) 

   (8) FreeBmp 
	機能:自由空間ビットマップの開始位置及びサイズを指定する。
	記述:"UnallocBmp loc len" 
		loc: 自由空間ビットマップの開始位置(使用しない場合は0)  
		len: 自由空間ビットマップのサイズ(使用しない場合は0) 

   (9) IntegTbl 
	機能:区画保全テーブルの開始位置及びサイズを指定する。
	記述:"integTbl loc len" 
		loc: 区画保全テーブルの開始位置(使用しない場合は0)  
		len: 区画保全テーブルのサイズ(使用しない場合は0) 

   (10) ENDS
	定義セクションの終了を指定する。

6.6 未割付け空間記述子の定義

   (1) USD:
	未割付け空間記述子の定義セクションの開始を指定する。

   (2) UnallocExtent 
	機能:未割付け空間エクステントの開始位置及びサイズを指定する。
	記述:"integTbl loc len" 
		loc: 未割付け空間の開始位置
		len: 未割付け空間のサイズ

   (3) ENDS
	定義セクションの終了を指定する。

6.7 処理システム用ボリューム記述子の定義

   (1) IMPL:
	処理システム用ボリューム記述子の定義セクションの開始を指定する。

   (2) VolumeID 
	機能:ボリューム識別子を指定する。
	記述:"VolumeID identifier" 
		identifier: ボリューム識別子

   (3) ENDS
	定義セクションの終了を指定する。

6.8 終端ボリューム記述子の定義

   (1) TVD:
	 終端ボリューム記述子の定義セクションの開始を指定する。

   (2) ENDS
	定義セクションの終了を指定する。

6.9 開始ボリューム記述子ポインタ

   (1) AVDP:
	開始ボリューム記述子ポインタの定義セクションの開始を指定する。

   (2) Main 
	機能:主ボリューム記述子列の開始位置及びサイズを指定する。
	記述:"Main loc len" 
		loc: 主ボリューム記述子列の開始位置
		len: 主ボリューム記述子列のサイズ

   (3) Reserve 
	機能:予備ボリューム記述子列の開始位置及びサイズを指定する。
	記述:"Reserve loc len" 
		loc: 予備ボリューム記述子列の開始位置
		len: 予備ボリューム記述子列のサイズ

   (4) ENDS
	定義セクションの終了を指定する。

6.10 ボリューム記述子ポインタ

   (1) VDP:
	ボリューム記述子ポインタの定義セクションの開始を指定する。

   (2) Next 
	機能:次のボリューム記述子列の開始位置及びサイズを指定する。
	記述:"Main loc len" 
		loc: 次のボリューム記述子列の開始位置
		len: 次のボリューム記述子列のサイズ

   (3) ENDS
	定義セクションの終了を指定する。

6.11 自由空間ビットマップ

   (1) BMP:
	自由空間ビットマップの定義セクションの開始を指定する。

   (2) BitNum
	機能:ビット数を指定する。
	記述:"BitNum num" 
		num: ビット数 

   (3) ByteNum
	機能:ビットマップのバイト数を指定する。
	記述:"ByteNum num" 
		num: バイト数 

   (4) ENDS
	定義セクションの終了を指示する。

6.12 論理ボリューム保全記述子

   (1) LVID: 
	論理ボリューム保全記述子の定義セクションの開始を指示する。

   (2) Type 
	機能:論理ボリューム保全記述子のタイプを指定する。
	記述:"Type desctype" 
		desctype: "Open", or "Close" 

   (3) Next 
	機能:次の保全記述子列を指定する。
	記述:"Next loc len" 
		loc: 次の保全記述子列の開始位置 
		len: 次の保全記述子列のサイズ

   (4) PartNum 
	機能:区画数を指定する。
	記述:"PartNum num" 
		num: 区画数 

   (5) FileNum 
	機能:ファイル数を指定する。
	記述:"FileNum num" 
		num: ファイル数 

   (6) DirNum 
	機能:ディレクトリ数を指定する。
	記述:"DirNum num" 
		num: ディレクトリ数 

   (7) SpaceTbl 
	機能:利用可能空間テーブルを指定する。
	記述:"SpaceTbl size1 size2 ...." 
		sizeN: 区画Nの利用可能なサイズ
		      (N=5まで)

   (8) SizeTbl 
	機能:区画サイズテーブルを指定する。
	記述:"SizeTbl size1 size2 ...." 
		sizeN: 区画Nのサイズ
		      (N=5まで)

   (9) ENDS
	定義セクションの終了を指示する。

6.13 ファイル集合記述子

   (1) FSD: 
	ファイル集合記述子の定義セクションの開始を指示する。

   (2) VolumeID
	機能:論理ボリューム識別子を指定する。
	記述:"VolumeID identifier" 
		identifier: 論理ボリューム識別子

   (3) FileSetID
	機能:ファイル集合識別子を指定する。
	記述:"FileSetID identifier" 
		identifier: ファイル集合識別子 

   (4) Root 
	機能:ルートディレクトリICBの位置を指定する。
	記述:"Root loc len partno" 
		loc: ルートディレクトリICBの位置
		len: ルートディレクトリICBのサイズ
		partno: ルートディレクトリICBの区画番号

   (5) ENDS
	定義セクションの終了を指示する。

6.14 パディング

   (1) Padd:
	パディング用のブロックの定義セクションの開始を指示する。

   (2) Blocks
	機能:パディングするブロックのブロック数を指定する。
	記述:"Blocks n" 
		n: ブロック数 

   (3) ENDS
	定義セクションの終了を指示する。


7. 拡張属性定義ファイルの記述

UDF適合性試験ツールのファイル作成コマンドudf_creatのパラメタとして指定する拡張属性定義ファイルの記述方法を規定する。

7.1 基本事項

7.1.1 拡張属性定義ファイルの構造

拡張属性定義ファイルの構造を次に示す。

          Attribute1:
          Directive1  value1  value2 ..
          Directive2  value2  value2 ..
          ENDE 

          Attribute2:
          Directive1  value1  value2 ..       
          Directive2  value1  value2 ..
          ENDE

          ....

          END

拡張属性定義セクションの開始を示すラベルと, その終了を示すENDEとの間に, フィールド設定用のディレクティブとディレクティブ毎の設定値とを記述する。

拡張属性の定義はENDで終了する。

7.1.2 拡張属性の記録順序

先頭の拡張属性定義セクションから, 定義されている順に属性が作成される。

7.2 ファイル日時拡張属性の定義

   (1) FILE_TIMES:
	ファイル日時拡張属性の定義セクションの
	開始を指定する。
	デフォルトの作成日時又は現在時刻が設定する。

   (2) ENDE
	定義セクションの終了を指定する。

7.3 空きEA空間の定義

   (1) IMPLUSE_FREE:
	空きEA空間の定義セクションの開始を指定する。

   (2) Spalcelen 
	機能:空き空間のサイズを指定する。
	記述:"Spacelen  len"
		len: 空き空間サイズ 

   (3) ENDE
	定義セクションの終了を指定する。

7.4 DVD著作権管理情報の定義

   (1) IMPLUSE_DVD:
	DVD著作権管理情報の定義セクションの開始を指定する。

   (2) CGMS 
	機能:バイトのCGMS情報を指定する。
	記述:"CGMS  data"
		data: CGMS情報

   (3) DataType
	機能:データ構造種別を指定する。
	記述:"DataType  type"
		type: データ種別

   (4) SystemInfo 
	機能:保護システム情報を指定する。
	記述:"SystemInfo info" 
		info: 4バイトデータを10進で指定する。

   (5) ENDE

7.5 OS2拡張属性の定義

   (1) IMPUSE_OS_EA
	OS2拡張属性の定義セクションの開始を指定する。

   (2) Flag 
	機能:Flagを指定する。
	記述:"Flag data" 
		data: フラグ 

   (3) Name  
	機能:名前を指定する。
	記述:"Name  name" 
		name: 名前 

   (4) Fea  
	機能:"名前"の後に記録するOS/2拡張属性の値を指定する。
	記述:"Fea  data1,data2,data2,..,dataN " 
		dataN: 2桁の16進数 

   (3) ENDE
	定義セクションの終了を指定する。

備考 OS/2の拡張属性については, 次の文献を参照されたい。

"Installable File Systems for OS/2 Version 2.0"
OS/2 File System Dpartment
PSPC Boca Raton, Florida
February 17, 1992

7.6 OS/2拡張属性長の定義

   (1) IMPLUSE_OS2EA_LEN
	OS/2拡張属性長の定義セクションの開始を指定する。

   (2)  EAlen 
	機能:OS/2拡張属性長を指定する。
	記述:"EAlen len" 
		len: 拡張属性長 

   (3) ENDE
	定義セクションの終了を指定する。

7.7 Macintoshファインダ情報の定義

   (1) IMPLUSE_MAC_FINDER
	Macintoshファインダ情報の定義セクションの開始を指定する。

   (2) Type
	機能:ファインダ情報の種別を指定する。
	記述:"Type ftype" 
		ftype: "File" or "Dir" 
	
   (3) RsrcLen
	機能:リソースフォークのデータサイズを指定する。
	記述:"RsrcLen len" 
		len: リソースデータ長 

   (4) RsrcAllocLen 
	機能:リソースフォークのデータサイズを指定する。
	記述:"RsrcLen len" 
		len: リソースデータ長 

   (2) ENDE
	定義セクションの終了を指定する。

備考 親ディレクトリID及びファイル情報については, 特に指定がないため, ここではすべて0を設定している。ファイル情報を設定するための必要となるディレクティブも用意していない。

7.8 Macintoshリソースフォーク

   (1) IMPLUSE_MAC_RSRC
	Macintoshリソースフォークの定義セクションの開始を指定する。

   (2) RsrcLen 
	機能:リソースフォーク拡張属性に設定する拡張属性のサイズ
	記述:"RsrcLen  len" 
		len: リソースのサイズ
		このディレクティブにつづいて, リソースデータを16進で
		列挙して指定する。

   (4) ENDE
	定義セクションの終了を指定する。

7.9 ボリューム記述子ポインタ

   (1) VDP
	ボリューム記述子ポインタの定義セクションの開始を指定する。

   (2) Next 
	機能:次のボリューム記述子列の開始位置及びサイズを指定する。
	記述:"Main loc len" 
		loc: 次のボリューム記述子列の開始位置
		len: 次のボリューム記述子列のサイズ

   (3) ENDS
	定義セクションの終了を指定する。

7.10 アプリケーション用空きEA空間

   (1) APPUSE_FREE
	自由空間ビットマップの定義セクションの開始を指定する。

   (2) Spalcelen 
	機能:空き空間のサイズを指定する。
	記述:"Spacelen  len"
		len: 空き空間サイズ 

   (3) ENDE
	定義セクションの終了を指定する。

7.11 装置仕様の拡張属性

   (1) DEV_SPEC
	装置仕様の拡張属性の定義セクションの開始を指定する。

   (2) Major 
	機能:メジャ装置番号を指定する。
	記述:"Major  number"
		number: メジャ装置番号 

   (3) Minor 
 	機能:マイナ装置番号を指定する。
	記述:"Minor  number"
		number: マイナ装置番号 

   (4) ENDE
	定義セクションの終了を指定する。


8. パッチ用イメージファイル

UDF適合性試験ツールで使用するコマンドudf_patchのパラメタとして指定するパッチ用イメージファイルを規定する。

8.1 基本事項

8.1.1 パッチイメージファイルの作成

パッチイメージファイルは, コマンドmkpatchによって次のとおりに作成する。

$ mkpatch -i パッチ定義ファイル -o 出力ファイル名

コマンドmkpatchの出力ファイルを, udf_patchの入力に使用する。

8.1.2 パッチイメージ定義ファイルの構造

パッチイメージ定義ファイルの構造を次に示す。

          Block1:
          Directive1  value1  value2 ..
          Directive2  value2  value2 ..
          ENDB 

          Block2:
          Directive1  value1  value2 ..       
          Directive2  value1  value2 ..
          ENDB

          ....

          END

ブロック定義セクションの開始を示すラベルと, その終了を示すENDBとの間に, フィールド設定用のディレクティブとディレクティブ毎の設定値とを記述する。

パッチイメージの定義は, ENDで終了する。

8.1.3 ブロックの記録順序

先頭のブロック定義セクションから, 定義されている順にパッチ用のブロックが作成される。

8.1.4 パッチイメージ定義ファイルで扱うアドレス

パッチイメージ定義ファイルで使用するアドレス(タグ位置, 割付け記述子中のアドレス等)は, パッチイメージファイルの先頭からのオフセット値を定義する。イメージファイルudfvolume.imgにパッチするときに, udf_patchツールが適切なアドレスに変換する。

パッチする際に, ファイルエントリ及び割付けエクステント記述子のCRC及びチェックサムは, udf_patchツールが計算して適切な値を設定する。

8.2 ファイルエントリブロックの定義

   (1) FILE_ENTRY:
	ファイルエントリブロックの定義セクションの
	開始を指定する。

   (2) TAG_Version
	機能:タグ版数を指定する。
	記述:"TAG_Version  version"
		version: 版数(2を指定) 

   (3) TAG_Serial
	機能:タグシリアル番号を指定する。
	記述:"TAG_Serial  serial"
		serial: シリアル番号 

   (4) TAG_Location
	機能:タグの位置を指定する。
	記述:"TAG_Location  loc"
		loc: タグの位置 

   (5) ICB_PreRecord
	機能:記録済み直接エントリの個数を指定する。
	記述:"ICB_PreRecord  num"
		num: 記録済み直接エントリの個数 

   (6) ICB_Strategy
	機能:方策種別を指定する。
	記述:"ICB_Strategy  strategy"
		strategy: ストラテジ(=4) 

   (7) ICB_MaxEntries
	機能:最大エントリ番号を指定する。
	記述:"ICB_MaxEntries  max"
		max: 最大エントリ番号(=1) 

   (8) ICB_FileType
	機能:ファイルタイプを指定する。
	記述:"ICB_FileType  ftype"
		ftype: ファイルタイプ(4:directory, 5:ファイル) 

   (9) ICB_ParentLBN
	機能:親ICB位置を指定する。
	記述:"ICB_ParentLBN  lbn"
		lbn: 親ICBのアドレス(=0) 
		このアドレスは, パッチする際に変換されない。

   (9) ICB_ParentPart
	機能:親ICBの区画を指定する。
	記述:"ICB_ParentPart  pno"
		pno: 親ICBの区画番号(=0) 

   (10) ICB_Flag
	機能:ICBフラグを指定する。(割付け記述子のタイプを指定)
	記述:"ICB_Flag  flag"
		flag: icbフラグの値を10進で設定。 

   (11) Uid
	機能:利用者IDを指定する。
	記述:"Uid  idno"
		idno: 利用者ID番号を10進で設定。 

   (12) Gid
	機能:グループIDを指定する。
	記述:"Gid  idno"
		idno: グループID番号を10進で設定。 

   (13) Permission
 	機能:許可条件を指定する。
	記述:"Permission  mode"
		mode: 許可条件を10進で設定。 

   (14) LinkCount
	機能:リンクカウントを指定する。
	記述:"LinkCount  count"
		count: リンクカウント

   (15) InfoLen
	機能:情報長を指定する。
	記述:"InfoLen  len"
		len: 情報長を16進で指定。 

   (16) BlockNum
	機能:記録済み論理ブロック数を指定する。
	記述:"BlockNum  num"
		num: ブロック数 

   (17) CheckPoint
	機能:記録済み論理ブロック数を指定する。
	記述:"CheckPoint  num"
		num: ブロック数 

   (18) AccessTime
	機能:アクセス日時を指定する。
	記述:"AccessTime  datetimestring"
		datetimestring: 日時を次のとおりに指定。 
		19980807060504030201: 1998年8月7日6時5分4.030201秒

   (19) ModificationTime
	機能:変更日時を指定する。
	記述:"ModificationTime  datetimestring"
		datetimestring: 日時を指定(指定方法は, AccessTimeと同様。)

   (20) AttributeTime
 	機能:属性日時を指定する。
	記述: "AttributeTime  datetimestring"
		datetimestring: 日時を指定( 指定方法はAccessTimeと同様。)

   (21) AllocDescLen
	機能:割付け記述子欄のサイズを指定する。
	記述:"AllocDescLen  len"
		len: 割付け記述子欄のサイズ

	このディレクティブに続いて, 割付け記述子欄に記録するデータを
	直接指定する。1バイトを2桁の16進数で表わし, 各バイトの定義毎
	に','を記録する。(最後のバイトの定義の後も','を省かない。) 

   (22) ENDB
	定義セクションの終了を指定する。

8.3 割付けエクステント記述子ブロックの定義

   (1) ALLOC_EXT_DESC
	割付けエクステント記述子ブロックの定義セクションの
	開始を指定する。

   (2) TAG_Version 
	機能:タグ版数を指定する。
	記述:"TAG_Version  version"
		version: 版数(2を指定) 

   (3) TAG_Serial
	機能:タグシリアル番号を指定する。
	記述:"TAG_Serial  serial"
		serial: シリアル番号 

   (4) TAG_Location
	機能:タグの位置を指定する。
	記述:"TAG_Location  loc"
		loc: タグの位置 

   (5) AllocDescLen
	機能:割付け記述子欄のサイズを指定する。
	記述:"AllocDescLen  len"
		len: 割付け記述子欄のサイズ

	このディレクティブに続いて, 割付け記述子欄に記録するデータを
	直接指定する。1バイトを2桁の16進数で表わし, 各バイトの定義毎
	に','を記録する。(最後のバイトの定義の後も','を省かない。) 

   (6) ENDB
	定義セクションの終了を指定する。

8.4 エクステントブロックの定義

   (1) EXTENT
	エクステントブロックの定義セクションの開始を指定する。

   (2) Len 
	機能: 続いて定義するデータのサイズを指定する。
	記述:"Len  daatalen"
		datalen: 続いて定義するデータのサイズ 

	このディレクティブに続いて, エクステントに記録するデータを
	直接指定する。1バイトを2桁の16進数で表わし, 各バイトの定義毎
	に','を記録する。(最後のバイトの定義の後も','を省かない。) 

   (3) ENDB