Linux怎么升级内核_Linux内核在线升级与回滚方案【高级】
发布时间 - 2026-01-12 00:00:00 点击率:次CentOS 7/RHEL 7内核升级需多版本共存,推荐ELRepo安装kernel-lt(LTS)或kernel-ml(主线),支持在线安装、离线RPM部署、GRUB回滚及双内核灰度切换。
如果您正在运行 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 --en
ablerepo=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
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
# linux
# centos
# 阿里云
# ai
# 配置文件
# 网卡驱动
# 架构
# print
# count
# default
# http
# https
# 重启
# 启动项
# 离线
# 设为
# 可在
# 镜像
# 互联网
# 如果您
# 双内核
# 菜单中
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
zabbix利用python脚本发送报警邮件的方法
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
java中使用zxing批量生成二维码立牌
JS碰撞运动实现方法详解
实例解析angularjs的filter过滤器
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
高防服务器租用首荐平台,企业级优惠套餐快速部署
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音
公司网站制作需要多少钱,找人做公司网站需要多少钱?
如何在腾讯云服务器上快速搭建个人网站?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
C语言设计一个闪闪的圣诞树
Laravel中间件如何使用_Laravel自定义中间件实现权限控制
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
如何获取上海专业网站定制建站电话?
javascript读取文本节点方法小结
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
如何撰写建站申请书?关键要点有哪些?
Laravel怎么实现验证码(Captcha)功能
如何在IIS中新建站点并配置端口与物理路径?
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
佛山企业网站制作公司有哪些,沟通100网上服务官网?
Laravel如何配置任务调度?(Cron Job示例)
详解Android图表 MPAndroidChart折线图
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践
什么是javascript作用域_全局和局部作用域有什么区别?
iOS验证手机号的正则表达式
如何在万网自助建站平台快速创建网站?
再谈Python中的字符串与字符编码(推荐)
悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤
详解阿里云nginx服务器多站点的配置
Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门
如何在万网主机上快速搭建网站?
如何在新浪SAE免费搭建个人博客?
大连网站制作公司哪家好一点,大连买房网站哪个好?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
如何挑选高效建站主机与优质域名?
js实现获取鼠标当前的位置
大学网站设计制作软件有哪些,如何将网站制作成自己app?
,怎么在广州志愿者网站注册?
如何快速搭建FTP站点实现文件共享?
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
高防服务器租用如何选择配置与防御等级?
java获取注册ip实例

