必须先用uname -r确认当前运行的内核版本(如6.8.0-52-generic),该版本绝不可删;再用grubby --default-kernel核对grub默认启动项是否一致,防止误判。

怎么确认当前正在运行的内核
必须先查清这个,否则删错会导致系统无法启动。uname -r 输出的就是当前运行的内核版本号,比如 6.8.0-52-generic。这个版本绝对不能删。还可以用 grubby --default-kernel 看 GRUB 默认启动项是否一致,避免系统实际在跑旧内核但你误以为它已下线。
Debian/Ubuntu 系统如何列出所有已安装内核
内核以 linux-image-* 包形式存在,dpkg --list | grep 'linux-image-' | grep '^ii' 能筛出真正安装成功的镜像包。注意别漏掉 linux-image-extra-*(某些老版本)或 linux-image-unsigned-*(启用了 Secure Boot 的情况)。/boot 目录下的 vmlinuz-* 文件名应与包名版本严格对应,可交叉验证:
ls /boot/vmlinuz-*
常见错误:只看 dpkg --list 但没检查 /boot,结果发现某个 linux-image-* 包虽已卸载,残留的 vmlinuz 和 initrd.img 还占着空间。
RHEL/CentOS/Fedora 系统怎么查和删旧内核
rpm -q kernel 列出所有已安装的 kernel 包,输出类似 kernel-4.19.90-52.40.v2207.ky10.x86_64。当前运行的版本可用 uname -r 对比确认。删除时不能直接 rpm -e,因为 kernel 是 installonly 类型包,得用 dnf 或 yum 的专用参数:
-
dnf remove --oldinstallonly --setopt installonly_limit=2 kernel—— 自动保留最新 2 个,删其余 -
yum remove kernel-4.19.90-52.19.v2207.ky10.x86_64—— 手动指定版本,更可控
删完必须执行 grub2-mkconfig -o /boot/grub2/grub.cfg,否则旧内核仍会出现在启动菜单里。不更新 GRUB 配置是运维最常忽略的一步。
删完还要清理哪些残留文件
仅删 linux-image-* 不等于释放全部空间。/boot 下的 initrd.img-*、System.map-*、config-* 通常随包自动清除,但 linux-headers-* 和 /usr/src/linux-headers-* 往往残留。建议连带清理:
sudo apt purge $(dpkg --list | grep 'linux-headers-' | awk '{print $2}' | grep -v "$(uname -r)")
另外,/lib/modules/ 下对应版本的模块目录(如 /lib/modules/6.5.0-44-generic/)也得手动 rm -rf,否则 apt autoremove 不会碰它。这些路径不匹配当前 uname -r 的模块,属于纯粹冗余。











