第2章 カーネルモジュールでの作業
本章では、以下について説明します。
- カーネルモジュールの概要
- kmod ユーティリティーを使用してモジュールとその依存関係を管理する方法
- モジュールパラメーターを設定してカーネルモジュールの動作を制御する方法
- 起動時にモジュールを読み込む方法
本章で説明するカーネルモジュールのユーティリティーを使用するには、最初に root で以下を実行して、ご使用のシステムに kmod パッケージがインストールされていることを確認します。
# yum install kmod
2.1. カーネルモジュールの概要
Linux カーネルは、モノリシック型として設計されていますが、各ユースケースで必要とされる追加またはオプションのモジュールでコンパイルされています。つまり、動的に読み込まれる カーネルモジュール を使用してカーネル機能を拡張することができます。カーネルモジュールでは、以下を提供することができます。
- 新しいハードウェアに対するサポートを強化するデバイスドライバー、または
-
GFS2またはNFSなどのファイルシステムのサポート
デフォルトのパラメーターは多くの場合、十分に機能しますが、カーネルと同様にモジュールはパラメーターを指定して動作をカスタマイズすることができます。ユーザー空間ツールは、実行中のカーネルに現在ロードされているモジュールを一覧表示することができます。また、利用可能なパラメーターに使用できる全モジュールやモジュール固有の情報をクエリーできます。さらには、実行中のカーネルに対してモジュールを動的にロード/アンロード (削除) することも可能です。kmod パッケージにより提供される、このようなユーティリティーの多くは、動作の実行時にモジュールの依存関係を考慮するため、手動による依存関係の追跡が必要になることはほぼありません。
最近のシステムでは、必要な状況になると各種メカニズムによって自動的にカーネルモジュールが読み込まれます。しかし、モジュールを手動で読み込み、削除する必要がある状況も時にあります。たとえば、どちらのモジュールも基本的な機能は提供できるものの、どちらかの方が好まれる場合や、モジュールが不正な動作をしている場合などです。
2.2. 現在ロード済みモジュールの一覧表示
lsmod コマンドを実行すると、現在カーネルに読み込み済みの全カーネルモジュールを一覧表示できます。以下に例を示します。
# lsmod Module Size Used by tcp_lp 12663 0 bnep 19704 2 bluetooth 372662 7 bnep rfkill 26536 3 bluetooth fuse 87661 3 ebtable_broute 12731 0 bridge 110196 1 ebtable_broute stp 12976 1 bridge llc 14552 2 stp,bridge ebtable_filter 12827 0 ebtables 30913 3 ebtable_broute,ebtable_nat,ebtable_filter ip6table_nat 13015 1 nf_nat_ipv6 13279 1 ip6table_nat iptable_nat 13011 1 nf_conntrack_ipv4 14862 4 nf_defrag_ipv4 12729 1 nf_conntrack_ipv4 nf_nat_ipv4 13263 1 iptable_nat nf_nat 21798 4 nf_nat_ipv4,nf_nat_ipv6,ip6table_nat,iptable_nat [output truncated]
lsmod 出力では、3 つのコラムを表示します。
Module (モジュール)
- メモリーに現在読み込まれているカーネルモジュールの名前
Size (サイズ)
- カーネルモジュールが使用するメモリー量 (キロバイト単位)
Used by (使用フィールド)
依存関係に関する情報 2 項目を含むフィールド
- Module フィールドにある依存関係の数を表す小数点
- 依存する Module の名前をコンマ区切りにした文字列。この一覧を使用して、アンロードするモジュールに依存するモジュールをすべて先に、アンロードすることができます。
最後に、lsmod 出力は /proc/modules 擬似ファイルの内容ほど詳細ではないので、はるかに読み取りやすくなっている点に留意してください。
2.3. モジュール情報の表示
カーネルモジュールに関する詳しい情報は、modinfo module_name コマンドを使用して表示できます。
カーネルモジュール名を kmod ユーティリティーのいずれかの引数として指定する場合には、その名前の末尾に拡張子 .ko を付けないでください。カーネルモジュール名には、拡張子を付けません。カーネルモジュールに対応するファイルには拡張子が付きます。
例2.1 lsmod を使用したカーネルモジュール情報の一覧表示
Intel PRO/1000 ネットワークドライバーである e1000e モジュールに関する情報を表示するには、root で以下のコマンドを入力します。
# modinfo e1000e filename: /lib/modules/3.10.0-121.el7.x86_64/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko version: 2.3.2-k license: GPL description: Intel(R) PRO/1000 Network Driver author: Intel Corporation,

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.