総合手引 | セクション 4 | オプション |
多様なタイプのモジュールをシステムにロードすることが出来ます。 後述するように、定義されたモジュールのタイプが幾つかあり、 これらのタイプ毎に予め決められた方法でモジュールはシステムに付加されます。 その上、一般的なタイプもあって、このタイプについてはモジュールは それ自体がローディングとアンローディングを処理するものと します。
FreeBSD システムでは動的にロードするカーネルモジュールを広汎に利用していて、 大部分のファイルシステム、 NFS クライアントとサーバ、全てのスクリーンセーバ、そして iBCS2 や Linux エミュレータなどについて動的にロードするバージョンを 提供しています。 システムと共に配布されたモジュールは /lkm ディレクトリにあります。
lkm インタフェースを利用するには /dev/lkm デバイスに対して ioctl(2) システムコールを 発行します。 通常、動的にロードするカーネルモジュールに関わる全ての操作は、 modload(8) と modunload(8) と modstat(8) の プログラムにより処理されます。 ユーザは直接 /dev/lkm に関与する必要は無い筈です。
システムコールモジュール |
システムコールは新しいシステムコールを
lkm
インタフェースを通してロードすることにより置き換えること
が出来ます。
全てのシステムコールを置き換えることが出来ますが、しかし
ioctl(2)
システムコールに関しては特に注意を払わなければなりません。
何故なら、このシステムコールがモジュールのロードとアンロードに
用いられているからです。
システムコールモジュールがアンロードされるときには、 動的にロードされたモジュールにより置き換えられていたシステムコール はシステムコールテーブルの適正な位置に戻されます。 |
仮想ファイルシステムモジュール | 仮想ファイルシステムは lkm インタフェースを通してロードできます。 |
"デバイスドライバモジュール | 新しいブロック型と文字型のデバイスドライバを LKM を用いて、システムにロードすることが出来ます。 デバイスドライバをロードする場合の主要な問題は アクセスするデバイスに対応してドライバのデバイスノードが 存在しなければならないことです。 これらのデバイスノードを作成するには通常 ドライバのロードが成功した場合に 適切なプログラムを実行するよう modload(8) に指定する事により行います。 |
実行クラス | イメージアクティベータ (image activator) としても知られています。 実行クラスとは、これにより execve(2) システムコールが実行可能ファイルの形式を識別してメモリにロード できるような機構です。 |
雑モジュール | 雑モジュールは、いまのところ明確に定義された、あるいは 一般的となっている拡張のためのインタフェースがないモジュールです。 ユーザは固有のローダを書かなければなりません。 新しいモジュールのロード時およびアンロード時に、 そのモジュールを有効化および無効化するために 必要となるすべてのカーネルデータを、このローダが操作します。 |
/dev/lkm | lkm インタフェースデバイス |
/lkm | システムと同梱されたモジュールのバイナリが置いてあるディレクトリ |
/usr/include/sys/lkm.h | モジュールタイプの定義が置いてあるファイル |
/usr/share/examples/lkm | |
2タイプのモジュールを実装しているソースコードの例 | |
システムの内部のインタフェースが変更された場合には、 古いままのモジュールはしばしばこの変更を発見できないので、 このようなモジュールはロードされた時に しばしばクラッシュするかまたは不可解な機能不全を起こします。
FreeBSD 2.0 | LKM (4) | January 17, 1996 |
総合手引 | セクション 4 | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | You have successfully logged in, Now press any key to log out | ” |