本文说明 Ubuntu 20.04 LTS(Focal Fossa)到 Ubuntu 22.04 LTS(Jammy Jellyfish)的相邻 LTS 升级路径,适用于需要完成这一阶段迁移的现有系统。20.04.6 是 20.04 系列的维护版本,不能称为“最新 LTS”;22.04 也不是本文更新时的最新 LTS。版本支持周期应查看 Ubuntu 发布周期。

下面按命令行流程组织,重点面向 Ubuntu Server 和云主机。LTS 原地升级应逐级进行;需要继续迁往后续 LTS 时,先验证本次升级完成,再评估下一阶段。路径规则见 Ubuntu 官方发行版升级说明。

1. 确认系统和恢复条件

先读取当前版本与磁盘空间,确认确实从 20.04 开始:

1
2
cat /etc/os-release
df -h / /boot
  • 把业务数据、配置和必要的数据库备份保存到另一位置,确认可以恢复;云主机可另备快照。
  • 阅读 Ubuntu 22.04 发行说明,检查应用、驱动与第三方软件的兼容性。
  • 预留维护时间、下载空间与重启窗口;远程操作前确认云控制台或其他恢复入口可用。
  • 记录第三方 PPA 和软件源。升级器会禁用第三方源,升级后应确认其支持 Jammy 再恢复,不能直接把旧源全部启用。

2. 完整更新当前发行版

先保持软件源对应 Focal,刷新包索引并完成当前发行版的软件包升级;查看将安装、移除的包清单后再确认。

1
2
3
sudo apt update
sudo apt dist-upgrade -o APT::Get::Always-Include-Phased-Updates=true
sudo apt install update-manager-core

这里的 dist-upgrade 仍在更新 20.04 的包,不会自行把系统变为 22.04。如果命令失败、存在未配置的软件包或依赖冲突,先处理具体错误,再继续发行版升级。官方文档要求先完整更新当前系统,并注意分阶段推送的软件包可能阻止升级。

检查是否需要重启:

1
test -f /run/reboot-required && cat /run/reboot-required

若该文件存在,安排重启并重新登录。文件不存在时,这条检查通常不输出内容;它本身不会执行重启。

3. 检查 LTS 升级设置

编辑配置文件,确认只有目标设置生效:

1
sudo nano /etc/update-manager/release-upgrades
1
Prompt=lts

Prompt=lts 表示检查 LTS 到 LTS 的升级,Prompt=never 会关闭升级提示。相关选项见 Ubuntu 升级帮助。不要通过把所有源中的 focal 替换成 jammy 来代替发行版升级器。

4. 运行发行版升级器

1
sudo do-release-upgrade

确认升级器提出的目标为 Ubuntu 22.04,再阅读下载量、包变更和移除清单。升级过程中留意配置文件差异提示,按实际业务需要决定保留或替换配置;完成后按提示重启。不要因等待下载或配置而中断进程。

-d 不是修复升级失败的通用“强制”开关。它用于请求开发版本,官方不建议在生产环境中使用;LTS 刚发布、常规升级尚未开放时也有特殊测试用途。本文的稳定版本迁移流程使用不带 -d 的命令。

5. 没有发现新版本时如何排查

  • 确认当前版本、Prompt=lts 和系统时钟,检查网络、代理及 Ubuntu 软件源访问是否正常。
  • 确认当前发行版的软件包更新已成功完成,按提示重启;用 apt-mark showhold 检查被保留的包,不要在不了解原因时全部解除保留。
  • 如果升级已启动又失败,查看 /var/log/dist-upgrade/ 中的日志,保留具体错误信息后定位问题。
  • 按官方发行说明核对升级通道状态。不要把临时关闭的升级通道当作需要改源、移动整个软件源目录或追加 -d 的理由。

6. 重启后的验证

1
2
3
4
cat /etc/os-release
uname -r
systemctl --failed
sudo apt update

/etc/os-release 中应显示 VERSION_ID="22.04" 和 Jammy 代号。随后检查网络、SSH、磁盘挂载、业务服务与应用日志,再逐项处理受影响的第三方软件。版本号变更不代表所有业务都已验证通过。

以上为依据官方文档整理的操作与检查方法;命令输出应以目标机器实际执行结果为准。