你喜歡Distro-hopping,那有想過DE-hopping嗎?從GNOME換到KDE Plasma,再換到XFCE,甚至用極簡的Sway?將一切交給OSTree管理吧!你們要將一切的憂慮卸給祂,因為祂顧念你們。
在採用Atomic技術的Linux發行版,用rpm-ostree可以嘗試各種桌面環境,決定哪個桌面比較適合你再繼續用。不用重裝系統。
這是我看了Fedora Magazine得出的想法。
Linux允許多個桌面環境並存。
德國哲學家叔本華說過,人生如同鐘擺,不斷在痛苦和無聊之間搖擺。我想Linux用戶喜歡不斷折磨自己進行distro-hopping,就是一種砥礪哲學悟性的方式。
我常常幹這種事,因為覺得GNOME難用就裝KDE Plasma來用,可是又覺得KDE Plasma不穩定回去用GNOME,如此往復。
以前Fedora要安裝多重桌面環境的做法是透過dnf group install,讓多個桌面環境並存。因為Display Manager允許登入多個desktop session,所以在登入介面使用者可以選擇要啟動哪個桌面。可是請神容易送神難,日後要移除桌面環境的時候可能因為依賴關係誤刪關鍵組件。此外,一些桌面環境如果Display Manager錯誤,可是不會讓你正常使用的,例如GNOME就強制依賴GDM,用SDDM會無法鎖定螢幕。
另外一種方法是雙重開機,裝不同的系統體驗桌面環境,然後/home分區共用這樣。可是,這樣又顯的太麻煩了些。
在作業系統邁入映像檔部署的時代之後,包含桌面環境與Linux核心在內的檔案系統可以被視為一個整體的OCI映像檔。因此透過rpm-ostree rebase的功能,就能將目前系統映像替換為搭載其他桌面的映像。
概念圖如下:
使用者家目錄和/etc的資料會保留下來。且如果你程式主要透過Flatpak安裝的話,也不需要重裝程式。重開機後僅是桌面環境變了而已。雖說無法兩個桌面同時共存,但是大部分時候你也不想看到其他桌面的系統程式出現互相干擾吧?
我自己的一個具體例子是,曾經需要幫Surface Go 2測試適合的桌面環境,我就用這種方式在KDE Plasma與GNOME桌面之間來回切換,不用重裝整個Fedora Atomic系統。
GO! OSTree, IS GOD.
1. Fedora Atomic桌面環境有哪些#
Fedroa Atomic Desktop是一個大型專案的總稱,下轄許多Spin版本的桌面。目前的桌面的映像檔有:
- GNOME (Silverblue)
- KDE Plasma (Kinoite)
- COSMIC (Cosmic-atomic)
- Sway (Sericea)
- Budgie (Onyx)
未來可能還會有更多桌面納入,考慮到未來性應該是Wayland桌面優先。另外這些Spin的命名讓人困惑,未來除了Silverblue和Kinoite保留之外,其他Spin都是直接用桌面原名稱呼了。
2. 確認遠端可用映像檔#
- 這裡要用ostree指令,預設的遠端儲存庫是Fedora專案的
sudo ostree remote refs fedora- 然後就會看到所有可用映像
# 範例輸出
fedora:fedora/43/x86_64/cosmic-atomic
fedora:fedora/43/x86_64/kinoite
fedora:fedora/43/x86_64/onyx
fedora:fedora/43/x86_64/sericea
fedora:fedora/43/x86_64/silverblue- 當然除了Fedora專案以外,你也可以用
ostree remote add指令匯入第三方的GitHub Container Registry,讓你rebase到Universal Blue (如Bazzite) 提供的映像檔,或是自己建置的映像。本文暫不討論rebase到自訂映像檔的操作,用Fedora專案的就好。
3. 處理layered packages#
為了防止我的layered packages與即將切換的映像檔的套件衝突,目前我是手動把layered packages列表複製下來,在rebase完成之後再把他們裝回來。
另外一種作法是使用rpm-ostree local commit,將你目前layered packages與原本系統的基礎映像,融合成為一個新的本機映像檔。這樣的話可以更方便退回到那個狀態。只是,這樣未來會很難更新系統,因為Fedora上游發表的映像檔,未來更新還是蓋掉你的local layered packages。
由於這裡只是移除套件,程式設定檔應該不會受影響才對。
- 查看目前系統版本
sudo rpm-ostree status- 將它列出的layered pacakges列表複製下來
# 範例輸出
● fedora:fedora/43/x86_64/kinoite
Version: 43.20260304.0 (2026-03-04T00:31:30Z)
BaseCommit: 6be04164e31b9572ef0754ded2a3d42c761c68f7c831e913927e85693312e19d
GPGSignature: Valid signature by C6E7F081CF80E13146676E88829B606631645531
LayeredPackages: distrobox fcitx5 fcitx5-chewing fcitx5-chinese-addons fcitx5-configtool fcitx5-gtk3 fcitx5-gtk4 fcitx5-qt fcitx5-qt6
gwenview htop igt-gpu-tools iio-sensor-proxy kamoso kate libcamera-gstreamer libcamera-qcam libcamera-tools mpv
nvtop tailscale v4l2loopback vim vlc
LocalPackages: rpmfusion-free-release-43-1.noarch rpmfusion-nonfree-release-43-1.noarch- 移除所有layered packages
sudo rpm-ostree reset- 重開機
sudo systemctl reboot4. 開始rebase映像檔#
- 為了防止無法開機,可以先把你認為目前穩定的系統版本給釘住,讓它不要被系統自動移除:
sudo rpm-ostree status
sudo ostree admin pin 數字- 然後開始rebase,舉例來說,我現在要從Kinoite切換到Silverblue,用以下指令切換。最好是對應目前Fedora版本的,不要隨便升級或者降級大版本。
sudo rpm-ostree rebase fedora:fedora/43/x86_64/silverblue通常開機啟動的Display Manager的服務應該會在rebase之後自己替換掉,變成桌面對應的Display Manager,像GNOME就應該用GDM。
看看目前Systemd的Display Manager服務指向哪個Display Manager。
sudo systemctl status display-manager.service- 若非GDM,再手動切換:
sudo systemctl disable sddm
sudo systemctl enable gdm5. 切換回原本的桌面映像檔#
如果之後沒有進行layer packages的操作(rollback只能退一版),我們完全能用rollback指令,回滾到切換桌面之前的映像。
- 使用
sudo rpm-ostree rebase確認狀態
#範例輸出
Deployments:
● fedora:fedora/43/x86_64/silverblue
Version: 43.20260304.0 (2026-03-04T00:29:00Z)
Commit: 4118fa007e90cb1563265366f8e9057d84aecdc1a4ad24c97f720a91cc8d23bc
GPGSignature: Valid signature by C6E7F081CF80E13146676E88829B606631645531
fedora:fedora/43/x86_64/kinoite
Version: 43.20260304.0 (2026-03-04T00:31:30Z)
Commit: 6be04164e31b9572ef0754ded2a3d42c761c68f7c831e913927e85693312e19d
GPGSignature: Valid signature by C6E7F081CF80E13146676E88829B606631645531- 用這個指令回滾,然後重開機。
sudo rpm-ostree rollback6. 桌面環境設定檔互相污染的問題#
Linux桌面環境會在使用者家目錄丟下設定檔(dot files),並不會隨著rebase消失。這可能造成污染問題,例如KDE Plasma會將所有GTK程式都變成Breeze主題。換到GNOME的話依然會顯示錯誤的Breeze風格。
這需要手動調回來。例如安裝gnome-tweaks程式能將GTK成的外觀還原回Adwaita主題。在GNOME系統設定 → 外觀也能強制重設主題。
如果要隔離每個桌面的設定檔,我們或許應該用systemd-homed給每個桌面建立個別使用者。或者用BorgBackup程式,將系統映像檔與家目錄的dot files一起打包備份。


