GNU/Linux >> Linux の 問題 >  >> Linux

Modinfoコマンドを使用してLinuxカーネルモジュール情報を表示する

この簡単なガイドでは、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などの特定のフィールドのみを表示することで、結果を絞り込むことができます。 、descriptionlicenseparmdepends 、および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カーネルモジュールの管理と監視

Linux
  1. LinuxでのJQコマンドと例

  2. 例を使用してLinuxでRmmodコマンドを使用する方法

  3. Linuxでtypecommand(コマンドに関する情報を表示)を使用する方法

  1. 例を含むwcLinuxコマンド

  2. Linux – Linuxの汚染されたカーネル?

  3. Linuxlsコマンド

  1. Linuxipコマンドと例

  2. LinuxのDmesgコマンド

  3. LinuxでのLsmodコマンド(カーネルモジュールの一覧表示)