この簡単なガイドでは、Linuxカーネルモジュールとは何かについて説明します。 、lsmod
、およびmodinfo
Linuxのコマンド。
Linuxカーネルモジュールとは何ですか?
Linuxカーネルは、GNU/Linuxオペレーティングシステムの主要コンポーネントです。 Linuxカーネルの機能は、カーネルモジュールを使用してシステムを再起動することなく拡張できます。 。カーネルモジュールは、必要に応じてカーネルにロードおよびアンロードできるコードの一部です。
カーネルモジュールの例としては、Linuxカーネルがシステムに接続されているハードウェアにアクセスして制御できるようにするファームウェアおよびデバイスドライバーがあります。通常、カーネルモジュールは、新しいハードウェア(デバイスドライバーとして)やファイルシステムのサポートを追加するために使用されます。 、またはシステムコールを追加する場合 。
カーネルモジュールがないと、新しい機能が必要になるたびにカーネルを再構築して再起動する必要があります。また、より大きなモノリシックカーネルを構築し、カーネルモジュールなしでカーネルイメージに新しい機能を直接追加する必要があります。カーネルモジュールの助けを借りて、これらの問題を簡単に回避できます。
カーネルモジュールは通常、/usr/lib/modules/<kernel_release_directory>
に保存されているモジュールの下に保存されます。 。
$ ls /usr/lib/modules/5.11.18-300.fc34.x86_64/
bls.conf modules.builtin.bin modules.symbols
build modules.builtin.modinfo modules.symbols.bin
config modules.dep source
extra modules.dep.bin symvers.gz
kernel modules.devname System.map
modules.alias modules.drm updates
modules.alias.bin modules.modesetting vdso
modules.block modules.networking vmlinuz
modules.builtin modules.order weak-updates
modules.builtin.alias.bin modules.softdep
カーネルモジュールは、さまざまなオペレーティングシステムでさまざまな名前で参照されます。たとえば、カーネルモジュールは、FreeBSDではカーネルロード可能モジュール(kld)、macOSではカーネル拡張(kext)、AIXではカーネル拡張モジュール、Windows NTではカーネルモードドライバー、VxWorksではダウンロード可能カーネルモジュール(DKM)と呼ばれます。これらは、カーネルロード可能モジュール(またはKLM)とも呼ばれ、単にカーネルモジュール(KMOD)とも呼ばれます。
lsmodコマンドを使用してLinuxカーネルモジュールを一覧表示する
lsmod
を使用して、現在カーネルにロードされているカーネルモジュールのリストを表示できます。 (モジュールの一覧表示)次のようなコマンド:
$ lsmod
出力例:
Module Size Used by
vhost_net 32768 0
vhost 57344 1 vhost_net
vhost_iotlb 16384 1 vhost
tap 28672 1 vhost_net
tun 57344 1 vhost_net
rfcomm 90112 4
snd_seq_dummy 16384 0
snd_hrtimer 16384 1
xt_CHECKSUM 16384 1
xt_MASQUERADE 20480 3
xt_conntrack 16384 1
ipt_REJECT 16384 2
nf_nat_tftp 16384 0
nf_conntrack_tftp 20480 3 nf_nat_tftp
bridge 290816 0
stp 16384 1 bridge
llc 16384 2 bridge,stp
ccm 20480 6
nft_objref 16384 2
nf_conntrack_netbios_ns 16384 1
nf_conntrack_broadcast 16384 1 nf_conntrack_netbios_ns
nft_fib_inet 16384 1
[...]

lsmodコマンドは、ファイル/proc/modules
から現在ロードされているカーネルモジュールの詳細を取得します。 。
Linuxカーネルモジュールとは何か、およびLinuxカーネルに現在ロードされているモジュールを一覧表示する方法の基本的な考え方を理解していただければ幸いです。先に進んで、特定のカーネルモジュールの詳細を表示する方法を見てみましょう。
modinfoコマンドを使用してLinuxカーネルモジュール情報を表示する
modinfo
コマンドは、特定のカーネルモジュールの詳細情報を表示します。デフォルトでは、カーネルモジュールの属性がfieldname : value
の形式で一覧表示されます。 、読みやすくするため。
Linuxカーネルモジュールの情報を表示するには、たとえば88XXau
、 TP-Link AC600(Archer T2U Nano)ワイヤレスアダプター 、実行:
$ modinfo 88XXau
出力例:
filename: /lib/modules/5.11.18-300.fc34.x86_64/extra/88XXau.ko.xz
version: v5.6.4.2_35491.20191025
author: Realtek Semiconductor Corp.
description: Realtek Wireless Lan Driver
license: GPL
srcversion: 4EC0EE17404B8E38B323235
alias: usb:v7392pB611ddcdscdpiciscipin
alias: usb:v7392pA813ddcdscdpiciscipin
alias: usb:v7392pA812ddcdscdpiciscipin
alias: usb:v7392pA811ddcdscdpiciscipin
alias: usb:v3823p6249ddcdscdpiciscipin
alias: usb:v2357p0122ddcdscdpiciscipin
alias: usb:v2357p0120ddcdscdpiciscipin
[...]

.ko
を追加しないでください カーネルモジュール名の末尾の拡張子。カーネルモジュール名には拡張子がありませんが、対応するファイルには拡張子が付いているためです。
カーネルモジュールの特定の詳細を表示する
オプションなしでmodinfoを実行すると、指定されたカーネルモジュールに関するロット情報全体が表示されます。 author
などの特定のフィールドのみを表示することで、結果を絞り込むことができます。 、description
、license
、parm
、depends
、およびalias
。次のコマンドは、88XXau
の各フィールドの詳細を表示します モジュール。
1。カーネルモジュールの作成者(ベンダー)を表示する
カーネルモジュールを作成したユーザーを表示するには、author
を使用します フラグ。
$ modinfo -F author 88XXau
Realtek Semiconductor Corp.
2。カーネルモジュールの説明を表示する
カーネルモジュールの説明を印刷するには、description
を使用します フラグ。
$ modinfo -F description 88XXau
Realtek Wireless Lan Driver
3。カーネルモジュールライセンスの表示
カーネルモジュールのライセンスを知ることは、ファームウェアとドライバーがオープンソースであるかクローズドソースであるかを知りたい場合に役立ちます。一部のLinuxディストリビューションには、デフォルトで非フリードライバが含まれている場合があります。添付されているライセンスを確認することで、デバイスドライブが無料か非無料かを確認できます。
$ modinfo -F license 88XXau
GPL
ほとんどのカーネルモジュールは、GPL
の下でライセンスされています (GNUパブリックライセンス)。 BSD
など、いくつかのモジュールにはデュアルライセンスがあります。 およびGPL
。
$ modinfo -F license zram Dual BSD/GPL
4。カーネルモジュールパラメータの表示
カーネルモジュールのパラメータを表示するには、次のコマンドを実行します。
$ modinfo -F parm 88XXau rtw_wireless_mode: (int) rtw_monitor_overwrite_seqnum:Overwrite the sequence number of injected frames (int) rtw_monitor_retransmit:Retransmit injected frames (int) rtw_monitor_disable_1m:Disable default 1Mbps rate for monitor injected frames (int) rtw_ips_mode:The default IPS mode (int) rtw_lps_level:The default LPS level (int) [...]
5。カーネルモジュールの依存関係を表示する
カーネルモジュールの依存関係を表示するには、次のコマンドを実行します。
$ modinfo -F depends 88XXau
cfg80211
-a/--author
を使用することもできます 、-d/--description
、-l/--license
、-p/--parameters
カーネルモジュールの特定の詳細を表示するフラグ。これらは、--field
のショートカットにすぎません。 フラグの作成者、説明、ライセンス、およびパルミジャーノ。たとえば、-l
を使用できます または--license
カーネルモジュールのライセンスを表示するためのフラグ。
$ modinfo -l kvm
または、
$ modinfo --license kvm
上記のコマンドは、次のコマンドと同等です。
$ modinfo -F license kvm
modinfo
の詳細については コマンド、そのマニュアルページを調べてください。
$ man modinfo
これがお役に立てば幸いです。
関連記事:
- コマンドラインからインストールされているすべてのLinuxカーネルを一覧表示または確認する
- Kmonを使用したLinuxカーネルモジュールの管理と監視