快轉到主要內容

Fedora Silverblue安裝與使用,用ostree保證系統穩定性的Linux發行版

分類   Linux系統 Linux系統安裝教學
標籤   Fedora Immutable Distro
🗓️ 民國112年 癸卯年
✍ 切換正體/簡體字
目錄

分享Ivon使用Fedora Silverlbue的心得。

1. 簡介Fedora Silverblue
#

Fedora有很多種分支,較多人用的分支是為「Fedora Workstation」,而本文介紹的乃是相對新穎的「Fedora Atomic Desktop」分支版。

Fedora Silverblue是2018年推出的Linux發行版,基於更早推出的Fedora CoreOS所開發,主要面向的客群為桌面用戶。

關於名字的意義,這講來有點複雜。Silverblue主打不變系統(immutable system)和原子更新(Atomic updates),系統設計上跟傳統的Fedora Workstation不太一樣。「Fedora Silverblue」是指採用GNOME桌面的Immutable系統,後來推出的「Fedora Kinoite」則是指採用KDE桌面的Immutable系統,另外還有採用XFCE、Sway的分支版本。這些可以視為相當於Fedora Spins的存在吧。

2024年,Fedora開發組將所有包含Immutable與Atomic特性的分支統稱為「Fedora Atomic Desktop」,這樣Silverblue和Kinoite便成為了該傘式術語下的子集合,方便人們用來稱呼這類Immutable系統,又不會與傳統的Fedora混淆。


什麼是不變系統(immutable system)呢?它使用ostree管理更新,因此系統本身可視為大型的Git儲存庫。Immutable的系統應當是不可變更的,但若要的話也是可以。使用者所安裝的軟體會被詳細紀錄,就好像對Git repositroy送出commits一樣。系統更新出錯了能隨意回滾(rollback)到舊版。

跟Fedora Workstation一樣,Silverblue系統套件版本很接近上游。儘管有人說Fedora Silverblue是滾動更新模式,但是它版本還是跟著Fedora Workstation跑的。

Fedora Silverblue系統是不可變的,只有少數目錄能夠讀寫。系統更新的時候會下載新版本映像檔,覆蓋掉舊有的系統檔案。這樣能夠順便清除一些沒用的垃圾檔案,防止電腦用久了出現一堆不知道哪來的軟體。使用者應該儘量避免修改系統的東西,轉而使用容器技術來跑軟體。

要類比的話,Silverblue比較接近ChromeOS的作法,不允許使用者隨意修改系統設定,保持更新穩定性。

對傳統Linux的使用者來說,會覺得Silverblue很難「駭」進系統,隨意修改設定值。例如想換桌面,其他發行版也許可以裝套件自行設定,但在Silverblue很困難,可能系統更新之後你做的變更就消失了。目前官方僅提供預裝GNOME與KDE的系統,更多桌面的Spin會在未來加入。

如果想嘗試更穩定的系統,並且知道如何調整工作流以適應Fedroa Silverblue,那麼這個系統還是值得嘗試的。

0. 前置需求
#

Fedora Silverlue不支援DKMS這類原始碼樹外編譯驅動,因此電腦硬體對Linux的支援度必須要夠好,不能有一堆奇怪的驅動要裝。

例如我的MSI Modern 15 A10筆電,雙顯示卡Intel/Nvidia勉強受Fedora Silverblue支援;Wifi網路卡廠牌為Intel,就不需要另外編譯驅動。

只是這台筆電不論哪個發行版,只要系統核心是5.15以後,睡眠(暫停)模式就會睡死。睡死是個小問題,用gnome-tweaks關閉闔上螢幕自動暫停的功能就行。

1. 安裝Fedora Silverblue
#

  1. 至官網下載 Fedora Silverblue的ISO。Fedora Silverblue官方預設的桌面環境為GNOME,若需要KDE請改下載 Fedora Kinoite

  2. Ventoy製作開機隨身碟。

  3. 選取Install Fedora Silverblue 37

  4. 語言選中文

  5. 接著只要點「安裝目標位置」,點選「取回所有空間」將目標硬碟格式化為BTRFS,即可點選安裝。

  6. 等待安裝完成。Fedora Silverblue會自動安裝GNOME桌面環境的相關程式,還有注音輸入法(ibus-zhuyin)。

  7. 開機後按照螢幕指示建立使用者帳號,並啟用第三方軟體庫。

  8. 因為筆電有獨立顯示卡,還需另外給Fedora安裝Nvidia專有驅動和CUDA套件。

# 更新系統至最新板
sudo rpm-ostree upgrade
sudo systemctl reboot
# 安裝RPM Fusion
sduo rpm-ostree install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
sudo systemctl reboot
# 安裝Nvidia驅動
sudo rpm-ostree install akmod-nvidia xorg-x11-drv-nvidia xorg-x11-drv-nvidia-cuda
sudo systemctl reboot
# 禁止nouveau開機載入
sudo rpm-ostree kargs --append=rd.driver.blacklist=nouveau --append=modprobe.blacklist=nouveau --append=nvidia-drm.modeset=1
sudo systemctl reboot
  1. 我習慣的用法是螢幕顯示交給Intel,程式需要Nvidia時再用 Nvidia PRIME指令切換。

  2. 至於說跑CUDA的方法?使用Podman + Nvidia Container Toolkit,這樣不用在本機安裝CUDA。最低限度的要求變成只要有Nvidia閉源驅動就行。至於Nvidia驅動,Silverblue可以照上述方法用ostree裝,或是使用 ublue事先整合好的Silverblue映像檔

2. Silverblue安裝軟體
#

Silverblue安装軟體的方式有三種。

2.1. Flatpak
#

Flatpak容器技術主要用於安裝圖形化的桌面應用程式,例如Google Chrome和Visual Studio Code。

Silverblue內建的GNOME軟體商店就能下載軟體,只不過內建的是Fedora自己的Flatpak軟體庫。

如果要存取較多人使用的Flathub,則按照 官網說明自行加入Flathub軟體庫。未來Silverblue 38會改成預載Flathub的軟體庫。

2.2. Toolbox
#

Fedora Silverblue內建Container Toolbox,基於Podman研發的容器技術,主要用於建立開發環境,建立容器後就能使用熟悉的DNF指令安裝套件。

習慣使用DNF安裝套件的,得將工作流程調整為配合容器環境工作。例如開發Python程式你或許會用虛擬環境防止套件污染,而Toolbx能更方便隔離各個開發環境。

開啟終端機,新建容器並進入:

toolbox create development
toolbox enter development

隨後就能在容器內部使用DNF指令,需要sudo。注意家目錄是會一併掛載進容器的,檔案系統並非完全隔離。

退出容器:

toolbox exit development

順帶一提,如果需要其他Linux系統的工具工作, DistroBox會是更好的選擇,這也是 openSUSE MicroOS推薦使用的工具。

2.3. rpm-ostree
#

修改目前的系統映像檔,疊一層(layer)軟體在目前的系統映像。安裝新軟體就好像在對Git repositroy做commit一樣,是可以追蹤變化的。

若要將軟體安裝至系統就得使用rpm-ostrem,例如VIM和KVM,概念上類似用傳統的DNF安裝軟體。然而不是所有軟體都有rpm-ostree版,rpm-ostree也無法搜尋套件。

舉例,安裝VIM:

sudo rpm-ostree install vim

安裝新軟體後要重新開機才能使用。或者在指令加上--apply-live參數免重開機安裝程式。

另外根據 官方文件,你可以使用rpm-ostree kargs指令,修改開機傳給核心的kernel parameters。

3. 更新與回滾系統
#

Fedroa Silverblue系統的根目錄全部唯讀,更新後直接覆蓋,僅/var/etc分區能修改。然而sudo和systemctl的指令還是能使用,只是軟體不要裝到系統目錄,盡量多採用Flatpak和Toolbx的技術裝軟體。

Silverblue更新全系統套件的指令如下,安裝後需要重新開機。

sudo rpm-ostree-update

更新後,GRUB開機選單會出現新版本和舊版本,點選可以暫時回滾(降級)至舊版本。由於Silverblue的系統設計機制緣故,系統要弄壞很難。

更新系統弄壞了怎麼辦?用指令回滾上一個版本:

sudo rpm-ostree rollback

若要進行大版本更新,例如從Fedora 39升級到Fedora 40,就要用到rebase指令:

sudo rpm-ostree upgrade

sudo rpm-ostree rebase fedora:fedora/40/x86_64/silverblue

參考資料
#

相關文章

初探Void Linux安裝
分類   Linux系統 Linux系統安裝教學
標籤   Linux Runit
免費下載紅帽RHEL 9.1系統,將其安裝至虛擬機
分類   Linux系統 Linux系統安裝教學
標籤   Linux
安裝Alpine Linux為桌面系統教學 (XFCE4 + 中文輸入法)
分類   Linux系統 Linux系統安裝教學
標籤   Alpine Linux

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。