升级CentOS内核
可能关注我博客更新的同学有点印象,我是一直在使用CentOS的,但是,随着Linux Kernal版本的不断更新以及CentOS自身的版本不断更新,我本地的内核已经有点旧了,以至于一些新的特性和软件无法正常的使用,所以我决定升级一把Kernal。
其实升级Kernal是一件费力的事情,因为它的影响其实挺大的,主要原因是系统中的很多软件都是依赖于内核版本的,尤其是那些自己编译安装的软件,即使自身不依赖于内核版本,但是它的依赖工具等是和内核有关的,所以,当我升级完内核之后,还有一大堆软件需要我重新编译安装。但是这些都不是重点,这篇文章主要是记录一下我是如何升级内核的,我的原始内核是3.10版本,比较旧了,然后准备一次性升级到最新的版本5.0,直接跳过了4.x版本。
第一步:升级系统软件
作为常规操作,第一步肯定是要先升级一下系统的原有软件,因为后续可能有些步骤可能会依赖于一些已经安装的软件,减少后续的麻烦,所以需要执行一下升级操作:
[[email protected]]# yum -y update
第二步:添加elrepo源
要升级内核,肯定要有源,这里我使用的是elrepo源,通过以下步骤添加:
1、添加elrepo的gpg key
[[email protected]]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
2、添加 elrepo的源
[[email protected]]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
3、查看是否添加成功
[[email protected]]# 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了。
第三步:安装新内核
现在可以开始安装新的内核了,为了其他源的影响,在使用的时候需要指定一下源:
[[email protected]]# yum --enablerepo=elrepo-kernel install kernel-ml
安装完毕之后就可以了。
第四步:设置 grub2
在第三步我已经安装好了新的内核,现在可以查看一下系统中的所有内核:
[[email protected]]# 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)
我这里已经设置了新的内核为默认启动的,你如果按照这个步骤安装,应该是没有的,那么需要以这个步骤设置:
[[email protected]]# sudo grub2-set-default 0 [[email protected]]# sudo grub2-mkconfig -o /boot/grub2/grub.cfg [[email protected]]# sudo reboot
这第一句的后面一个数字0就是设置哪个内核为默认内核,第二句是将配置持久化到系统配置,然后第三句重启系统,你会发现如果不手动干预的情况下,系统会默认从新的内核启动。
启动之后,你可以查看一下当前的内核版本:
[[email protected]]# uname -msr Linux 5.0.7-1.el7.elrepo.x86_64 x86_64
【可选】第五步:移除旧版本内核
如果你觉得旧版本的内核占用了你的空间,那么不妨删除他们,方式也很简单:
[[email protected]]# yum install yum-utils [[email protected]]# package-cleanup --oldkernels
收工了事,但是,当我升级完毕之后,准备编译安装其他软件的时候,问题出现了,无论我怎么操作,编译依赖的 kernal-devel 版本都是旧的。
第六步:升级 kernal-devel
升级完内核之后,我查看一下kernal-devel的版本:
[[email protected]]# cd /usr/src/kernels/ [[email protected]]# ls -l 3.10.0-957.10.1.el7.x86_64
很明显,和我现在的系统内核版本不匹配,所以没办法,只能找办法升级一波。首先,必须说 yum install kernel-devel肯定是行不通的,因为系统默认的源还是旧版本的,可能需要修改好多个 repo 来 fix 这个版本,而且还不知道能不能完全修复完,所以我的处理方式比较极端,直接把之前所有的 repo 都先关了,然后添加了第二步的 repo。
然后就开始安装新的 kernel-devel了:
[[email protected]]# yum --enablerepo=elrepo-kernel install kernel-ml [[email protected]]# yum --enablerepo=elrepo-kernel -y swap kernel-headers -- kernel-ml-headers [[email protected]]# yum --enablerepo=elrepo-kernel -y swap kernel-tools-libs -- kernel-ml-tools-libs [[email protected]]# yum --enablerepo=elrepo-kernel -y install kernel-ml-tools [[email protected]]# yum -y remove kernel
这样就 OK了,一切顺利,开始玩耍。
作者:格物致知
链接:https://liqiang.io/post/upgrade-linux-kernal-in-centos-290d53e5
<< 上一篇
下一篇 >>