ローダブルカーネルモジュールを使うとメモリを節約できますし,設定も容易 です.モジュールのサポートする範囲は,ファイルシステム・ イーサネットカードドライバ・テープドライバ・プリンタドライバ等まで広がっ てきました.
モジュール用ユーティリティはカーネルソースと同じところに
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
のようなことをす
るだけです).これで,/sbin
に insmod
,
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
の出力するリストに書いてあります.他の
モジュールユーティリティの目的は,それぞれのオンラインマニュアルに書か
れています.
バージョン 2.0.30 の時点では,ほとんどすべてのドライバはモジュールとし
て利用できます.これらのモジュールを使用するには,まずこれらのモジュー
ルの機能をカーネルに組み込んでいないことを確認してください;つまり,
`make config
' する際には,y
と答えてはいけません.
新しいカーネルをコンパイルしそれでブートします.それから再度
/usr/src/linux
へ cd
し,`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 ファイルシステムはは常にカーネルに組み込んでおくべきです.