Linuxでカーネルモジュールをロードおよびアンロードする方法


カーネルモジュールは、カーネル(カーネル)を再コンパイルしたりシステムを再起動したりすることなく、必要に応じてカーネルにロードまたはカーネルからアンロードできるプログラムであり、カーネルの機能を強化することを目的としています。

一般的なソフトウェア用語では、モジュールは多かれ少なかれWordPressなどのソフトウェアへのプラグインのようなものです。プラグインはソフトウェア機能を拡張する手段を提供します。プラグインがなければ、開発者はすべての機能がパッケージに統合された単一の大規模なソフトウェアを構築する必要があります。新しい機能が必要な場合は、ソフトウェアの新しいバージョンに追加する必要があります。

同様に、モジュールがない場合、カーネルは、カーネルイメージに直接統合されたすべての機能を使用して構築する必要があります。これは、より大きなカーネルを持つことを意味し、システム管理者は、新しい機能が必要になるたびにカーネルを再コンパイルする必要があります。

モジュールの簡単な例はデバイスドライバーです。これにより、カーネルはシステムに接続されているハードウェアコンポーネント/デバイスにアクセスできます。

Linuxでロードされたすべてのカーネルモジュールを一覧表示する

Linuxでは、すべてのモジュールは .ko 拡張子で終わり、通常、システムの起動時にハードウェアが検出されると、モジュールは自動的にロードされます。ただし、システム管理者は特定のコマンドを使用してモジュールを管理できます。

Linuxで現在ロードされているすべてのモジュールを一覧表示するには、このように/ proc/modulesの内容を読み取るlsmod(list modules)コマンドを使用できます。

# lsmod
Module                  Size  Used by
rfcomm                 69632  2
pci_stub               16384  1
vboxpci                24576  0
vboxnetadp             28672  0
vboxnetflt             28672  0
vboxdrv               454656  3 vboxnetadp,vboxnetflt,vboxpci
bnep                   20480  2
rtsx_usb_ms            20480  0
memstick               20480  1 rtsx_usb_ms
btusb                  45056  0
uvcvideo               90112  0
btrtl                  16384  1 btusb
btbcm                  16384  1 btusb
videobuf2_vmalloc      16384  1 uvcvideo
btintel                16384  1 btusb
videobuf2_memops       16384  1 videobuf2_vmalloc
bluetooth             520192  29 bnep,btbcm,btrtl,btusb,rfcomm,btintel
videobuf2_v4l2         28672  1 uvcvideo
videobuf2_core         36864  2 uvcvideo,videobuf2_v4l2
v4l2_common            16384  1 videobuf2_v4l2
videodev              176128  4 uvcvideo,v4l2_common,videobuf2_core,videobuf2_v4l2
intel_rapl             20480  0
x86_pkg_temp_thermal    16384  0
media                  24576  2 uvcvideo,videodev
....

Linuxでカーネルモジュールをロードおよびアンロード(削除)する方法

カーネルモジュールをロードするには、insmod(モジュールの挿入)コマンドを使用できます。ここでは、モジュールのフルパスを指定する必要があります。以下のコマンドは、speedstep-lib.koモジュールを挿入します。

# insmod /lib/modules/4.4.0-21-generic/kernel/drivers/cpufreq/speedstep-lib.ko 

カーネルモジュールをアンロードするには、rmmod(モジュールの削除)コマンドを使用します。次の例では、speedstep-lib.koモジュールをアンロードまたは削除します。

# rmmod /lib/modules/4.4.0-21-generic/kernel/drivers/cpufreq/speedstep-lib.ko 

modprobeコマンドを使用してカーネルモジュールを管理する方法

modprobeは、カーネルからモジュールを一覧表示、挿入、および削除するためのインテリジェントなコマンドです。モジュールディレクトリ/ lib/modules /&#36(uname -r)ですべてのモジュールと関連ファイルを検索しますが、/ etc /modprobe.dディレクトリ内の代替構成ファイルは除外します。

ここでは、モジュールの絶対パスは必要ありません。これは、前のコマンドよりもmodprobeを使用する利点です。

モジュールを挿入するには、次のように名前を入力するだけです。

# modprobe speedstep-lib

モジュールを削除するには、次のように -r フラグを使用します。

# modprobe -r speedstep-lib

注:modprobeでは、自動アンダースコア変換が実行されるため、モジュール名の入力時に _ の間に違いはありません。

使用法の詳細とオプションについては、modprobeのmanページをお読みください。

# man modprobe

チェックアウトすることを忘れないでください:

  1. How to Change Kernel Runtime Parameters in a Persistent and Non-Persistent Way
  2. How to Install or Upgrade to Latest Kernel Version in CentOS 7
  3. How to Upgrade Kernel to Latest Version in Ubuntu

それは今のところすべてです!このガイドやクエリに追加してほしい有用なアイデアがありますか。以下のフィードバックフォームを使用して、それらを私たちにドロップしてください。