ウェブサイト検索

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


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

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

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

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

推奨読書: 実行している Linux のバージョンを確認する方法

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

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

Linux で現在ロードされているすべてのモジュールをリストするには、次のように /proc/modules の内容を読み取る lsmod (モジュールのリスト) コマンドを使用します。

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/$ (uname -r) 内ですべてのモジュールと関連ファイルを検索しますが、/etc/modprobe.d 内の代替構成ファイルは除外します。 ディレクトリ。

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

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

modprobe speedstep-lib

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

modprobe -r speedstep-lib

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

使用方法とオプションの詳細については、modprobe のマニュアル ページを参照してください。

man modprobe

忘れずにチェックしてください:

  1. カーネル ランタイム パラメータを永続的および非永続的な方法で変更する方法
  2. CentOS 7 で最新のカーネル バージョンをインストールまたはアップグレードする方法
  3. Ubuntuでカーネルを最新バージョンにアップグレードする方法

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