カーネルビルド2

■ Linux Kernelビルド方法 ■


【参考】
http://www.nina.jp/server/redhat/kernel/kernel-rebuild-2.6.html


1. カーネルソースを適当なディレクトリに展開する。
カーネルソースはhttp://www.kernel.org/からダウンロードする。

2. カーネルビルド環境を初期化する。
カーネルビルド時に生成されているファイルを削除する。
(ビルド前に環境をクリーンしておく)

$ make clean
$ make mrproper

3. 現在動作しているカーネルの.configファイルをコピーし.configを生成する。

$ cp /boot/config-`uname -r` ./.config


4. ビルドのコンフィグレーションを行う。

$ make menuconfig
または、
$ make gconf
または
$ make xconfig


5. Makefileの編集

VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 39
EXTRAVERSION = -prep
NAME = Flesh-Eating Bats with Fangs

6. カーネルコンパイル
bz形式で圧縮されたカーネルが生成される。

$ make bzImage

→ arch/i386/bootディレクトリにbzImageという名前のファイルが生成される。
 カーネルソースのルートにSystem.mapが生成される。

7. カーネルモジュールのコンパイルとインストール

$ make modules
$ make modules_install

カーネルモジュールは /lib/modules/kernel-2.6.39-prep ディレクトリにインストールされる。

8. カーネルのインストール

$ installkernel 2.6.39-prep arch/i386/boot/bzImage System.map

これは下記と同様の処理

ビルドしたカーネルを/bootにコピーする。
$ cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.39-prep

System.mapを/bootにコピーする。
$ cp System.map /boot/System.map-2.6.39-prep

カーネル起動時に必要なモジュールをまとめて/bootにinitrdファイルを作成する。
$ mkinitrd /boot/initrd-2.6.39-prep.img 2.6.39-prep

9. grubの設定
/boot/grub/grub.confを編集する。
既存のエントリからコピーして適当に編集
実は上記8.で勝手にエントリ追加される?

# 作成したカーネルから起動するための設定

title Fedora Core (2.6.39-prep)
root (hd0,1)
kernel /vmlinuz-2.6.39-prep ro root=/dev/hda2
initrd /initrd-2.6.39-prep.img