カスタム検索
CentOS/Linuxカーネルの再構築 〜CentOS4 全編〜


実施環境は

動作中のカーネル 2.4.21-27.0.2.EL
再構築に利用するカーネル 2.6.20.7

として、カーネルをダウンロードして、利用する事とします。


Index 〜カーネルの再構築〜

1. カーネルのダウンロード&展開 | 2. 設定(.config)のバックアップ | 3. 現行設定(.config)の引継ぎ | 4. カーネル設定(.config)について | 5. 不要ファイルの削除 | 6. カーネルイメージの作成 | 7. モジュールのコンパイル&インストール | 8. ブートローダー設定(grub.conf) 


1. カーネルのダウンロード&展開
〜カーネルの再構築〜

Linux Kernelは以下サイトにあります。

      ftp://ftp.kernel.org/pub/linux/kernel/


今回は現時点<2007/4/20>で最新版である linux-2.6.20.7.tar.gzをダウンロードします。
 ※展開先は/usr/srcとしています。

# cd /usr/src
# wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.7.tar.gz
# tar xzf /usr/src/linux-2.6.20.7.tar.gz
# cd /usr/src/linux-2.6.20.7


2. 設定(.config)のバックアップ
〜カーネルの再構築〜

※新規構築時は不要なので飛ばします。
 
設定変更を目的として同一ディレクトリで作業をする場合は、.configファイルのバックアップをとっておく事をお勧めします。

# mv /usr/src/linux-2.6.20.7/.config /usr/src/linux-2.6.20.7/.config.bak


3. 現行設定(.config)の引継ぎ
〜カーネルの再構築〜

※新規に設定し直したい場合は不要なので飛ばします。
 
現在稼動中の設定を反映したい場合は、現在の.config を適宜持ってきてmake oldconfigを実行します。
※make oldconfig は現行の設定を引き継ぎつつ、追加になった設定のみを行う為のコマンドです。

# uname -r
2.6.9-42.0.10.EL


# cp -p /usr/src/kernels/2.6.9-42.0.10.EL/.config /usr/src/linux-2.6.20.7/
※ユーザ権限が変更にならないように引数に-pをつけておいたほうが無難です。

# make oldconfig
※ ここから先は対話形式で進みます。
"y"はカーネルに静的に組み込まれます。
"m"はカーネルモジュールとして組み込まれます。
                    (使用時のみ動作します)
  "n"は設定を無効化します。
  "?"でヘルプを参照します。


4. カーネル設定(.config)について
〜カーネルの再構築〜

※3.を実施した場合は不要なので飛ばします。
 
GUIで設定ツールを起動する方法と、CLIで実施する方法の2パターンがあります。

<GUI環境で実施する場合>
# make xconfig

<CLI環境で実施する場合>
# make config
or
# make menuconfig


選択形式(make menuconfig)もしくは対話形式(make config)となっている為、適宜設定し、保存します。make config の設定手法は3.のmake oldconfig とほぼ同じ内容です。


5. 不要ファイルの削除
〜カーネルの再構築〜

※新規にコンパイルする場合は不要なので飛ばします。
 
# make clean
※ kernel2.6以前の環境下では整合性チェックの為、make depが必要です。


6. カーネルイメージの作成
〜カーネルの再構築〜
 
# make bzImage


7. モジュールのコンパイル&インストール
〜カーネルの再構築〜
 
# make modules
# make modules_install
# make install


8. ブートローダー設定(grub.conf)
〜カーネルの再構築〜
 
2.6.20.7 で起動するようGRUB の設定変更をします。
抜粋した設定変更例は以下の通りです。

# cat /etc/grub.conf

#default=1 <- コメントアウトします。
default=0 <- 追加します。


変更後のgrub.conf例は以下の通りです。

#default=1
default=0

timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.20.7)
root (hd0,0)
kernel /vmlinuz-2.6.20.7 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.20.7.img
title CentOS (2.6.9-42.0.10.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-42.0.10.EL ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.9-42.0.10.EL.img




これでカーネル再構築は完了です。反映させる為再起動します。再構築できたかどうかの確認方法は、起動後
# uname -r
を実行して、2.6.20.7 という表示が確認できれば完了です。