カスタムカーネル構築

Kernel 2.4 の時の覚え書き。本当に覚え書き程度。もう少し詳細な説明は カスタムカーネルの構築 (RedHat 9 Doc) など。

  1. 万が一の時のためにシステムブートフロッピーを作っておく。
    root# mkbootdisk <kernel_version>
    なお、巨大なカーネルイメージを持つ最近のディストリビューションでは、起動媒体を作るのに工夫が必要だ。「よろず環境設定」ページの「ブートフロッピーの作成」を参照のこと。
  2. カーネルソースを手に入れる。RPM システムがインストールされているのなら、kernel-source-2.x.x-x.x.rpm などを拾ってきて "rpm -ivh" すれば、/usr/src/linux-2.x.x-x.x/ にソースが一発でぶちまけられる (この時点で現行システムに影響はない)。
  3. ソースディレクトリに移動。
  4. 前回 make してみたが満足行く結果でなく、今回はその修正、手直しである場合は ./.config ファイルをどこかに避難。あとで戻してから config すれば前回のカーネル設定を叩き台にできる。
  5. ソースの清掃:
    root# make mrproper
    どうしてもうまく make できなかった場合の最終手段は make distclean
  6. ./.config が避難してあった場合はここで戻す。そうでない場合、./configs/ にある推奨コンフィグ kernel-x.x.x-***.config のいずれかをコピーしてくると、第 7 行程での手間と失敗が減る。
  7. パッチ目的なら、ここでパッチを当てる。
  8. カーネルコンフィギュレーション。menuconfig, config, xconfig があるが、たいてい一番うまくいくのは:
    root# make menuconfig
    make に失敗しないコツ:
  9. 現在の正常なカーネルと共存できるように、ビルドされるカーネルのリビジョン拡張句がつけられるが、経験では、custom のままではOSが「カーネルのバージョンが認識できない」と文句を言ってきて具合が悪い。数字のほうがうまくいくので ./Makefile ファイル内の
    EXTRAVERSION=-x.xcustom
    となっているところを
    EXTRAVERSION=-x.x2
    などに変更。
  10. 依存関係 (dependency) ファイル作成:
    root# make dep
  11. ゴミ掃除。
    root# make clean
  12. カーネルイメージ作成:
    root# make bzImage
  13. モジュール構築:
    root# make modules
  14. モジュールをインストール:
    root# make modules_install
    モジュールが /lib/modules/<version>/kernel/drivers/ にインストールされる。
  15. カーネルをインストール:
    root# make install
  16. ブートローダーの設定ファイルを修正。grub の場合、 /boot/grub/grub.conf ファイルを編集。