告别重装!Ubuntu 22.04直升24.04教程,零数据丢失的终极方案

Linux安全运维 (33) 2025-08-15 21:43:36

我们之前在使用CentOS的时候,在安装完系统之后、使用之前一般习惯更新一下系统(如何给最小化安装的CentOS主机装个远程桌面?)。CentOS7的最后一版应该是CentOS 7.9-2009,在这之前还有CentOS 7.0-1406、CentOS 7.1-1503、CentOS 7.2-1511、CentOS 7.3-1611、CentOS 7.4-1708、CentOS 7.5-1804、CentOS 7.6-1810、CentOS 7.7-1908和CentOS 7.8-2003,整个CentOS 7系列时间跨度达到7年,所有子版本理论上均可通过yum update升级到 CentOS 7.9-2009。

即使是不同系列,比如CentOS 7升级CentOS 8或者CentOS 9,也是可行的,并且比较方便(EOL的CentOS 8如何升级内核版本?)。

但是在切换到Ubuntu之后,每个版本的周期跨度明显缩短,两年就是一个LTS版本。在使用APT安装VPP时,提示使用apt-get dist-upgrade命令来升级操作系统,我当时试了一下,发现升级之后的系统没有变化,让我不禁想测试一下Ubuntu系统如何升级。

首先,我们先准备一台虚拟机,安装了22.04.3 LTS系统。
告别重装!Ubuntu 22.04直升24.04教程,零数据丢失的终极方案_https://www.tiejiang.org_Linux安全运维_第1张

在Ubuntu最常用的更新命令有apt update和apt upgrade。在每次安装新软件或升级前,一般都需要先运行apt update,用于从配置的APT软件源中同步最新的软件包元数据(如版本、依赖关系等),更新本地缓存,仅刷新可用包的信息,但不会安装或升级任何软件包。

可以看到,执行命令之后,提示我有291个软件包可以升级。

而apt upgrade则可以根据apt update获取到的最新列表,安全升级所有已安装的软件包到最新版本,但不会处理依赖关系的重大变化(例如不自动安装新依赖或删除旧包,若依赖关系冲突,则会跳过该包的升级),也不改变系统架构。

对此,我们可以观察一下内核版本是否变化。

记录一下当前的内核版本为6.5.0-44-generic。
告别重装!Ubuntu 22.04直升24.04教程,零数据丢失的终极方案_https://www.tiejiang.org_Linux安全运维_第2张

可以看到,前面提示的291个可以升级的软件包在执行升级命令时,变成了285个升级、2个新安装和6个不会更新。

可以看到,升级之后,显示仍有6个软件包可以更新,跟过程中提示的6个不会更新的软件包情况一致;除此之外,内核版本还是6.5.0-44-generic,没有变化。

对于没有更新的软件包,我们可以使用命令单独手工更新,例如:

aptupgrade libsnmp40

告别重装!Ubuntu 22.04直升24.04教程,零数据丢失的终极方案_https://www.tiejiang.org_Linux安全运维_第3张

而apt dist-upgrade则是在apt upgrade的基础上,可以智能解决依赖关系的变化,可能安装新包或删除旧包以满足依赖,但是也可能出现因旧依赖被移除而导致部分软件异常的情况。除此之外,还可以升级Ubuntu内核,我们执行一下试试。

告别重装!Ubuntu 22.04直升24.04教程,零数据丢失的终极方案_https://www.tiejiang.org_Linux安全运维_第4张

可以看到,执行此命令会升级内核版本到6.8.0-57,同时会升级前面5个可升级软件包中的3个,但还是保留了两个没有升级。

告别重装!Ubuntu 22.04直升24.04教程,零数据丢失的终极方案_https://www.tiejiang.org_Linux安全运维_第5张

升级执行完成之后,可以看到内核版本并没有变化,此时需要重启系统来加载新的内核。重启之后,可以看到提示系统版本已经是Ubuntu 22.04.5 LTS,内核版本也已经升级到6.8.0-57-generic;同时,还提示有24.04.2 LTS可用,但需要使用do-release-upgrade来升级。

这也就说明apt dist-upgrade仅更新当前发行版(即22.04 LTS)内的软件包和内核,不会触发大版本升级(从22.04到24.04),且内核升级是独立于系统版本的。
告别重装!Ubuntu 22.04直升24.04教程,零数据丢失的终极方案_https://www.tiejiang.org_Linux安全运维_第6张

通过/etc/os-release可以看到,系统版本号反映该LTS版本已经从.3代表的第3次维护更新升级到了第5次维护更新。而LTS版本的大版本更新,比如我们想升级到24.04,则需要按照提示,运行do-release-upgrade命令来触发跨版本升级了,此命令会检查24.04 LTS的可用性,并引导完成系统底层的升级。

一般来讲,当前LTS版本(22.04)的用户通常需等待下一个LTS版本(24.04)发布后至少3个月,才能通过do-release-upgrade来获取稳定升级路径。

正常情况下,升级系统版本并不会丢失用户数据,但还是建议做好数据备份工作,我这里作为演示,就不介绍数据备份工作了。

升级过程需要下载大约2 GB数据,请确保网络连接稳定,避免下载失败导致升级中断;完整升级耗时较长,预计超过1小时,并且期间有多次人工确认环节,需要有足够的耐心。

做好心理准备之后,我们先确认升级核心工具update-manager-core已安装。

aptinstall update-manager-core

检查升级策略文件/etc/update-manager/release-upgrades,确保升级策略为LTS。

告别重装!Ubuntu 22.04直升24.04教程,零数据丢失的终极方案_https://www.tiejiang.org_Linux安全运维_第7张

接下来,就可以运行do-release-upgrade命令来触发24.04的升级流程了。
告别重装!Ubuntu 22.04直升24.04教程,零数据丢失的终极方案_https://www.tiejiang.org_Linux安全运维_第8张

第一次确认信息,输入y继续升级。
告别重装!Ubuntu 22.04直升24.04教程,零数据丢失的终极方案_https://www.tiejiang.org_Linux安全运维_第9张

当通过SSH登录进行操作时,会有一个额外的提示,提醒为避免出现意外,会增加一个额外的1022监听端口;输入y之后,还要再按一次回车才能继续。

然后才进入正题,提示需要下载1811 MB文件,并且安装可能耗费几个小时,需要输入y开始升级。
告别重装!Ubuntu 22.04直升24.04教程,零数据丢失的终极方案_https://www.tiejiang.org_Linux安全运维_第10张

大约过了一个小时,提示配置/etc/sysctl.conf,输入y继续升级。
告别重装!Ubuntu 22.04直升24.04教程,零数据丢失的终极方案_https://www.tiejiang.org_Linux安全运维_第11张

提示配置/etc/haproxy/haproxy.cfg,输入y继续升级。
告别重装!Ubuntu 22.04直升24.04教程,零数据丢失的终极方案_https://www.tiejiang.org_Linux安全运维_第12张

提示配置/etc/fwupd/fwupd.conf,输入y继续升级。
告别重装!Ubuntu 22.04直升24.04教程,零数据丢失的终极方案_https://www.tiejiang.org_Linux安全运维_第13张

grub-pc配置文件冲突,新安装的版本更新,选择install the package maintainer's version来安装软件包维护者版本。
告别重装!Ubuntu 22.04直升24.04教程,零数据丢失的终极方案_https://www.tiejiang.org_Linux安全运维_第14张

提示删除过时的软件包,如果继续,将删除331个软件包,说是要几个小时,其实几分钟就好了。
告别重装!Ubuntu 22.04直升24.04教程,零数据丢失的终极方案_https://www.tiejiang.org_Linux安全运维_第15张

升级完成之后,需要输入y重启系统完成更新。
告别重装!Ubuntu 22.04直升24.04教程,零数据丢失的终极方案_https://www.tiejiang.org_Linux安全运维_第16张

重启之后,可以看到,系统已经成功升级到最新的24.04.2 LTS版本,内核还是保持6.8.0-57-generic不变,升级成功。

最后,我们可以使用以下命令来清理旧内核。

aptautoremove

还好,只有一个软件,影响不大。

好了,到这里,一台Ubuntu 22.04.3 LTS就完全升级到了Ubuntu 24.04.2 LTS,并且所有软件都是最新的,你学废了吗?

THE END

Leave a Reply

下一篇

已是最新文章