参照:http://300second.blog.51cto.com/7582/816758

下载地址:http://www.kernel.org/pub/linux/kernel/v2.6/longterm/v2.6.35/linux-2.6.35.13.tar.bz2

将下载的内核文件放置/usr/src/kernel目录下,并解压缩:

tar  jxvf  linux-2.6.35.13.tar.bz2

开始编译内核

#make mrproper  #删除之前编译所生成的文件和配置文件,备份文件等

出现错误提示,不能继续,不知道上面的大侠是咋过去的,不过错误提示中让我先运行大侠的第二步,即先运行 make menuconfig,不知道是不是因为是我第一次编译的原因,所以不需要运行此命令?

#make menuconfig   #在以菜单模式进入内核配置界面

还有另外两种选择

 

 

 接着执行make all,

#make all

执行结果如下:

WARNING: modpost: Found 2 section mismatch(es).
To see full details build your kernel with:
'make CONFIG_DEBUG_SECTION_MISMATCH=y'

产生了两个不匹配的警告,不知是否能忽略???

按照提示:运行make CONFIG_DEBUG_SECTION_MISMATCH=y

#make CONFIG_DEBUT_SECTION_MISMATCH=y

然后接着执行make modules命令

#make modules    #编译内核模块

能够顺利运行,然后再运行make modules_install命令

#make modules_install    #安装内核模块

也能够顺利运行,

安装成功后 /lib/modules目录会有一个2.6.35.13的子目录,里面放的是新内核可加载的所有模块,接着执行make install进行编译安装

#make install   #编译安装

顺利通过,不过据作者说,仅修改这些的话,重启加载新内核会报错,原因是在加载逻辑卷,因此在执行完“make all”之后“linux-2.6.35.13”文件夹下会生成配置文件“.config”, 要先编辑此文件:
改“#CONFIG_SYSFS_DEPRECATED_V2 is not set”为“CONFIG_SYSFS_DEPRECATED_V2=y
或者直接用下面sed命令更改:
[root@server linux-2.6.35.13]# sed -i 's/# CONFIG_SYSFS_DEPRECATED_V2 is not set/CONFIG_SYSFS_DEPRECATED_V2=y/' .config
修改完此配置文件后再次“make all”以及完成后续步骤。

不过我这里先跳过,不过后来确实变化启动内核 后重启确实出现这个错误。

4)解压initrd文件
[root@server linux-2.6.35.13]# cp /boot/initrd-2.6.35.13.img /tmp
[root@server linux-2.6.35.13]# cd /tmp/
[root@server tmp]# mkdir newinitrd
[root@server tmp]# cd newinitrd/
[root@server newinitrd]# zcat ../initrd-2.6.35.13.img | cpio -i
[root@server newinitrd]# vi init
# 删掉重复的两行其中一行
echo "Loading dm-region-hash.ko module"
insmod /lib/dm-region-hash.ko
echo "Loading dm-region-hash.ko module"
insmod /lib/dm-region-hash.ko
5)重新打包initrd文件
[root@server newinitrd]# find .|cpio -c -o > ../initrd
11286 blocks
[root@server newinitrd]# cd ../
[root@server tmp]# gzip -9 < initrd > initrd-2.6.35.13.img
[root@server tmp]# rm -rf /boot/initrd-2.6.35.13.img
[root@server tmp]# cp initrd-2.6.35.13.img /boot

6)修改默认以新的内核启动
[root@server tmp]# less /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/hdd3
#          initrd /initrd-version.img
#boot=/dev/hdd
default=1
timeout=5
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.35.13)
        root (hd0,0)
        kernel /vmlinuz-2.6.35.13 ro root=LABEL=/ rhgb quiet
        initrd /initrd-2.6.35.13.img
title CentOS (2.6.18-194.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-194.el5 ro root=LABEL=/ rhgb quiet
        initrd /initrd-2.6.18-194.el5.img
[root@server tmp]# vi /boot/grub/grub.conf
default=1改为default=0,然后重新启动系统
[root@server tmp]# reboot
7)重启后验证内核版本
uname -r

成功显示,如果以后不出错的话,就表明成功升级,哈哈

 

 

make xconfig  是在图形界面模式进入内核配置界面

make gconfig  在图形界面模式进入内核配置界面