从 Ubuntu 20.04 (Focal Fossa) 升级到 22.04 (Jammy Jellyfish) 或 24.04 (Noble Numbat) 是一个重大的系统变更过程。虽然 Ubuntu 提供了图形化升级工具,但直接跨版本升级(如 20.04 -> 24.04)通常不被推荐用于生产环境或重要数据服务器。
以下是需要特别注意的关键问题和最佳实践建议:
⚠️ 核心原则
- 备份!备份!备份! 在开始任何操作前,确保重要数据、配置文件和数据库有完整备份。
- 优先选择“干净安装”:对于生产服务器或关键工作站,最安全的方式是备份数据、格式化磁盘并全新安装新版本,而不是原地升级。
- 逐步升级:如果必须原地升级,建议先升到 22.04,再升到 24.04,不要跳过中间版本。
一、通用注意事项(适用于所有升级)
1. 硬件兼容性
- 内核更新:新版 Ubuntu 使用更新的 Linux 内核,可能带来更好的硬件支持,但也可能导致某些旧硬件驱动失效(尤其是专有显卡驱动、Wi-Fi 网卡等)。
- UEFI/BIOS 设置:确认主板固件是否为最新,避免升级后引导失败。
2. 软件依赖与兼容性
- 第三方 PPA:非官方仓库(PPA)可能在升级后被禁用或删除,需手动检查并重新配置。
- Snap 包:Ubuntu 22.04+ 更深度集成 Snap,部分旧版
.deb包可能被标记为废弃。 - Python/Node.js 等开发环境:默认版本会大幅更新(如 Python 3.8 → 3.10 → 3.12),可能导致编译错误或脚本不兼容。
- Docker/Kubernetes:容器运行时通常保持兼容,但主机网络配置(如
netplan)可能变化。
3. 网络配置变化
- Netplan 取代 ifupdown:Ubuntu 17.10 起已用
netplan管理网络,但 20.04 到 22.04/24.04 的 netplan YAML 语法可能有细微变化,需检查/etc/netplan/*.yaml。 - NetworkManager 行为:自动连接策略可能改变,导致开机后网络连接延迟或不稳定。
4. 安全策略
- AppArmor:默认启用且规则更严格,可能阻止某些自定义应用运行。
- 防火墙(UFW):规则通常保留,但需验证是否生效。
- SSH 配置:OpenSSH 版本升级,某些旧客户端可能无法连接,需调整
sshd_config。
二、从 20.04 → 22.04 特别注意事项
1. GNOME 桌面重大更新
- GNOME 42:界面风格、扩展兼容性变化较大。
- Wayland 默认启用:22.04 默认使用 Wayland 显示协议,而非 X11。
- ✅ 优点:更安全、流畅。
- ❌ 缺点:某些老游戏、远程桌面工具(如 VNC)、屏幕录制软件、Java AWT 应用可能不兼容或性能下降。
- 🔧 解决方案:可在登录界面切换回 Xorg,或更新相关软件以支持 Wayland。
2. Python 3.10 成为默认
- 许多旧脚本假设 Python 3.6/3.8,需测试代码兼容性。
pip行为变化,虚拟环境创建方式无大变,但底层库需重新安装。
3. MySQL/MariaDB 版本
- MySQL 8.0 成为默认,若之前使用 MariaDB,需注意认证插件变化(
caching_sha2_passwordvsmysql_native_password)。
4. Docker 安装方式
- 官方不再提供
docker-ce通过 apt 源直接安装(需添加 Docker 官方 GPG key 和 repo),建议使用snap install docker或遵循 Docker 官方文档。
三、从 20.04 → 24.04 特别注意事项(若跳过 22.04)
📌 强烈建议先升级到 22.04 并稳定运行后再升 24.04。
1. GNOME 46 + 新设计语言
- 更激进的 UI 变化,主题和扩展兼容性进一步受限。
- 默认启用更严格的沙盒机制。
2. Linux Kernel 6.5+
- 对新型 CPU、GPU、USB4/Thunderbolt 支持更好,但老旧硬件驱动可能缺失。
3. Python 3.12 默认
- 移除
distutils,影响大量旧 Python 包安装(需用python3-dev和build-essential替代)。 - 推荐使用
venv或conda隔离环境。
4. OpenSSL 3.0+
- 加密算法和证书验证更严格,某些旧服务(如自签名证书、内部 LDAP)可能需要调整配置。
5. Systemd 和服务管理
- 更多服务默认启用或禁用,需检查
systemctl list-units --type=service。
6. 删除旧组件
- 一些旧工具被移除(如
ifupdown完全弃用),确保迁移到netplan+NetworkManager。
四、升级操作步骤建议
方法一:图形化升级(适合桌面用户)
- 打开“软件和更新” → “更新”标签页 → 点击“现在安装”。
- 选择“Ubuntu 22.04 LTS”或“24.04 LTS”进行升级。
- 等待下载和安装,重启后按提示完成配置。
方法二:命令行升级(适合服务器/高级用户)
# 1. 更新当前系统
sudo apt update && sudo apt upgrade -y
# 2. 安装 do-release-upgrade
sudo apt install do-release-upgrade
# 3. 执行升级(首次建议加 -d 预览,生产环境慎用)
sudo do-release-upgrade
方法三:干净安装(最推荐)
- 备份
/home、/etc、数据库、网站文件等。 - 制作 Ubuntu 22.04/24.04 启动 U 盘。
- 全新安装,恢复数据和配置。
五、升级后必查清单
| 项目 | 检查内容 |
|---|---|
| 系统信息 | lsb_release -a 确认为 22.04 或 24.04 |
| 内核版本 | uname -r 确认新版内核加载成功 |
| 网络 | ip a 检查 IP 分配,ping 测试网络连通性 |
| 服务状态 | systemctl is-active <service> 检查关键服务(SSH, Web, DB)是否正常 |
| 磁盘空间 | df -h 确保 /boot 和 / 分区充足 |
| 日志错误 | journalctl -xe 查看启动和运行时错误 |
| 软件功能 | 测试浏览器、办公软件、开发工具、虚拟机等是否正常工作 |
| 备份验证 | 确认备份文件可还原 |
六、常见问题及解决
Q1: 升级后无法进入图形界面?
- 尝试按
Ctrl+Alt+F3进入 TTY 终端。 - 重装显示驱动:
sudo ubuntu-drivers autoinstall - 重置 GDM3:
sudo systemctl restart gdm3(或lightdm)
Q2: SSH 无法连接?
- 检查
sshd_config中PermitRootLogin和PasswordAuthentication设置。 - 确保
ufw allow ssh开放端口。
Q3: Python 包安装失败?
- 安装构建依赖:
sudo apt install python3-dev build-essential - 使用
pip install --upgrade pip
Q4: 第三方应用崩溃?
- 检查是否依赖已移除的库(如
libssl1.1→libssl3)。 - 使用
ldd ./app检查动态链接库缺失情况。
✅ 总结建议:
- 个人桌面用户:可尝试图形化升级,但务必提前备份个人文件。
- 生产服务器:强烈建议干净安装,或通过快照(LVM/ZFS)备份后谨慎升级。
- 开发者:准备好虚拟环境或容器,避免全局 Python/Node 版本冲突。
如有具体应用场景(如 LAMP 栈、Docker 集群、AI 训练平台),可提供更多信息以便给出针对性建议。
云知识CLOUD