快轉到主要內容

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

· 民國112年癸卯年
·
切換繁體/簡體
分類   Linux系統 Linux系統安裝教學
標籤   Fedora Immutable Distro
目錄

分享Ivon使用Fedora Silverlbue的心得。在上面安裝Fcitx5中文輸入法與Nvidia驅動。

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的支援度必須要夠好,不能有一堆奇怪的驅動要手動編譯安裝。驅動套件最好從Fedora的套件庫下載。

例如我的MSI Modern 15 A10筆電,雙顯示卡Intel + Nvidia勉強受Fedora Silverblue支援;Wifi網路卡廠牌為Intel,大部分驅動受Linux核心與Fedora套件庫支援。

1. 安裝Fedora Silverblue
#

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

  2. Ventoy製作開機隨身碟。

  3. 選取Install Fedora Silverblue

  4. 語言選中文

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

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

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

2. 安裝額外套件
#

Fcitx5中文輸入法
#

GNOME內建的ibus-zhuyin不好用,推薦改用Fcitx5。

  1. 安裝Fcirx5輸入法框架與注音輸入法新酷音
sudo rpm-ostree install fcitx5 fcitx5-chewing fcitx5-gtk3 fcitx5-gtk4 fcitx5-qt fcitx5-qt6 fcitx5-configtool
  1. 設定環境變數
sudo cat <<EOF > /etc/environment
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx
GLFW_IM_MODULE=ibus
EOF
  1. 重開機
sudo systemctl reboot

Nvidia專有驅動
#

  1. 因為我的筆電有MX350獨立顯示卡,還需另外安裝Nvidia專有驅動和CUDA套件。
# RPM Fusion預設已經啟用,所以直接安裝Nvidia專有驅動
sudo rpm-ostree install akmod-nvidia xorg-x11-drv-nvidia xorg-x11-drv-nvidia-cuda

# 編輯核心參數,禁止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映像檔

3. Fedora Silverblue安裝軟體的方法
#

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

Flatpak
#

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

Silverblue內建Flatpak,透過GNOME軟體商店就能下載軟體,存取Flathub的套件庫。

Toolbox
#

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

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

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

# 如果不填寫名字,預設就是建立一個Fedora容器
toolbox create development

# 如果不填寫名字,預設就是建立一個Fedora容器
toolbox enter development

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

退出容器:

toolbox exit development

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

rpm-ostree
#

修改目前的系統映像檔,疊一層(layer)在目前的系統映像。

安裝新軟體就好像在對Git repositroy做commit一樣,是可以追蹤變化的。每次更新系統的時候,rpm-ostree會下載整個新系統的映像檔,然後再套用使用者額外安裝的套件。使用者額外安裝的套件越多,更新就越久。

若要將軟體安裝至系統就得使用rpm-ostree,例如Vim和KVM,概念上類似用傳統的DNF安裝軟體,然而不是所有軟體都有rpm-ostree版本。

舉例,安裝Vim:

sudo rpm-ostree install vim

安裝新軟體後要重新開機才能使用。或者在執行rpm-ostree install指令時加上--apply-live參數,透過overlayfs機制,免重開機就能使用新安裝的軟體。

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

4. 更新與回滾系統
#

Fedroa Silverblue系統的根目錄全部唯讀,更新後直接覆蓋,僅/var/etc分區能修改。

sudo和systemctl的指令還是能使用,只是軟體不要裝到系統目錄,而是應該放到使用者家目錄下,並盡量多採用Flatpak和Toolbx的技術裝軟體。

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

sudo rpm-ostree upgrade

sudo systemctl reboot

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

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

sudo rpm-ostree rollback

若要進行大版本更新,例如從Fedora 41升級到Fedora 42,就要用到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系統安裝教學
標籤   Red Hat Enterprise Linux
Android-x86 QEMU虛擬機安裝教學,在Linux上執行手機APP,支援GPU加速的VM
分類   Linux系統 Linux系統安裝教學
標籤   Android-X86 Linux QEMU-KVM VirGL Scrcpy

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

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