我帮助运行一台运行(或:曾经运行,现在正在从快照恢复到……)Ubuntu 18.04 的服务器。它高兴地告诉我应该升级do-release-upgrade
到 20.04.1 LTS但在我这样做之后,AWS EC2 实例启动失败:
xc: error: panic: xc_dom_bzimageloader.c:739: xc_dom_probe_bzimage_kernel: unknown compression format: Invalid kernel
xc: error: panic: xc_dom_core.c:621: xc_dom_find_loader: no loader found: Invalid kernel
xc_dom_parse_image returned -1
close(3)
Error 9: Unknown boot failure
因此,我再次因在 EC2 上使用 Ubuntu 而受挫,但如果 18.04 的支持持续到 2023 年 4 月,那么我想只要我坚持使用该版本,我就可以避免在一段时间内重建这个盒子!(顺便说一句,这非常令人沮丧,因为据我所知,我可以轻松启动一个与 AWS 兼容的全新 Ubuntu 20 盒子,但显然不支持升级现有实例??)
我现在的问题是:dist-upgrade
18.04 是否会在任何情况下尝试将我再次切换到 20.x?还是只有我运行时才会这样做do-release-upgrade
?(我发现了十年前的矛盾和/或答案,并希望避免这种麻烦/尴尬,同时仍使我的系统在这种情况下尽可能保持最新状态……!)
答案1
18.04 的 dist-upgrade 在任何情况下都会尝试将我再次切换到 20.x 吗?还是只有运行 do-release-upgrade 才会这样做?
只有您告诉它这样做。
(我发现了相互矛盾的和/或十年前的答案,并想避免这种麻烦/尴尬,同时仍然保持我的系统在这种情况下尽可能保持最新……!)
仅使用适用于 Ubuntu LTS 版本时间范围的问题和答案。这适用于任何版本的 Ubuntu,而不仅仅是一个实例。
但就实例而言……
实例没有 grub 救援。也不允许从实时会话启动。如果实例无法启动,则表示已死机且无法修复。避免对实例执行任何需要重新启动的操作(您可以避免)。升级是要避免的操作列表中的第一位。如果需要执行此操作,请创建一个新实例。
实例上应该有两个分区:一个系统分区和一个个人分区。系统分区应该设置为可以刻录:所有需要更改的文件都需要以您喜欢的方式放在分区上。Web 服务器文件、数据库、日志等都需要放在个人分区上。使用符号链接执行此操作是最简单的方法。
升级到新版本意味着在控制台上创建新的系统磁盘并将旧系统磁盘移至备份。然后将您的个人磁盘附加到此新系统磁盘。并从您的个人分区执行脚本以重新创建整个设置。
答案2
apt dist-upgrade
由于这个问题今天才困扰我,所以对于遇到此问题的任何人来说,都可以do-release-upgrade
从 18.04 升级到 20.04;但是,如果您使用的是半虚拟化系统,请帮自己一个忙,先将其“转换”到 HVM,以免给自己带来一些麻烦。(我将“转换”放在引号中,因为您最终会启动一个新的 EC2 实例,因此我会确保您首先拥有所有内容的快照,并且在您完全确定不再需要旧 EC2 实例之前不要将其关闭,因为我认为不可能再启动新的半虚拟化实例。从旧半虚拟化驱动器的根驱动器创建新的 HVM 实例的范围需要比我目前能够投入的更多的精力来详细说明,但我已经看到了有关如何执行此操作的文章;谷歌是您的朋友。)
答案3
以防万一它对任何人有帮助:我今天遇到了这个问题,do-release-upgrade
从 Ubuntu 18.04 LTS 开始,EC2t3.micro
实例就完全黑了。强制重启:什么都没有。甚至系统日志也不可用。在升级过程中,它确实询问了将 GRUB 安装到哪个驱动器(它只有一个驱动器)的问题——我觉得这很奇怪。
我从开始之前创建的备份映像中恢复了实例,并将实例类型更改为t3.medium
。重新运行do-release-upgrade
,这次它顺利运行。没有询问 GRUB 的事情,这是一个很大的区别。我不确定发生了什么以及为什么,但也许这对某些人有帮助。也许发布更新需要更多内存?只是猜测。两个实例的虚拟化都是HVM
。