カーネルビルド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が生成される。
$ 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