清理旧内核是释放/boot分区空间最有效方法:先用uname -r和dpkg --list查看当前及已安装内核,再执行sudo apt autoremove --purge安全卸载冗余内核,最后运行sudo update-grub更新引导配置。

清理旧内核是释放 /boot 分区空间最常见也最关键的一步。Ubuntu/Debian 系统每次内核更新都会安装新版本,但默认不删除旧版,久而久之会填满有限的 /boot(常为 500MB–1GB),导致无法升级、启动失败或 GRUB 菜单冗长。
确认当前运行和已安装的内核
先搞清哪些能删、哪些必须留:
- 查看正在使用的内核:uname -r(例如输出 6.8.0-45-generic)
- 列出所有已安装的内核包:dpkg --list | grep 'linux-image-[0-9]'
- 同时查头文件和模块(避免残留):dpkg --list | grep -E 'linux-(headers|image|modules)-[0-9]'
安全删除旧内核(推荐自动方式)
只保留当前运行的内核 + 最新一个备用内核,其余全部清理:
- 执行自动清理(保留至少 1 个旧版作为回退):sudo apt autoremove --purge
- 若想更激进(比如只留当前一个):先用 dpkg --list | grep 'linux-image' | awk '{print $2}' | tail -n +3 查出待删列表,再执行 sudo apt purge [包名...]
- 清理后务必更新引导配置:sudo update-grub
手动检查并清除残留文件
有时包卸载不彻底,/boot 目录里仍留有 vmlinuz、initrd.img、system.map 等文件:
- 进入目录查看:ls /boot | grep -E '(vmlinuz|initrd|system.map|config)-[0-9]'
- 对比输出与 dpkg --list 结果,对未被包管理器记录的旧版本文件,可手动删除:sudo rm /boot/vmlinuz-5.15.0-107-generic 等
- 删完立即运行 sudo update-grub,确保 GRUB 菜单同步更新
预防未来堆积
避免重复劳动,可设置定期清理习惯:
- 系统升级后顺手执行:sudo apt autoremove --purge && sudo update-grub
- 把 apt 配置为自动清理旧内核(需编辑 /etc/apt/apt.conf.d/50unattended-upgrades,添加 Unattended-Upgrade::Remove-Unused-Dependencies "true";)
- 用 ncdu /boot 定期检查,一眼识别异常增长











