应卸载旧内核RPM包并重建GRUB配置:先用uname -r和rpm -q kernel确认当前及待删内核,再yum remove指定旧内核或package-cleanup --oldkernels --keep=2,最后执行grub2-mkconfig更新配置。

CentOS系统更新后,旧内核不会自动卸载,导致GRUB启动菜单中出现多个内核选项。禁用(准确说是彻底删除)多余内核启动项,关键在于卸载旧内核RPM包并重建GRUB配置,而不是简单“禁用”——因为每个内核对应一个独立的启动条目,不删包就无法从菜单中移除。
确认当前和待删的内核版本
先查看正在运行的内核:
uname -r
再列出所有已安装的内核包:
rpm -q kernel
注意:不要删除当前正在使用的内核(uname -r输出的那个),也不要删除 kernel-devel 或 kernel-headers 等配套包(除非你确定不需要编译模块)。
安全删除旧内核RPM包
推荐使用 yum remove 卸载,它会自动清理 /boot 下对应的 vmlinuz、initramfs、config、System.map 等文件:
- 逐个卸载指定旧内核(例如):
yum remove kernel-3.10.0-1160.45.1.el7.x86_64 - 或一键清理所有旧内核,只保留最新的两个(含当前使用中的):
package-cleanup --oldkernels --keep=2
执行后,/boot 目录下残留的旧内核相关文件通常已被清除。如仍有手动拷贝的内核(非RPM安装),需进入 /boot 手动删除对应 vmlinuz-*、initramfs-*.img 等文件,但务必核对版本号避免误删。
更新GRUB配置并设默认启动项
删除完成后必须重新生成GRUB配置文件,否则旧菜单仍可能残留:
- UEFI系统(CentOS 7常见):
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg - 传统BIOS系统:
grub2-mkconfig -o /boot/grub2/grub.cfg
还可指定下次或永久默认启动的内核(可选):
- 查看当前所有菜单项及编号:
awk -F\' '$1=="menuentry " {print i++" : "$2}' /boot/grub2/grub.cfg - 设为默认(永久生效):
grub2-set-default 'CentOS Linux (5.10.0-1.el7.elrepo.x86_64) 7 (Core)' - 或按编号设置(更稳定):
grub2-set-default 0
验证与重启
检查是否生效:
- 确认默认项:
grub2-editenv list - 重启前可临时在GRUB界面按
e编辑启动参数,确认目标内核路径正确 - 重启后再次运行
uname -r,确保启动的是预期版本
重启后进入系统,再运行 ls /boot/vmlinuz* 和 rpm -q kernel,应仅剩当前使用及保留的内核。


















