Ubuntu 升级过程中 /boot 目录空间不足的问题解决
内容
本文记录了Ubuntu 升级过程中 /boot 目录空间不足的问题解决过程.
背景
当我从 Ubuntu 18.04 升级到 20.04 时, 报错如下:
1 | The upgrade has aborted. |
1 | cx@cxHD:/boot $ sudo dpkg --get-selections |grep linux-image |
用 df -h
检查一下发现剩余空间不多了(以后/boot 目录要多分配一些空间, 或者是直接挂载在根目录下):
1 | /dev/nvme0n1p6 269M 180M 72M 72% /boot |
解决办法
按照报错提示
先删除 /boot 下的旧内核, 如果空间仍旧不足, 采用压缩率更高的 xz
压缩软件.
查看已经安装的内核版本
1 | cd /boot |
输出为
1 | linux-image-5.4.0-100-generic deinstall |
可以分为 2 类, install
: 已经安装, deinstall
:没有安装此内核, 但是在配置文件中还残留它的信息, 也有可能是以前卸载的时候不彻底.
查询当前内核版本:
1 | uname -a |
输出为:
1 | Linux cxHD 5.4.0-110-generic #124~18.04.1-Ubuntu SMP Fri Apr 22 12:01:21 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux |
可以看出当前内核为 5.4.0-110-generic
, 需要分别把 install
以及 deinstall
类别的旧内核卸载.
1 | sudo apt purge linux-image-5.4.0-107-generic # 卸载 install 类旧内核 |
但是卸载 install 类旧内核后会生成 unsigned
类的文件, 也同样卸载之:
1 | sudo apt purge linux-image-unsigned-5.4.0-107-generic |
可以看到 /boot 下剩余空间提升了一些
1 | /dev/nvme0n1p6 269M 180M 72M 72% /boot #before |
但是距离要求的 158MB 还有些距离, 因此采取报错提示的第二步:
1 | vim /etc/initramfs-tools/initramfs.conf |
将 COMPRESS=gzib
字段改为 COMPRESS=xz
.
xz
的压缩率普遍比 gzib
高出 30%.
最后再尝试一下升级, sudo do-release-upgrade -m desktop
成功升级.
扩充 /boot 的空间
最简单的办法是直接扩容, 例如使用 Gparted 工具有 resize 选项:
但是前提是要扩容的分区后面有空间. 不幸的是, 我没有考虑这些.
也就是说如果你对一个分区觉得以后有可能会扩容, 最方便的做法是把他分在空白备份空间的最前面.
最简单的方法不支持, 还有别的办法.
思路1
例如下面的链接经验是通过 USB Ubuntu 系统将 /boot 后面的 swap 分区分出来一部分给 /boot 达到扩容的目的.
https://www.cnblogs.com/ldylan/p/14238205.html
更详细的做法: https://www.jianshu.com/p/e4dcb744b3a1
思路2
首先在富裕的目录下挂载一个目录, 将其设置为 /boot, 然后把之前 /boot 里面的内容拷贝进去.
实践教程:https://blog.csdn.net/TengYun_zhang/article/details/121858598
由于本次仅用报错提示的做法已经完成了扩容, 后面的 2 种思路没有进行验证, 望知晓.
Ubuntu 升级过程中 /boot 目录空间不足的问题解决