VM用にKernelの再構築を行う

カーネルソースを取得

と、その前に必要なモジュールをインストールしておく

# yum install gcc rpm-build redhat-rpm-config ncurses-devel

どうせなら最新ソースを確認して取得

# cd
# wget http://mirrors.kernel.org/centos/4.5/updates/SRPMS/kernel-2.6.9-55.0.2.EL.src.rpm
# mkdir -p /usr/src/redhat/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
# rpm -i kernel-2.6.9-55.0.2.EL.src.rpm
# cd /usr/src/redhat/SPECS/
# rpmbuild -bp --target=i686 kernel-2.6.spec

カーネルソースを変更

カーネルソースの以下の部分を変更します

# cd ../BUILD/kernel-2.6.9/linux-2.6.9/
# vi include/asm-i386/param.h
**
-#define HZ            1000            /* Internal kernel timer frequency */
+#define HZ            100             /* Internal kernel timer frequency */

vi include/asm-x86_64/param.h
**
-#define HZ            1000            /* Internal kernel timer frequency */
+#define HZ            100            /* Internal kernel timer frequency */

ソースを見るに単純に

#define HZ            1000            /* Internal kernel timer frequency */

を消すだけでもよさそう、後ろに定義が無かったら定義するコードがあるからね

Makefileを変更

カーネルを自分がコンパイルしたものと分かる名前にします。

# vi Makefile
**
-EXTRAVERSION = -prep
+EXTRAVERSION = -55.0.2.EL.vm

-#export        INSTALL_PATH=/boot
+export INSTALL_PATH=/boot

カーネルコンパイル

これはさすがに時間かかるよ
前のconfigから今回のconfigを作ってコンパイルってのりです

# make mrproper
# cp configs/kernel-2.6.9-i686.config .config
# make oldconfig
.....
# make
.....
# make modules_install
.....
# installkernel 2.6.9-55.0.2.EL.vm arch/i386/boot/bzImage System.map

Grubの設定を確認

# vi /etc/grub.conf
default=0     <=新しく追加されているカーネルに設定

...

title CentOS (2.6.9-55.0.2.EL.vm)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.9-55.0.2.EL.vm ro root=/dev/VolGroup00/LogVol00 clock=pit
        initrd /boot/initrd-2.6.9-55.0.2.EL.vm.img

最後に再起動して

# uname -r
2.6.9-55.0.2.EL.vm

OK

カーネルの更新を停止

yum.confの最終行にexclude=kernel*を追加する

# vi /etc/yum.conf
 [main]
+exclude=kernel*

さあて、ようやくRubyを入れますか・・・