Show Table of Contents
第25章 カーネルモジュールでの作業
Linux カーネルはモジュール式であるため、動的にロードされた カーネルモジュール を使用することでその機能を拡張することができます。カーネルモジュールが提供するのは、以下のとおりです。
- 新しいハードウェアに対するサポートを強化するデバイスドライバー、または
btrfs
やNFS
のようなファイルシステムへのサポート
ほとんどの場合、デフォルトのパラメーターは十分に機能しますが、モジュールはカーネルのように動作をカスタマイズするパラメーターを取ることができます。ユーザースペースツールは、実行中のカーネルに現在ロードされているモジュールを一覧表示することができます。また、利用可能なパラメーターに使用できる全モジュールやモジュール固有の情報をクエリできます。さらには、実行中のカーネルに対してモジュールを動的にロード/アンロード (削除) することも可能です。こうしたユーティリティの多くは、module-init-tools パッケージにより提供され、動作の実行時にモジュールの依存関係を考慮するため、手動による依存関係の追跡が必要になることはほとんどありません。
最近のシステムでは、必要な状況が発生すると様々な仕組みによりカーネルモジュールは自動的にロードされます。ただし、モジュールを手動でロード/アンロードしなければならない場合もあります。例としては、モジュールがオプションの機能を提供する場合に、どちらのモジュールも基本的な機能を提供しながらも、あるモジュールが別のモジュールより好まれる場合、あるいはモジュールが他の状況で不正に動作する場合などです。
本章では、以下について説明します。
- ユーザースペースの module-init-tools パッケージを使用して、カーネルモジュール及びその依存関係を表示/クエリ/ロード/アンロードする方法
- コマンドラインで動的かつ永続的にモジュールパラメーターを設定して、カーネルモジュールの動作をカスタマイズする方法
- ブート時にモジュールをロードする方法
注記
本章で説明するカーネルモジュールのユーティリティを使用するには、最初に root で以下を実行して、ご使用のシステムに module-init-tools パッケージがインストールされていることを確認します:
~]# yum install module-init-tools
Yum を使用したパッケージのインストールについての詳細は、「パッケージのインストール」 を参照して下さい。
25.1. 現在ロード済みモジュールの一覧表示
lsmod
コマンドを実行することで、現在カーネルにロード済みの全カーネルモジュールを一覧表示できます:
~]$ lsmod
Module Size Used by
xfs 803635 1
exportfs 3424 1 xfs
vfat 8216 1
fat 43410 1 vfat
tun 13014 2
fuse 54749 2
ip6table_filter 2743 0
ip6_tables 16558 1 ip6table_filter
ebtable_nat 1895 0
ebtables 15186 1 ebtable_nat
ipt_MASQUERADE 2208 6
iptable_nat 5420 1
nf_nat 19059 2 ipt_MASQUERADE,iptable_nat
rfcomm 65122 4
ipv6 267017 33
sco 16204 2
bridge 45753 0
stp 1887 1 bridge
llc 4557 2 bridge,stp
bnep 15121 2
l2cap 45185 16 rfcomm,bnep
cpufreq_ondemand 8420 2
acpi_cpufreq 7493 1
freq_table 3851 2 cpufreq_ondemand,acpi_cpufreq
usb_storage 44536 1
sha256_generic 10023 2
aes_x86_64 7654 5
aes_generic 27012 1 aes_x86_64
cbc 2793 1
dm_crypt 10930 1
kvm_intel 40311 0
kvm 253162 1 kvm_intel
[出力は省略されています]
lsmod
出力の各行の定義:
- メモリに現在ロード済みのカーネルモジュールの名前
- カーネルモジュールが使用するメモリ量
- モジュールとそれに依存する他のモジュールを使用するプロセスの合計に加えて、ある場合はそれらモジュールの名前が記載された一覧。この一覧を使用すると、アンロードしたいモジュールに依存するすべてのモジュールを最初にアンロードできます。詳細については、「モジュールのアンロード」 を参照して下さい。
最後に注目する点としては、
lsmod
出力は /proc/modules
擬似ファイルの内容よりも大まかで、かなり読みやすいことです。