如何从 Ubuntu 24.04 升级到 Ubuntu 25.04

最近 Ubuntu 25.04(代号 Plucky Puffin)的消息不少,不仅内核升到了 Linux 6.14,连虚拟化栈和数据库(MySQL 8.4 / PostgreSQL 17)也都刷到了新版本。对于咱们这种喜欢尝鲜、追求极致开发体验的人来说,升级是早晚的事。

不过老规矩,在动大手术之前,我得先唠叨两句。跨大版本升级这种事儿,哪怕技术再稳,也建议别在生产环境或者存了重要资料的本地系统上直接莽。 万一中间断网或者依赖冲突,修起来够你喝一壶的。

我个人做这类实验,从来不拿自己的主力电脑开玩笑,通常都是顺手撸台云服务器来折腾。对比了不少家,我最近一直跑实验用的是 雨 云服务器,主要有几个点挺香的:

  • 试错成本极低:搞崩了直接后台点一下"重装系统",几秒钟又是条好汉,不心疼。
  • 自带环境:后台能一键预装 1Panel 或者 Docker 环境,省去很多敲命令的枯燥时间。

环境准备好了,咱们直接开干。


第一步:基础环境自检

先看看你的磁盘空间够不够。这种连跨两个版本的操作,没 5GB 以上的余量基本会卡死在解包阶段。

console 复制代码
$ df -h

顺便确认下你当前的系统版本,确保是从 24.04 出发:

console 复制代码
$ cat /etc/os-release

接下来是常规的"全家桶"更新,把 24.04 的补丁打满:

console 复制代码
$ sudo apt update && sudo apt upgrade -y
$ sudo reboot

重启回来后,清理一下旧缓存:

console 复制代码
$ sudo apt autoremove -y
$ sudo apt autoclean

第二步:开启 SSH 逃生通道

跨版本升级最怕中途 SSH 断连,导致进度卡死,服务器变砖。Ubuntu 官方在升级时会开启一个 1022 端口作为备用。咱们得先在防火墙把这个口子放开:

console 复制代码
$ sudo ufw allow 1022/tcp
$ sudo ufw reload
$ sudo ufw status

博主吐槽 :如果你是用我上面提到的 雨云服务器,其实可以通过后台自带的 VNC 远程桌面监控全过程,即使 SSH 挂了也能直接在浏览器里操作,不用死磕 1022 端口。


第三步:从 Ubuntu 24.04 跨越到 24.10

因为 24.04 是 LTS(长期支持版),而 24.10 是普通版本,系统默认是不允许"降级"到非 LTS 路径的。我们需要手动改下策略:

  1. 修改升级配置文件:

    console 复制代码
    $ sudo vim /etc/update-manager/release-upgrades
  2. 把底部的 Prompt=lts 改成 Prompt=normal

然后开始第一波冲击:

console 复制代码
$ sudo do-release-upgrade

这里会有一连串的交互确认:

  • 提示是否在 SSH 下运行?选 Y
  • 提示额外开启 1022 端口?回车确认。
  • 提示要下载 1GB+ 的包?直接一把梭选 Y

过程中会弹出键盘布局选择和 Grub 配置确认,看图操作:

遇到 Grub 配置文件冲突,除非你自己改过内核引导参数,否则稳妥起见选"保留当前安装的本地版本":

清理掉过时包并重启:

console 复制代码
$ cat /etc/os-release

看到 VERSION="24.10 (Oracular Oriole)",恭喜你,第一阶段完成。


第四步:进击 Ubuntu 25.04 (Plucky Puffin)

由于 25.04 目前可能还处于开发周期(Development Branch),标准的升级命令可能搜不到它。我们需要加一个 -d (Development) 参数来强制探测。

先检查下配置:

console 复制代码
$ cat /etc/update-manager/release-upgrades
# 确保 Prompt 依然是 normal

同步仓库并升级:

console 复制代码
$ sudo apt update && sudo apt upgrade -y
$ sudo reboot
$ sudo do-release-upgrade -d

升级流程和上一步基本一致。如果在拉包阶段觉得进度条不动,多半是网络环境问题。用海外节点的优势就在这儿体现出来了,基本都是满速下载。

完成后再次重启,验证成果:

console 复制代码
$ cat /etc/os-release

你会看到 VERSION="25.04 (Plucky Puffin)"。再查一下内核:

console 复制代码
$ uname -mrs
# 应该是 Linux 6.14 左右的版本

最后别忘了把临时开的防火墙端口删了:

console 复制代码
$ sudo ufw delete allow 1022/tcp

升级后的收尾

升级完别急着欢呼,检查下第三方源(比如 Docker、Nginx 等)是否失效。

console 复制代码
$ ls /etc/apt/sources.list.d

如果发现某些源还是指向 noble (24.04) 或 oracular (24.10),你需要手动编辑这些 .list 文件,把代号改成 plucky,然后执行 sudo apt update

写在最后

纸上得来终觉浅,这种跨版本升级的操作,光看教程是不够的,中间可能会遇到各种玄学报错(比如 Python 依赖冲突或旧版 PPA 导致锁死)。

我建议大家花一块钱去搞台 雨云的测试服务器 跟着上面的步骤手操一遍。万一搞砸了,直接重装系统重来;要是搞定了,你也就掌握了 Ubuntu 滚动升级的核心逻辑。白嫖实战经验之后再退款也是可以的,重点是咱们得把技术学到手。

相关推荐
CDN3602 小时前
CSDN 交流|360CDN 系列产品使用感受与避坑建议
运维·网络安全
CDN3602 小时前
源站防护升级:360CDN 高防服务器部署与优化
运维·服务器
qzhqbb2 小时前
Web 服务器(Nginx、Apache)
服务器·前端·nginx
Bruce20489982 小时前
OpenClaw 5大高频自动化场景落地(附代码/配置)
运维·自动化
tobebetter95272 小时前
Debian / Ubuntu openclaw 浏览器自动化
ubuntu·自动化·debian
暴力求解2 小时前
Linux---进程池
linux·运维·服务器
Shepherd06192 小时前
【IT 实战】Apache 反向代理 UniFi Controller 的终极指北(解决白屏、502、400 错误)
运维·网络·apache·it·unifi
嵌入小生0072 小时前
ARM --- 基础知识汇总
linux·嵌入式·arm·指令集
IMPYLH2 小时前
Linux 的 du 命令
linux·运维·服务器