Linuxカーネルのコンパイルとカスタマイズ

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 configCLIによる質問形式
make menuconfigCUI(対話式)
make xconfigQtベースGUI(X必要)
make gconfigGTKベース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-pkgRPM形式でパッケージ化
make deb-pkgDebian形式でパッケージ化
make mrproperソースツリーをクリーンアップ(完全初期化)

🎯 まとめ

  • カーネルをコンパイルすることで、自分の用途に最適なLinuxを構築できる
  • .config の調整と make menuconfig によるUI構成がカスタマイズの鍵
  • initramfs や GRUB 設定を忘れず更新することが重要
  • DKMS を活用すれば、カーネルアップデート時の再構築が自動化され便利

✳️ 補足: 実際にカーネルを変更する場合は、旧カーネルをGRUBメニューに残しておきましょう。ブートに失敗したときの保険になります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次