我正在尝试使用 do-release-upgrade 将 Digital Ocean 的 ubuntu VM 从 20.04.6 升级到 22.04.5。我通过 SSH 连接。
不幸的是,这不是直接的,它要求我在升级之前安装所有可用的更新。
在开始之前,我创建了一个快照,以便在出现任何问题时快速恢复。
按照论坛上的说明操作时,系统建议我运行sudo apt full-upgrade
。运行并重新启动后,机器拒绝连接(这意味着它进入了无法启动的状态)。它甚至无法从 Digital Ocean 控制面板内的控制台进行连接,更不用说通过 SSH 了。
恢复快照后,我尝试按照这篇文章中的说明进行操作。运行后sudo apt-get dist-upgrade
,重新启动后出现了同样的问题。
尝试sudo do-release-upgrade
在不重新启动的情况下运行将会下载并安装升级,但最终机器仍然无法启动。
那么,我这里遗漏了什么?有什么提示吗?
[更新]
我能够通过手动运行sudo apt list --upgradable
并安装所有必需的更新sudo apt-get install
,并在autoremove
必要时应用。现在我的系统已完全升级。但在运行时sudo do-release-upgrade
,在完成漫长的升级过程后,系统变得无法启动。我甚至尝试关闭 droplet 并再次打开它,但没有成功使其联机。我将恢复快照并尝试进一步调查。
经过几个小时的研究,我终于找到了罪魁祸首和解决方案。升级中的问题是 22.04 使用 netplan,但 20.04 droplet 没有任何 netplan 配置文件(至少我的没有)。因此,重新启动后,无法访问机器,因为它的网络配置消失了。
为了解决这个问题,运行
sudo do-release-upgrade
完成后,在要求重新启动时回答 NO。然后通过运行获取您的网络信息:ip a
检索地址ip r
检索路线cat /etc/resolv.conf
获取名称服务器配置。记下这些输出,并通过运行
sudo nano /etc/netplan/config.yaml
和写入以下内容来创建 netplan 配置文件,用之前记下的相应条目替换它们(为了方便起见,我用字母更改了输出的值,以便您可以看到哪个条目应该放在哪里):另外,请注意 yaml 内容缩进应与上面完全匹配,否则会出错。
使用 更改新创建的文件的权限
sudo chmod 600 /etc/netplan/config.yaml
。现在,运行
sudo netplan --debug generate
。如果您收到类似WARNING:root:Cannot call Open vSwitch:ovsdb-server.service is not running. 的消息,您可以通过运行 来解决这个问题sudo apt-get install openvswitch-switch-dpdk
,但我认为您可以忽略该消息。我没有这样做,以防万一。最后,运行
sudo netplan apply
并重启。请注意,如果您设置了任何 SSH 密钥,则需要重新配置它们,因为签名将被更改。请注意,如果您转到/etc/netplan/文件夹,您会注意到那里已经有一个名为50-cloud-init.yaml的文件。不要像我一样使用上面的内容编辑该文件,因为此文件的内容在重新启动后不会保留并且会自动生成,我发现当我被锁定在 droplet 之外时,必须通过 Digital Ocean 控制面板的恢复控制台访问它来创建 config.yaml 等。
我真的希望这能帮助那些陷入困境的人,并且希望这可以让你免去数小时的研究和头痛。