系统原本的kernel版本:
[root@server5 mnt]# uname -a
Linux server5 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 2013 x86_64 x86_64 x86_64 GNU/Linux
1.安装新的内核源码包
[root@server5 mnt]# rpm -ivh kernel-2.6.32-220.23.1.el6.src.rpm
2.执行完上一步,会在/root下生成一个rpmbuild目录
[root@server5 ~]# ls /root/rpmbuild/
SOURCES SPECS
3.解压出安装的内核源代码
安装rpm解包工具:
yum install rpm-build -y
安装解包过程需要的依赖性环境包:
yum install gcc redhat-rpm-config patchutils xmlto asciidoc elfutils-libelf-devel zlib-devel binutils-devel newt-devel python-devel hmaccalc perl-ExtUtils-Embed -y
yum install newt-devel-0.52.11-3.el6.x86_64.rpm asciidoc-8.4.5-4.1.el6.noarch.rpm slang-devel-2.2.1-1.el6.x86_64.rpm -y
解压出内核源代码:
[root@server5 mnt]# cd /root/rpmbuild/SPECS/
[root@server5 SPECS]# ls
kernel.spec
[root@server5 SPECS]# rpmbuild -bp kernel.spec
#如果卡住了,再开一个shell,执行rngd -r /dev/urandom即可(rngd命令对应的包是rng-tools)
4.解压完之后rpmbuild目录下会生成一些新的目录
[root@server5 SPECS]# cd /root/rpmbuild/
[root@server5 rpmbuild]# ls
BUILD BUILDROOT RPMS SOURCES SPECS SRPMS
5.将/mnt下的补丁包复制进来
[root@server5 rpmbuild]# cd /root/rpmbuild/BUILD/kernel-2.6.32-220.23.1.el6/linux-2.6.32-220.23.1.el6.x86_64/
[root@server5 linux-2.6.32-220.23.1.el6.x86_64]# cp /mnt/lvs-fullnat-synproxy/lvs-2.6.32-220.23.1.el6.patch .
6.打补丁
[root@server5 linux-2.6.32-220.23.1.el6.x86_64]# patch -p1 < lvs-2.6.32-220.23.1.el6.patch
7.修改Makefile文件
[root@server5 linux-2.6.32-220.23.1.el6.x86_64]# vim Makefile
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 32
EXTRAVERSION = -220.23.1.el6.x86_64 #在这里增加一个版本号,一会编译出来的新内核就会将这个号作为后缀,方便识别
NAME = Man-Eating Seals of Antiquity
RHEL_MAJOR = 6
RHEL_MINOR = 2
RHEL_RELEASE = 219
8.安装
[root@server5 linux-2.6.32-220.23.1.el6.x86_64]# make
[root@server5 linux-2.6.32-220.23.1.el6.x86_64]# make modules_install
[root@server5 linux-2.6.32-220.23.1.el6.x86_64]# make install
9.设置默认启动的系统
[root@server5 linux-2.6.32-220.23.1.el6.x86_64]# vim /boot/grub/grub.conf
...
default=0 #0表示默认启动第一个系统,即2.6.32-220.23.1.el6.x86_64的内核系统
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.32-220.23.1.el6.x86_64) #可以看到编译完内核之后grub文件里多出了这块内容
root (hd0,0)
kernel /vmlinuz-2.6.32-220.23.1.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=VolGroup/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-220.23.1.el6.x86_64.img
...
10.重新启动
[root@server5 linux-2.6.32-220.23.1.el6.x86_64]# reboot
查看现在系统的内核版本:
[root@server5 ~]# uname -a
Linux server5 2.6.32-220.23.1.el6.x86_64 #1 SMP Fri Jan 26 18:04:39 CST 2018 x86_64 x86_64 x86_64 GNU/Linux