このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Linux】カーネル(vmlinuz)
カーネル(vmlinuz)
カーネルはオペレーティングシステムの中核を担うプログラムであり、ハードウェアリソースの管理と、アプリケーションが実行できる環境を提供します。Linuxのカーネルは「vmlinuz」という文字列にバージョンを加えた名前で、/bootディレクトリに配置されています。このファイル名は「Virtual Memory LINUx gZip」の略です。
項目 | 説明 |
---|---|
カーネル名 | vmlinuz |
配置ディレクトリ | /boot |
役割 | ハードウェアリソースの管理とアプリケーションの実行環境の提供 |
カーネルファイルの確認
カーネルファイルが/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
コマンドの例
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 | モジュールを使用している他のモジュールの数 |
modprobeコマンド
modprobe
コマンドは、カーネルモジュールを動的にロードまたはアンロードするために使用されます。依存関係を自動的に解決し、関連するモジュールを一緒にロードまたはアンロードします。管理者権限が必要となります。
【構文】modprobe [オプション] カーネルモジュール名
項目 | 説明 |
---|---|
コマンド | modprobe |
役割 | カーネルモジュールをロードまたはアンロード |
使用方法 | modprobe モジュール名 でロード、modprobe -r モジュール名 でアンロード |
コマンドのオプション(-r)
オプション | 説明 |
---|---|
-r | 指定したカーネルモジュールをアンロードします。依存するモジュールも同時にアンロードします。 |
modprobe
コマンドの使用例
特定のカーネルモジュールがロードされているかを確認し、必要に応じてモジュールをアンロードまたは再ロードすることができます。
lsmod | grep e1000
コマンド
このコマンドは、現在ロードされているカーネルモジュールのリストを表示し、その中からe1000
という名前のモジュールを検索します。e1000
は、一般的にIntel製のイーサネットアダプタ用のドライバモジュールです。
コマンド | 説明 |
---|---|
lsmod | 現在ロードされているカーネルモジュールのリストを表示します。 |
grep e1000 | lsmod コマンドの出力から、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 e1000 | e1000 モジュールをカーネルからアンロードします。 |
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 e1000 | e1000 モジュールをカーネルにロードします。 |
modprobe e1000
このコマンドを実行すると、e1000
モジュールがカーネルにロードされます。ロードに成功すると、モジュールはカーネルに追加され、lsmod | grep e1000
コマンドで確認できます。
user01@ubuntu-vm:~$ sudo modprobe e1000
user01@ubuntu-vm:~$ lsmod | grep e1000
e1000 180224 0
まとめ
カーネルはLinuxシステムの中核であり、ハードウェアリソースの管理とアプリケーションの実行環境を提供します。カーネルモジュールはカーネルの機能を拡張し、動的にロードおよびアンロードされます。lsmod
コマンドを使用して現在ロードされているモジュールを確認し、modprobe
コマンドを使用してモジュールを管理することができます。これにより、システムの柔軟な管理が可能となります。