
Linux 新手怕整壞系統:揀 immutable distro 定 Btrfs snapshot?
由更新、開機救援到備份,拆清兩條復原路線
XDA Developers 作者 Ty Sherback 提出,怕整壞 Linux 未必要直上 immutable distro,傳統系統配 Btrfs snapshot 已經可以提供相當實用嘅「復原安全網」。個方向有道理,尤其係新手裝錯套件、改壞設定,或者開發者測試 AI、coding agent 同實驗版 driver 嗰陣。不過,snapshot 同 immutable 系統只係有部分效果重疊,背後嘅保護方式其實差好遠。
Immutable 係預防,snapshot 係事後還原
以 Fedora Silverblue 呢類系統做例,核心系統樹維持唯讀,更新會建立另一個可開機 deployment,等成個更新準備好,系統先會喺下次開機轉用新版。萬一新版有問題,仲可以返去上一個 deployment。Flatpak、Toolbox 或 Distrobox 就負責日常 app 同開發工具,盡量唔掂個 base system。
Btrfs snapshot 行另一條路。佢用 copy-on-write 記住某個時間點嘅 subvolume 狀態,建立速度快,初期亦唔使完整複製所有檔案。你照樣可以用一般 distro、直接裝套件同改 /etc;整出事之後,再返去更新前嗰個狀態。佢冇唯讀系統基礎、atomic update 或 app sandbox,所以唔可以話做到 immutable distro 嘅全部承諾。

圖片:Limine Bootloader
Snapper 幫你留低「更新前」同「更新後」
淨係揀 Btrfs 格式化硬碟,系統唔會自動變成時光機。你仲要有合適嘅 subvolume layout,再交畀 Snapper 建立、整理同清除 snapshot。openSUSE 整合得比較完整:Zypper 或 YaST 改系統前後,可以分別建立 pre、post snapshot;出問題時既可以比較改咗咩檔案,亦可以回復整個 root 狀態。
其他 distro 都可以砌出類似效果,不過自動 snapshot 會唔會跟套件管理器連動、/home 同 /var 有冇分開、舊 snapshot 點清理,全都視乎安裝方式。Btrfs 官方亦提醒,snapshot 唔會遞迴包含另一個 nested subvolume。分割設計做得唔啱,還原時可能只救返系統檔,亦可能意外倒帶本來想保留嘅資料。
開唔到桌面,boot menu 先真正有用
系統更新後連桌面或登入畫面都入唔到,呢個時候已經入唔到系統做 rollback。grub-btrfs 可以掃描 Btrfs snapshot,再將佢哋加入 GRUB 選單;成功進入可用狀態後,通常仲要正式執行 rollback,建立新嘅可寫 root,再重開機。
呢段流程冇一套指令適用於所有機。kernel 同 initramfs 放喺邊、/boot 有冇納入 snapshot、GRUB 定 Limine、全碟加密點解鎖,都會影響舊 snapshot 開唔開得返。openSUSE 預設配置相對省心;自己喺 Ubuntu、Debian、Arch 或其他 distro 加 Snapper 同 grub-btrfs,就應該趁系統正常時實際試一次開機同還原,唔好等壞機先發現個選單用唔到。
邊類用家適合邊條路?
想跟一般 Linux 教學直接用 apt、dnf 或 pacman,會裝 kernel module、改 system service,又經常試驗開發工具,傳統 distro 加 Btrfs、Snapper 同可開機 snapshot 比較順手。你保留一般 Linux 嘅操作方式,實驗失手亦有路返轉頭。不過,前提係你肯花時間理解 snapshot 範圍、定期清理,同驗證復原流程。
如果部機主要用嚟上網、寫文件、coding,而你接受用 Flatpak 裝桌面 app、用 container 放開發環境,immutable distro 會少好多系統層維護工夫。Silverblue 嘅 package layering 仍可加入 RPM,但官方文件講明會建立新 deployment,通常要重開機先用到;跟住傳統 distro 教學逐步裝工具時,確實會多一層轉換成本。
Snapshot 同隻硬碟一齊出事
Btrfs 官方寫得好直接:snapshot 同原始 subvolume 起初共用資料 block;壞 sector、檔案系統損壞、誤寫成隻碟,或者 SSD 直接死掉,兩邊都可能一齊冇。勒索軟件或擁有足夠權限嘅誤操作,亦有機會刪埋本機 snapshot。Snapshot 適合救更新、設定同套件事故,唔係獨立備份。
重要 project、相片、模型同工作資料,仍然要另外備份去另一隻碟、NAS 或可信雲端,最好再留一份唔長期掛載嘅副本。Btrfs send/receive 可以將 read-only snapshot 複製去另一個 Btrfs filesystem,複製到另一個 filesystem,先可以避免原碟出事時連 snapshot 都一齊冇。怕整壞系統嘅新手,可以先睇自己揀嗰個 distro 有冇完整支援 rollback;整合成熟與否,實際影響往往大過檔案系統個名。
參考來源
- XDA Developers — Immutable Linux distros are not the only way to build a system you can't break — original report
- Btrfs subvolume 官方文件 — 確認 snapshot 嘅 copy-on-write 原理、nested subvolume 限制,同 snapshot 唔等於備份
- Btrfs send 官方文件 — 確認 snapshot 可以經 send/receive 複製去另一個 Btrfs filesystem
- SUSE Snapper 系統復原文件 — 確認 Snapper 自動 snapshot、bootable snapshot、rollback 要求同復原流程
- grub-btrfs 官方 GitHub — 確認工具可為 Btrfs snapshot 建立 GRUB 開機選單項目
- Fedora Silverblue Getting Started — 確認 rpm-ostree package layering、deployment 同重開機要求
- Fedora Silverblue 技術資料 — 確認唯讀檔案系統配置、OSTree 系統樹同可寫目錄安排
- Limine 官方 GitHub — 確認 Limine 係 bootloader/boot manager,同核對官方 boot menu 圖片
本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。







