uname -r是查看当前运行内核版本最准、最轻量、最通用的方式,输出如6.8.0-55-generic的精简release字符串,无冗余信息,适用于脚本解析与路径拼接。

确认当前运行的内核版本,别删错
第一步不是删,是看清楚自己正在用哪个内核。执行 uname -r,输出类似 6.8.0-31-generic 的结果——这个绝对不能动。误删会导致系统无法启动,且恢复难度远高于预防。
常见错误现象:删完重启卡在 GRUB 菜单、黑屏、kernel panic。根本原因就是删了 uname -r 返回的那个版本。
-
dpkg --list | grep 'linux-image-.*-generic'查所有已装镜像包 -
dpkg --list | grep 'linux-headers-.*-generic'查对应头文件包 - 注意过滤状态为
ii(installed)的条目,rc是已卸载残留,不用管
成套 purge 旧内核组件,别只删 image
只执行 sudo apt purge linux-image-5.15.0-67-generic 是不够的。/boot 分区里 vmlinuz-* 和 initrd.img-* 文件不会被清掉,因为 linux-modules-* 和 linux-headers-* 还在占着空间和依赖链。
必须一次性 purge 完整组件组合:
- 标准组合:
sudo apt purge linux-image-5.15.0-67-generic linux-headers-5.15.0-67 linux-modules-5.15.0-67-generic - 若存在
linux-image-unsigned-*(较新内核常见),也得加进去,否则 /boot 里文件还在 - 不用单独处理
linux-image-extra-*,它随linux-image-*自动标记为 auto-remove - 别用
remove,必须用purge,否则配置文件和 initramfs 残留
跑 autoremove 清理隐形依赖包
apt purge 后,系统会提示类似 “The following packages were automatically installed and are no longer required: linux-headers-5.15.0-67-generic” —— 这些子包不会出现在 dpkg --list 主列表里,但实际占着 100–300 MB 空间。
执行 sudo apt autoremove --purge 才能真正扫掉它们。这步不是可选,尤其在多次升级后,不跑会持续浪费空间。
- 它只清理标记为 auto-installed 且无任何依赖的包,不会碰你手动装的软件
- 不会动当前内核或上一个内核(哪怕没显式安装),安全边界清晰
- 如果提示 “0 to remove”,说明前面 purge 已足够干净,但建议仍执行一次确认
手动验证 /boot 和 GRUB 是否真清空
命令跑完 ≠ 搞定。/boot 分区通常只有 500MB–1GB,残留一个旧 vmlinuz-* 就可能让下次 apt upgrade 失败。
必须人工检查:
-
ls -lh /boot/:确认vmlinuz-*、initrd.img-*、System.map-*、config-*都只对应你保留的内核版本(比如只留6.8.0-31和6.8.0-29) -
sudo update-grub:别依赖 purge 时自动触发的更新,手动再跑一次更可靠 - 重启进 GRUB 高级选项,确认已删的内核不再出现——这是最终验证
最容易被忽略的是 /boot 下残留的 abi-* 和 memtest86+ 相关文件,它们不随 purge 删除,但极少影响启动;真正危险的是多出来的 vmlinuz 和 initrd.img。











