从 20.04 升级到 22.04 需要非常高的 /boot 空间,从而阻碍升级

从 20.04 升级到 22.04 需要非常高的 /boot 空间,从而阻碍升级

尝试升级到 22.04 时出现以下错误

升级已中止。升级需要磁盘“/boot”上总共 616 M 的可用空间。请在“/boot”上至少释放 144 M 的额外磁盘空间。您可以使用“sudo apt autoremove”删除旧内核,也可以在 /etc/initramfs-tools/initramfs.conf 中设置 COMPRESS=xz 以减小 initramfs 的大小。

我已经完成了所有常见的操作,删除了旧内核等等,但是这些空间几乎占据了 Ubuntu 默认启动驱动器的所有空间,所以无论释放多少空间都无法让这些操作通过。

大小要求的大幅增加让我相信这是某种形式的错误。除了解密和重新调整分区大小外,我还能尝试什么吗?

答案1

这是一个已知问题这是由于对 initramfs 使用不同的压缩方法造成的。新的默认压缩方法在启动时解压/读取速度更快,但创建时lz4需要大量空间。这意味着分区较小的人将没有足够的空间来生成 initramfs。/boot/boot

解决方法是将压缩算法更改为xz建议的算法(或其他占用更少空间的算法)。

为此,请按照错误消息中所述编辑/etc/initramfs-tools/initramfs.conf并设置COMPRESS=xz。之后,您应该能够升级。

答案2

我最终能够通过 Esther 在此处链接的错误报告中的压缩提示来解决这个问题。

错误指出必须将 initramfs.conf 更改为 COMPRESS=xz。但是,仅仅更改配置不会产生任何效果。之后需要使用以下命令重建映像:

sudo update-initramfs -u -k all

但是,更改为 COMPRESS=xz 的效果很小,不足以允许在默认大小的启动分区上进行安装。设置 COMPRESS=lzma 并重建映像确实允许安装继续。

还值得注意的是,错误消息提示运行命令“sudo apt autoremove”,但这同样不会自行释放启动空间。通常必须删除多余的内核就像这样

答案3

另一种选择是,如果将 /boot 放在根分区上不可行:您可以(暂时或永久地)将其放在 USB 记忆棒上。

  • 将所有文件复制到棒上(确保保留权限,例如,通过使用rsync -a
  • 卸载该棒,将其挂载在 /boot
  • 重新安装 grub (update-grubgrub-install
  • 从 USB 启动

在真正进行操作之前,最好先使用旧的 /boot 进行第一次测试。

答案4

对于那些想知道 Ubuntu 22.04 /boot 分区大小应该是多少的人来说,我将我的设置为 1G,在全新安装中目前使用了 127M。

22.04 安装程序似乎想将整个磁盘的一定比例用于 /boot。在 12G 上,它试图使用 1.75G,这似乎太多了。

希望 1G 足够了,虽然它还没有进行内核更新,但apt update确实做了这个:

处理 initramfs-tools (0.140ubuntu13) 的触发器...
update-initramfs:生成 /boot/initrd.img-5.15.0-53-generic

相关内容