必须先确认当前运行内核(uname -r),再批量卸载非当前内核包及配套headers,执行sudo update-grub同步引导项,最后手动清理/boot中dpkg未记录的孤立文件。

统信UOS系统升级后,/boot分区常因残留多个旧内核镜像而空间告急,导致无法安装新更新、GRUB菜单冗长、甚至系统启动失败;必须通过命令行精准识别并移除非当前运行的旧内核包,同时清理配套headers与initrd文件。
确认当前运行内核版本
打开终端(Ctrl + Alt + T),执行:
uname -r
输出结果如【6.6.35-amd64-desktop】即为当前正在使用的内核,该版本绝对不可卸载;若输出含-edge或-rc字样,说明你正使用测试版内核,后续所有操作都必须以它为保留基准。
列出全部已安装内核包
执行命令查看完整内核列表:
dpkg --list | grep 'linux-image-' | awk '{print $2}'
这一步会输出类似linux-image-6.6.25-amd64-desktop、linux-image-6.6.30-amd64-desktop、linux-image-6.6.35-amd64-desktop这样的包名。注意比对版本号——只保留最高版本(最新安装)和uname -r输出的当前版本,其余均为可清理对象。
批量卸载非当前内核及配套headers
第一步:执行以下命令自动卸载所有非当前内核镜像包:
sudo apt purge $(dpkg -l | awk '/^ii linux-image-[0-9]/ && !/$(uname -r)/ {print $2}') --yes
第二步:同步清除对应版本的头文件包,避免依赖残留干扰后续升级:
sudo apt purge $(dpkg -l | awk '/^ii linux-headers-[0-9]/ && !/$(uname -r)/ {print }') --yes
这两条命令会跳过当前运行内核(由$(uname -r)动态排除),但不会自动保留最新一个备用内核;若你希望多留一个高版本作fallback,需手动干预——例如当前为6.6.35,最新安装为6.6.40,则应在awk条件中额外排除6.6.40,否则它也会被删掉。
刷新GRUB引导配置
执行:
sudo update-grub
该命令重建/boot/grub/grub.cfg,移除所有已卸载内核对应的启动项;重启后按Shift键进入GRUB菜单,将只看到当前内核及其recovery模式选项。
检查/boot残留文件(必要时)
方法一:查看/boot中实际存在的内核文件
ls -l /boot/vmlinuz-* /boot/initrd.img-*
方法二:比对dpkg列表,找出未被包管理器记录却仍存在于/boot的孤立文件,例如vmlinuz-6.6.25-amd64-desktop在dpkg -l中已不存在,但在/boot里仍有对应文件——此时可安全执行:
sudo rm -f /boot/vmlinuz-6.6.25-amd64-desktop /boot/initrd.img-6.6.25-amd64-desktop /boot/System.map-6.6.25-amd64-desktop /boot/config-6.6.25-amd64-desktop
【务必逐个核对版本号,切勿用通配符如rm -f /boot/vmlinuz-*,否则可能误删当前内核导致系统无法启动】











