Linux カーネルは、ブート ローダーによってメモリにロードされます。カーネル モジュールは、オンデマンドで動的にロードおよびアンロードされます。これらは、カーネルが新しいハードウェアにアクセスできるようにするデバイス ドライバーを提供し、さまざまなファイル システム タイプをサポートし、一般的にカーネルの機能を拡張します。
ロードされたカーネル モジュールの一覧表示
現在カーネルにロードされているカーネル モジュールを一覧表示するには、lsmod を使用します。 指図。このコマンドは、/proc/modules を読み取って出力を生成します。 ファイル。例:
# lsmod Module Size Used by ip_tables 27115 5 iptable_security,iptable_filter,iptable_mangle,iptable_nat,iptable_raw xfs 985426 2 libcrc32c 12644 1 xfs ...
使用者 列には、モジュールとそれが依存する他のモジュールを使用しているプロセスの総数が示され、その後にそれらの依存モジュールのリストが続きます。
kmod パッケージ
lsmod コマンドと、modinfo、modprobe、depmod、insmod、rmmod などのその他のカーネル モジュール ファイルとユーティリティ kmod パッケージで提供されます:
# rpm -qf /sbin/lsmod kmod-20-9.el7.x86_64
kmod パッケージによって提供されるすべてのファイルを一覧表示するには、次のように入力します。
# rpm -ql kmod /etc/depmod.d /etc/depmod.d/dist.conf /etc/modprobe.d /usr/bin/kmod /usr/lib/modprobe.d /usr/sbin/depmod /usr/sbin/insmod /usr/sbin/lsmod /usr/sbin/modinfo /usr/sbin/modprobe /usr/sbin/rmmod /usr/sbin/weak-modules /usr/share/bash-completion/completions/kmod /usr/share/doc/kmod-20 /usr/share/doc/kmod-20/COPYING /usr/share/doc/kmod-20/NEWS /usr/share/doc/kmod-20/README /usr/share/doc/kmod-20/TODO /usr/share/man/man5/depmod.d.5.gz /usr/share/man/man5/modprobe.conf.5.gz /usr/share/man/man5/modprobe.d.5.gz /usr/share/man/man5/modules.dep.5.gz /usr/share/man/man5/modules.dep.bin.5.gz /usr/share/man/man8/depmod.8.gz /usr/share/man/man8/insmod.8.gz /usr/share/man/man8/kmod.8.gz /usr/share/man/man8/lsmod.8.gz /usr/share/man/man8/modinfo.8.gz /usr/share/man/man8/modprobe.8.gz /usr/share/man/man8/rmmod.8.gz
モジュールの詳細の一覧表示
modinfo コマンドは、特定のカーネル モジュールに関する詳細情報を表示します。たとえば、iptables カーネル モジュールに関する情報を表示するには、次のように入力します。
# modinfo ip_tables filename: /lib/modules/3.10.0-514.el7.x86_64/kernel/net/ipv4/netfilter/ip_tables.ko description: IPv4 packet filter author: Netfilter Core Team [[email protected]] license: GPL rhelversion: 7.3 srcversion: EDBAB32FC38D6942C83A4B1 depends: intree: Y vermagic: 3.10.0-514.el7.x86_64 SMP mod_unload modversions signer: CentOS Linux kernel signing key sig_key: D4:88:63:A7:C1:6F:CC:27:41:23:E6:29:8F:74:F0:57:AF:19:FC:54 sig_hashalgo: sha256
ここでは、
ファイル名 :カーネル オブジェクト ファイルの絶対パス
説明 :モジュールの簡単な説明
エイリアス :モジュールの内部エイリアス名 (存在する場合)
依存 :このモジュールが依存するモジュールのコンマ区切りリスト (存在する場合)
parm :パラメータ名と簡単な説明
モジュールは /lib/modules/[kernel_version]/kernel からロードされます ディレクトリ。たとえば、ip_tables カーネル オブジェクト ファイルの絶対パスを表示するには、次のようにします。
# modinfo -n ip_tables /lib/modules/3.10.0-514.el7.x86_64/kernel/net/ipv4/netfilter/ip_tables.ko
カーネル モジュールのロードとアンロード
モジュールのロード
カーネル モジュールは、modprobe コマンドを使用してロードされます。 Linux カーネルのデバイス マネージャーである udev は、modprobe を使用して、自動的に検出されたハードウェアのドライバーを読み込みます。たとえば、カーネル モジュール ip_tables をロードするには:
# modprobe ip_tables
モジュールがロードされたことを確認するには:
# lsmod | grep ip_tables ip_tables 27115 5 iptable_security,iptable_filter,iptable_mangle,iptable_nat,iptable_raw
依存モジュールが最初にロードされます。 modprobe –v を使用 (詳細) カーネルモジュールをロードするときの依存関係の解決を表示します。例:
# modprobe -v nfs insmod /lib/modules/3.10.0-514.el7.x86_64/kernel/fs/fscache/fscache.ko insmod /lib/modules/3.10.0-514.el7.x86_64/kernel/fs/nfs/nfs.ko注意 :modprobe は insmod コマンドを使用してモジュールをカーネルにロードします。ただし、このコマンドは依存関係を解決しないため、insmod は使用しないでください。
モジュールのアンロード
modprobe –r を使用してカーネル モジュールをアンロードします 指図。詳細オプションを使用することもできます。たとえば、nfs カーネル モジュールをアンロードするには、次のように入力します。
# modprobe -rv nfs rmmod nfs rmmod fscache注意 :modprobe –r コマンドは、rmmod を使用してモジュールをアンロードします。ただし、insmod と同様に、rmmod を直接使用してカーネル モジュールをアンロードすることはお勧めしません。
モジュールは逆の順序でアンロードされます。最初に nfs.ko カーネル モジュールがアンロードされ、その後に依存していたモジュールが続きます。プロセスによって使用されているモジュール、または他のロード済みモジュールが必要とするモジュールはアンロードされません。
カーネル モジュール パラメータ
カーネルが起動時のパラメーターを受け入れてカーネルの動作を変更できるように、カーネル モジュールもパラメーターを受け入れて動作を変更できます。 modprobe を使用してパラメーターをカーネル モジュールに渡す構文は次のとおりです。
# modprobe [module_name] [parameter=value]
ペアをスペースで区切ることにより、複数の parameter=value ペアを渡すことができます。 modprobe はモジュールをリロードしないため、モジュールが以前にロードされていないことを確認してください。
modprobe の構成ディレクトリ
modprobe の設定ディレクトリは /etc/modprobe.d です。 /etc/modprobe.d に *.conf ファイルを作成して、次のことを行います。
– オプションを指定します
– エイリアスを作成します
– 通常の modprobe の動作をオーバーライドします
– カーネル モジュールをブラックリストに登録します
これらの .conf ファイルの形式は、1 行に 1 つのコマンドです。これらのファイルで使用できる有効なコマンドは次のとおりです:
alias, options, install, remove, blacklist
エイリアス
構文 alias alias_name module_name を使用して、カーネル モジュールの代替名を作成します。エイリアス名にシェル ワイルドカードを使用することもできます。例:
alias usbdevfs usbcore
オプション
オプションを module_name に追加するには、構文 options module_name option(s) を使用します。例:
options b43 nohwcrypt=1 qos=0
インストール
構文 install module_name command(s) を使用して、カーネルにモジュールを挿入するのではなく、シェル コマンドを実行するように modprobe に指示します。例:
install net-pf-6 /bin/true
削除
これは install コマンドに似ていますが、「modprobe –r」の実行時に呼び出される点が異なります。構文 remove module_name command(s) を使用して、カーネルからモジュールをアンロードするのではなく、シェル コマンドを実行するように「modprobe –r」に指示します。
ブラックリスト
モジュールの内部エイリアスを無視するように modprobe に指示するには、構文 blacklist module_name を使用します。内部エイリアスは、modinfo [module_name] コマンドを使用したときに表示されるものです。 blacklist キーワードは通常、関連付けられたハードウェアが不要な場合、または 2 つ以上のモジュールが同じデバイスをサポートしている場合、またはモジュールがデバイスをサポートしていると主張するのが無効な場合に使用されます。
詳細については、modprobe.d の man ページを参照してください。
# man modprobe.d