CentOS 5 でカーネルをアップデートする方法は以下の通り。

1. 必要なパッケージをインストール

# yum -y install kernel-devel gcc ncurses-devel

2. カーネルソースをダウンロード

# cd /usr/local/src
# wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.1.6.tar.bz2

3. 展開

# tar jxvf linux-3.1.6.tar.bz2

4. 現在のカーネル設定をコピー

# cd linux-3.1.6
# cp /usr/src/kernels/`uname -r`-`uname -m`/.config .

5. 新しいカーネルの設定

# make menuconfig

6. すぐにESCを2回押すと、以下のメッセージが表示されるので<YES>を選択

Do you wish to save your new configuration? <ESC><ESC>  x
to continue.

7. 新しいカーネルの設定 ( .config ) に以下の2行を追加

CONFIG_SYSFS_DEPRECATED=y
CONFIG_SYSFS_DEPRECATED_V2=y

8. サンプル用のMakefile ( samples/Makefile ) を修正
(修正しないとコンパイルエラーになった)

# Makefile for Linux samples code
obj-$(CONFIG_SAMPLES)   += kobject/ kprobes/ tracepoints/ trace_events/ 
 hw_breakpoint/ kfifo/ kdb/ #hidraw/

9. カーネルコンパイル

# make bzImage && make modules && make modules_install && make install

10. rpmを作成する場合のみ実行( rpm-buildが必要)

# make rpm

11. 以下のファイルが作成されていることを確認

/boot/initrd-3.1.6.img
/boot/vmlinuz-3.1.6

initrdが存在しない場合は以下のコマンドを実行

# mkinitrd /boot/initrd-3.1.6.img 3.1.6

12. grub.conf に新しいカーネル用のエントリが存在していることを確認

【例】

default=1
title CentOS (3.1.6)
 root (hd0,0)
 kernel /vmlinuz-3.1.6 ro root=/dev/VolGroup00/LogVol00
 initrd /initrd-3.1.6.img

default は新しいカーネルでの起動が確認できるまでは古いカーネルを指定した方が安全

13. 再起動し、新しいカーネルで起動

# sync; sync; sync
# reboot

14. 起動が確認できたら grub.conf の default を新しいカーネルに変更

環境:
CentOS 5.7 (x86_64)