![从 20.04 升级到 22.04 需要非常高的 /boot 空间,从而阻碍升级](https://linux22.com/image/1027907/%E4%BB%8E%2020.04%20%E5%8D%87%E7%BA%A7%E5%88%B0%2022.04%20%E9%9C%80%E8%A6%81%E9%9D%9E%E5%B8%B8%E9%AB%98%E7%9A%84%20%2Fboot%20%E7%A9%BA%E9%97%B4%EF%BC%8C%E4%BB%8E%E8%80%8C%E9%98%BB%E7%A2%8D%E5%8D%87%E7%BA%A7.png)
尝试升级到 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-grub
和grub-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