Linuxシステムの「心臓部」とも言えるのがカーネル(kernel)です。
カーネルは、ハードウェアとソフトウェアの橋渡しを行う中核部分であり、次のような機能を担います。
- プロセス管理
- メモリ管理
- デバイス制御(ドライバ)
- ファイルシステム管理
- ネットワークスタックの提供
本記事では、カーネルの構成・形式・モジュールなど、Linuxカーネルの重要ポイントを実務・試験対策の観点からわかりやすく解説します。
目次
📦 カーネルの配布形式
Linuxのカーネルは、以下のような形式で配布されます:
🔹 bzImage(Big zImage)
- カーネル本体の圧縮イメージ
- 古い zImage に代わり、サイズの大きなカーネルに対応
/boot/に配置され、GRUBなどのブートローダが読み込む
/boot/vmlinuz-<version> ← bzImage形式
📝 vmlinuz = “Virtual Memory LINUx gZip” の略
🔹 xz形式での圧縮
- カーネルソースやinitramfs、モジュールが
.xz形式で圧縮されていることがある - 高圧縮率が特長
- Linuxカーネルのビルド時に圧縮形式として使用
linux-6.x.y.tar.xz
initramfs-*.img.xz
🧩 カーネルモジュールとは?
Linuxカーネルは「モノリシック型」ですが、モジュール化によって動的な拡張が可能です。
モジュールとは、必要な機能(例:ドライバ)だけを追加できる仕組みです。
🔧 カーネルモジュールの操作コマンド
| 操作 | コマンド |
|---|---|
| モジュール一覧の表示 | lsmod |
| モジュールの読み込み | modprobe <モジュール名> |
| モジュールの削除 | rmmod <モジュール名> |
| モジュール情報の表示 | modinfo <モジュール名> |
モジュールは /lib/modules/$(uname -r)/ に格納されています。
📚 カーネルソースとドキュメント
Linuxのカーネル開発はオープンに進められており、公式にソースとドキュメントが提供されています。
📁 ソースコード配置場所
/usr/src/linux/
これはカーネルソースツリーのルートディレクトリであり、以下のような構成になっています:
| ディレクトリ | 説明 |
|---|---|
arch/ | アーキテクチャ別のコード |
drivers/ | 各種デバイスドライバ |
fs/ | ファイルシステム関連 |
kernel/ | プロセスや割り込みなどの中核 |
net/ | ネットワーク関連コード |
📖 ドキュメント
カーネルの動作仕様やモジュール開発方法は以下に記述されています:
/usr/src/linux/Documentation/
このディレクトリには以下のようなファイルがあります:
filesystems/:ファイルシステムに関する解説admin-guide/:カーネルオプションの使い方driver-api/:ドライバ開発者向け情報
例:
less /usr/src/linux/Documentation/admin-guide/kernel-parameters.txt
🌱 安定版と開発版の違い
Linuxカーネルは以下のように分類されます:
| タイプ | 特徴 |
|---|---|
| 安定版(stable) | 実運用向け。バグ修正とセキュリティ対応中心 |
| 開発版(mainline, rc) | 新機能やAPI変更が含まれる。検証・実験目的向け |
バージョンの読み方:
- 安定版例:
6.8.2 - 開発版例:
6.9-rc3(Release Candidate)
公式サイト:https://www.kernel.org
🛠 カーネル再構築とビルド(概要)
高度な運用では、必要なモジュールのみを含むカスタムカーネルをビルドすることがあります。
再構築の流れ(概要)
cd /usr/src/linux/
make menuconfig # カーネル構成の選択
make # コンパイル
make modules_install
make install # /boot にイメージ配置、grub更新
この手順は詳細設定と十分なテストが必要です。実務で使うには経験が求められます。
🧠 まとめ
- Linuxカーネルは柔軟かつモジュール性が高い設計
bzImageや.xzの形式を理解しておくと、ブートや復旧の知識が深まる- モジュール操作 (
modprobe,lsmod) や/usr/src/linux/の構成を知っておくと、トラブルシュートやドライバ対応に有用
コメント