CentOS 6.x 升级linux内核至 3.x

[root@localhost ~]# cat /etc/redhat-release
CentOS release 6.3 (Final)

[root@localhost ~]# uname -a
Linux localhost 2.6.32-279.el6.x86_64 #1 SMP Fri Jun 22 12:19:21 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

更新当前系统
yum update
yum upgrade

[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.32-504.23.4.el6.x86_64 #1 SMP Tue Jun 9 20:57:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

安装编译内核所需要的软件包
yum groupinstall “Development Tools”   # 一口气安装编译时所需的一切工具
yum -y install wget gcc gcc-c++ xz bc ncurses-devel  hmaccalc zlib-devel binutils-devel elfutils-libelf-devel

yum install qt-devel #如果你没有 X 环境,这一条可以不用

Linux内核版本有两种:稳定版和开发版 ,Linux内核版本号由3个数字组成:r.x.y

r: 主版本号
x: 次版本号,偶数表示稳定版本;奇数表示开发中版本。
y: 修订版本号 , 表示修改的次数

http://www.kernel.org 可以看到有stable, longterm等版本,longterm是比stable更稳定的版本,会长时间更新,当前3x最新版本为3.18.18

下载解压
wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.18.18.tar.xz
yum -y install xz
tar -xvJf linux-3.18.18.tar.xz

将当前系统的配置文件拷贝到当前目录
cd linux-3.18.18
cp /boot/config-2.6.32-504.23.4.el6.x86_64 .config

使用旧内核配置,并自动接受每个新增选项的默认设置
sh -c ‘yes “” | make oldconfig’

make oldconfig会读取当前目录下的.config文件,在.config文件里没有找到的选项则提示用户填写,然后备份.config文件为.config.old,并生成新的.config文件,参考 http://stackoverflow.com/questions/4178526/what-does-make-oldconfig-do-exactly-linux-kernel-makefile

编译内核 (需要几十分钟)
[root@centos ~]# make

安装内核

[root@centos ~]# make modules_install install

如果出现了 ERROR: modinfo: could not find module xxx,数量少的话,可以忽略。

修改Grub引导顺序

安装完成后,需要修改Grub引导顺序,让新安装的内核作为默认内核。
vi /etc/grub.conf

数一下刚刚新安装的内核在哪个位置,从0开始,然后设置default为那个数字,一般新安装的内核在第一个位置,所以设置default=0

重启
reboot

重启后,看一下当前内核版本号,

[root@localhost ~]# uname -a
Linux localhost.localdomain 3.18.18 #1 SMP Wed Jul 15 12:49:31 CST 2015 x86_64 x86_64 x86_64 GNU/Linux

成功啦

发表评论