本人笔记本电脑为ThinkPad T480,从Fedora 35一直持续升级到Fedora 43,今天继续实战操作升级Fedora 44。.
系统升级过程说明:2026年4月30日晚上21:30准备启动升级操作,由于家里WiFi网络不稳,切换使用手机热点,下载升级包6.8GB,升级RPM软件包总共4299个,没有切换国内镜像下载升级,所以下载速度在10KB-200KB之间非常缓慢。
晚上没有关闭电脑一直下载,2026年5月1日早上5点多起床发现下载完成。但由于磁盘空间不足导致安排识别,又研究操作空间转移处理,整体升级过程非常平滑与顺利,没有出现异常情况。
现有的Fedora 43系统情况如下:
hinkpad-t480 :: ~ » neofetch.',;::::;,'. yijunzhao@thinkpad-t480 .';:cccccccccccc:;,. ----------------------- .;cccccccccccccccccccccc;. OS: Fedora Linux 43 (Workstation Edition) x86_64 .:cccccccccccccccccccccccccc:. Host: 20L5A00YHK ThinkPad T480 .;ccccccccccccc;.:dddl:.;ccccccc;. Kernel: 6.19.14-200.fc43.x86_64 .:ccccccccccccc;OWMKOOXMWd;ccccccc:. Uptime: 22 mins
.:ccccccccccccc;KMMc;cc;xMMc:ccccccc:. Packages: 4180 (rpm)
,cccccccccccccc;MMM.;cc;;WW::cccccccc, Shell: zsh 5.9
:cccccccccccccc;MMM.;cccccccccccccccc: Resolution: 1920x1080
:ccccccc;oxOOOo;MMM0OOk.;cccccccccccc: DE: Plasma 6.6.4
cccccc:0MMKxdd:;MMMkddc.;cccccccccccc; WM: kwin
ccccc:XM0';cccc;MMM.;cccccccccccccccc' Theme: Breeze Light [Plasma], Breeze [GTK2/3]
ccccc;MMo;ccccc;MMW.;ccccccccccccccc; Icons: breeze [Plasma], breeze [GTK2/3]
ccccc;0MNc.ccc.xMMd:ccccccccccccccc; Terminal: gnome-terminal
cccccc;dNMWXXXWM0::cccccccccccccc:, CPU: Intel i7-8550U (8) @ 4.000GHz
cccccccc;.:odl:.;cccccccccccccc:,. GPU: Intel Kaby Lake-R GT2 [UHD Graphics 620]
:cccccccccccccccccccccccccccc:'. GPU: NVIDIA GeForce MX150
.:cccccccccccccccccccccc:;,.. Memory: 4013MiB / 15873MiB '::cccccccccccccc::;,.
KDE桌面环境下的笔记本配置截图

本文的教程参照Fedora官网的英文升级说明https://docs.fedoraproject.org/en-US/quick-docs/upgrading-fedora-offline/ 所有操作都是个人笔记本实战操作,同时也会把遇到的问题记录下来。
1.系统升级到最新状态
sudo dnf upgrade --refresh
2.下载Fedora 44升级包
sudo dnf system-upgrade download --releasever=44
在命令过程过程中家里的WiFi不稳定,下载一点就进度不动了,因此我用了Ctrl+C停止,再次使用如上的命就报错
Problem 1: installed package kdelibs-webkit-6:4.14.38-49.fc43.x86_64 requires kdelibs(x86-64) = 6:4.14.38-49.fc43, but none of the providers can be installed- kdelibs-6:4.14.38-49.fc43.x86_64 does not belong to a distupgrade repository- problem with installed packageProblem 2: problem with installed package- package sddm-wayland-miriway-26.01-1.fc44.noarch from fedora conflicts with sddm-greeter-displayserver provided by sddm-wayland-plasma-6.6.4-1.fc44.noarch from fedora- sddm-wayland-plasma-6.6.4-1.fc43.noarch does not belong to a distupgrade repository- conflicting requests
你可以尝试添加到命令行中:--allowerasing 允许删除和安装软件包来解决问题
按照提示更换了命令,正常继续
sudo dnf system-upgrade download --releasever=44 --allowerasing
由于我使用Fedora安装了很多软件,所以提示下载7GB文件,每个人的升级包下载大小不同。
Transaction Summary:Installing: 218 packagesUpgrading: 4075 packagesReplacing: 4097 packagesRemoving: 2 packagesDowngrading: 6 packages本次要处理的软件包总大小为 7 GiB. 还需下载 7 GiB。
此次操作完成之后,908 MiB 额外的空间被使用 (安装 20 GiB, 删除 20 GiB)。
3.确认导入新的GPG密钥
离线事务测试中
导入 OpenPGP 密钥 0x6D9F90A6:用户ID : "Fedora (44) <fedora-44-primary@fedoraproject.org>"指纹 : 36F612DCF27F7D1A48A835E4DBFCF71C6D9F90A6来源 : file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-44-x86_64
Is this ok [y/N]: y
该密钥成功导入。
4 准备重启升级
rpm包下载后离线事物测试完成
[4299/4299] Total 100% | 0.0 B/s | 0.0 B | 00m27s
离线事务测试中
已经存储的事务可以离线执行。运行 "dnf5 offline reboot" 以重新启动并运行事务。若要取消事务并删除已下载的文件,须使用 "dnf5 offline clean" 命令。
完成!
按照提示运行重启命令
sudo dnf5 offline reboot
5 电脑重启后升级过程
电脑重启后开始升级,请耐心等待,升级过程大概20-30分钟,根据下载升级包的大小、电脑配置差异升级过程时间有所不同。


6 完成升级后重启,升级Fedora 44成功
yijunzhao@thinkpad-t480 ~ neofetch.',;::::;,'. yijunzhao@thinkpad-t480 .';:cccccccccccc:;,. ----------------------- .;cccccccccccccccccccccc;. OS: Fedora Linux 44 (Workstation Edition) x86_64 .:cccccccccccccccccccccccccc:. Host: 20L5A00YHK ThinkPad T480 .;ccccccccccccc;.:dddl:.;ccccccc;. Kernel: 6.19.14-300.fc44.x86_64 .:ccccccccccccc;OWMKOOXMWd;ccccccc:. Uptime: 4 mins
.:ccccccccccccc;KMMc;cc;xMMc:ccccccc:. Packages: 4381 (rpm)
,cccccccccccccc;MMM.;cc;;WW::cccccccc, Shell: zsh 5.9
:cccccccccccccc;MMM.;cccccccccccccccc: Resolution: 1920x1080
:ccccccc;oxOOOo;MMM0OOk.;cccccccccccc: DE: Plasma 6.6.4
cccccc:0MMKxdd:;MMMkddc.;cccccccccccc; WM: kwin
ccccc:XM0';cccc;MMM.;cccccccccccccccc' Theme: Breeze Light [Plasma], Breeze [GTK2/3]
ccccc;MMo;ccccc;MMW.;ccccccccccccccc; Icons: breeze [Plasma], breeze [GTK2/3]
ccccc;0MNc.ccc.xMMd:ccccccccccccccc; Terminal: gnome-terminal
cccccc;dNMWXXXWM0::cccccccccccccc:, CPU: Intel i7-8550U (8) @ 4.000GHz
cccccccc;.:odl:.;cccccccccccccc:,. GPU: Intel Kaby Lake-R GT2 [UHD Graphics 620]
:cccccccccccccccccccccccccccc:'. GPU: NVIDIA GeForce MX150
.:cccccccccccccccccccccc:;,.. Memory: 3507MiB / 15874MiB '::cccccccccccccc::;,.
KDE Plasma 6.6.4


Gnome 50


7 升级磁盘空间不足处理
我的笔记本电脑下载Fedora 44的升级包有6.8GB,下载后升级提示根目录空间不足,所以要考虑清理部分空间处理。
Fedora 44使用DNF5,下载的升级包路径在/usr/lib/sysimage/libdnf5/offline,将其迁移到别的分区/opt(我笔记本电脑为/opt单独创建的独立分区)
#创建转移的新目录
sudo mkdir -p /opt/upgrade-cache/offline
#拷贝转移升级包文件
sudo cp -a /usr/lib/sysimage/libdnf5/offline/* /opt/upgrade-cache/offline/
#删除原有升级包文件
sudo rm -rf /usr/lib/sysimage/libdnf5/offline/*
把绑定挂载写入 /etc/fstab,让它在系统启动的最早阶段就生效,这样离线升级就能找到包,否则系统重启后无法找到新的下载包位置
# 假设你的包备份在 /opt/upgrade-cache/offline
# 先确保这个目录存在并且里面有包
ls /opt/upgrade-cache/offline/packages/# 写入 fstab(让绑定挂载在重启后仍然有效)
echo "/opt/upgrade-cache/offline /usr/lib/sysimage/libdnf5/offline none bind 0 0" | sudo tee -a /etc/fstab# 立刻挂载验证
sudo mount -a
sudo systemctl daemon-reload
ls /usr/lib/sysimage/libdnf5/offline/packages/ # 确认能看到包
然后继续执行即可
sudo dnf5 system-upgrade download --releasever=44
sudo dnf offline reboot
待升级完成后,特别注意要将挂载点关闭,/etc/fstab对应的注释或删除
#remove upgrade files
#/opt/upgrade-cache/offline /usr/lib/sysimage/libdnf5/offline none bind 0 0
同时删除原来转移的目录路径
sudo rm -rf /opt/upgrade-cache
8 升级后的可选任务(官网升级补充说明)
以下内容为Fedora 44升级的官网说明,将英文翻译为中文,大家根据自身需要选择操作即可。
我个人实际操作过Update rescue kernel 更新救援内核,因为系统开机由GRUB引导,救援内核不做单独处理更新的话显示的还是Fedora 43,因此更新救援内核操作非常有必要。
这些都是升级成功后你可以完成的一些任务。
Update system configuration files更新系统配置文件
大多数配置文件都存储在 /etc 文件夹里。如果你更改了包的配置文件,RPM 会创建新文件,格式包括 .rpmnew(新的默认配置文件)或 .rpmsave(备份的旧配置文件)。你可以搜索这些文件,或者使用简化流程的 rpmconf 工具。要安装 rpmconf,请输入:
sudo dnf install rpmconf
Once the install is complete enter:
安装完成后,请进入:
sudo rpmconf -a
如果你用 rpmconf 升级升级包附带的系统配置文件,有些配置文件可能会发生变化。升级后你应该验证 /etc/ssh/sshd_config、/etc/nsswitch.conf、/etc/ntp.conf 等信号。例如,如果 OpenSSH 升级,sshd_config 会恢复为默认包配置。默认包配置不启用公钥认证,但允许密码认证。
Update GRUB bootloader on BIOS systems在 BIOS 系统上更新 GRUB 引导加载程序
安装 BIOS 固件的系统已更新 GRUB RPM 包。然而,已安装或嵌入的引导加载程序从未被自动更新。在 Fedora Linux 版本之间更新它是个好主意。
Find the device node the /boot/ directory is located on:
查找 /boot/ 目录所在的设备节点:
sudo mount | grep "/boot "
/dev/sda4 on /boot type ext4 (rw,relatime,seclabel)
设备节点是 /dev/sda4。重新安装引导加载程序,同时指定设备节点但不标注编号:
sudo grub2-install /dev/sda
正确的输出应为:
Installing for i386-pc platform.
Installation finished. No error reported.
Clean-up retired packages清理退役包
每次发布时,Fedora 都会淘汰一些软件包。原因有很多:这些包变得过时、上游死了,或者维护者退出。Fedora 不再分发这些软件包;不过,它们仍然存在你的系统中。这些套餐不会获得升级。强烈建议将其移除。
如果跨版本升级(例如 Fedora Linux 43 到 44),请执行以下命令:
sudo dnf install remove-retired-packages
remove-retired-packages
如果你在两个版本间升级(例如 Fedora Linux 42 到 44),你必须提供旧版本来移除- 退休包 :
sudo dnf install remove-retired-packages
remove-retired-packages 42
Clean-up old packages 清理旧包
可以看到重复的包(安装了多个版本的包),包括:
sudo dnf repoquery --duplicates
可以用以下方法去除它们:
sudo dnf remove --duplicates
对于官方仓库的软件包,应安装最新版本。不过,系统中仍存在的一些软件包可能已不在仓库中。要查看这些套餐的列表,可以:
sudo dnf list --extras
如果你看到不需要或不常用的包裹,可以用以下方式将其移除:
sudo dnf remove $(sudo dnf repoquery --extras --exclude=kernel,kernel-\*,kmod-\*)
您可以安全移除不再使用的包裹:
sudo dnf autoremove
Clean-up old kernels 清理旧内核
启动到最新内核并测试系统后,你可以移除之前的内核。即使 DNF 自动删除后,旧内核依然存在,以避免无意删除。
移除旧内核的简单方法之一是使用保留最新内核的脚本。以下脚本在 Fedora 更新内核时都能正常工作,且不依赖系统升级。
#!/usr/bin/env bashold_kernels=($(dnf repoquery --installonly --latest-limit=-1 -q))
if [ "${#old_kernels[@]}" -eq 0 ]; thenecho "No old kernels found"exit 0
fiif ! dnf remove "${old_kernels[@]}"; thenecho "Failed to remove old kernels"exit 1
fiecho "Removed old kernels"
exit 0
Clean-up old keys trusted for RPM package signing清理用于 RPM 包签名的旧密钥
来自旧版 Fedora 和第三方仓库的密钥会随着时间积累到 RPM 数据库中。你可以用以下方法移除不再引用 /etc/yum.repos.d/ 的密钥:
sudo dnf install clean-rpm-gpg-pubkey
sudo clean-rpm-gpg-pubkey
Clean-up old symlinks 清理旧符号链接
升级后文件系统中可能会出现悬挂的符号链接。你可以通过安装符号链接工具并删除旧链接来清理悬挂的链接。
sudo dnf install symlinks
安装好工具后,你可以像下面所示的符号链接进行审计。-r 代表递归。
sudo symlinks -r /usr | grep dangling
在核实完毕失效的符号链接列表后,你可以像下面所示删除它们。-D 是删除。
sudo symlinks -r -d /usr
Update rescue kernel 更新救援内核
救援内核和初始化响应由 Anaconda 在系统安装时生成。initramfs 会随着内核更新而更新,但救援内核可能不会。救援内核是否更新取决于系统配置。
如果救援内核已过期,则发出以下命令以重新生成它。
sudo rm /boot/*rescue*
sudo kernel-install add "$(uname -r)" "/lib/modules/$(uname -r)/vmlinuz"
救援内核的再生过程可以通过安装 dracut-config-rescue 包实现自动化。
sudo dnf install dracut-config-rescue
安装后,只要 dracut 是初始生成器,救援内核就会被重新生成。详情请参见 /usr/lib/kernel/install.d/51-dracut-rescue.install 。
Resolving post-upgrade issues升级后问题的解决
Rebuilding the RPM database重建 RPM 数据库
如果你在使用 RPM/DNF 工具时看到警告,说明你的数据库可能损坏了。你可以重建它,看看是否能解决问题。一定要先备份 /usr/lib/sysimage/rpm。要重建数据库,请执行:
sudo rpm --rebuilddb
Using distro-sync to resolve dependency issues使用发行版同步解决依赖问题
系统升级工具默认使用 DNF 发行版同步 。如果你的系统部分升级了,或者遇到包依赖问题,可以尝试手动运行另一个发行版同步,看看是否能解决问题。这会尝试让你已安装的软件包在当前启用的仓库中保持相同版本,即使必须降级某些软件包:
sudo dnf distro-sync
也可以使用 --允许删除选项,移除无法满足的依赖包。确认前请务必查看哪些包裹会被移除:
sudo dnf distro-sync --allowerasing
Relabel files with the latest SELinux policy使用最新的 SELinux 策略重新标记文件
如果你遇到关于 SELinux 政策的警告,说明有些文件可能有错误的 SELinux 权限。如果过去禁用了 SELinux,这种情况可能会发生。要在系统上重新标记 SELinux,请执行以下命令然后重启:
sudo fixfiles -B onboot
启动过程可能会很长,因为它会检查并修复系统中所有文件的 SELinux 权限标签。
