Linux大学Linux学部LPIC学科講師のLPIC猿です。
本日の講義は「カーネルモジュールについて]です。
カーネルは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」コマンドを実行
します。
【お勧め問題集】
LPIC予想問題ドットコム
本日の講義は「カーネルモジュールについて]です。
カーネルは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」コマンドを実行
します。
【お勧め問題集】
LPIC予想問題ドットコム