升级Linux内核
约 855 字
需要升级内核的典型场景:修复内核安全漏洞、解决特定版本的稳定性问题(崩溃、内存泄漏、卡顿)、依赖新内核特性。普通补丁更新会顺带装上新内核(见系统补丁更新),本文说的是主动升级与启动项管理。
高风险操作,先备份
内核升级可能引入驱动或兼容性问题,最坏情况是重启后进不了系统。操作前务必确认:有可用的回退手段(保留旧内核启动项,见下文),重要数据已备份(见备份与容灾策略)。
查看当前内核
uname -r # 当前运行版本,如 5.15.0-91-generic
rpm -qa kernel # RHEL 系已安装的内核
dpkg -l | grep linux-image # Debian/Ubuntu 已安装的内核Debian / Ubuntu
sudo apt update
sudo apt install linux-image-generic -y # 安装最新通用内核
# Ubuntu 若用到额外驱动模块(ZFS、外置网卡等),一并安装:
sudo apt install linux-modules-extra-$(uname -r) -y
sudo update-grub
sudo reboot重启后 uname -r 显示新版本即成功。Ubuntu/Debian 默认自动引导已安装的最高版本内核。
CentOS / Rocky Linux / AlmaLinux
sudo dnf install kernel -y # 安装最新内核(不动现有内核)
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
sudo reboot确认默认引导项指向新内核:
sudo grubby --default-kernel # RHEL 8/9、Rocky、Alma启动项与回滚
升级后若新版内核出问题(起不来、驱动异常、性能劣化),不要慌——旧内核还在:
- 重启时在 GRUB 菜单(VNC 控制台可见)选 Advanced options,选旧版本启动;
- 进入旧内核后,把它设为默认,避免下次又引导到坏内核:
# 查看可用内核
sudo grubby --info=ALL | grep -E "index|title" # RHEL 系
# 设定默认(RHEL 系,index 从 grub --info 查得)
sudo grubby --set-default /boot/vmlinuz-5.14.0-xxx.el9.x86_64
# Debian/Ubuntu:GRUB_DEFAULT=0 时自动选最高,改为指定条目
sudo vim /etc/default/grub # 如 GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.15.0-91-generic"
sudo update-grub- 确认问题解决或等新内核修复后再切回。
清理旧内核
保留 1~2 个旧内核作回退用,其余可清掉释放 /boot 空间:
# Debian/Ubuntu:自动清理不再需要的旧内核
sudo apt autoremove --purge -y
# RHEL 系:手动删指定版本(别删正在用的)
sudo dnf remove -y kernel-5.14.0-xxx.el9/boot 满了会升级失败
报错 No space left on device 且发生在安装内核阶段,多半是 /boot 分区被旧内核塞满了,先清理旧内核再升级。
常见问题
装完内核重启后进不了系统:用控制台 VNC 进 GRUB 选旧内核启动(见上文回滚),再排查新内核问题;云环境下也可重装系统或回滚快照兜底。
升级内核后 atop 按 n 看不到网络列:netatop 等内核模块与内核版本绑定,新内核下需重新编译安装,见使用atop监控系统资源。
apt/yum 报 404 或找不到新内核包:系统已 EOL,先换归档源,见管理Linux实例软件源;彻底淘汰的版本(CentOS 7 等)建议直接重装到受支持的发行版。
第三方内核仓库(ELRepo mainline 等):能装到比发行版更新的内核,但绕过了发行版测试,除特定硬件/特性需求外不建议生产环境使用。
