ubuntu22.04怎么恢复 “提示可升级到 24.04” LTS?

前一段时间登陆到系统时都会有提示要不要升级到Ubuntu 24.04版本,当时没太想升级就取消了。几次之后发现最近怎么没有提示了,什么原因呢?难道这个提示几次拒绝后就不再提示了吗?于是想自己主动升级一下系统版本,发现不能直接升级24.04 LTS版本了。

以下记录了整个过程及最后实现的方法,主要理解思路,其实就是把配置及版本恢复到该(ubuntu22.04.5 LTS)版本原有的状态,如:内核。

当前系统版本

swper@Mt:~$ lsb_release 
No LSB modules are available.
swper@Mt:~$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 22.04.5 LTS
Release:	22.04
Codename:	jammy

根据网上一些说法,这个问题内核版本6.8.0-114就是关键线索。说说核心原因:

HWE内核版本冲突

当前系统装的是 22.04的HWE内核栈linux-generic-hwe-22.04),不是22.04默认的GA内核(5.15)。

问题出在这里:

  • 22.04 HWE把内核升到了6.8系列,和24.04的GA内核同源但版本号不同步
  • 22.04 HWE的6.8.0-114是jammy仓库的补丁版本,patch号可能高于24.04 noble仓库的6.8.0-XX
  • do-release-upgrade在计算升级路径时,apt无法处理内核”降级”(从高patch号降到低patch号),直接报 “Could not calculate the upgrade”

简单说:22.04的HWE内核太新了,比24.04仓库里的还新,升级器算不出一条合理的升级路径。

排查步骤

先确认报错信息,跑一下:

sudo do-release-upgrade

直接提示:没有可用的 LTS 开发版本 升级到最新的 非 LTS 开发版本
在 /etc/update-manager/release-upgrades 中设定 Prompt=normal。

没有可用的 LTS 开发版本

或直接看日志

grep-i"broken\|error\|cannot" /var/log/dist-upgrade/main.log

grep"Broken" /var/log/dist-upgrade/apt.log
apt 升级日志

通过日志可以发现,很多包有冲突,或者信赖版本不对,破坏了升级的途径,所以执行do-release-upgrade 命令时无法匹配升级方案。

解决方案

方案一:先切回GA内核再升级(推荐)

安装GA主线内核,如果升级内核时没有清除可跳过此步

sudo apt install linux-generic

确定有没有清除时,可以查看系统当中有哪些内核版本

# 列出所有已安装内核
dpkg --list | grep linux-image

大概输出:

查看当前的内核版本列表

rc / ii 这两个字母,告诉你这个内核现在是啥状态

  • ii = 已安装、正常可用
  • rc = 已删除,但配置文件还留着(不算真正安装)

可以看到 linux-image-generic 5.15.0.178.162 这个主线内核还是可以正常使用的,所以可以直接切换内核。

建议用 grub-reboot 先临时切一次,确认能正常启动再改默认。毕竟万一主线内核有驱动问题(比如NVIDIA闭源驱动对主线内核兼容性差),还能重启回HWE兜底。

重启系统选择 5.15.0.178.162 内核

重新启动系统,在进入GRUB界面时选择Advanced options for ubuntu 选项

ubuntu启动时选择高级菜单

进入界面后可以看到多个选项,记得要找到主线内核版本5.15.0.178,这个是ubuntu22.04 LTS的内核版本。

选择内核版本为5.15.0-178


使用这个版本内核进入系统(正常是可以进入的),再查看当前内核版本确认一下。

swper@Mt:~$ uname -r
5.15.0-178-generic
#看到这个版本,表示成功切换到主线的内核版本了。



移除HWE内核元包

sudo apt remove linux-image-generic-hwe-22.04
移除linux-image-generic-hwe-22.04

再移除之前升级过的内核6.8.0-114,因为现在重启系统还是默认会进行6.8.0-114版本。

移除高版本的内核6.8.0-114

移除高版本的内核6.8.0-114

sudo apt remove linux-image-6.8.0-114-generic linux-headers-6.8.0-114-generic      

#完成后再查看次grub.cfg文件内容,可发现只剩一个版本内核了
sudo awk -F\' '/menuentry / {print $2}' /boot/grub/grub.cfg

重启系统,确认用的是5.15内核

uname -r

然后升级

sudo do-release-upgrade

注意确定以下两个文件的完整及可用性:

/etc/apt/sources.list                                          #更新源
/etc/update-manager/meta-release             #这个就是执行do-release-upgrade命令去校验的一个官方地址,它错了可能就无法检查出新版本

  • 可能改了源地址导致检查链接时不稳定,不确定直接使用官方原来的地址
  • 之前可能对文件修改过,未按正规的格式书写

这个是Ubuntu22.04系统中默认的配置

cat /etc/update-manager/meta-release 

[METARELEASE]
URI = https://changelogs.ubuntu.com/meta-release
URI_LTS = https://changelogs.ubuntu.com/meta-release-lts
URI_UNSTABLE = https://changelogs.ubuntu.com/meta-release-development

完成后执行再执行以下操作即可。

sudo apt clean
sudo rm -rf /var/lib/apt/lists/*                   #去掉第三方源,防止冲突影响升级
sudo apt update
sudo apt full-upgrade -y
sudo do-release-upgrade                             #执行检查升级更新,正常应该可以提示升级更新了
do-release-upgrade正常提示升级

如果还是提示,找不到那可以再尝试一下,重新安装组件

sudo apt install --reinstall update-manager-core -y           

方案二:如果以上都不行,全新安装24.04

对于桌面系统来说,备份/home后全新安装往往比折腾升级更省心,尤其是HWE栈+第三方PPA的系统。

HWE内核和LTS跨版本升级的冲突是个老问题了,Ubuntu官方也没有特别好的自动化处理。作为一个做过运维应该有感觉——这种情况下”降内核再升”或者”直接重装”才是稳妥路线。

本文首发于 58Linux技术博客,专注Ubuntu桌面使用、Linux服务器运维与网站搭建实战。

发表评论

粤ICP备10052831号 | © 2026 58Linux 技术笔记. All Rights Reserved. | 联系我们 | 关于本站
本站内容开放共享,仅供学习交流 | 专注 Ubuntu & Linux 实战教程
Built with GeneratePress