mkproto コマンド
目的
プロトタイプ・ファイルシステムを構成します。
構文
mkproto Special Prototype
説明
mkproto コマンドは、新規ファイルシステムのプロトタイプを構成するのに使用されます。 このコマンドは、Berkeley Software Distribution (BSD) の互換性を確保するために提供されています。
Special パラメーターは、ブロック・デバイス名、ロウ・デバイス名、ファイルシステム名です。 Prototype パラメーターは、作成するファイルシステムの構造と内容を指定するプロトタイプ・ファイルの名前です。 mkproto コマンドは、 Prototype および Special パラメーターを使って、 mkfs コマンドを呼び出します。
プロトタイプ・ファイル
mkproto と mkfs コマンドは、 ジャーナル・ファイルシステム (JFS) を作成するために拡張プロトタイプ・ファイルを必要とします。 プロトタイプ・ファイル とは、ファイルシステムの内容と構造がフォーマットされたリストです。 プロトタイプ・ファイルは、スペースと改行で区切った一連のトークンによってファイルシステムを記述します。 プロトタイプ・ファイルの本体は、ファイルシステムのオブジェクトを定義します。
JFS プロトタイプ・ファイルは本体から構成され、その本体は 5 つの特殊トークンに続く proto コマンドで作成できます。 この 5 つのトークンは次のように定義されています。
項目 | 説明 |
---|---|
第 1 のトークン | ブートストラップ・プログラムまたは特殊なトークン <noboot> としてブロック 0 にコピーするファイルの名前。 |
第 2 のトークン | ファイルシステムのサイズ。 JFS の場合、サイズは 512 バイトのブロック単位で表されます。 第 2 のトークンが 0 であれば、mkfs コマンドは論理ボリュームいっぱいに入るファイルシステムを作成します。 |
第 3 のトークン | ファイルシステム上の i ノード数。 このトークンは JFS では使用しませんが、位置を保存するために与えなければなりません。 |
第 4 のトークン | バイト数で表すファイルシステムのフラグメント・サイズ。 第 4 のトークンが 0 (ゼロ) であれば、mkfs コマンドはデフォルトのフラグメント・サイズを使用します。 JFS の場合、トークンは 0、512、1024、2048、4096 のいずれかです (デフォルトの使用値は 0)。 JFS の場合、デフォルトのフラグメント・サイズは 4096 です。 無効なフラグメント・サイズを指定すると、mkfs コマンドが異常終了します。 |
第 5 のトークン | i ノード 1 個当たりのバイト数 (nbpi)。 このトークンが 0 であれば、mkfs コマンドはデフォルトの nbpi を使用します。 JFS の場合、このトークンは 0、512、1024、2048、4096、8192、16384 のいずれかです (デフォルトの使用値は 0)。 JFS の場合、i ノード 1 個当たりのデフォルトのバイト数は 4096 です。 無効な nbpi を指定すると、mkfs コマンドが異常終了します。 |
残りのトークンは、ファイルシステムの内容と構造を定義します。 これらのトークンはセットとしてグループ化されており、各セットはファイルシステムのオブジェクトを 1 つずつ定義します。 各セットの構文は次のとおりです。
{ [ Name ] { - | { - | d | b | c | l | L | p } { - | u } { - | g } { - | t } Mode Owner Group { Major Minor | SourceFile | DirectoryListing } } | { $ }
ここで、
項目 | 説明 |
---|---|
Name | 新しいファイルシステム内に表示されるとおりのオブジェクト名を指定します。 Name トークンは、ルート・ディレクトリー定義を除くすべてのオブジェクトに必要です。 |
{ - | d | b | c | l | L | p } { - | u } { - | g } { - | t } | 4 つの定位置文字の文字列を表します。この場合、各文字の意味は次のとおりです。
この 4 文字のトークンは、すべてのオブジェクトに必須です。 |
Mode | オブジェクトの読み取り、書き込み、実行の許可を定義する 3 つの 8 進文字からなる文字列を表します。 Mode トークンは、すべてのオブジェクトに必須です。許可についての詳細は、chmod コマンドを参照してください。 |
Owner | オブジェクトのオーナーの UID を指定します。 オーナー・トークンは、すべてのオブジェクトに必須です。 |
Group | オブジェクトのオーナーの GID を指定します。 グループ・トークンは、すべてのオブジェクトに必須です。 |
Major Minor | そのタイプがブロック・スペシャル・ファイルまたは文字スペシャル・ファイルの場合に、オブジェクトのメジャー・デバイス番号とマイナー・デバイス番号を指定します。 オブジェクトがブロック・スペシャル・ファイルまたは文字スペシャル・ファイルでない場合、これらのトークンは省略されます。 |
SourceFile | 正規ファイル、ハード・リンク、およびシンボリック・リンクのオブジェクトにのみ適用されます。 正規ファイルの場合、このトークンはオブジェクト・ファイルを初期化するファイルへのパス名です。 シンボリック・リンクとハード・リンクの場合、このトークンはリンク・ソースです。 リンク・ソースは、ハード・リンク向けの新しいファイルシステムを基準にしています。 |
DirectoryListing | オブジェクトがディレクトリーであれば、その内容を定義します。 ディレクトリーの内容は、ここで説明するトークンの構文を使用して定義します。 例えば、ディレクトリー・リストには 1 つ以上の正規ファイル、1 つ以上のブロック・ファイル、および 1 つ以上のディレクトリー・リストを入れることができます。 mkfs コマンドは、ディレクトリー・エントリー . (ドット) と .. (ドット - ドット) を作成します。 各ディレクトリー・リストは、特殊 $ トークンで終了します。 |
$ | 現行ディレクトリー・リストを終了させるか、またはプロトタイプ・ファイルの終わりを示します。 |
プロトタイプ仕様の例
次のプロトタイプ仕様は、ブロック 0 にブート・プログラムが入っておらず、デバイス全体を占めている JFS を記述します。 第 3 のトークンは無視されます。 第 4 と第 5 のトークンは、フラグメント・サイズを 1024 バイト、i ノード 1 個当たりのバイト数を 2048 に定義します。 このプロトタイプの本体は、ファイルシステムの内容を定義します。
<noboot> 0 0 1024 2048
d--- 755 0 0
dir1 d--- 755 0 2
block_dev b--- 644 0 0 880 881
char_dev c--- 644 0 0 990 991
named_pipe p--- 644 0 0
regfile3 ---- 644 0 0 /tmp/proto.examp/dir1/regfile3
regfile4 ---- 644 0 0 /tmp/proto.examp/dir1/regfile4
$
dir2 d--- 755 205 300
regfile6 ---- 644 0 0 /tmp/proto.examp/dir2/regfile6
symlnOutofFS l--- 644 0 0 /tmp/proto.examp/dir2/regfile6
symlnNoExist l--- 644 0 0 /home/foobar
symlnInFs l--- 644 0 0 /dir2/regfile6
regfile5 ---- 644 0 0 /tmp/proto.examp/dir2/regfile5
hardlink L--- 644 0 0 /dir2/regfile5
$
dir3 d--- 755 0 0
setgid --g- 755 0 0 /tmp/proto.examp/dir3/setgid
setuid -u-- 755 0 0 /tmp/proto.examp/dir3/setuid
sticky ---t 755 0 0 /tmp/proto.examp/dir3/sticky
$
dir4 d--- 755 0 0
dir5 d--- 755 0 0
dir6 d--- 755 0 0
$
dir7 d--- 755 0 0
$
$
regfile7 ---- 644 0 0 /tmp/proto.examp/dir4/regfile7
$
regfile1 ---- 555 205 1 /tmp/proto.examp/regfile1
regfile2 ---- 744 0 0 /tmp/proto.examp/regfile2
$
$
dir2 オブジェクトに関する 3 つのエントリーは、さらに検査されます。
項目 | 説明 |
---|---|
symlnOutofFS l—- 644 0 0 /tmp/proto.examp/dir2/regfile6 | このエントリーは、作成されるファイルシステムの外側にあるファイルへのシンボリック・リンクを定義します。 コマンド ls -l は、symlnOutofFS -> /tmp/proto.examp/dir2/regfile6 のような行をリストします。 |
symlnNoExist l—- 644 0 0 /home/foobar | このエントリーは、作成されるファイルシステムの外側にあるファイルへのシンボリック・リンクを、存在しないファイルに対して定義します。 コマンド ls -l は、symlnNoExist -> /home/foobar のような行をリストします。 |
symlnInFs l—- 644 0 0 /dir2/regfile6 | このエントリーは、作成されるファイルシステム内のファイルへのシンボリック・リンクを定義します。 コマンド ls -l は、symlnInFS -> /dir/regfile6 のような行をリストします。 |
例
"プロトタイプ・ファイル仕様の例"で説明しているプロトタイプ・ファイルを使用してプロトタイプ JFS を作成する方法は、 次のとおりです。
- proto コマンドまたはテキスト・エディターを使用してプロトタイプ・ファイルの本体を生成します。 この例では、/tmp/ProtoFile ファイルを呼び出します。
- JFS に必要な最初の 5 つのトークンを追加します。
先の例のプロトタイプ・ファイルでは、各トークンは次のとおりです。
<noboot> 0 0 1024 2048
- ファイルシステムを保留する論理ボリュームを次のように作成します。mklv -y protolv -t jfs SomeVGname 5このコマンドは、ボリューム・グループ SomeVGname 内で protolv という名の理論ボリュームを作成します。 この論理ボリュームのサイズは、論理区画 5 個分です。
- /etc/filesystem ファイルに適切なスタンザを追加します。
最小のサンプル・スタンザは次のとおりです。
/protofs: dev = /dev/protolv vfs = jfs log = /dev/loglv00 mount = false
- 次の mkproto コマンドを実行します。
このコマンドは、論理ボリューム protolv 上で JFS を作成します。 JFS のサイズは論理区画 5 個分で、そのフラグメント・サイズは 1024 バイト、nbpi 比は 2048 です。 ファイルシステムの構造と内容は、プロトタイプ・ファイル /tmp/ProtoFile 内で指定されています。mkproto /dev/protolv /tmp/ProtoFile
ファイル
項目 | 説明 |
---|---|
/usr/sbin/mkproto | mkproto コマンドが入っています。 |