摘自:升级CentOS内核
第一步:升级系统软件
作为常规操作,第一步肯定是要先升级一下系统的原有软件,因为后续可能有些步骤可能会依赖于一些已经安装的软件,减少后续的麻烦,所以需要执行一下升级操作:
yum -y update
第二步:添加elrepo源
要升级内核,肯定要有源,这里我使用的是elrepo源,通过以下步骤添加:
1、添加elrepo的gpg key
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
2、添加 elrepo的源
rpm -Uvh https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
3、查看是否添加成功
yum repolist | grep elre
Repository kubernetes is listed more than once in the configuration
- elrepo: mirrors.colocall.net
!elrepo ELRepo.org Community Enterprise Linux Reposi 111
看到这些的时候就 OK了。
第三步:安装新内核
现在可以开始安装新的内核了,为了其他源的影响,在使用的时候需要指定一下源:
yum --enablerepo=elrepo-kernel install kernel-ml
安装完毕之后就可以了。
第四步:设置 grub2
在第三步我已经安装好了新的内核,现在可以查看一下系统中的所有内核:
sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (5.0.7-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-957.10.1.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-957.1.3.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-a3a5fb49fbb1460284f9555176a03f2e) 7 (Core)
我这里已经设置了新的内核为默认启动的,你如果按照这个步骤安装,应该是没有的,那么需要以这个步骤设置:
sudo grub2-set-default 0
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
sudo reboot
这第一句的后面一个数字0就是设置哪个内核为默认内核,第二句是将配置持久化到系统配置,然后第三句重启系统,你会发现如果不手动干预的情况下,系统会默认从新的内核启动。
启动之后,你可以查看一下当前的内核版本:
uname -msr
Linux 5.0.7-1.el7.elrepo.x86_64 x86_64
【可选】第五步:移除旧版本内核
如果你觉得旧版本的内核占用了你的空间,那么不妨删除他们,方式也很简单:
yum install yum-utils
package-cleanup --oldkernels
收工了事,但是,当我升级完毕之后,准备编译安装其他软件的时候,问题出现了,无论我怎么操作,编译依赖的 kernal-devel 版本都是旧的。
第六步:升级 kernal-devel
升级完内核之后,我查看一下kernal-devel的版本:
cd /usr/src/kernels/
ls -l
3.10.0-957.10.1.el7.x86_64
很明显,和我现在的系统内核版本不匹配,所以没办法,只能找办法升级一波。首先,必须说 yum install kernel-devel肯定是行不通的,因为系统默认的源还是旧版本的,可能需要修改好多个 repo 来 fix 这个版本,而且还不知道能不能完全修复完,所以我的处理方式比较极端,直接把之前所有的 repo 都先关了,然后添加了第二步的 repo。
然后就开始安装新的 kernel-devel了:
yum --enablerepo=elrepo-kernel install kernel-ml
yum --enablerepo=elrepo-kernel -y swap kernel-headers -- kernel-ml-headers
yum --enablerepo=elrepo-kernel -y swap kernel-tools-libs -- kernel-ml-tools-libs
yum --enablerepo=elrepo-kernel -y install kernel-ml-tools
yum -y remove kernel