文章目录
- [Linux 内核升级](#Linux 内核升级)
-
- 一、核心结论
- [二、CentOS 7:ELRepo 在线升级(推荐)](#二、CentOS 7:ELRepo 在线升级(推荐))
-
- [1. 在线安装步骤](#1. 在线安装步骤)
- [2. 离线安装(虚拟机断网)](#2. 离线安装(虚拟机断网))
- [3. 回滚](#3. 回滚)
- 三、Ubuntu:两条升级路线
-
- [路线 A:官方 HWE 内核(生产推荐)](#路线 A:官方 HWE 内核(生产推荐))
- [路线 B:mainline 主线内核(尝鲜 / 测试)](#路线 B:mainline 主线内核(尝鲜 / 测试))
- 回滚
- [四、CentOS vs Ubuntu 差异对照](#四、CentOS vs Ubuntu 差异对照)
- 五、风险提醒(虚拟机同样会踩)
Linux 内核升级
涵盖:CentOS 7 与 Ubuntu 的内核升级路径、ELRepo / HWE / mainline 三种内核来源、GRUB 默认内核切换与回滚、虚拟机升级风险。
一、核心结论
| 疑问 | 结论 |
|---|---|
| CentOS 内核包必须拖进虚拟机吗? | 不必。虚拟机可联网就直接在线装;只有断网时才下载 rpm 再上传(rz / sftp / 共享文件夹) |
| Ubuntu 能照搬 CentOS 的流程吗? | 不能 。deb + apt/dpkg 与 rpm + yum/dnf 是两套完全独立的体系 |
| Ubuntu 必须升级内核吗? | 不必 。LTS 的 HWE 内核由官方维护,apt upgrade 即可;要 BBR 或新硬件支持才考虑 mainline |
💡 两条原则:能在线就不离线;生产用 LT / HWE,不追新。
二、CentOS 7:ELRepo 在线升级(推荐)
ELRepo 是正规第三方源,不是个人魔改版,生产可用。
1. 在线安装步骤
bash
# 1. 查看当前系统与内核版本
cat /etc/redhat-release
uname -r
# 2. 导入 ELRepo 密钥并安装源
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
# 3. 查看可用内核(lt = 长期稳定,ml = 主线新版)
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
# 4. 安装:生产选 lt,尝鲜选 ml(二选一)
yum --enablerepo=elrepo-kernel install kernel-lt -y
# yum --enablerepo=elrepo-kernel install kernel-ml -y
# 5. 查看 GRUB 启动菜单列表
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/grub2/grub.cfg
# 6. 将序号 0(新内核)设为默认启动项
grub2-set-default 0
# 重新生成 GRUB 配置(保险操作)
grub2-mkconfig -o /boot/grub2/grub.cfg
# 7. 重启
reboot
# 8. 重启后验证
uname -r
grub2-editenv list # 应显示 saved_entry=0
⚠️ 新内核安装后默认排在菜单第 0 位,所以
grub2-set-default 0就是选中它;若顺序不同,先按第 5 步输出的序号再设置。
2. 离线安装(虚拟机断网)
-
Windows 浏览器打开 ELRepo 归档,下载同一版本 的一组 rpm:
kernel-lt、kernel-lt-core、kernel-lt-modules、kernel-lt-modules-extra、kernel-lt-devel、kernel-lt-headers(用ml系列则替换前缀)。 -
通过 rz / sftp / 共享文件夹上传到虚拟机同一目录。
-
进入该目录执行本地安装:
bashyum localinstall ./*.rpm -y -
后续 GRUB 设置、重启、验证与在线流程完全一致。
3. 回滚
bash
# 重启时在 GRUB 菜单选择旧内核(3.10.x)进入系统
rpm -qa | grep kernel-lt # 查看已安装的新内核包
yum remove kernel-lt-<版本号> -y # 删除对应版本
grub2-mkconfig -o /boot/grub2/grub.cfg
新旧内核是并行安装的,旧内核始终保留,删掉新包不会影响系统启动。
⚠️ CentOS 7 已于 2024-06-30 停止维护,新环境建议直接用 Rocky / AlmaLinux 9,流程基本一致(yum→dnf)。
三、Ubuntu:两条升级路线
以 Ubuntu 22.04 LTS 为例,20.04 / 24.04 逻辑一致,替换版本号即可。
路线 A:官方 HWE 内核(生产推荐)
HWE(Hardware Enablement)是 LTS 版本内的官方新硬件支持内核,带安全更新,最稳。
bash
# 更新源索引
sudo apt update
# 安装 HWE 内核
sudo apt install linux-generic-hwe-22.04 -y
sudo reboot
uname -r
💡 24.04 换成
linux-generic-hwe-24.04,20.04 换成linux-generic-hwe-20.04。
路线 B:mainline 主线内核(尝鲜 / 测试)
无官方维护,适合要更高版本号、BBR 或新硬件驱动的测试环境。包是 .deb,与 CentOS 的 rpm 完全不同。
下载页:https://kernel.ubuntu.com/mainline/
需要同一版本的 4 个包:
| 包名 | 作用 |
|---|---|
linux-headers-xxx_all.deb |
内核头文件(公共部分) |
linux-headers-xxx-generic.deb |
内核头文件(generic 架构) |
linux-image-unsigned-xxx-generic.deb |
内核镜像 |
linux-modules-xxx-generic.deb |
内核模块 |
bash
# 1. 虚拟机内 wget 下载,或 Windows 下载后上传
# 2. 进入 deb 所在目录安装
sudo dpkg -i linux-*.deb
# 3. 若提示依赖缺失,修复依赖
sudo apt -f install
# 4. 重启(GRUB 自动识别新内核,无需手动设置默认)
sudo reboot
uname -r
Ubuntu 的 GRUB 默认最新安装的内核优先启动,一般不用改 GRUB 配置。
回滚
重启时调出 GRUB 菜单,选择旧内核进入即可:
- 传统 BIOS:开机长按
Shift - UEFI 模式:开机连按
Esc
确认新内核确实有问题,再清理对应版本:
bash
dpkg -l | grep linux-image # 列出已安装内核
sudo apt purge linux-image-<版本>-generic linux-headers-<版本>-*
sudo update-grub
⚠️ 不要用
apt autoremove一把清空,容易把用于回退的旧内核一起删掉。
四、CentOS vs Ubuntu 差异对照
| 项目 | CentOS / RHEL 系 | Ubuntu / Debian 系 |
|---|---|---|
| 包格式 | .rpm |
.deb |
| 包管理器 | yum(7)/ dnf(8+) |
apt / dpkg |
| 内核来源 | ELRepo(kernel-lt / kernel-ml) |
官方 HWE / mainline |
| 生产首选 | kernel-lt |
linux-generic-hwe-* |
| 默认内核切换 | grub2-set-default + grub2-mkconfig |
自动优先新内核,grub-reboot 可临时指定 |
| 查看已装内核 | `rpm -qa | grep kernel` |
| 回滚 | GRUB 选旧内核 → yum remove |
GRUB 选旧内核 → apt purge |
五、风险提醒(虚拟机同样会踩)
| 风险点 | 说明与对策 |
|---|---|
| 虚拟机工具失效 | 升级后 VMware Tools / open-vm-tools 可能不工作,需重装或重建模块;内核越新兼容性越差 |
| 盲目追新 | 优先 LT / HWE,不要上 rc 候选版;kernel-ml 只用于测试 |
| 覆盖式升级 | 新旧内核必须并行安装,保证 GRUB 里能切回去,这是底线 |
| 容器限制 | OpenVZ 等共享内核容器不能换内核,仅 KVM / VMware 虚拟机与物理机可以 |
| 没有回退点 | 升级前给虚拟机打快照,比任何回滚命令都可靠 |