説明
config は、オペレーティングシステムの以下の構成に使用します。
config は、次の構成をサポートします。
全カーネル構成 (第一のフォーム)
静的カーネル (vmunix) と動的にロード可能なモジュールの両方が生成され、システムの再ブートが必要になります。
動的にロード可能なモジュールの構成 (第二のフォーム)
指定したロード可能なモジュールは動的に生成され、現在のシステムに登録されます。新しく構成された
サービスは、システムを再ブートすることなく、直ぐに使用できます。
カーネルモジュールは、静的モジュールあるいは動的にロード可能なモジュールです。
第一のフォームは、カーネル全体を構成するのに使用します。すなわち、
静的カーネルとすべてのカーネルモジュールです。 このタイプの構成は、全カーネル構成と呼びます。
第二のフォームは、動的にロード可能なモジュールの構成にのみ使用します。
静的モジュールは、 それらがサポートする機能がシステムで必要かどうかによって、
静的カーネル (vmunix) にインクルードされたり、または取り外されたりする
個々のオブジェクトファイル内で管理されます。 これらのモジュールはロード不可能で、カーネルにリンクされたままです。
また、動的にロード可能なモジュールも個々のオブジェクトファイル内で管理されますが、
それらは、カーネルに静的にリンクされていません。 カーネル全体を再びリンクしたり、あるいはシステムを再ブートすることなく、
ロード可能なモジュールをカーネルに動的にインクルードしたり、カーネルから
動的に取り外したりするように構成できます。 そのようなモジュールの構成時に生成されたロード可能なイメージモジュールは、
カーネルによって自動的にロード/アンロードされたり、管理者によって必要なときに
ロード/アンロードされます。
サブシステム、ファイルシステム、カーネルモジュールのインクルードの方法または取り外し方法
、およびシステムのブート方法については、『 『システム/ワークグループの管理』 』
を参照してください。
全カーネル構成
(第一のフォーム)
カーネル全体を構成するために、 config はユーザーが提供するカーネルモジュールの HP-UX
システムのシステム記述ファイル system_file) とマスターカーネル構成のテーブル情報を読み取ります。
システムファイルおよびカーネルモジュールのシステム記述ファイルは、
システム管理コマンドの kmsystem または kmtune のみを使用して変更するように注意してください。
すべてのカーネルモジュールを構成するために、 config はモジュールで使用するインタフェース関数またはシンボルを調べます。
モジュールがそのマスターファイルの $INTERFACE セクションで暗に示されていないシンボルに依存する場合、構成は失敗します。
そうでない場合には、 config は次の出力ファイルおよびディレクトリを生成します。
システムのさまざまな部分の構成テーブルを定義する
C プログラムのソースファイル (conf.c と space.h )。カーネルモジュールが構成されない限り、これらのファイルは生成されません。
カーネルおよびカーネルモジュールに必要なシステムの
調整可能なパラメータを定義する C プログラムのヘッダファイル (tune.h)
カーネルモジュールに必要な C プログラムのソースファイル
(mod_conf.c )。 space.h ヘッダファイルがモジュールと一緒に提供された場合には、このヘッダファイルはソースファイルに
インクルードされます。
生成された C プログラムをコンパイルし、新しく構成した
システムを静的にリンクされたカーネルモジュールのオブジェクトファイル
(vmunix_test) に再リンクし、カーネルのシンボルテーブル
(symtab) を生成する makefile (config.mk)
構成する動的にロード可能なモジュールをすべて生成する
その他の makefile (config.mod)
生成された動的にロード可能なモジュール、カーネルのシンボルテーブル、
および作成するカーネル (vmunix_test ) に関連するモジュール登録ファイルを保存する ディレクトリ
(dlkm.vmunix_test) 。以後、このディレクトリはカーネル機能セットディレクトリと呼ばれます。
このディレクトリ下のファイルは、カーネル機能セットファイルと呼ばれます。
conf.c をコンパイルするには多くのヘッダファイルが必要です。
また、カーネルをリンクするには、カーネルオブジェクトを含む アーカイブライブラリのファイルが必要です。
これらのファイルはシステムに付属しており、 /usr/conf の下の各ディレクトリにあります。
config.mod およびモジュール登録ファイルは、動的にロード可能なモジュールが構成されない場合には生成されません。
config は、 make コマンドを実行して、 conf.c をコンパイルします。
さらに、カーネルを適切なカーネルライブラリおよび静的にリンクされたモジュールに
リンクし、カーネルのシンボルテーブルを生成します。 また、 config.mod を指定して make コマンドを実行し、
動的にロード可能なモジュールをコンパイルします。
make コマンドは、システムファイルの名前に従ってワークディレクトリにファイルを作成します。 system_file ファイルが /stand/system の場合は、
ワークディレクトリは /stand/build です。 そうでない場合は、ワークディレクトリは、現在のディレクトリになります。 make コマンドが正常に終了すると、次のファイルが生成されます。
カーネルファイル
カーネルファイル vmunix_test はワークディレクトリに生成されます。
カーネル機能セットディレクトリ
カーネル機能セットディレクトリ (dlkm.vmunix_test)
はワークディレクトリに作成されます。
カーネルのシンボルテーブル
カーネルのシンボルテーブル symtab は、カーネル機能セットディレクトリに生成されます。
動的にロード可能なモジュール
動的にロード可能なモジュールは、カーネル機能セットディレクトリの
サブディレクトリ (mod.d) の下に生成されます。
-u オプションが指定された場合は、新しく生成されたカーネルファイルと
そのカーネル機能セットディレクトリは自動的に システムのシャットダウンまたは再起動時に
それぞれのデフォルトの位置 /stand/vmunix と /stand/dlkm へコピーされます。
以前のカーネルファイルとそのカーネル機能セットディレクトリは、 /stand/vmunix.prev と /stand/dlkm.vmunix.prev にそれぞれ保存されます。
全カーネル構成のオプション
カーネル全体を構成する場合、 config コマンドは次の引き数を認識します。
| -c c_file | | config で作成する C プログラムのソースファイルの名前を指定します。
デフォルトのファイル名は conf.c です。 |
| -l m_file | | config によって作成される
makefile の名前を指定します。 これは、C プログラムのソースファイルをコンパイルして新しいカーネルを作成するのに config によって使用される makefile
です。 デフォルトのファイル名は、 config.mk です。 |
| -m master | | config がソースファイルおよび
makefile を作成する際に使用する マスターカーネル構成の情報ファイルまたは
ディレクトリの名前を指定します。 master がディレクトリである場合、 config は、データ構造を作成するのにそのディレクトリから全ファイルを読み取ります。 master がファイルである場合、 config のデータ構造を作成するのにそのファイルだけを読み取ります。
デフォルトでは、 config はファイルをディレクトリ /usr/conf/master.d から読み取ります。 /usr/conf/master.d は
HP-UX オペレーティングシステムの一部であり、 その構造と目的を十分に理解せずに修正してはなりません。 |
| -r path | | ディレクトリ path を検索し、 カーネルを作成するためのライブラリおよびヘッダファイルを探します。
デフォルトでは、 config はディレクトリ /usr/conf を使用します。 |
| -S | | カーネルモジュールをすべてカーネルファイルに静的にリンクします。
このオプションは、カーネルモジュールがロード可能として構成されている
場合にだけ有効です。 |
| -s | | ソースファイルおよび
makefile の作成後に、停止します。 make は実行されず、
カーネル (vmunix_test) およびカーネルモジュールは作成されません。 -s オプションは、 -u オプションと一緒に使用できません。 |
| -t | | キャラクタ型およびブロック型デバイス、カードドライバー、
リンクルーチンを必要とするストリームドライバーおよび ストリーム
モジュール、 system_file に指定されたストリームデバイスおよびストリームモジュールの
メジャーデバイス番号の簡易な表を提供します。 これらの表は特殊デバイスファイルを作成する際に
役に立つことがあります。 |
| -u | | 新しいカーネル環境を正常に構成した後に kmupdate を呼び出します。 -u オプションは -s オプションと一緒に使用できません。 |
| system_file | | ユーザーのシステムの構成情報を含むファイル。 通常のシステムファイルは /stand/system です。このファイルを config への入力として使用する場合は、
生成される出力はディレクトリ /stand/build に置かれます。 /stand/system 以外のファイルを system_file に使用する場合は、 config はその出力ファイルを現在のディレクトリに置きます。
システムファイルは 2 つの部分に分かれています。 第 1 の部分 (必須) の内容はドライバー指定であり、 第 2 の部分
(オプション) はシステム依存の情報です。 |
HP-UX
システムファイルの構築
system_file の第 1 の部分は以下の構成に使用します。
各行は次のような形式になっています。
| devname | | devname は、ディレクトリ /usr/conf/master.d にあるファイルの別名 (エイリアス) テーブル、ドライバーインストールテーブル、
またはデバイステーブルに含まれるドライバーまたはサブシステムの名前です。
例えば、 scsi は SCSI ディスクドライブのドライバーを選択し、 scsitape は
SCSI テープドライブのドライバーを選択し、 nfs は
NFS サブシステムを選択します。 /usr/conf/master.d にあるファイルを合わせると、構成可能なデバイス、カード、サブシステム、
および疑似ドライバーを完全にリストすることができます。 |
第 2 の部分 (オプション) system_file は以下の目的に使用します。
(単一または複数の) ダンプデバイスを定義します。
ハードウェアパスに対するドライバーのマッピングを提供します。
選択されたシステムパラメータの状態と値を定義します。
以下にいくつかの項目に分けて、行の構造を示します。
| (1) スワップデバイスについての指定 |
| | | 複数のスワップ指定はできません。
スワップ指定を与えないと、システムはファイルシステムの 終わりにあるルートデバイス上でスワップを行うように
構成されます。 | swap hw_path offset [blocks] | | | | スワップデバイスの位置とサイズを指定どおりに構成します。
引き数は以下のように解釈されます。 | hw_path | | スワップデバイスとして構成するデバイスを示すハードウェアパス。
または、文字列 default を使ってルートデバイスを使用するように指示することもできます。 | | offset | | スワップ領域の位置。
境界は 1KB ごとに位置しています。 負の値は、ファイルシステムがデバイス上にあるよう指定します。起動時に、スーパ
ーブロックを読み取ってファイルシステムの正確なサイズを取得し、この値を offset に書き込みます。スワップデバイスが自動構成になっている場合は、この処理が行わ
れます。スーパーブロックが無効の場合は、エントリーがスキップされます。これは、
ファイルシステムの最上位にスワップ領域を構成したために破壊されたスーパー
ブロックが、後でファイルシステム全体を破壊してしまわないようにするためです。 offset が正の値か 0 は、確保すべき最小領域を指定します。 0 は、デバイスの最上部に領域を確保しないことを意味します。
0 を指定すると、デバイス上にファイルシステムが存在しないことを意味します。 | | blocks | | スワップ領域内の
1KB ディスクブロックの数 (10 進数) です。 このスワップデバイスの指定では、 blocks パラメータのみがオプションです。 自動構成が行われる場合、0 がデフォルトです。 blocks の値が 0 の場合、残りのデバイスは自動的にすべてスワップ領域に構成されます。 blocks の値が 0 以外の場合、その絶対値がスワップ領域のサイズの上限とみなされます。
このとき、スワップ領域のサイズが実際に削られた場合、 blocks の符号により、 blocks の構成がそのまま有効となってスワップ領域が確保領域に隣接する位置に配置されるか
、未使用領域のサイズによっては blocks の構成が無効となり、スワップ領域がデバイスの最下部に隣接する位置に配置されるか が決まります。 |
| | swap hw_path options | | | | 指定したオプションを使用して指定位置にスワップデバイスを構成します。 hw_path 引き数は前の例にあるのと同じように解釈されます。 options フィールドは、セクションを指定するのに使用します。
これは旧製品との互換性の目的でのみ提供されます。 例えば、 s3 はスワップ領域をセクション 3 に置きます。 | | swap lvol | | 論理デバイスにスワップを構成します。 | | swap none | | カーネルをスワップデバイスなしに構成します。 |
|
| (2) (単一または複数の) ダンプデバイスの指定 |
| | | 単一または複数のダンプ指定ができます。
ダンプ指定を与えないと、一次スワップ領域が使用されます。 | dump hw_path [options] | | | | ダンプデバイスの位置およびサイズを指定のとおりに構成します。
引き数は以下のように解釈されます。 | hw_path | | ダンプデバイスとして構成するデバイスを示すハードウェアパス。
または、文字列 default を使って一次スワップ領域を使用するように指示することもできます。 | | options | | このフィールドはセクションを指定するのに使用します。
これは旧製品との互換性の目的でのみ提供されます。 例えば、 s3 はセクション 3 にダンプ領域を置きます。 |
| | dump lvol | | 論理デバイスにダンプを構成します。 | | dump none | | カーネルをダンプデバイスなしに構成します。 |
|
| (3)ハードウェアパスに対するデバイスドライバー |
| | | ハードウェアパスに対して単一または複数のドライバー指定ができます。
ドライバー文を与えると、指定したソフトウェアモジュールが 指定のハードウェアパスでカーネル
I/O システムに 組み込まれます。これを利用して、自動認識させることができない
デバイスをシステムに認識させることができます。 | driver hw_path driver_name | | | | 指定したハードウェアパスでカーネル
I/O システムに ドライバーをバインドします。引き数は次のように解釈されます。 | hw_path | | ソフトウェアをバインドするデバイスを示すハードウェアパスとして解釈されます。 | | driver_name | | 指定のハードウェアパスでカーネルにバインドするソフトウェア
モジュールの名前として解釈されます。 |
|
|
| (4)システムパラメータ | | このパラメータは、その変更により発生し得る結果について完全に理解している場合以
外は変更しないでください (『 『システム/ワークグループの管理』 』マニュアルを参照)。 各行には 2 つのフィールドがあります。第 1 のフィールドには最大 20
文字まで記 述することができます。第 2 のフィールドは最大 60 文字まで記述することができます。
各行は独立していて、また、任意に指定することができます。各行の形式は以
下のとおりです。 parameter_name number or formula プロセス間通信には、メッセージ機能 (mesg)、
セマフォ機能 (sema)、 および共有メモリ機能 (shmem)
があります。 mesg、 sema、
または shmem、 もしくはその全部が 0 と指定されている場合、これらの機能のカーネルコードは取り込まれません。それら
の値が 1 と指定されている場合に、カーネルコードが取り込まれます (デフォルト)。これらの機
能は、各々独立して指定することができます。カーネルコードが取り込まれた場合、
以下に示したパラメータは変更されることがあります。 mesg 1 msgmap number or formula msgmax number or formula msgmnb number or formula msgmni number or formula msgseg number or formula msgssz number or formula msgtql number or formula sema 1 semaem number or formula semmap number or formula semmni number or formula semmns number or formula semmnu number or formula semume number or formula semvmx number or formula shmem 1 shmall number or formula smbrk number or formula shmmax number or formula shmmin number or formula shmmni number or formula shmseg number or formula |
動的にロード可能なモジュールの構成
(第二のフォーム)
ロード可能なカーネルモジュールを構成するために、 config は -M オプションで指定したモジュールの構成要素を構築します。 -M オプションを -u オプションと一緒に指定した場合は、 config はロード可能なモジュールを構築し、 kmupdate を呼び出して、メモリ内のそのモジュールのロード可能なイメージを更新します。
ロード可能なイメージを更新することで、既存のロード可能なイメージを
新たに作成したロード可能なイメージで置換します。必要な場合には、
新しい情報でモジュールを再登録し、必要に応じて、 特殊デバイスファイルの再作成などのタイプ固有の初期化を実行します。
ロード可能なモジュールを構成する際、 config は、実行カーネルのシステム記述ファイル、カーネルモジュールのシステム記述ファイル
、およびマスターカーネル構成の情報テーブルを読み込みます。
カーネルモジュールのシステム記述ファイルは、 kmsystem または kmtune システム管理コマンドのみを使用して修正するように注意してください。
ロード可能なモジュールを構成するために、 config は、モジュールで使用するインタフェース関数またはシンボルを調べます。
モジュールがそのマスターファイルの $INTERFACE セクションで暗に示されていないシンボルに依存する場合、構成は失敗します。 config は、次の出力ファイルを生成します。
システムの調整可能なパラメータを定義する C プログラムのヘッダファイル (tune.h)
各カーネルモジュールに必要な C プログラムのソースファイル
(mod_conf.c)
指定した動的にロード可能なモジュールを生成する makefile
(config.mod)
モジュール登録エントリーは、指定モジュールを登録します。
上記のファイルが生成された後、 config は、 config.mod を指定して make コマンドを実行し、動的にロード可能なモジュールを生成します。
make が正常に終了すると、 動的にロード可能なモジュールのオブジェクトファイルが生成され、
カーネル機能セットディレクトリに置かれます。
-u オプションが指定された場合、 kmupdate は config によって実行されます。
カーネルモジュールに関連するすべてのファイルは、モジュールを構成するのに必要です。
カーネルモジュールファイルの詳細については、 kminstall(1M) を参照してください。
ロード可能なモジュール構成のオプション
ロード可能なモジュールを構成する際、 config は、次のオプションを認識します。
| -M module_name | | 指定したロード可能なモジュールのみを構成します。
この場合には、カーネルファイルは生成されません。 正常に行われた場合は、モジュールのロード可能なイメージが生成されます。 指定さたモジュールがスタブモジュール master(4) を参照) の場合、 config はメッセージを出力し、異常終了します。
カーネル全体の構築は、スタブモジュールを構成するのに必要です。 |
| -m master | | config がソースファイルおよび
makefile を作成する際に使用する マスターカーネル構成の情報ファイルまたは、ディレクトリ
の名前を指定します。 master がディレクトリである場合、 config は、データ構造を作成するのにそのディレクトリから全ファイルを読み取ります。 master がファイルである場合、 config のデータ構造を作成するためにそのファイルだけを読み取ります。
デフォルトでは、 config はファイルをディレクトリ /usr/conf/master.d から読み取ります。 /usr/conf/master.d は HP-UX
オペレーティングシステムの一部であり、 その構造と目的を十分に理解せずに修正してはなりません。 |
| -u | | kmupdate を呼び出して、モジュールを更新します。 |
カーネルモジュールのシステム記述ファイル
カーネルモジュールの記述ファイルは、 /stand/system.d の下に置かれます。
モジュールのシステムファイルは、モジュール名にならって付けられる一意の名前です。
各ファイルは、3 つの必須セクションと 1 つのオプションのセクションからなります。
| $VERSION: | | $VERSION で始まる行は、ファイルフォーマットのバージョン番号を示します。
バージョンは、1 から始まる 10 進数として定義されます。 フォーマットは次のとおりです。 例: |
| $CONFIGURE: | | $CONFIGURE で始まる行は、モジュールの構成が必要かどうかを示します。
第二フィールドが Y または y の場合は、モジュールは次の構築時に構成されます。
フィールドが N または n の場合は、構築時にモジュールは構成されません。 フォーマットは次のとおりです。 例: |
| $LOADABLE: | | $LOADABLE で始まる行は、モジュールの構成方法を示します。
第二フィールドが Y または y の場合、 モジュールは動的にロード可能なモジュールとして構成されます。 フィールドが N または n の場合、モジュールはカーネルに静的にリンクされます。 モジュールのマスターファイルに $LOADABLE セクションがない場合、システムファイルにはそのセクションはありません。 フォーマットは次のとおりです。 例: |
| $TUNABLE (オプションのシステムパラメータのセクション) |
| | | |
$TUNABLE で始まる行と、 $$$ で始まる行の間のセクションは、
モジュールの調整可能なパラメータを示します。
上記で説明したキーワード、例えば、 $VERSION、 $CONFIGURE は、空白またはタブ以外の文字で行が始まらなければなりません。
フィールドのセパレータは、 1 つの空白、タブ、またはそれらの組み合わせです。
アスタリスク (*) で始まる行は、 コメント行です。
参照
kminstall(1M), kmmodreg(1M),
kmsystem(1M), kmtune(1M), kmupdate(1M), make(1), interface(4), master(4)