2026年1月3日 星期六

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淺談〉。

  1. 用USB開機,我是用Ventoy。我推薦下載包含完整桌面環境的iso安裝檔,因爲要是使用網路安裝,安裝速度會取決於你的網路速度,並且要是網路連線不穩定則容易導致安裝失敗。請到:https://www.debian.org/CD/http-ftp/#stable下載。

  2. 前期作業:請參考〈Fedora安裝教學 + 配置btrfs硬碟分割 + btrfs淺談〉 的〈Fedora的安裝(以目前最新的Fedora Workstation 43爲例)〉一節的第2.步(圖5~9關於如何在Windows下進行硬碟分割)。
  3. 選取對應的安裝鏡像。這就不得不說Ventoy的優點,就是一個隨身碟可以塞入多個系統iso。我的隨身碟依序是debian網路安裝、debian離線安裝(不含Live CD,內有多個桌面環境)、Fedora 43、memtest(記憶體測試)、Ubuntu 25.10。因爲我不打算連網下載龐大的桌面環境套件,因此我選第二個。再來就是選normal模式進入即可,debian支援secure boot,因此可以不用關閉secure boot也可以正常開機。

  4. 我們這次需要使用「專家模式」安裝debian。

  5. 選擇語言地區之類的

    而「配置其他的locales」這一步,什麼都不用選,直接「繼續」即可,除非有其他特殊需求。

  6. 「Access the installer using a Braille display」和「設定語音合成器的聲音」在我這裡是不起作用的,因此直接略過也是可以的,不影響安裝。我們設定一下鍵盤。

  7. 再來就是載入安裝媒體和安裝程式


    推薦勾選「choose-mirror」、「lowmem」,分別是以便「選擇是否要連網下載一些套件(不強迫)」、「低記憶體模式,以便舊電腦記憶體不足可以使用」

  8. 設定網路(依照圖片所示那樣設定,完成後點擊「繼續」即可。)

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

    我們使用這塊未使用分區
    建立130GB的空間。我的剩餘空間原本有137.4GB,我打算留7.4GB作爲置換空間,如果沒有要置換空間的話,就直接全部用上也是可以。

    我們設定檔案系統
    掛載點一律設爲「/」,接着debian會建立一個名爲@rootfs的子卷。我們可以來設定掛載選項
    推薦勾上「noatime」選項,這樣Linux在寫檔案時不會頻繁記錄檔案的存取時間,以避免不必要的硬碟擦寫,這有助於減緩SSD的老化,而「ssd」選項可選可不選。
    我們就完成了分區設定
  10. 分區設定(針對「已經在舊有系統建立好btrfs子卷,且有打算沿用舊有子卷的」。如果是新安裝,請直接跳至第9.步,並且跳過第10.步)
    先執行「偵測磁碟」
    再進入「磁碟分割」
    我們確認一下ESP分區有沒有問題
    這裡務必確認「格式化此分區」的選項是「否,保留現有資料」,否則之前舊有的子卷也會被格式化而消失
    掛載點一律設爲「/」,接着debian會建立一個名爲@rootfs的子卷。我們可以來設定掛載選項
    分區完成
  11. 建立置換空間(swap),類似windows的pagefile,可作爲虛擬記憶體。如果記憶體偏小(一般來說是小於8GB),則推薦先在這裡建立swap分區,以免安裝過程因爲記憶體不足而報錯。(以下步驟是承第9.步,如果是已經有swap空間的,可以參考,下面會給出對應的解套方式)。如果你是使用zRAM、zSWAP或是使用swap檔案來做置換空間的,這部分可以自行參考ArchWiki《Btrfs》的4.1節,總之,務必記得「若未建立置換空間,進入系統務必手動建立一個置換空間」,以免系統不穩定。
    空間一般建議是實體記憶體的2~3倍,或是像我一樣直接把剩下的空間都拿來做置換空間。以我這臺筆電來說,實體記憶體有4GB,因此就設8GB左右。
    設定用途。如果你是已經有swap分區的,就把用途設爲「置換空間」即可
    設爲「置換空間」
  12. 我們將變化寫入
    針對新建立分區的:
    針對已有子卷的
  13. 進入shell。Debian提供的shell是Busybox
    輸入「exit」就可以退出Busybox
  14. 配置掛載點(針對新建分區的,如果是沿用舊有分區的,跳過第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



    依照下圖所示修改fstab
    這裡面比較值得一提的是dump和pass值,分別是「提醒這個分區是否要備份(0是不要,1是要)」和「假如電腦不正常關機的檢查順序(0是不檢查,1,2,...是檢查順序)」
    使用快捷鍵「Ctrl + O」,接着輸入「Enter」保存。
    使用快捷鍵「Ctrl + X」退出nano編輯器
    輸入「exit」離開Busybox
  15. 配置掛載點(針對沿用舊有分區的,如果是新建分區的,跳過第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,...是檢查順序)」
    使用快捷鍵「Ctrl + O」,接着輸入「Enter」保存。再使用快捷鍵「Ctrl + X」退出nano編輯器

    輸入「exit」以退出Busybox
  16. 完成剩下安裝
    如果你的子卷裡面已經有資料,則會出現這個提示,我們可以選「是」,然後強迫安裝,但一般建議是建立一個新的根目錄的子卷。
    這裡就保持預設即可
    推薦選「一般」,因爲Linux基本上包含大量驅動,所以不大需要安裝驅動(專有驅動需要另外安裝)。
    「backport」建議勾上,這是因爲有些驅動支持新版的Linux核心,而這些驅動可能被開發者移植使其可以安裝在舊版的Linux核心,這類的軟體、驅動就是backport。
    可選可不選,相較於商業公司,我更加信賴開源社群、也願意貢獻一點個資,所以我選「是」
    選擇桌面環境,因爲我這臺電腦是會給家人使用的,因此我選擇KDE Plasma,我自己用是選擇GNOME。


    安裝開機引導程式,推薦選擇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的開機選項
    如果你是windows雙系統,我推薦選「否」,否則選「是」。主要是因爲windows的時間是和uefi上的時間同步,而Linux偏好uefi的時間是格林威治時間然後系統再根據時區做加減。如果選「是」且是和windows做雙系統,那會導致windows的時間是格林威治時間,而Linux的時間是正確的時間。
  17. 接下開機進入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的安裝處理,是不建立根目錄的子卷直接一個目錄一個子卷,這很神奇就是了。

參考資料:

沒有留言:

張貼留言