0

0

Linux怎么升级内核_Linux内核在线升级与回滚方案【高级】

穿越時空

穿越時空

发布时间:2026-01-12 15:05:02

|

240人浏览过

|

来源于php中文网

原创

CentOS 7/RHEL 7内核升级需多版本共存,推荐ELRepo安装kernel-lt(LTS)或kernel-ml(主线),支持在线安装、离线RPM部署、GRUB回滚及双内核灰度切换。

linux怎么升级内核_linux内核在线升级与回滚方案【高级】

如果您正在运行 CentOS 7 或 RHEL 7 系统,当前内核版本较旧且需启用新硬件支持、安全补丁或容器运行时增强特性,则可能需要升级内核。Linux 内核升级并非覆盖式替换,而是以多版本共存方式安装新内核,并通过 GRUB 引导选择启动项。以下是多种可行的在线升级与回滚方案:

一、使用 ELRepo 仓库在线安装长期支持(LTS)内核

ELRepo 是专为 RHEL/CentOS 设计的可信第三方源,提供预编译的 kernel-lt(长期支持)和 kernel-ml(主线最新)二进制包,无需编译,兼容性高、部署快。

1、导入 ELRepo 公钥并安装仓库配置包:

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

2、执行以下命令安装 elrepo-release 包:

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm

3、列出可用的长期支持内核包:

yum --disablerepo="*" --enablerepo="elrepo-kernel" list available kernel-lt*

4、安装 kernel-lt 及其配套 headers 和 firmware:

yum --enablerepo=elrepo-kernel install kernel-lt kernel-lt-devel kernel-lt-headers

5、确认新内核已写入 /boot 目录:

ls /boot/vmlinuz-*

6、设置 GRUB 默认启动新内核:

grubby --set-default /boot/vmlinuz-5.4.214-1.el7.elrepo.x86_64

7、重启系统并验证:

reboot && uname -r

二、使用 ELRepo 安装主线最新(ML)内核

当需要测试较新特性(如 eBPF 改进、IO_uring 增强、新网卡驱动)且可接受略低稳定性时,kernel-ml 版本提供接近上游 mainline 的功能集,适用于开发与评估环境。

1、确保已启用 elrepo-kernel 仓库(参见方案一第2步)。

2、查询可用的主线内核包:

yum --enablerepo=elrepo-kernel list available kernel-ml*

3、安装 kernel-ml 及其开发组件:

yum --enablerepo=elrepo-kernel install kernel-ml kernel-ml-devel kernel-ml-headers

4、查看 GRUB 启动菜单索引:

awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/grub2/grub.cfg

5、将新内核设为默认启动项(假设新内核位于索引 0):

grubby --set-default-index=0

6、强制更新 GRUB 配置文件

grub2-mkconfig -o /boot/grub2/grub.cfg

7、重启后检查是否生效:

uname -r | grep -E '^(5\.1[0-9]|6\.)'

三、离线 RPM 包手动安装(适用于无外网环境)

在无法直连互联网的生产服务器上,可通过内网镜像或跳板机下载指定内核 RPM 包,再使用 yum localinstall 完成部署,全程可控、审计清晰。

1、从阿里云 ELRepo 镜像站下载对应架构的 kernel-lt 包(例如 5.4.214):

wget https://mirrors.aliyun.com/elrepo/kernel/el7/x86_64/RPMS/kernel-lt-5.4.214-1.el7.elrepo.x86_64.rpm

2、同时下载配套依赖包(若提示缺失):

wget https://mirrors.aliyun.com/elrepo/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.214-1.el7.elrepo.x86_64.rpm

灵枢SparkVertex
灵枢SparkVertex

零代码AI应用开发平台

下载

3、将所有 RPM 文件拷贝至目标主机的 /tmp 目录。

4、执行本地安装(自动解析依赖):

yum localinstall /tmp/kernel-lt-*.rpm -y

5、验证新内核是否注册到 GRUB:

ls /boot/vmlinuz-5.4.214*

6、修改 /etc/default/grub 中 GRUB_DEFAULT 值为 0,然后执行:

grub2-mkconfig -o /boot/grub2/grub.cfg

7、重启系统完成切换。

四、通过 GRUB 回滚至旧内核(紧急恢复)

若新内核导致系统无法正常启动(如黑屏、无网络、驱动失效),可在 GRUB 启动菜单中临时选择旧内核启动,避免系统宕机;后续可卸载问题内核并修复引导配置。

1、开机时在 GRUB 菜单界面按方向键高亮显示旧内核条目(如 “CentOS Linux (3.10.0-1160.15.2.el7.x86_64)”)。

2、按 e 键进入编辑模式,定位到以 linux16 开头的行。

3、在该行末尾添加 systemd.unit=rescue.target 并按 Ctrl+X 启动救援模式。

4、登录后执行以下命令卸载问题内核(以 kernel-lt-5.4.214 为例):

yum remove kernel-lt-5.4.214\* -y

5、重新生成 GRUB 配置:

grub2-mkconfig -o /boot/grub2/grub.cfg

6、设置默认启动项为稳定旧内核:

grubby --set-default /boot/vmlinuz-3.10.0-1160.15.2.el7.x86_64

7、重启验证回滚结果:

reboot && uname -r

五、保留双内核并按需切换(生产环境推荐策略)

生产系统应始终保留至少两个可用内核:一个经长期验证的 LTS 版本作为主用,一个新版本用于灰度验证。通过 GRUB_TIMEOUT 和 GRUB_DEFAULT=saved 实现灵活切换,降低变更风险。

1、确认当前所有已安装内核:

rpm -q kernel kernel-lt kernel-ml

2、查看各内核在 GRUB 中的顺序编号:

awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/grub2/grub.cfg

3、启用 GRUB 保存上次成功启动项功能:

sed -i 's/GRUB_DEFAULT=.*/GRUB_DEFAULT=saved/' /etc/default/grub

4、更新 GRUB 配置使设置生效:

grub2-mkconfig -o /boot/grub2/grub.cfg

5、每次成功启动某内核后,执行以下命令将其设为下次默认:

grubby --set-default /boot/vmlinuz-5.4.214-1.el7.elrepo.x86_64

6、如需临时启动另一内核,可在 GRUB 菜单中直接选择,无需修改配置。

7、定期清理过期内核(保留最近两个):

package-cleanup --oldkernels --count=2

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

184

2023.09.27

counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

196

2023.11.20

default gateway怎么配置
default gateway怎么配置

配置default gateway的步骤:1、了解网络环境;2、获取路由器IP地址;3、登录路由器管理界面;4、找到并配置WAN口设置;5、配置默认网关;6、保存设置并退出;7、检查网络连接是否正常。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

219

2023.12.07

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

326

2023.11.09

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

401

2023.11.14

HTTP 503错误解决方法
HTTP 503错误解决方法

HTTP 503错误表示服务器暂时无法处理请求。想了解更多http错误代码的相关内容,可以阅读本专题下面的文章。

1585

2024.03.12

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1933

2024.08.16

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1933

2024.08.16

Java 项目构建与依赖管理(Maven / Gradle)
Java 项目构建与依赖管理(Maven / Gradle)

本专题系统讲解 Java 项目构建与依赖管理的完整体系,重点覆盖 Maven 与 Gradle 的核心概念、项目生命周期、依赖冲突解决、多模块项目管理、构建加速与版本发布规范。通过真实项目结构示例,帮助学习者掌握 从零搭建、维护到发布 Java 工程的标准化流程,提升在实际团队开发中的工程能力与协作效率。

8

2026.01.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7万人学习

Git 教程
Git 教程

共21课时 | 2.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号