Linuxカーネルはモジュール形式で設計されて います。起動時に、最小限度の常駐カーネル だけがメモリにロードされます。したがって、 ユーザーが常駐カーネルに存在しない機能を 要求すると、時々ドライバ と呼ばれる、 カーネルモジュール、が動的に メモリにロードされます。
インストール中、システムのハードウェアはプローブ されます。この調査とユーザーからの情報を基に して、インストールプログラムはブート時にロードする 必要があるモジュールを決定します。インストール プログラムは透過的に動的ロードメカニズムが機能 するようにセットアップします。
インストール後に、カーネルモジュールを必要とする ハードウェアを新しく追加する場合は、新しいハード ウェア用のカーネルモジュールがロードされるよう システムを設定する必要があります。新しいハード ウェアを装着してブートすると、Kudzu プログラムが作動して対応するハード ウェアであるか検出し、そのハードウェア用に モジュールを設定します。また、モジュールは、 モジュール設定ファイル、/etc/modules.conf を編集して手動で指定することもできます。
注意 | |
---|---|
X Window Systemのインターフェースを表示する のに使用されるビデオカードモジュールは XFree86パッケージの一部 であり、カーネルではありません。したがって、 この章は適用しません。 |
例えば、システムがSMC EtherPower 10 PCI ネットワークアダプタを装着する場合、 モジュールの設定ファイルには次の行が あります。
alias eth0 tulip |
2枚目のネットワークカードがシステムに追加 され1枚目のカードと同一である場合、 /etc/modules.confに 次の行を付け加えます。
alias eth1 tulip |
カーネルモジュールとモジュールでサポートされる ハードウェアのアルファベット順一覧は、 Red Hat Linux 参照ガイドでご覧ください。
modutilsパッケージが インストールされる場合、カーネルモジュールを 管理するための一連のコマンドが利用できます。 モジュールが正常にロードされているか確認したり、 新しいハードウェア用に別のモジュールを試すとき、 これらのコマンドを使用します。
コマンドの/sbin/lsmodは 現在、ロードされているモジュールを表示します。 例えば、
Module Size Used by Not tainted iptable_filter 2412 0 (autoclean) (unused) ip_tables 15864 1 [iptable_filter] nfs 84632 1 (autoclean) lockd 59536 1 (autoclean) [nfs] sunrpc 87452 1 (autoclean) [nfs lockd] soundcore 7044 0 (autoclean) ide-cd 35836 0 (autoclean) cdrom 34144 0 (autoclean) [ide-cd] parport_pc 19204 1 (autoclean) lp 9188 0 (autoclean) parport 39072 1 (autoclean) [parport_pc lp] autofs 13692 0 (autoclean) (unused) e100 62148 1 microcode 5184 0 (autoclean) keybdev 2976 0 (unused) mousedev 5656 1 hid 22308 0 (unused) input 6208 0 [keybdev mousedev hid] usb-uhci 27468 0 (unused) usbcore 82752 1 [hid usb-uhci] ext3 91464 2 jbd 56336 2 [ext3] |
各行は、最初のコラムがモジュールの名前、 2番目のコラムがモジュールのサイズ、 3番目のコラムが使用回数です。
使用回数の後の情報はモジュールごとに少しづつ 異なります。モジュールの行に(unused) が表示された場合は、そのモジュール は現在使用されていません。モジュールの行に (autoclean)と表示 された場合は、そのモジュールはrmmod -a コマンドでオートクリーンすることができます。 このコマンドを実行すると、autocleanが付いたモジュール、 前回のautoclean作動から使用されていないモジュールの すべてがアンロードされます。デフォルトでは、Red Hat Linux は このオートクリーン実行を行ないません。
モジュール名が行末のカッコ内に表示された場合、 カッコ内のそのモジュールは、その行の最初の コラムに表示されているモジュールに依存します。 例えば、次の行で、
usbcore 82752 1 [hid usb-uhci] |
hid と usb-uhci のカーネルモジュールは usbcore モジュールに依存します。
/sbin/lsmodの出力は /proc/modules表示からの 出力と同じです。
カーネルモジュールをロードするには、 /sbin/modprobeコマンドを入力し、その後に カーネルモジュール名を続けます。デフォルトでは、 modprobeで /lib/modules/<kernel-version> /kernel/drivers/ サブディレクトリからモジュールのロードが行なわれ ます。ネットワークインターフェースドライバ用の net/サブディレクトリなどの ように、各タイプのモジュールにサブディレクトリが あります。カーネルモジュールのなかには、別の モジュールに依存するものがあります。つまり、 このようなモジュールがロードするために 他のモジュールがさきにロードされなければならないと いうことです。/sbin/modprobe コマンドはこれらの依存関係を確認し、指定された モジュールをロードする前にモジュールの依存関係を ロードします。
たとえば、以下のコマンドを入力したとします。
/sbin/modprobe hid |
すべてのモジュール依存関係をロードし、 それからhidモジュールを ロードします。
/sbin/modprobeが実行する すべてのコマンドをスクリーンに表示するには、 -vオプションを使用します。 例えば、
/sbin/modprobe -v hid |
次と似たような出力が表示されます。
/sbin/insmod /lib/modules/2.4.20-2.47.1/kernel/drivers/usb/hid.o Using /lib/modules/2.4.20-2.47.1/kernel/drivers/usb/hid.o Symbol version prefix 'smp_' |
/sbin/insmodコマンドも カーネルモジュールをロードするため存在しますが これは依存関係を解決しません。したがって、 /sbin/modprobeコマンドを使用 することをおすすめします。
カーネルモジュールをアンロードするには、 /sbin/rmmodコマンドを 使用してその後にモジュール名を続けます。 rmmodユーティリティは 使用されていないモジュールと、使用中の他の モジュールが依存しないモジュールのみを アンロードします。
たとえば、以下のコマンドを入力したとします。
/sbin/rmmod hid |
hidカーネル モジュールをアンロードします。
もう1つの便利なカーネルモジュールユーティリティは modinfoです。/sbin/modinfo コマンドを使用して、カーネルモジュールに関する 情報を表示できます。一般的なシンタックスは次のように なります。
/sbin/modinfo [options] <module> |
オプションとして、モジュールの簡単な説明を表示する -dと、モジュールがサポートする パラメータを一覧表示する-pがあります。 オプションの完全な一覧については、modinfo の man ページ(man modinfo)を参照して ください。