Ubuntu 20.04 升级到 24.04 实战详细教程/记录

Ubuntu 20.04 升级到 24.04 实战记录:20.04 → 22.04 → 24.04

一、前言

最近我把一台 Ubuntu 20.04.6 LTS 虚拟机成功升级到了 Ubuntu 24.04.4 LTS

整个过程里踩了几个典型坑,比如:

  • VMware 虚拟机网络不通
  • 软件源异常
  • 升级过程中出现配置文件冲突
  • 删除旧软件包时不知道该不该继续
  • 看到 24.04 弹窗时误以为要立刻点升级

这篇文章把整个过程整理成一份可直接照做的实操记录,尽量让 普通用户也能跟着升级成功

适合人群:

  • 当前系统是 Ubuntu 20.04
  • 想升级到 Ubuntu 24.04
  • 不想重装系统
  • 虚拟机 / 实体机都可参考

先说结论:20.04 不能直接升级到 24.04

正确路径是:

bash 复制代码
Ubuntu 20.04 LTS -> Ubuntu 22.04 LTS -> Ubuntu 24.04 LTS

升级前的条件和准备

1)先备份,虚拟机建议做快照

如果你用的是 VMware / VirtualBox,强烈建议先做快照。升级中途如果出问题,可以直接回滚。

2)确认当前系统版本和网络正常

执行:

bash 复制代码
lsb_release -a
cat /etc/os-release
ping -c 3 8.8.8.8

确认两件事:

  • 当前确实是 Ubuntu 20.04 、外网能通

3)检查软件源

升级前第三方源最容易引发问题,先检查:

bash 复制代码
cat /etc/apt/sources.list
ls -l /etc/apt/sources.list.d
grep -R "^[^#].*deb " /etc/apt/sources.list /etc/apt/sources.list.d/ 2>/dev/null

如果你有第三方源,比如 Docker、Node、MongoDB、PPA 等,建议先禁用。


二、升级前先处理软件源

1)备份原有软件源

bash 复制代码
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak.$(date +%F)

2)禁用第三方源

以 Docker 源为例:

bash 复制代码
sudo mkdir -p /root/disabled-apt-sources
sudo mv /etc/apt/sources.list.d/docker.list /root/disabled-apt-sources/ 2>/dev/null || true

3)把 Ubuntu 20.04 主源改成官方源

bash 复制代码
sudo tee /etc/apt/sources.list >/dev/null <<'EOF'
deb http://archive.ubuntu.com/ubuntu focal main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu focal-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu focal-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu focal-security main restricted universe multiverse
EOF

4)刷新索引

bash 复制代码
sudo apt clean
sudo rm -rf /var/lib/apt/lists/*
sudo apt update

只要 apt update 正常,就可以继续。


三、先把 20.04 更新到最新状态

正式升级前,先把当前系统更新干净:

bash 复制代码
sudo apt upgrade -y
sudo apt full-upgrade -y
sudo apt autoremove -y
sudo apt install -y update-manager-core ubuntu-release-upgrader-core

检查升级策略:

bash 复制代码
grep '^Prompt=' /etc/update-manager/release-upgrades

如果不是 Prompt=lts,改成:

bash 复制代码
sudo sed -i 's/^Prompt=.*/Prompt=lts/' /etc/update-manager/release-upgrades
grep '^Prompt=' /etc/update-manager/release-upgrades

重启一次:

bash 复制代码
sudo reboot

重启后再确认:

bash 复制代码
lsb_release -a
uname -r

第一步:Ubuntu 20.04 升级到 22.04

1)开始升级

执行:

bash 复制代码
sudo do-release-upgrade

2)升级过程中常见提示怎么选

提示 1:glibc 升级时 mysql 没有自动重启

这类提示直接选:

  • <Ok> 按回车继续即可。

提示 2:正在安装 Firefox Snap

这是正常现象,不要中断。处理方式:

  • 等待下载完成
  • 不要 Ctrl + C
  • 不要强制关闭终端

提示 3:配置文件冲突,例如 /etc/sysctl.conf

如果出现类似:

  • /etc/sysctl.conf

通常会问你是否用维护者的新版本覆盖当前文件。这里建议:输入 N 回车,也就是:保留当前版本


提示 4:软件包设置:正在设定 unattended-upgrades

选第二项 keep the local version currently installed 回车

原因和刚才一样:这是升级时遇到你本机已修改过的配置文件,先保留当前版本更稳,升级后再按需要比对调整。

提示 5:桌面弹出"Ubuntu 24.04 LTS 升级可用"

这时不要跳到 24.04。

应该点击: 稍后询问 先把 20.04 → 22.04 这一步跑完。


提示 6:出现 继续 [yN]

这里输入:y 然后回车。


提示 7:提示升级完成并将重启

继续输入:y 然后回车。系统会自动重启。


3)重启后确认 22.04 是否成功

登录系统后执行:

bash 复制代码
lsb_release -a

如果看到类似下面内容,说明第一段升级成功:

bash 复制代码
Description:    Ubuntu 22.04.5 LTS
Release:        22.04
Codename:       jammy

第二步:Ubuntu 22.04 升级到 24.04

1)先把 22.04 更新干净

先执行:

bash 复制代码
sudo apt update
sudo apt upgrade -y
sudo apt full-upgrade -y
sudo apt autoremove -y

然后确认当前版本:

bash 复制代码
lsb_release -a
uname -r

2)开始升级到 24.04

执行:

bash 复制代码
sudo do-release-upgrade

3)升级过程中常见提示怎么选

提示 1:/etc/vim/vimrc 配置文件冲突

输入:N 回车。


提示 2:/etc/sysctl.conf 冲突

还是输入:N 回车。


提示 3:/etc/fwupd/fwupd.conf 配置文件冲突

继续输入: N 回车。


提示 4:删除陈旧软件包

如果提示删除旧软件包并询问是否继续:

bash 复制代码
继续 [yN]

这里输入: y 然后回车。


4)系统重启后,桌面会变成新版本样式

升级完成后系统会自动重启。

重启后桌面样式通常会发生明显变化,这是正常的。


5)确认 24.04 是否升级成功

打开终端执行:

bash 复制代码
lsb_release -a
cat /etc/os-release
uname -r
sudo apt update

如果看到类似下面内容,就说明升级已经完成:

bash 复制代码
Description:    Ubuntu 24.04.4 LTS
Release:        24.04
Codename:       noble

并且 sudo apt update 正常,没有报错。

四、完整命令汇总

1)升级前准备

bash 复制代码
lsb_release -a
cat /etc/os-release
ping -c 3 8.8.8.8

cat /etc/apt/sources.list
ls -l /etc/apt/sources.list.d
grep -R "^[^#].*deb " /etc/apt/sources.list /etc/apt/sources.list.d/ 2>/dev/null

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak.$(date +%F)
sudo mkdir -p /root/disabled-apt-sources
sudo mv /etc/apt/sources.list.d/docker.list /root/disabled-apt-sources/ 2>/dev/null || true

sudo tee /etc/apt/sources.list >/dev/null <<'EOF'
deb http://archive.ubuntu.com/ubuntu focal main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu focal-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu focal-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu focal-security main restricted universe multiverse
EOF

sudo apt clean
sudo rm -rf /var/lib/apt/lists/*
sudo apt update
sudo apt upgrade -y
sudo apt full-upgrade -y
sudo apt autoremove -y
sudo apt install -y update-manager-core ubuntu-release-upgrader-core
sudo sed -i 's/^Prompt=.*/Prompt=lts/' /etc/update-manager/release-upgrades
grep '^Prompt=' /etc/update-manager/release-upgrades
sudo reboot

2)20.04 → 22.04

bash 复制代码
sudo do-release-upgrade

关键选择:

  • mysql / glibc 弹窗:<Ok>
  • 配置文件冲突:N
  • 桌面弹出 24.04 提示:稍后询问
  • 继续 [yN]y
  • 重启确认:y

3)22.04 → 24.04 前更新

bash 复制代码
sudo apt update
sudo apt upgrade -y
sudo apt full-upgrade -y
sudo apt autoremove -y
lsb_release -a
uname -r

4)22.04 → 24.04

bash 复制代码
sudo do-release-upgrade

关键选择:

  • /etc/vim/vimrcN
  • /etc/sysctl.confN
  • /etc/fwupd/fwupd.confN
  • 删除陈旧软件包:y

5)升级完成后检查

bash 复制代码
lsb_release -a
cat /etc/os-release
uname -r
sudo apt update
sudo apt autoremove -y
sudo apt clean

五、几个关键经验

1)什么时候选 N

遇到"配置文件已修改,是否覆盖"的提示时,优先选:

bash 复制代码
N

适用于:

  • /etc/sysctl.conf
  • /etc/vim/vimrc
  • /etc/fwupd/fwupd.conf

也就是:保留当前版本


2)什么时候选 y

遇到这些情况时通常选:

bash 复制代码
y
  • 继续 [yN]
  • 确认继续升级
  • 确认删除旧软件包
  • 确认升级完成后重启

3)什么时候点"稍后询问"

当你还在做 20.04 → 22.04 时,如果桌面弹出:

  • Ubuntu 24.04 LTS 升级可用

这时不要立刻点升级,应该点:

  • 稍后询问

先完成当前这一段升级。


结语

这次升级的最终结果是:

  • Ubuntu 20.04.6 LTS
  • 成功升级到
  • Ubuntu 24.04.4 LTS

整个过程虽然步骤不少,但只要记住下面 5 点,成功率会高很多:

  1. 必须分两段升级:20.04 → 22.04 → 24.04
  2. 升级前先清理软件源
  3. 配置文件冲突优先选 N
  4. 继续升级 / 删除旧包时选 y
  5. 先让当前阶段跑完,不要中途跳版本

如果你也准备从 Ubuntu 20.04 升级到 24.04,希望这篇文章能帮你少踩坑。

相关推荐
风曦Kisaki2 小时前
# Linux进阶Day06:scp远程拷贝、源码编译安装、rsync同步、inotify+rsync实时同步
linux·运维·服务器
123过去2 小时前
ophcrack-cli使用教程
linux·网络·测试工具·安全
feng_you_ying_li2 小时前
linux指令工具vim和gcc的介绍(6)
linux
charlie1145141912 小时前
2026年正点原子开发板移植方案——从0开始的Rootfs之路(5)WSL + NFS 网络启动踩坑记:从挂载失败到成功启动的完整历程
linux·网络·驱动开发·学习·嵌入式·嵌入式linux
Wu Junwu2 小时前
Linux启动过程中的initramfs和rootfs详解
linux·根文件系统·内核编译
zzzsde2 小时前
【Linux】库的制作与使用(1):库的概念及动静态库
linux·运维·服务器
2601_949814692 小时前
ubuntu 安装 Redis
linux·redis·ubuntu
薛定谔的悦2 小时前
站控显示下级从控EMS的版本信息开发(设计多线程和TCP通讯)
linux·网络·数据库·网络协议·tcp/ip·ems
看海的四叔2 小时前
【Linux】命令行常规操作全攻略:入门+实战+速查
linux·运维·github·命令行·batch命令