本文章转自 https://www.jianshu.com/p/fbee79dbe3f9
1.查看系统的.查看系统内核版本
[root@localhost ~]# uname -a
Linux centos 2.6.32-696.el6.x86_64
[root@localhost ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
2.下载、安装需编译环境所需要的工具包
(1)在用yum之前确保自己的/etc/yum.repos.d/yum.repo配置正确,配置如下:
[filename]
name=filename
baseurl=file:/media/CentOS_6.9_Final
gpgcheck=0
(2) 安装环境包
[root@localhost ~]# yum install vim wget
[root@localhost ~]# yum install gcc gcc-c++ xz
[root@localhost ~]# yum install bc
[root@localhost ~]# yum install ncurses-devel
[root@localhost ~]# yum install hmaccalc zlib-devel binutils-devel elfutils-libelf-devel
[root@localhost ~]# yum install qt-devel #如果有X环境时安装(目前不安装)
3.下载内核包
(1)切换目录
(2)下载内核包,本次使用3.12.17版本。
4.编译内核
(1)解包,进行内核源码目录
[root@localhost ~]# tar -vxf linux-3.12.17.tar.xz
[root@localhost ~]# cd linux-3.12.17
(2)以菜单的方式,选择编译内核需要的模块
[root@localhost ~]# make menuconfig
打开菜单后,以默认方式保存,并退出保存后,当前目录会自动生成.config文件
执行完make menuconfig后,vim /boot/config-2.6.32-696.el6.x86_64
将#CONFIG_SYSFS_DEPRECATED_V2 is not set修改
CONFIG_SYSFS_DEPRECATED_V2=y
(3)查看当前版本,并且以原编译配置来进行编译
[root@localhost ~]# uname -r
2.6.32-696.el6.x86_64
(4)复制原配置文件到编译目录(视需要,把旧的配合文件做为新的配合模板
[root@localhost ~]# cp /boot/config-2.6.32-696.el6.x86_64 .config
提示是否覆盖,输入y
[root@localhost ~]# sh -c 'yes "" | make oldconfig'
以原配置文件产生新的配置文件,默认回答为YES方式
(5)编译内核 (需时约30-40分钟)
[root@localhost ~]# make
(6)安装内核
[root@localhost ~]# make modules_install install
完成时,会提示 could not find module vmware_balloon,这个和虚拟机有关,可以无视。
5.更改系统启动时,使用的内核
[root@localhost ~]# vim /boot/grub/menu.lst
修改default=0,开机后,默认以第一项启动(3.12.17内核)
保存退出
6.重启系统
[root@localhost ~]# shutdown -r now
7.确认当前内核版本
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.12.17 #1 SMP Fri Apr 14 15:09:01 CST 2017 x86_64 x86_64 x86_64 GNU/Linux
显示内核为3.12.17,表示升级内核成功
8.如果编译失败,可以先清除,再重新编译
[root@localhost ~]# cd /usr/local/src/linux-3.12.17
[root@localhost ~]# make mrproper #完成或者安装过程出错,可以清理上次编译的现场
[root@localhost ~]# make clean
9.如果升级成功后,可以删除源码目录
[root@localhost ~]# rm -rf /usr/local/src/linux-3.12.17
10.删除原来的内核
(1)查看当前有什么内核版本
[root@localhost ~]# rpm -q kernel
kernel-2.6.32-431.el6.x86_64
kernel-2.6.32-696.el6.x86_64
kernel-2.6.32-696.1.1.el6.x86_64
(2)删除原内核
[root@localhost ~]# yum remove kernel-2.6.32-431.el6.x86_64
移除此版本的内核,同时启动菜单也不再会出现此内核
[root@localhost ~]# yum remove kernel-2.6.32-431.11.2.el6.x86_64
删除后,查看启动菜单会发现已经少了此内核
[root@localhost ~]# cat /boot/grub/menu.lst
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (3.12.17)
root (hd0,0)
kernel /vmlinuz-3.12.17 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS rd_NO_MD
rd_LVM_LV=VolGroup/lv_swap crashkernel=auto LANG=zh_CN.UTF-8
rd_LVM_LV=VolGroup/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-3.12.17.img
title CentOS (2.6.32-696.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS
rd_NO_MD rd_LVM_LV=VolGroup/lv_swap crashkernel=auto LANG=zh_CN.UTF-8
rd_LVM_LV=VolGroup/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-696.el6.x86_64.img
title CentOS (2.6.32-431.el6.x86_64)