更新装不上?多半是旧内核塞满了 /boot

用 Linux Mint 用了大半年,某天更新突然装不下去,终端报错说磁盘空间不足。硬盘明明还剩几百 GB,问题出在一个容易被忽略的地方:/boot 分区。

内核每隔一段时间就会推送新版本,装上新的之后,旧的默认不会被删掉,就这么一层层堆在 /boot 里。而这个分区通常只划了几百 MB,攒上七八个版本就见底了,接着就是更新失败、开机菜单里排出一长串启动项。Linux Mint 团队在 7 月月报中给出了官方解法,眼下手动清理的路子也一样有效。

一、先弄清楚哪些能删

  1. 终端执行 df -h /boot,看这个分区用掉了多少。
  2. 执行 uname -r,记下当前正在运行的内核版本号,这个绝对不能删。
  3. 执行 dpkg -l | grep linux-image,列出机器上实际装了哪些内核包。

二、用更新管理器图形化清理

  1. 从开始菜单搜索「更新管理器」,或点任务栏上的盾牌图标打开。
  2. 顶部菜单选查看 → Linux 内核,会要求输入密码。
  3. 左侧一列是内核系列编号(例如 6.8),逐个点开;中间一列标着 Installed 的才是本机真装了的,标 Active 的是当前运行的那个,界面不会让删它。
  4. 选中不再需要的版本,点 Remove
  5. 建议留下「当前内核 + 上一个能正常启动的内核」两个,别一次清光。
  6. 删完再跑一次 df -h /boot 核对腾出了多少空间。

三、命令行一条命令解决

  1. 执行 sudo apt autoremove --purge,它会连带清掉不再被依赖的旧内核镜像、头文件和模块。
  2. 回车前把待删清单看一遍,如果里面出现了 uname -r 显示的版本,输 n 取消再排查。
  3. --purge 会把配置文件一起删干净,不留残余。

四、新版本改由系统托管

按 Linux Mint 月报的说明,内核管理已经从更新管理器移进了「系统管理」工具,Linux Mint 和 LMDE 都能用。新界面以内核系列为单位:选定要跟踪的系列,再设定保留几个旧内核,系统每周自动清理一次,急着腾空间也可以手动立即触发。点 History 按钮能查到什么时候删过哪些内核。

没被跟踪的系列,其下所有已装内核会在下次清理时被移除——除非用「View all kernels」把某个内核单独标记为 protected,被保护的内核不会再被清理动到。如果装的是自定义系列的内核,工具不知道该怎么给它推更新,会提示需要自行负责。

注意事项

刚装完新内核先重启验证一遍,确认能正常进系统再动手删旧的。用了 NVIDIA 闭源驱动、VirtualBox 或开了安全启动的机器对内核变动更敏感,一旦新内核起不来,回退到旧内核往往是唯一的救命稻草,务必留一个确认可用的版本。

来源:XDA Developers