ソフトウェア
上級

カーネルモジュール(カーネルモジュール)

Linuxカーネルへ動的にロード/アンロードできる拡張コード(.koファイル)。NVIDIA GPUドライバ・ZFS・ネットワークドライバなどが代表例で、modprobe/insmodで管理する。

0 回閲覧
0 いいね
2026/4/25 更新
関連タグ
Linux
Kernel
modprobe
ドライバ

概要

Linuxカーネルは、ハードウェアとソフトウェアの橋渡しを担う中心的なコンポーネントです。
その拡張性を高めるために、動的にロード・アンロードできるコードをカーネルモジュールと呼びます。
モジュールは、実行中のカーネルに対して追加機能を提供し、必要に応じて削除できるため、
システムリソースを有効に活用できます。

主な特徴・仕組み

  • 動的ロード/アンロード:insmod、modprobe、rmmod で管理
  • 依存関係解決:modprobe はモジュール間の依存を自動的に処理
  • ロード時のオプション指定:モジュールにパラメータを渡し、挙動をカスタマイズ
  • メモリ領域の確保:vmalloc、kmalloc でカーネル空間にメモリを割り当て
  • デバイスドライバ:GPU、ネットワークカード、ストレージデバイスの制御を担う
  • ファイルシステム:ZFS、Btrfs、XFS などのファイルシステムをカーネルに組み込む
  • 仮想デバイス:USB/IP、V4L2、iSCSI などの仮想デバイスを提供
  • セキュリティ拡張:SELinux、AppArmor、Seccomp などのポリシーをモジュール化
  • パフォーマンス監視:perf、ftrace、bpf などのプロファイルツール
  • アップデートと互換性:カーネルバージョンに合わせて再コンパイルが必要

スペック/製品比較表

モジュール名主な機能主要ハードウェア推奨カーネルバージョン典型的なロードオプション
nvidiaGPUドライバRTX 4090、RTX 30905.15+NVreg_RegistryDwords=EnableNVreg_RegistryDwords
amdgpuGPUドライバRadeon RX 7900 XTX、RX 6800 XT5.10+amdgpu.ppfeaturemask=0xffffffff
i915Intel HD/Gen12 GPUIntel Core Ultra 9 285K5.4+i915.enable_psr=1
zfsファイルシステムNVMe SSD(Samsung 990 Pro)5.10+zfs.zfs_arc_max=1073741824
iscsi_targetiSCSI ターゲット10GbE NIC5.8+iscsi_target.udp_port=3260

具体例・対応製品

  • NVIDIA GPU
    • RTX 4090(24GB GDDR6X、450W TDP、PCIe 4.0 x16)
    • RTX 3090(24GB GDDR6X、350W TDP、PCIe 4.0 x16)
    • NVIDIA A100(40GB HBM2e、450W TDP、PCIe 4.0 x16)
  • AMD GPU
    • Radeon RX 7900 XTX(24GB GDDR6、300W TDP、PCIe 4.0 x16)
    • Radeon RX 6800 XT(16GB GDDR6、300W TDP、PCIe 4.0 x16)
  • Intel GPU
    • Intel Core Ultra 9 285K(4.5GHz Boost、72MB L3、PCIe 5.0 x16)
  • ストレージ
    • Samsung 990 Pro(3,440x1,440 4K、PCIe 5.0 x4、1.6TB/3.2TB)
    • Intel Optane 900P(1.5TB、PCIe 4.0 x4、1.5TB)
  • ネットワーク
    • Mellanox ConnectX‑6(200GbE、PCIe 4.0 x16)
    • Intel X710(10GbE、PCIe 3.0 x8)

自作PCでの選び方・注意点

  • カーネルバージョンの確認
    • 主要ハードウェアは最新のカーネルで最適に動作することが多い。
    • 2025年にリリース予定のカーネル 6.0 では、PCIe 5.0 のサポートが強化される。
  • モジュールの互換性
    • ドライバはハードウェアとカーネルの組み合わせに依存。
    • 例:amdgpu は 5.10 以降で最適化されている。
  • ロードオプションの設定
    • sysfs で /sys/module/<module>/parameters/ を確認。
    • 例:i915.enable_psr=1 でパフォーマンスと省電力を両立。
  • アップデートのタイミング
    • カーネル更新時はモジュールも再コンパイルが必要。
    • 2026年のリリースで新しいセキュリティ機能が追加される予定。
  • デバッグとロギング
    • dmesg でモジュールの起動ログを確認。
    • modinfo <module> で依存関係とバージョン情報を取得。
  • パフォーマンス測定
    • perf stat -e cycles,cache-misses でモジュールの影響を測定。
  • セキュリティ
    • モジュールはカーネル空間に直接アクセスするため、信頼できるソースから取得。
  • バックアップ
    • 重要なモジュールは /lib/modules/$(uname -r)/kernel/ でバックアップ。

関連用語との違い

  • カーネルイメージ
    • vmlinuz はカーネル本体。モジュールは追加機能として動的に読み込む。
  • デバイスドライバ
    • デバイスドライバはモジュールの一種で、ハードウェア制御を担当。
  • ユーザー空間ライブラリ
    • ユーザー空間で動作し、カーネルに対してシステムコールを行う。
  • ファイルシステムモジュール
    • ext4、btrfs、zfs などはファイルシステムを提供するモジュール。
  • 仮想ファイルシステム
    • proc、sysfs はカーネル情報をユーザー空間に提供する仮想ファイルシステム。

よくある質問(FAQ)

Q1. モジュールを手動でロードしたい場合、どのコマンドを使うべきですか?
A1. insmod は単純にモジュールファイルをロードしますが、依存関係は解決しません。
modprobe は依存関係を自動で処理し、推奨される方法です。

Q2. カーネルを更新した後、モジュールがロードできなくなることがありますか?
A2. はい。カーネルバージョンが変わると、モジュールのバイナリが互換性を失うことがあります。
再コンパイルまたは最新のモジュールを入手してください。

Q3. モジュールのパフォーマンスを最適化するにはどうすればよいですか?
A3. sysfs でパラメータを調整し、perf で測定。
例:nvidia の NVreg_RegistryDwords=EnableNVreg_RegistryDwords を有効にすると、GPU のスレッド数を増やせます。

まとめ

カーネルモジュールは、Linux システムの柔軟性と拡張性を支える不可欠な要素です。
ハードウェアの進化に合わせて、GPU、ストレージ、ネットワーク、ファイルシステムなど多岐にわたる機能を動的に追加・削除できるため、最新の 2025年・2026年に登場する次世代デバイスを最大限に活用できます。
自作PC構築時には、カーネルバージョンとモジュールの互換性、ロードオプション、パフォーマンス測定を丁寧に行うことで、安定かつ高速なシステムを実現できます。

この記事について
カテゴリーソフトウェア
難易度上級
作成日2026/4/17