Fedora41 升版 42 的大災難錯誤
近期幫我的桌機從 Fedora 41 升級到 Fedora 42,這是我第二次升級 Fedora 41。第一次是協助 Intel 125H 微電腦(內顯)升級,過程很順利,因此這次操作稍微輕忽。
這兩次升級的主要差異在於:
-
桌機有安裝 Nvidia 官方驅動。
-
這次使用手機 USB 網路分享,升級重開機後,疑似未自動連上網路,導致升級過程中部分套件未能完整更新。
升級後進入系統時,畫面只有白屏,並顯示「系統有錯誤,請聯絡管理員」,無法進入登入畫面,也無法進行任何操作(0716修正) 應該能進tty模式。
0716新增 應是安裝Nvidia專用驅動後,系統衝突,連白畫面都無法到達,所以透過Grub
透過 Grub,在對應 kernel 的 linux 行加入 nomodeset 3,強制以文字模式啟動,進入 TTY 修復模式。
一開始懷疑是 Nvidia 驅動與新版 GNOME 相容性問題,嘗試過移除與重裝官方及 Rpmfusion 驅動,但無法解決,系統依然無法進入圖形介面。
進一步檢查發現,cat /etc/os-release 顯示已為 Fedora 42,但系統內部仍有不少套件維持在 41 版本(例如 GNOME 與某些核心元件)。
這種版本混雜,導致 GNOME 啟動時崩潰,無法進入桌面,只能進 TTY 模式維修。
操作紀錄
由於先前曾誤刪 NetworkManager,導致開機時網路完全沒啟動,網卡也沒拿到 IP。
網路完全沒啟動,網卡沒 IP
修復步驟(臨時手動啟用網卡)
- 啟動網卡
先透過ip addr找到網卡 如enp6s0 sudo ip link set enp6s0 up - 手動分配 IP(路由器所在網段)
sudo ip addr add 192.168.1.123/24 dev enp6s0 sudo ip route add default via 192.168.1.1(這邊
192.168.1.1家 or 公司的閘道器,通常是路由器 IP) - 設置 DNS 解析(臨時)
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf - 測試網路是否通
ping -c 3 8.8.8.8 ping -c 3 mirrors.fedoraproject.org
處理套件同步與衝突
使用 dnf distro-sync 同步時,遇到多個套件依賴衝突或版本錯誤。
目前解法為:
- 先移除出錯套件
sudo dnf remove <出錯套件>- 先將有問題(如升級衝突、版本錯誤或殘留)的套件移除,讓依賴樹恢復乾淨,避免後續操作又被同一個問題卡住。
- 再安裝必要套件
sudo dnf install <必要套件>- 重新安裝所需的核心/重要套件,確保使用的是新版本並補齊所有依賴。
- 重複執行
distro-sync,直到全部同步完成。必要時可加上--allowerasing參數強制排除有衝突的舊套件。
補充建議
-
網路連線不穩或升級途中網路中斷,是造成系統版本混雜的主因,升級時建議全程使用穩定的有線網路,並確認所有套件都已完整升級。
-
針對無法同步或依賴衝突,建議每次遇到報錯時,先確認錯誤訊息,針對特定套件移除再安裝,並多次重複同步,直到不再出現衝突。
目前持續Debug中
20240716 終於升版成功
總結以下幾點問題
一、Fedora 系統版本升級
我原先使用
sudo dnf system-upgrade download --releasever=42
sudo dnf system-upgrade reboot
但後來因 Fedora 42 已採用新工具(dnf5)
sudo dnf5 offline upgrade --releasever=42
sudo dnf5 offline reboot
但因為沒有正確完成離線升級步驟,導致系統套件版本部分仍停留在 Fedora 41,發生嚴重相依性衝突。
有可能是因為發現指令的修改 讓我reboot並未打在 upgrade後,造成升級錯誤 這要追蹤紀錄
二、NVIDIA 專有驅動重新安裝
升級後,原本的 NVIDIA 驅動 (run file: 570.153.02) 無法正常運作,畫面黑屏
進入 TTY (Ctrl+Alt+F3)
sudo ./NVIDIA-Linux-x86_64-570.153.02.run
安裝失敗或成功但啟動畫面仍然異常(可能 Wayland 衝突)
編輯 /etc/gdm/custom.conf,設置
強制使用 Xorg 而非 Wayland
WaylandEnable=false
DefaultSession=gnome-xorg.desktop
安裝了 NVIDIA .run 專有驅動
嘗試強制用 X11 (WaylandEnable=false) 但反而完全黑畫面,連 tty 都進不去
通常表示:.run 驅動與 kernel 模組或 framebuffer 設定發生衝突,導致整個顯示系統(包含 TTY)也壞了
開機進 GRUB,編輯 kernel 參數,按e編輯
nomodeset:避免驅動初始化 framebuffer,能避免黑畫面
3:強制進入 runlevel 3(multi-user.target),不載入 GUI
卸載NVIDIA驅動後,終於能進指令模式
三、系統升級問題排查與修復
GPU問題解決後,系統仍異常
嘗試了許多操作
- 清理 repo 快取,重建 dnf metadata
sudo dnf clean all sudo dnf makecache - 多個libicu 衝突
- 因為 libicu 套件衝突(版本混亂,Fedora 41 與 42 混合)
sudo dnf remove libicu\* libtiny\*
sudo dnf install libicu libicu-devel
- 使用 distro-sync 同步套件
sudo dnf distro-sync --releasever=42 --allowerasing --skip-broken -y用以強制同步系統套件到 Fedora 42,過程中遇到許多受保護的套件無法同步。
- 強制手動移除 Fedora 41 套件資料庫記錄
sudo rpm -e --justdb --nodeps grub2-tools-minimal selinux-policy selinux-policy-targeted
此步驟是為了解決嚴重的相依性循環
四、網路問題處理 (DNS & NetworkManager)
因無法同步我一度移除 NetworkManager,導致網路中斷與無 DNS
- 手動恢復網路連線
sudo ip link set dev enp6s0 up
sudo ip addr add 192.168.50.199/24 dev enp6s0
sudo ip route add default via 192.168.50.1
echo 'nameserver 8.8.8.8' | sudo tee /etc/resolv.conf
- 測試 DNS 和網路連通性
ping 8.8.8.8
nslookup mirrors.fedoraproject.org
- 修正 DNS 解析異常 (IPv6 precedence issue)
echo 'precedence ::ffff:0:0/96 100' | sudo tee -a /etc/gai.conf
後來發現修改這個nslookup還是無法解析host
- 最終透過修改
/etc/nsswitch.conf
從
hosts: myhostname mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns files
修正為
hosts: files dns
問題根源是nsswitch.conf 配置異常
- 重新安裝 NetworkManager
sudo dnf install NetworkManager -y
sudo systemctl enable --now NetworkManager
網路與 DNS 終於正常運作
五、EFI 與 GRUB2 問題處理
系統載入新內核
# 找出 grub.cfg 位置
sudo find /boot -name "grub.cfg"
# 重新生成 grub.cfg 位置若有更動 os 會提示
sudo grub2-mkconfig -o 新位置
六、安裝 GNOME 桌面環境並啟用 GDM
# 安裝 GNOME 桌面環境
sudo dnf-3 groupinstall "GNOME Desktop Environment" -y
# 啟用 GDM(圖形登入管理)
sudo systemctl set-default graphical.target
sudo systemctl enable --now gdm
sudo reboot
使用dnf(連結到dnf5)碰上語法已異動,修正為dnf-3
dnf-3是 Fedora 傳統的 dnf 版本,通常穩定度高。- 在升級災難發生後,使用
dnf-3通常能有效避開dnf5的問題,提供更穩定的套件解析
關鍵指令
# Fedora 離線升級
sudo dnf5 offline upgrade --releasever=42
# rpm 強制清空舊資料庫
sudo rpm -e --justdb --nodeps $(rpm -qa | grep fc41)
# DNS/nsswitch.conf 修正
# /etc/nsswitch.conf:
hosts: files dns
# 強制指定 IPv4 DNS
echo 'nameserver 8.8.8.8' | sudo tee /etc/resolv.conf
# GNOME 桌面重裝
sudo dnf-3 groupinstall "GNOME Desktop Environment" -y
sudo systemctl enable --now gdm
這次問題與操作的總結
| 階段 | 問題原因 | 修復方法與使用指令 |
|---|---|---|
| 升級 Fedora 41→42 | 套件下載不完全或 repo 配置錯誤 | 使用 dnf system-upgrade 和 dnf5 offline 方法;但最終因 repo 衝突導致混亂 |
| NVIDIA 驅動衝突 | 專有驅動與新內核衝突 | 使用 NVIDIA 官方 run 檔安裝,設置 WaylandEnable=false 強制用 Xorg |
| 網路、DNS 異常 | NetworkManager 誤刪、 /etc/nsswitch.conf 配置錯誤 |
手動設置網路 (ip addr add)、強制 IPv4 (/etc/gai.conf)、修改 /etc/nsswitch.conf 為 files dns 修正 DNS |
| 套件相依性災難 | 大量 Fedora 41 與 Fedora 42 混合相依性衝突 | 使用 rpm -e --justdb --nodeps 清空 rpm 資料庫內所有 Fedora 41 舊版套件 |
| GRUB、EFI啟動問題 | 多個 grub.cfg 路徑混亂、grub 未更新 | 使用 grub2-mkconfig 更新 grub 啟動設定 |
| GNOME 桌面缺失 | 升級後桌面環境損壞或移除 | 使用 dnf-3 groupinstall "GNOME Desktop Environment" 重新安裝 GNOME |