Linux内核切换本质是GRUB引导层选择,需确保“装得上、找得到、设得对、启得稳”:查版本(uname -r/dpkg/rpm/ls)、装卸内核(apt/yum)、设默认(GRUB_DEFAULT+update-grub)、验启动并回退。

Linux内核版本切换本质是引导层的选择问题,不是运行时动态替换。系统启动时由GRUB加载指定内核镜像,因此切换关键在“装得上、找得到、设得对、启得稳”四个环节。
查看已安装和正在使用的内核
先确认现状,避免误操作:
- 查当前运行版本:
uname -r - 查已安装的内核包(Debian/Ubuntu):
dpkg -l | grep 'linux-image-.*-generic' - 查已安装的内核包(CentOS/RHEL):
rpm -qa | grep kernel - 查/boot中实际存在的内核文件:
ls /boot/vmlinuz-*和ls /boot/initrd.img-* - 快速定位GRUB菜单条目顺序:
grep 'menuentry' /boot/grub/grub.cfg | cat -n(行号从0开始计)
安装或卸载指定内核版本
不同发行版使用不同包管理器,但目标一致:让目标内核的vmlinuz、initrd.img及modules完整落盘。
- Ubuntu/Debian:
sudo apt install linux-image-5.15.0-73-generic linux-headers-5.15.0-73-generic - CentOS 7:
sudo yum install kernel-3.10.0-1160.80.1.el7.x86_64(注意匹配arch) - 启用ELRepo获取新版(如LTS或主线):
sudo yum --enablerepo=elrepo-kernel install kernel-lt - 卸载旧内核(谨慎!确保不删正在用的):
sudo apt autoremove --purge linux-image-5.10.*或sudo yum remove kernel-3.10.0-957.*
设置默认启动内核
修改GRUB配置后必须更新配置文件,否则重启仍走旧路径。
- 编辑主配置:
sudo nano /etc/default/grub - 修改
GRUB_DEFAULT值(两种安全写法):- 按序号(推荐):
GRUB_DEFAULT=2(表示第3个menuentry,从0开始) - 按完整菜单名(更精确):
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.15.0-73-generic"
- 按序号(推荐):
- 保存后立即生效:
sudo update-grub(Ubuntu/Debian)或sudo grub2-mkconfig -o /boot/grub2/grub.cfg(CentOS/RHEL)
验证与故障应对
重启不是终点,验证才是闭环的关键。
- 重启后立刻执行:
uname -r确认版本;lsmod | head -5检查模块加载是否正常 - 若新内核无法启动,开机时按住
Shift(BIOS)或Esc(UEFI)调出GRUB菜单,手动选旧版本进入 - 常见卡点:/boot分区满(清理旧
vmlinuz/initrd和system.map)、DKMS模块未重建(运行sudo dkms autoinstall)、显卡/NVIDIA驱动不兼容(需重装对应内核版本的驱动) - 长期建议:保留至少两个稳定内核(当前+一个回退位),并定期用
apt autoremove或dnf autoremove清理冗余包










