6. カーネルモジュール

Linux カーネルを車のコアエンジンだと考えてみてください。エンジン自体を変更することなく、ルーフラックや新しいサウンドシステムのようなアクセサリーを追加できます。これらのアクセサリーは必要に応じて追加または削除できます。Linux カーネルもカーネルモジュールで同様の概念を使用しています。

カーネルモジュールとは何か

では、カーネルモジュールとは何でしょうか。これらは、必要に応じてカーネルにロードおよびアンロードできるコードの断片です。コアカーネルを再コンパイルしたりシステムを再起動したりすることなく、カーネルの機能を拡張します。このモジュール式のアプローチにより、新しいハードウェア(新しい Wi-Fi カードなど)や新しいソフトウェア機能(新しいファイルシステムなど)を動的に追加できるようになります。これにより、コアカーネルをスリムに保ちながら、計り知れない柔軟性を得ることができます。

ロードされているモジュールのリスト表示

現在メモリにロードされているすべてのカーネルモジュールのリストを確認するには、lsmodコマンドを使用できます。これにより、アクティブなモジュールとその依存関係のスナップショットが得られます。

lsmod

カーネルモジュールのロード

カーネルモジュールをロードするには、modprobeコマンドを使用します。たとえば、bluetoothモジュールをロードするには、次のように実行します。

sudo modprobe bluetooth

modprobeコマンドはインテリジェントです。標準ディレクトリ(/lib/modules/$(uname -r)/)でモジュールを検索し、ターゲットモジュールが依存する他のモジュールもロードします。

カーネルモジュールのアンロード

モジュールが不要になった場合は、アンロードしてシステムリソースを解放できます。モジュールを削除するには、modprobe-rフラグを使用します。

sudo modprobe -r bluetooth

起動時のモジュールの管理

modprobeでロードされたモジュールは一時的なものであり、再起動すると消えます。モジュールの設定を永続化するには、/etc/modprobe.d/ディレクトリに設定ファイルを作成できます。

起動時に特定のオプションでモジュールを自動的にロードするには、.confファイルを作成します。たとえば、peanut_butterという仮説のモジュールがあり、そのtypeパラメータをalmondに設定したい場合、ファイルは次のようになります。

# /etc/modprobe.d/peanutbutter.conf

options peanut_butter type=almond

逆に、起動時にモジュールがロードされないようにする(ブラックリスト化と呼ばれるプロセス)には、設定ファイルでblacklistキーワードを使用できます。

# /etc/modprobe.d/peanutbutter.conf

blacklist peanut_butter

これらの設定ファイルにより、システム起動時にどのモジュールが利用可能になるかを細かく制御できます。

ログインして学習進捗を保存

サインイン

演習

練習あるのみです!Linux カーネルモジュールへの理解を深めるための実践的なラボを以下に示します。

  1. Linux でカーネルモジュールを管理する - カーネルモジュールのリスト表示、検査、ロード、アンロード、および起動時の自動ロードのための設定を練習します。このラボは、実際のシナリオで概念を適用し、カーネルモジュール管理への自信を築くのに役立ちます。

クイズ

モジュールをアンロードするために使用されるコマンドは何ですか?