爲何我現在來分享Debian + btrfs?其實我是有打算使用btrfs這個檔案系統,但是Debian的配置太麻煩,因此我先選擇對於btffs支持比較好的Fedora來實作,直到我大致了解btrfs的實作方式、簡單原理,我才抱持資料丟失的風險遷移到Debian,說實在話我還是偏好apt系列的套件管理器以及Debian系列對於源(Source)的管理方式(我在之後講解媒體編解碼器或許會再分享)。在這篇文章最大的差別就在於掛載點的分配(關於掛載點分配,可以參考〈Fedora安裝教學 + 配置btrfs硬碟分割 + btrfs淺談〉) ,只要解決好fstab、子卷和掛載點,其他都和一般安裝Debian(可以參考〈Debian + KDE Plasma 安裝教程與我的KDE桌面美化〉)沒有甚麼不同。
這裡我就想要小小分享我對於Debian對btrfs支持度的問題,雖然Fedora和openSUSE在「安裝程式」上對於btrfs有較好的支援度,而Debian和Ubuntu則沒有,這在一開始我頗有微詞,但經過上手實際操作了一番,我發現Debian的這個劣勢反而是件優勢,因爲強大的shell(Busybox)使我更有彈性的分配掛載點和參數,這是Fedora圖形安裝器無法比擬的(這我在下文會說明一番)。
本文主要是安裝教學,其餘詳細的配置不是重點。推薦閱讀Fedora安裝教學 + 配置btrfs硬碟分割 + btrfs淺談〉。
- 用USB開機,我是用Ventoy。我推薦下載包含完整桌面環境的iso安裝檔,因爲要是使用網路安裝,安裝速度會取決於你的網路速度,並且要是網路連線不穩定則容易導致安裝失敗。請到:https://www.debian.org/CD/http-ftp/#stable下載。
- 前期作業:請參考〈Fedora安裝教學 + 配置btrfs硬碟分割 + btrfs淺談〉 的〈Fedora的安裝(以目前最新的Fedora Workstation 43爲例)〉一節的第2.步(圖5~9關於如何在Windows下進行硬碟分割)。
- 選取對應的安裝鏡像。這就不得不說Ventoy的優點,就是一個隨身碟可以塞入多個系統iso。我的隨身碟依序是debian網路安裝、debian離線安裝(不含Live CD,內有多個桌面環境)、Fedora 43、memtest(記憶體測試)、Ubuntu 25.10。因爲我不打算連網下載龐大的桌面環境套件,因此我選第二個。再來就是選normal模式進入即可,debian支援secure boot,因此可以不用關閉secure boot也可以正常開機。
- 我們這次需要使用「專家模式」安裝debian。
- 選擇語言地區之類的而「配置其他的locales」這一步,什麼都不用選,直接「繼續」即可,除非有其他特殊需求。
- 「Access the installer using a Braille display」和「設定語音合成器的聲音」在我這裡是不起作用的,因此直接略過也是可以的,不影響安裝。我們設定一下鍵盤。
- 再來就是載入安裝媒體和安裝程式推薦勾選「choose-mirror」、「lowmem」,分別是以便「選擇是否要連網下載一些套件(不強迫)」、「低記憶體模式,以便舊電腦記憶體不足可以使用」
- 設定網路(依照圖片所示那樣設定,完成後點擊「繼續」即可。)
- 分區設定(針對新安裝,並且跳過第10.步。如果是已經在舊有系統建立好btrfs子卷,且有打算沿用舊有子卷的,請直接跳至第10.步)

先執行「偵測磁碟」 - 分區設定(針對「已經在舊有系統建立好btrfs子卷,且有打算沿用舊有子卷的」。如果是新安裝,請直接跳至第9.步,並且跳過第10.步)

先執行「偵測磁碟」 - 建立置換空間(swap),類似windows的pagefile,可作爲虛擬記憶體。如果記憶體偏小(一般來說是小於8GB),則推薦先在這裡建立swap分區,以免安裝過程因爲記憶體不足而報錯。(以下步驟是承第9.步,如果是已經有swap空間的,可以參考,下面會給出對應的解套方式)。如果你是使用zRAM、zSWAP或是使用swap檔案來做置換空間的,這部分可以自行參考ArchWiki《Btrfs》的4.1節,總之,務必記得「若未建立置換空間,進入系統務必手動建立一個置換空間」,以免系統不穩定。

設爲「置換空間」 - 我們將變化寫入
針對新建立分區的:針對已有子卷的 - 進入shell。Debian提供的shell是Busybox
- 配置掛載點(針對新建分區的,如果是沿用舊有分區的,跳過第14.步,直接跳到第15.步)。爲了避免截圖不清楚,我會先在下面統一放上指令,接着再附上圖片,以便做對照。
#查看當前磁碟的分區和掛載點。一般來說,debian會把前面配置的分區掛載在/target目錄下方
df -h
#依序卸載「/boot/efi」和「/」分區
umount /target/boot/efi
umount /target
#將分區掛載在「/mnt」目錄下,我的根目錄分區是在/dev/nvme0n1p6
mount /dev/nvme0n1p6 /mnt
#進入mnt目錄
cd mnt
#列出子卷。有趣的是,子卷類似一個資料夾,因此可以用「ls」語法來查看。會發現Debian在變更完分區後會建立一個名爲「@rootfs」的子卷。
ls
#更改根目錄子卷名稱,將@rootfs改爲@
mv @rootfs @
#建立給「/home」的子卷和給「/opt」的子卷。「btrfs」是針對btrfs這個檔案系統的語法,「su」是「subvolume」的縮寫,「cr」是「create」的縮寫。
btrfs su cr @home
btrfs su cr @opt
#在target目錄下建立home資料夾和opt資料夾,以便子卷可以掛載上去、安裝程序可以正確的處理目錄(因爲安裝程式是識別路徑(例如資料夾),而不是子卷)。我們得要先掛載根目錄的子卷,再建立資料夾,因爲我們要把其他目錄(所對應的子卷)掛載在這個根目錄子卷下。
mount -o noatime,ssd,compress=zstd:3,subvol=@ /dev/nvme0n1p6 /target
mkdir -p /target/boot/efi
mkdir -p /target/home
mkdir -p /target/opt
#將檔案系統掛載回去對應的目錄。noatime就是寫入硬碟時不寫入讀取時間,減少讀寫次數;ssd是針對ssd硬碟優化的意思,可選可不選,因爲btrfs針對ssd已有不小的優化;compress=zstd是指壓縮率,數值愈大,寫入的檔案就會愈小(因爲有事先壓縮),建議值是3,預設是1,如果電腦性能不好的,可以設爲「compress=zstd」(這樣就預設值1),我是設爲3。
mount -o noatime,ssd,compress=zstd:3,subvol=@home /dev/nvme0n1p6 /target/home
mount -o noatime,ssd,compress=zstd:3,subvol=@opt /dev/nvme0n1p6 /target/opt
#接着修改fstab
nano /target/etc/fstab
- 配置掛載點(針對沿用舊有分區的,如果是新建分區的,跳過第15.步,直接跳到第14.步)。爲了避免截圖不清楚,我會先在下面統一放上指令,接着再附上圖片,以便做對照。
#查看當前磁碟的分區和掛載點。一般來說,debian會把前面配置的分區掛載在/atrget目錄下方
df -h
#依序卸載「/boot/efi」和「/」分區
umount /target/boot/efi
umount /target
#將分區掛載在「/mnt」目錄下,我的根目錄分區是在/dev/nvme0n1p6
mount /dev/nvme0n1p6 /mnt
#進入mnt目錄
cd mnt
#列出子卷。有趣的是,子卷類似一個資料夾,因此可以用「ls」語法來查看。會發現Debian在變更完分區後會建立一個名爲「@rootfs」的子卷,以及你之前已經有的子卷
ls
#更改根目錄子卷名稱,將@rootfs改爲@
mv @rootfs @
#在target目錄下建立home資料夾和opt資料夾,以便子卷可以掛載上去、安裝程序可以正確的處理目錄(因爲安裝程式是識別路徑(例如資料夾),而不是子卷)我們得要先掛載根目錄的子卷,再建立資料夾,因爲我們要把其他目錄(所對應的子卷)掛載在這個根目錄子卷下。
mount -o noatime,ssd,compress=zstd:3,subvol=@rootfs /dev/nvme0n1p6 /target
mkdir -p /target/boot/efi
mkdir -p /target/home
mkdir -p /target/opt
#將檔案系統掛載回去對應的目錄。noatime就是寫入硬碟時不寫入讀取時間,減少讀寫次數;ssd是針對ssd硬碟優化的意思,可選可不選,因爲btrfs針對ssd已有不小的優化;compress=zstd是指壓縮率,數值愈大,寫入的檔案就會愈小(因爲有事先壓縮),建議值是3,預設是1,如果電腦性能不好的,可以設爲「compress=zstd」(這樣就預設值1),我是設爲3。注意,「subvol=」後面的值就填入你對應的子卷名稱,並且自行掛載到對應的目錄
mount -o noatime,ssd,compress=zstd:3,subvol=home /dev/nvme0n1p6 /target/home
mount -o noatime,ssd,compress=zstd:3,subvol=opt /dev/nvme0n1p6 /target/opt
#接着修改fstab
nano /target/etc/fstab
依照下圖所示修改fstab
這裡面比較值得一提的是dump和pass值,分別是「提醒這個分區是否要備份(0是不要,1是要)」和「假如電腦不正常關機的檢查順序(0是不檢查,1,2,...是檢查順序)」 
輸入「exit」以退出Busybox - 完成剩下安裝

這裡就保持預設即可 
推薦選「一般」,因爲Linux基本上包含大量驅動,所以不大需要安裝驅動(專有驅動需要另外安裝)。 

安裝開機引導程式,推薦選擇grub,因爲最成熟、穩定,且和debian結合度較好。如果選擇systemd-boot,則需要在debian升級Linux核心後手動更新systemd-boot,否則無法加載新版的Linux核心 
這一步是指要不要讓uefi以爲這個操作系統(debian)是安裝在隨身碟上的,因爲有些uefi會避免除了windows以外的系統安裝在硬碟並且被開機 (微軟的陰謀)或是可能有些uefi會有不可預期的bug。建議先選「否」,grub安裝失敗再選「是」。如果提示失敗也可以考慮強制寫入uefi,使uefi可以認得debian這個操作系統,但有風險,我也不敢試,在此不展示。
這是問說要不要讓電腦的開機預設選項的第一項改爲debian,是或否看個人,我選否,因爲我還要確認windows是否安好,打算之後再改。 
因爲我要裝雙系統,因此我打算利用debian的grub來偵測windows,這樣子我在開機進入grub選單就可以選擇操作系統,而不用修改uefi的開機選項 - 接下開機進入debian,會發現無法安裝軟體,主要是因爲我們沒有在安裝過程中配置好源(source),我們只要貼上以下內容到 /etc/apt/source.list.d/debian.source
第一步,進入終端,在對應目錄打開nano編輯器,輸入密碼
sudo nano /etc/apt/source.list.d/debian.sources
第二步,貼上以下內容。
此步驟會建立一個debian.sources這個檔案
#如果你是用Debian 13(或是Debian Trixie)的,貼上下列10行文字內容,上半段是一般更新以及軟體倉庫,下半段是安全性更新。
Types: deb deb-src
URIs: http://deb.debian.org/debian/
Suites: trixie trixie-updates
Components: main non-free-firmware contrib non-free
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Types: deb deb-src
URIs: http://security.debian.org/debian-security
Suites: trixie-security
Components: main non-free-firmware contrib non-free
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
#如果你是用Debian Testing的,貼上下列5行內容
Types: deb deb-src
URIs: http://ftp.tw.debian.org/debian/
Suites: testing testing-updates
Components: main non-free-firmware non-free contrib
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
將上面內容複製後,點擊nano編輯器上的空白處,使用快捷鍵「Ctrl + Shift + V」貼上,接着用快捷鍵「Ctrl + O」,按下「Enter」鍵後存檔,最後使用快捷鍵「Ctrl + X」離開nano編輯器。如此一來,我們就可以正常使用apt套件管理器。
其實我覺得最麻煩的是掛載點分配,祈禱各位讀者可以成功地安裝好debian + btrfs。這裡我要分享Ubuntu對於btrfs的安裝處理,是不建立根目錄的子卷直接一個目錄一個子卷,這很神奇就是了。
參考資料:
- 〈Debian 13 Trixie Minimal Install w/BTRFS〉,YouTube,網址:https://youtu.be/_zC4S7TA1GI?si=1_1-Rt9LZLkqsznO
- 【增量软RAID?7年多仍没关键突破的新一代分区格式btrfs】,網址:https://www.bilibili.com/video/BV1wt4y1v77W/?share_source=copy_web&vd_source=d550f55ea7126153b09cf91f57375b1a
















































































沒有留言:
張貼留言