Linuxカーネルは、その柔軟性とモジュール性により、特定の目的やハードウェア環境に合わせて最適化できます。
この記事では、以下のことができるようになることを目指します:
- カーネル構成の確認とカスタマイズ
- カーネルとモジュールのビルド
- initrdの作成とインストール
- GRUBなどのブートローダとの連携
- DKMSによる再構築の自動化
目次
📁 カーネルソースの準備
通常、カーネルソースは /usr/src/linux/ に展開します。
cd /usr/src/
sudo tar -xvf linux-6.x.y.tar.xz
ln -s linux-6.x.y linux
cd linux
カーネル設定は .config に保存されます。
cp /boot/config-$(uname -r) .config
make oldconfig # 既存設定をベースに新しいバージョンへ適用
⚙ カーネル構成ツールの種類
| コマンド | 説明 |
|---|---|
make config | CLIによる質問形式 |
make menuconfig | CUI(対話式) |
make xconfig | QtベースGUI(X必要) |
make gconfig | GTKベースGUI |
make oldconfig | 既存.configをアップグレード |
おすすめは make menuconfig:
make menuconfig
.config ファイルの場所:
/usr/src/linux/.config:ビルドに使われる設定- 内容は
CONFIG_で始まる各種オプション(例:CONFIG_EXT4_FS=m)
🧱 カーネルとモジュールのビルド
make -j$(nproc) # カーネルとモジュールを並列ビルド
make modules_install # モジュールのインストール
make bzImage # カーネル本体のイメージ(/arch/x86/boot/bzImage)
make install # /boot に vmlinuz, System.map, config を設置
モジュールの場所:
/lib/modules/$(make kernelrelease)/
🧩 initrd / initramfs の生成
カーネル起動時、ルートファイルシステムをマウントするための仮想ファイルシステムを使います。
作成方法
dracut
dracut -f /boot/initramfs-6.x.y.img 6.x.y
mkinitrd(RedHat系)
mkinitrd /boot/initrd-6.x.y.img 6.x.y
mkinitramfs(Debian系)
mkinitramfs -o /boot/initrd.img-6.x.y 6.x.y
🧭 ブートローダ(GRUB)への登録
sudo grub-mkconfig -o /boot/grub/grub.cfg # Debian系
sudo grub2-mkconfig -o /boot/grub2/grub.cfg # RHEL系
grub-install でMBRまたはEFIにブートローダを書き込む
sudo grub-install /dev/sdX # 適切なディスクを指定(例: /dev/sda)
🧰 DKMS を使ったモジュールの自動再ビルド
DKMS(Dynamic Kernel Module Support) を使えば、新しいカーネルにアップグレードしても、モジュールが自動的に再ビルドされます。
DKMS モジュールの追加例:
sudo dkms add -m example -v 1.0
sudo dkms build -m example -v 1.0
sudo dkms install -m example -v 1.0
カーネル変更時の再ビルド確認:
sudo dkms status
📝 Makefileの重要ターゲットまとめ
| ターゲット | 内容 |
|---|---|
make all | カーネルとモジュールをビルド |
make modules | モジュールのみをビルド |
make modules_install | モジュールをシステムにインストール |
make bzImage | カーネルの本体イメージを生成 |
make rpm-pkg | RPM形式でパッケージ化 |
make deb-pkg | Debian形式でパッケージ化 |
make mrproper | ソースツリーをクリーンアップ(完全初期化) |
🎯 まとめ
- カーネルをコンパイルすることで、自分の用途に最適なLinuxを構築できる
.configの調整とmake menuconfigによるUI構成がカスタマイズの鍵- initramfs や GRUB 設定を忘れず更新することが重要
- DKMS を活用すれば、カーネルアップデート時の再構築が自動化され便利
✳️ 補足: 実際にカーネルを変更する場合は、旧カーネルをGRUBメニューに残しておきましょう。ブートに失敗したときの保険になります。
コメント