Debian + btrfs安裝指南(Windows雙系統指南)
爲何我現在來分享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~7關於如何在Windows下進行硬碟分割)。
選取對應的安裝鏡像。這就不得不說Ventoy的優點,就是一個隨身碟可以塞入多個系統iso。我的隨身碟依序是debian網路安裝、debian離線安裝(不含Live CD,內有多個桌面環境)、Fedora 43、memtest(記憶體測試)、Ubuntu 25.10。因爲我不打算連網下載龐大的桌面環境套件,因此我選第二個(debian離線安裝(不含Live CD,內有多個桌面環境))。再來就是選normal模式進入即可,debian支援secure boot,因此可以不用關閉secure boot也可以正常開機。
我們這次需要使用「專家模式」安裝debian。使用上下方向鍵向下選擇,接下來的設定,就依序一個一個完成即可。

選擇語言地區之類的 註:而「配置其他的locales」這一步,什麼都不用選,直接「繼續」即可,除非有其他特殊需求。
「Access the installer using a Braille display」和「設定語音合成器的聲音」在我這裡是不起作用的,因此直接略過也是可以的,不影響安裝。我們設定一下鍵盤。
再來就是載入安裝媒體和安裝程式
設定網路。如果你是使用WiFi且有密碼,那就選擇「WPA/WPA2 PSK」加密,其他設定就保持預設(按Enter鍵跳過即可),如果你是用博通網卡,可能會遇到韌體問題,跳過即可。
分區設定(針對新安裝,並且跳過第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*[](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtp2Koa_d3jNvDMIY__Xjmc7clkapUi95aR4x_h5-QD5M3PEmjsXBjUAwfOJn67IB0cQMiqpW467Jz70aaO802lO8CGlxqOx-Ui-t8q8HmLMz3UcuyDU3iDUic5KjC9RCdd3dbsEYnRSGRPnTFpfKQEIpgTodQuhXDAl4jpyGiEYp2UOiZaLZUTbCaT8I/s3806/IMG_20251231_164740.jpg)
#進入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/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*#來處理boot相關(mount的-t參數是用來指定分區的檔案系統類型)
mkdir -p /target/boot/efi
mount -t vfat /dev/mvme0n1p1 /target/boot/efi
#接着修改fstab
nano /target/etc/fstab*
依照下圖所示修改fstab
輸入「exit」離開Busybox
- 配置掛載點(針對沿用舊有分區的,如果是新建分區的,跳過第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/home
mkdir -p /target/opt*#來處理boot相關(mkdir的-t參數是用來指定分區的檔案系統類型) *mkdir -p /target/boot/efi
mount -t vfat /dev/mvme0n1p1 /target/boot/efi*
#將檔案系統掛載回去對應的目錄。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*
輸入「exit」離開Busybox
- 完成剩下安裝
Kernel就保持預設的「Linux-image-amd64」。
initrd就選擇「一般:包含所有可用的驅動程式」。
「backport」建議勾上,這是因爲有些驅動支持新版的Linux核心,而這些驅動可能被開發者移植使其可以安裝在舊版的Linux核心,這類的軟體、驅動就是backport。
「流行軟體調查」可選可不選,相較於商業公司,我更加信賴開源社群、也願意貢獻一點個資,所以我選「是」 |
至於選擇桌面環境,因爲我這臺電腦是會給家人使用的,因此我選擇KDE Plasma,我自己用是選擇GNOME。 |
17.安裝開機引導程式,推薦選擇grub,因爲最成熟、穩定,且和debian結合度較好。如果選擇systemd-boot,則需要在debian升級Linux核心後手動更新systemd-boot,否則無法加載新版的Linux核心

18.UTC時間。如果你是windows雙系統,我推薦選「否」,否則選「是」。主要是因爲windows的時間是和uefi上的時間同步,而Linux偏好uefi的時間是格林威治時間然後系統再根據時區做加減。如果選「是」且是和windows做雙系統,那會導致windows的時間是格林威治時間,而Linux的時間是正確的時間。
- 接下開機進入debian,會發現無法安裝軟體,主要是因爲我們沒有在安裝過程中配置好源(source),我們只要貼上以下內容到 /etc/apt/source.list.d/debian.source
- 第一步,進入終端,在對應目錄打開nano編輯器,輸入密碼
sudo nano /etc/apt/source.list.d/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*
其實我覺得最麻煩的是掛載點分配,祈禱各位讀者可以成功地安裝好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