Ubuntu /boot分区满时需先用uname -r确认当前内核,再用dpkg --list | grep linux-image-列出所有内核,保留最新两个,其余用apt autoremove或手动purge清理,并执行update-initramfs -u -k all更新initrd。

Ubuntu系统长期运行后,/boot分区容易被旧内核文件占满,导致无法更新系统或安装新内核,必须手动清理冗余内核以释放空间。
确认当前运行的内核版本
打开终端,执行:uname -r → 查看输出结果,例如显示 6.8.0-45-generic,这就是你正在使用的、【绝对不能删除】的内核版本。
这一步必须做,跳过会导致误删当前内核,系统下次无法启动。
列出所有已安装的内核
执行:dpkg --list | grep linux-image- | awk '{print $2}' | sort -V → 输出类似:
linux-image-6.5.0-25-genericlinux-image-6.5.0-27-genericlinux-image-6.8.0-45-genericlinux-image-6.8.0-48-generic
注意:排序按版本号自然顺序(不是字母顺序),确保最新两个在底部;【保留最新的两个内核,其余全部视为可卸载对象】。
批量卸载旧内核(推荐方法)
方法一:用 apt autoremove 自动清理(最安全)
执行:sudo apt autoremove --purge → 系统会自动识别并提议删除所有未被依赖的 linux-image-* 和 linux-headers-* 包,包括旧内核及对应头文件。
执行前会列出将被删除的包名,务必核对其中不含 linux-image-$(uname -r) 或最新一个内核;如有,按 Ctrl+C 中断并改用方法二。
方法二:手动指定删除(精确控制)
假设当前内核是 6.8.0-45-generic,最新安装的是 6.8.0-48-generic,需清理 6.5.0-25 和 6.5.0-27:
第一步:卸载镜像与头文件 → 执行:sudo apt purge linux-image-6.5.0-25-generic linux-headers-6.5.0-25 linux-headers-6.5.0-25-generic linux-modules-6.5.0-25-generic
第二步:同理清理 6.5.0-27 → 把上面命令中的版本号替换成 6.5.0-27 再执行一次。
第三步:清理残留配置和 initrd → 执行:sudo update-initramfs -u -k all → 强制重建所有现存内核的 initrd 镜像,并移除旧内核残留的 /boot/initrd.img-* 和 /boot/vmlinuz-* 文件。
验证 /boot 分区剩余空间
执行:df -h /boot → 查看 Available 列数值是否明显增大(通常从几十MB升至300MB以上)。
若仍不足 200MB,说明还有旧 linux-modules-* 或 linux-firmware 包残留,可追加执行:sudo apt purge $(dpkg -l | grep 'linux-modules-.*-generic' | grep '^ii' | awk '{print $2}' | grep -v "$(uname -r)" | head -n -2) → 该命令保留最近两个模块包,其余全部清除。


















