升级 Linux 内核是提升系统稳定性、安全性和硬件兼容性的常用操作。通常,在线升级内核的核心流程分为升级前准备执行升级升级后验证三步。

📝 通用步骤

大多数发行版的内核升级都遵循这个基本流程。

步骤操作说明
1. 查看当前版本使用 uname -r 命令查看当前运行的内核版本,以便对比升级结果。
2. 升级内核通过包管理器或专用工具安装新内核。此步骤因发行版不同而异,详见下文。
3. 更新引导程序安装新内核后,需要更新引导程序(如 GRUB)使其生效,具体命令参考下文。
4. 重启系统执行 sudo reboot 重启系统,让新内核生效。
5. 验证新内核系统重启后,再次运行 uname -r 命令,确认输出是否已更新为新内核版本。


💻 主流发行版升级方法

Ubuntu / Debian

推荐使用 APT 包管理器进行升级,这是最稳妥的方式。

  1. 更新软件源:sudo apt update
  2. 升级系统所有软件包(会自动升级内核):sudo apt upgrade -y
  3. 仅升级内核:sudo apt install linux-image-generic linux-headers-generic
  4. 更新引导:sudo update-grub
  5. 重启:sudo reboot

CentOS / RHEL / Rocky / AlmaLinux

对于 CentOS 7 这类内核版本较老的系统,推荐通过 ELRepo 第三方仓库安装主线内核。

  1. 导入 ELRepo 公钥并安装仓库:sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
  2. 安装 ELRepo 仓库:sudo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
  3. 安装主线内核:sudo yum --enablerepo=elrepo-kernel install kernel-ml
  4. 设置新内核为默认启动项:sudo grub2-set-default 0
  5. 重启:sudo reboot

Fedora

使用 dnf 包管理器即可轻松更新内核。

  1. 更新所有软件包,包括内核:sudo dnf update --refresh
  2. 仅更新内核:sudo dnf update kernel
  3. 重启:sudo reboot

🔧 高级操作

手动安装特定版本内核

如果想安装官方仓库中没有的特定版本(如主线内核),可以手动下载 .deb.rpm 包进行安装。

  • Ubuntu/Debian:可访问 kernel.ubuntu.com 下载 linux-headers 和 linux-image 等 .deb 包,然后使用 sudo dpkg -i *.deb 安装。
  • CentOS/RHEL:可访问 ELRepo 镜像站下载内核的 .rpm 包,然后使用 yum localinstall 安装。

配置启动项与清理旧内核

  • 配置启动项:如需手动指定启动内核,可编辑 /etc/default/grub 文件,修改 GRUB_DEFAULT 的值,然后运行 sudo update-grub(Debian/Ubuntu)或 sudo grub2-mkconfig -o /boot/grub2/grub.cfg(RHEL/CentOS)使配置生效。
  • 清理旧内核:为释放 /boot 分区空间,可卸载旧内核。Debian/Ubuntu:sudo apt autoremove --purgeRHEL/CentOS:sudo yum remove <旧内核版本>

从源码编译安装(高阶)

对于有深度定制需求或想体验最新特性的开发者,可选择编译安装。

  1. 安装编译依赖:sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev(Debian/Ubuntu) 或 sudo dnf groupinstall "Development Tools"(RHEL/CentOS)。
  2. 下载并解压源码:从 kernel.org 获取并解压源码到 /usr/src/。
  3. 配置编译选项:运行 make menuconfig 进行图形化配置,或使用 cp /boot/config-$(uname -r) .config 沿用当前配置。
  4. 编译并安装:依次运行 make -j$(nproc)、sudo make modules_install、sudo make install。
  5. 更新引导并重启:运行 sudo update-grub,然后重启系统。
编译耗时且难度较高,一般用户通常不需要采用此方式。

💡 不重启的升级:热补丁技术

对于生产服务器,内核更新通常需要重启,这可能影响业务连续性。此时,热补丁(Livepatch) 是一个很好的补充,它允许在不重启系统的情况下,为正在运行的内核应用一些高危安全补丁

  • Ubuntu:提供 Canonical Livepatch 服务,可为 Ubuntu LTS 系统应用内核安全补丁而无需重启。
  • SUSE:提供 Kernel Live Patching (KLP),功能类似。
  • 注意:热补丁仅是一种临时安全措施,它并不能完全替代完整的内核更新。它通常只覆盖了部分关键安全漏洞,进行一次完整的、需要重启的内核升级依然是必要的。

🚨 安全注意事项

  • 数据备份:升级前务必备份重要数据。在云服务器等环境,建议对系统盘创建快照,以便在出现问题时快速回滚。
  • 风险认知:内核升级有风险,可能导致系统不稳定或硬件不兼容。升级前,请仔细阅读相关发行版的官方文档。
  • 生产环境操作:在生产环境进行升级操作前,务必先在测试环境中验证整个升级流程的可行性,以评估潜在风险。
  • 网络稳定性:确保下载内核包时网络稳定,避免因文件损坏导致系统故障。
  • 阅读更新日志:升级前,建议查看新内核的更新日志(Changelog),了解其带来的变化,尤其是可能影响现有功能的调整。

内核升级是一个相对常见的操作,只要按照步骤谨慎进行,通常都能顺利完成。