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
忘れずにチェックしてください:
- カーネル ランタイム パラメータを永続的および非永続的な方法で変更する方法
- CentOS 7 で最新のカーネル バージョンをインストールまたはアップグレードする方法
- Ubuntuでカーネルを最新バージョンにアップグレードする方法
それは今のところすべてです!このガイドに追加してほしい有用なアイデアや質問がありましたら、以下のフィードバック フォームを使用してお送りください。