聊一聊CentOS 7升级内核方案

2022-08-13 16:44:19 浏览数 (1)

CentOS 7自带的内核版本还停留在3.x,如果某些软件对Linux内核版本有要求,就不得不升级内核来支持,比如Google的BBR加速,要求Linux内核大于4.9以上,这篇文章来聊一聊CentOS 7内核升级的话题。

内核版本选择

我们可以从https://www.kernel.org/官网下载指定内核源码并进行编译升级,但是此步骤较为繁琐,不在此次讨论范围。

如果我们采用rpm包进行升级,可以使用别人编译好的包,其中elrepo提供的内核升级包是比较值得信赖的,内核地址如下:https://elrepo.org/linux/kernel/el7/x86_64/RPMS/

但是打开elrepo的网站我们只能看到5.15.x5.4.x(随着时间的推移可能会有变化)两个版本,标识了mllt

  • ml代表主线版本,总是保持主线最新的内核
  • lt代表长期支持版本,支持周期更长

再通过https://www.kernel.org官网对照下上面两个版本的生命周期,可以看到5.15支持到2023年,而5.4支持到2025年。

如果你要追求最新的版本,直接选择带ml的rpm包即可,如果你要追求稳定且更长的支持周期,直接选择lt版本即可。

在线升级

代码语言:javascript复制
#导入ELRepo 公钥
wget https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm --import RPM-GPG-KEY-elrepo.org
#安装ELRepo
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
#升级最新内核
yum --enablerepo=elrepo-kernel install kernel-ml -y
#升级长期支持的lt内核(二选一即可)
yum --enablerepo=elrepo-kernel install kernel-lt -y

离线升级

也可以手动下载rpm的内核进行离线升级,以升级lt内核为例,方法如下:

代码语言:javascript复制
#下载内核(随着时间推移,链接可能失效)
wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-5.4.160-1.el7.elrepo.x86_64.rpm
#备用下载地址
wget https://wget.ovh/linux/kernel/kernel-lt-5.4.160-1.el7.elrepo.x86_64.rpm
#升级内核
rpm -ivh kernel-lt-5.4.160-1.el7.elrepo.x86_64.rpm

切换内核

输入命令awk -F' '$1=="menuentry " {print i " : " $2}' /boot/grub2/grub.cfg查看grub2引导序号。

代码语言:javascript复制
[root@test ~]# awk -F' '$1=="menuentry " {print i   " : " $2}' /boot/grub2/grub.cfg
0 : CentOS Linux (5.4.160-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)
2 : CentOS Linux (0-rescue-face32e3e9d448e2a0403204f18369d9) 7 (Core)

可以看到序号0是我们刚刚安装的内核,我们将其设置为默认启动内核:

代码语言:javascript复制
#设置默认启动内核
grub2-set-default 0
#重启服务器生效
reboot

某些服务商可能会遇到设置不生效的问题,我们可采取删除旧内核,保留新内核的做法。需要重启服务器并通过VNC连接(请咨询服务商)并在开机的启动界面选择新内核(5.4)进入,通过以下方法删除旧内核:

代码语言:javascript复制
#查看当前内核,确保是以新内核启动
uname -a
#查看系统中全部内核
rpm -qa | grep kernel
#移出不需要的内核
yum remove kernel-3.10.0-229.4.2.el7.x86_64

如果系统中只有一个内核,在下次启动的时候就会默认选择该内核启动。

注意

升级内核有分险,以上方法不保障升级内核一定成功,生产环境请谨慎操作,如果升级后内核无法启动,可通过VNC连接服务器(咨询服务商),然后选择正常的内核启动,并删除异常的内核进行恢复。

总结

  • ml代表主线版本,总是保持主线最新的内核
  • lt代表长期支持版本,支持周期更长
  • 内核升级失败,可通过VNC连接选择正常的内核进入系统
  • elrepo会经常删除旧的内核,建议定期从elrepo网站将内核下载进行保存,以便后续使用

以上部分内容参考了:Linux Kernel 5.14.x 编译版

0 人点赞