ローダブルカーネルモジュールを使うとメモリを節約できますし,設定も容易です。 モジュールのサポートする範囲は,ファイルシステム,イーサネットカードドライ バ,テープドライバ,プリンタドライバなどまで広がってきました。
モジュールユーティリティはカーネルソースを入手したのと同じところに
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は常にカーネルに組み込んでおくべきです。