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

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のようなことをするだけです)。 これで,/sbininsmodrmmodksymslsmodgensymsmodprobe,および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で見ることができます。

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

バージョン1.2.2に関しては,多くのファイルシステム,2,3のSCSIドライバ,いく つかのイーサネットドライバ,その他さまざまなものがモジュールとしてロード可能 です。これらのモジュールを使用するには,まずこれらのモジュールの機能をカーネ ルに組み込んでいないことを確認してください;つまり,`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ファイルシステムを使用 しないときには50kのRAMを節約することができます。minixファイルシステムについ ては少々注意すべきことがあります:復旧ディスクを使用する際に必要ですから, minixは常にカーネルに組み込んでおくべきです。


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