次のページ 前のページ 目次へ

9. Modules(モジュール)

ローダブルカーネルモジュールを使うとメモリを節約できますし,設定も容易 です.モジュールのサポートする範囲は,ファイルシステム・ イーサネットカードドライバ・テープドライバ・プリンタドライバ等まで広がっ てきました.

9.1 モジュール用ユーティリティのインストール

モジュール用ユーティリティはカーネルソースと同じところに modules-x.y.z.tar.gz という形で置いてあります;現在使用してい るカーネルのパッチレベル以下で,パッチレベル(x.y.z)がもっとも 高いものを取ってきてください. `tar zxvf modules-x.y.z.tar.gz' で展開し,ソース 展開がされたディレクトリ(modules-x.y.z)へ cd し, README ファイルを読み,説明にしたがってインストールを実行しま す(通常はそんなに難しくなくて,make install のようなことをす るだけです).これで,/sbininsmod, rmmod, ksyms, lsmod, gensyms, modprobe, depmod というプログラムができます.お望み ならサブディレクトリ insmod にある ``hw'' という サンプルのドライバを使ってユーティリティのテストを行ってください; 詳しくはそのサブディレクトリにある INSTALL ファイルを読んでく ださい.

insmod は現在実行中のカーネルにモジュールを追加します. モジュールには通常 .o という拡張子がついています;上述の サンプルのドライバは drv_hello.o という名前ですので,これを追 加するには `insmod drv_hello.o' としてください.カーネルが現 在使用中のモジュールを確認するには lsmodを使用します.出力は 以下のようになります:

    blah# lsmod
    Module:        #pages:  Used by:
    drv_hello          1
`drv_hello' はモジュールの名前で,これははメモリを 1 ページ (4kB)使用しています.現時点ではこのモジュールに依存している他のカーネ ルモジュールはありません.このモジュールを取り外すには, `rmmod drv_hello' とします.rmmod はファイル名ではな く,モジュール名を要求することに注意してください;モジュール名 は lsmod の出力するリストに書いてあります.他の モジュールユーティリティの目的は,それぞれのオンラインマニュアルに書か れています.

9.2 カーネルとともに配布されるモジュール

バージョン 2.0.30 の時点では,ほとんどすべてのドライバはモジュールとし て利用できます.これらのモジュールを使用するには,まずこれらのモジュー ルの機能をカーネルに組み込んでいないことを確認してください;つまり, `make config' する際には,y と答えてはいけません. 新しいカーネルをコンパイルしそれでブートします.それから再度 /usr/src/linuxcd し,`make modules' を 実行します.するとカーネル設定で組み込まれなかった機能を持つモジュール がすべてコンパイルされ,/usr/src/linux/modules に存在する モジュールへリンクが張られます.そのディレクトリから直接実行することも できますし,`make modules_install' を実行すれば,できたモジュー ルを /lib/modules/x.y.z へインストールすることもできます. ここで x.y.z はカーネルのバージョンです.

モジュールは特にファイルシステムについて有用です.minix や msdos ファイルシステムはあまり頻繁に使わないでしょう.例えば私が msdos のフ ロッピーに遭遇した場合(ああ嫌だ), insmod /usr/src/linux/modules/msdos.o し,用が済んだら rmmod msdosします.これで,msdos ファイルシステムを使わないと きには 50kB の RAM を節約することができます.minix ファイルシステムに ついては少々注意すべきことがあります:復旧ディスクで使えるように, minix ファイルシステムはは常にカーネルに組み込んでおくべきです.


次のページ 前のページ 目次へ