ローダブルカーネルモジュールを使うとメモリを節約できますし,設定も容易です。 モジュールのサポートする範囲は,ファイルシステム,イーサネットカードドライ バ,テープドライバ,プリンタドライバなどまで広がってきました。
モジュールユーティリティはカーネルソースを入手したのと同じところに
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ページ(4k)使用しており,
現時点では他のカーネルモジュールはこのモジュールを使用していません。このモ
ジュールを取り外すには,`rmmod drv_hello
'としてください。
rmmod
はファイル名ではなく,モジュール名を要求することに注意してく
ださい;モジュール名はlsmod
の出力するリストに書いてあります。他の
モジュールユーティリティの目的はman
で見ることができます。
バージョン1.2.2に関しては,多くのファイルシステム,2,3のSCSIドライバ,いく
つかのイーサネットドライバ,その他さまざまなものがモジュールとしてロード可能
です。これらのモジュールを使用するには,まずこれらのモジュールの機能をカーネ
ルに組み込んでいないことを確認してください;つまり,`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ファイルシステムを使用
しないときには50kのRAMを節約することができます。minixファイルシステムについ
ては少々注意すべきことがあります:復旧ディスクを使用する際に必要ですから,
minixは常にカーネルに組み込んでおくべきです。