このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

カーネル(vmlinuz)

カーネル(vmlinuz)

 カーネルはオペレーティングシステムの中核を担うプログラムであり、ハードウェアリソースの管理と、アプリケーションが実行できる環境を提供します。Linuxのカーネルは「vmlinuz」という文字列にバージョンを加えた名前で、/bootディレクトリに配置されています。このファイル名は「Virtual Memory LINUx gZip」の略です。

項目説明
カーネル名vmlinuz
配置ディレクトリ/boot
役割ハードウェアリソースの管理とアプリケーションの実行環境の提供
カーネル(vmlinuz)

カーネルファイルの確認

 カーネルファイルが/bootディレクトリに存在することを確認するには、「ls /boot/vmlinuz*」コマンドを使用します。

項目説明
コマンドls /boot/vmlinuz*
役割/bootディレクトリ内のカーネルイメージファイル(vmlinuz)をリストします。
使用方法ターミナルでls /boot/vmlinuz*と入力して実行します。
カーネルファイルの確認
ls /boot/vmlinuz*コマンドの例
user01@ubuntu-vm:~$ ls /boot/vmlinuz*
/boot/vmlinuz                   /boot/vmlinuz-6.5.0-41-generic
/boot/vmlinuz-6.5.0-35-generic  /boot/vmlinuz.old

カーネルモジュール

 カーネルが起動されると、ハードウェアやメモリの初期化を行い、アプリケーションが実行できる環境を整えます。この際、カーネルモジュールと呼ばれるカーネルの部品がプログラムに組み込まれます。これらのモジュールは動的にロードされ、特定のハードウェアやファイルシステムのサポートを提供します。カーネルモジュールには依存関係があり、モジュール間で互いに依存し合うことがあります。

項目説明
カーネルモジュールカーネルの機能を拡張する部品。動的にロードされる。
役割ハードウェアの初期化や特定の機能提供
依存関係モジュール間で依存関係があり、依存するモジュールが必要
カーネルモジュール

lsmodコマンド

lsmodコマンドは、現在カーネルに組み込まれているモジュールを一覧表示します。これにより、どのモジュールがロードされているかを確認できます。

【構文】
lsmod

項目説明
コマンドlsmod
役割カーネルにロードされているモジュールのリストを表示
使用方法ターミナルでlsmodと入力して実行
lsmodコマンド
lsmodコマンドの例
user01@ubuntu-vm:~$ lsmod
Module                  Size  Used by
vboxsf                 45056  0
vboxguest              57344  7 vboxsf
vboxvideo              36864  0
drm_vram_helper        24576  1 vboxvideo
binfmt_misc            24576  1
snd_intel8x0           53248  2
snd_ac97_codec        196608  1 snd_intel8x0
ac97_bus               12288  1 snd_ac97_codec
(略)
出力項目説明
Moduleモジュール名
Sizeモジュールのサイズ(バイト単位)
Used byモジュールを使用している他のモジュールの数
lsmodコマンドの項目

modprobeコマンド

modprobeコマンドは、カーネルモジュールを動的にロードまたはアンロードするために使用されます。依存関係を自動的に解決し、関連するモジュールを一緒にロードまたはアンロードします。管理者権限が必要となります。

【構文】
modprobe [オプション] カーネルモジュール名

項目説明
コマンドmodprobe
役割カーネルモジュールをロードまたはアンロード
使用方法modprobe モジュール名でロード、modprobe -r モジュール名でアンロード
modprobeコマンド
コマンドのオプション(-r)
オプション説明
-r指定したカーネルモジュールをアンロードします。依存するモジュールも同時にアンロードします。
主なコマンドのオプション

modprobeコマンドの使用例

 特定のカーネルモジュールがロードされているかを確認し、必要に応じてモジュールをアンロードまたは再ロードすることができます。

lsmod | grep e1000コマンド

 このコマンドは、現在ロードされているカーネルモジュールのリストを表示し、その中からe1000という名前のモジュールを検索します。e1000は、一般的にIntel製のイーサネットアダプタ用のドライバモジュールです。

コマンド説明
lsmod現在ロードされているカーネルモジュールのリストを表示します。
grep e1000lsmodコマンドの出力から、e1000という文字列を含む行を検索します。
e1000モジュール

 このコマンドを実行すると、以下のような出力が得られます(e1000モジュールがロードされている場合)。

user01@ubuntu-vm:~$ lsmod | grep e1000
e1000                 180224  0
出力項目説明
e1000モジュール名
180224モジュールのサイズ(バイト単位)
0このモジュールを使用している他のモジュールの数
modprobe -r e1000の出力
sudo modprobe -r e1000コマンド

 このコマンドは、e1000カーネルモジュールをカーネルからアンロードします。-rオプションは、指定したモジュールと、それに依存するモジュールをアンロードすることを示します。

コマンド説明
modprobe -r e1000e1000モジュールをカーネルからアンロードします。
modprobe -r e1000

 このコマンドを実行すると、e1000モジュールがカーネルからアンロードされます。アンロードに成功すると、モジュールはカーネルから削除され、lsmodコマンドで確認しても表示されなくなります。

user01@ubuntu-vm:~$ sudo modprobe -r e1000
[sudo] user01 のパスワード: 
user01@ubuntu-vm:~$ lsmod | grep e1000
sudo modprobe e1000コマンド

 このコマンドは、e1000カーネルモジュールをカーネルにロードします。modprobeコマンドは、モジュールの依存関係も自動的に解決し、関連するすべてのモジュールをロードします。

コマンド説明
modprobe e1000e1000モジュールをカーネルにロードします。
modprobe e1000

 このコマンドを実行すると、e1000モジュールがカーネルにロードされます。ロードに成功すると、モジュールはカーネルに追加され、lsmod | grep e1000 コマンドで確認できます。

user01@ubuntu-vm:~$ sudo modprobe e1000
user01@ubuntu-vm:~$ lsmod | grep e1000
e1000                 180224  0

まとめ

 カーネルはLinuxシステムの中核であり、ハードウェアリソースの管理とアプリケーションの実行環境を提供します。カーネルモジュールはカーネルの機能を拡張し、動的にロードおよびアンロードされます。lsmodコマンドを使用して現在ロードされているモジュールを確認し、modprobeコマンドを使用してモジュールを管理することができます。これにより、システムの柔軟な管理が可能となります。