共计 1935 个字符,预计需要花费 5 分钟才能阅读完成。
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.x
和5.4.x
(随着时间的推移可能会有变化)两个版本,标识了 ml
和lt
ml
代表主线版本,总是保持主线最新的内核lt
代表长期支持版本,支持周期更长
再通过 https://www.kernel.org 官网对照下上面两个版本的生命周期,可以看到 5.15
支持到 2023 年,而 5.4
支持到 2025 年。
如果你要追求最新的版本,直接选择带 ml
的 rpm 包即可,如果你要追求稳定且更长的支持周期,直接选择 lt
版本即可。
在线升级
# 导入 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
内核为例,方法如下:
# 下载内核(随着时间推移,链接可能失效)
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 引导序号。
[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
是我们刚刚安装的内核,我们将其设置为默认启动内核:
# 设置默认启动内核
grub2-set-default 0
#重启服务器生效
reboot
某些服务商可能会遇到设置不生效的问题,我们可采取删除旧内核,保留新内核的做法。需要重启服务器并通过 VNC 连接(请咨询服务商)并在开机的启动界面选择新内核(5.4)进入,通过以下方法删除旧内核:
# 查看当前内核,确保是以新内核启动
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 编译版