試験ツールは, 次に示すコマンドの組合せで構成される。コマンドを組み合せたシェルスクリプトによって, イメージの作成及びディスクへの書込みを行う。
(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
コマンドの形式において, 各オプションは任意の順序で指定できる。ここで, []で囲ったものは省略でき, 囲っていないものは省略できない。
[名前] 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
[名前] 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で作成する。
[名前] 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
[名前] 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
[名前] 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
[名前] 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
[名前] 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
[名前] 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
[名前] udf_rm - ファイルの削除 [形式] udf_rm -p filename [-F] [機能] ファイルfilenameを, その親ディレクトリの中から削除する。 udf_rmは, 親ディレクトリの中にある当該ファイルのファイル識別子記述子の削除 ビットを1にする。 -p 削除するファイル名を絶対パスで指定する。 -F 仮想区画が存在する場合, イメージファイルの最終ブロックに最新の VATを書き出す。 [使用例] $ ./udf_creat -p /deletefile $ ./udf_rm -p /deletefile
[名前] 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
[名前] 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
[名前] 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
[名前] 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
[名前] 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
[名前] 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
[名前] 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の使用を宣言 しなくても, このファイルは作成される。各プログラムがワークファイル として参照しているため, 消去しないこと。