カーネルモジュールについて | LPIC対策講座 - レベル1、レベル2、レベル3 -

カーネルモジュールについて

カーネルはOSの中核をなすプログラムで、ハードウェアの監視や
アプリケーションの実行等を行います。そのカーネルでハードウェア
の監視を行うためにはデバイスドライバが必要となります。
デバイスドライバは、【カーネルに組み込んで利用する場合】
【カーネルモジュールとして利用する場合】があります。



【カーネルに組み込んで利用する場合】
システム起動時、カーネルをメモリにロードした時点でデバイスをサポートすることができます。
ハードディスクなどシステムで頻繁に利用するハードウェアが適しています。


【カーネルモジュールとして利用する場合】
ハードウェアを利用するたびに、必要なカーネルモジュールをメモリにロードします。
システムで利用する頻度が低いハードウェアが適しています。


システム稼動中にロードされているカーネルモジュールを一覧表示する
ためには、「lsmod」コマンドを利用します。「lsmod」はカーネルモジュールごとに
「名前」「サイズ」「利用回数」「このモジュールを参照しているモジュール名」を表示します。


「cat /proc/modules」としても「lsmod」と同じ出力になります。


# lsmod

Module Size Used by
intel_agp 19360 1
agpgart 26024 2 intel_agp
parport_pc 21440 0
lp 8360 0
parport 31176 2 parport_pc,lp
joydev 7744 0
bcm5700 136108 0
iptable_filter 2048 0
iptable_mangle 2048 0
ip_tables 14976 2 iptable_filter,iptable_mangle
dump_blockdev 4608 0
dump_gzip 2052 0
zlib_deflate 21528 1 dump_gzip



【カーネルモジュールのロード】
modprobeは設定ファイルやコマンドラインで指示することにより、モジュールのロード、
アンロードや状態表示などさまざまなモジュール管理を行うことができます。


たとえば1つまたは複数のモジュールを、それが必要とするモジュールとあわせてロードしたり、
モジュールロード時にスクリプトを実行したりすることができます。


modprobeの設定ファイルはカーネルのバージョンによって異なります。
カーネル2.4系で使用される設定ファイルは/etc/modules.conf
カーネル2.6系で使用される設定ファイルは/etc/modprobe.confです。


これら設定ファイルに処理内容を記述して、そのmodprobeを実行すると、
システムがモジュールをロードする際、設定ファイルに記述された処理内容
が参照されて自動的に実行されます。



以下はモジュールのbcm5700をロードしています。


# vi /etc/modprobe.conf
alias eth0 bcm5700



# modprobe eth0

またカーネルモジュールを操作するとき「modprobe」は「modules.dep」ファイルを利用して、
モジュール間の依存関係を調べます。その結果、モジュールが他のモジュールを必要と
している場合は、そのモジュールを先にロードします。


modules.depファイルを最新の状態に更新するには、「depmod」コマンドを実行します。