ordinarykuma的blog

Btrfs修改子卷的簡單記錄以及相關的其他閒聊(UFW、Debian Testing……)

  我之前有寫過關於〈Debian + btrfs安裝指南(Windows雙系統指南)〉,這裡我是示範怎麽掛載btrfs分區的子卷來安裝debian。過了一年,我的電腦的分區有了改變,我也增加了一些靈活度,我想藉由這次的教程來分享我的一些心路歷程(補充那一篇文章的內容),也給一般家用的使用者可以有一個參考,主要是有考慮用上Timeshift來做快照的朋友可以參考。

發生了甚麼事?

  我在之前的文章(〈關於我為何想到用debootstrap安裝Ubuntu,我又是有什麼理由再從debian切換到Ubuntu?〉)分享過我為何切到Ubuntu。我在考慮了一些條件後,我決定使用Debian Testing,並且從原本的LVM+Ext4換回Btrfs。這一次我對自己筆電的分區有了不少的調整。我想要使用看看快照——這是我使用Btrfs那一陣子沒有仔細用過的功能,我只有用過終端機做過快照的建立和還原——並是使用GUI工具達到像openSUSE那樣的簡單方便,而我找到的工具是Timeshift,再加上我的電腦是固態硬碟,因此啟用一些可以讓NVMe硬碟友好的功能要是我要考慮的選擇(再加上我之前用LVM忘記設定Thin Volume,所以也沒能體會到LVM提供的快照功能,我或許有空應該來玩玩看)。

  總的來說,我先是調整了Windows的一些分區,方便我管理分區(而且看到自己電腦的分區如此整齊的那賞心悅目,真是令人欣喜),建立Linux使用的分區並且裝上Debian Testing,掛載Btrfs子卷,最後再來用Timeshift做一下快照。

硬碟分區的攪和者、鎖匠兼內賊的微軟

  Windows 11在安裝時,會分割第一塊ESP分區用來讓UEFI開機,接著分割16MB左右的空白分割區,分割一定大小的空間給系統分區,後面再留1GB作為恢復環境。乍聽之下沒有問題,對不上對?不對!這一個1GB的恢復空間是在電腦硬碟的最末端分割出1GB來用,理想上應該是在C槽後面割一塊,結果我電腦之前WIndows重灌後是在我的Linux分區後面割一塊來用!所以我的分區看起來很彆扭,像是Windows包圍了我的Linux一般,而且我日後要是要做擴容就得要橫跨一個分割區,這對於LVM、Btrfs應該沒差,但感覺上是很有差的(至少在心裡感覺)。

  關於那一個16MB左右的空白分割區有一種說法是因為要兼容早期MBR時代的程序。早期MBR電腦只能有4個主分割區,電腦的BIOS開機只認這個四個分割區的系統,因為BIOS只認得硬碟的前512Bytes,而512Bytes最多就只能記錄四個主分割區的位置。在那一個時代,電腦只可以最多四個主分割區,其他的只可以是延伸分割區,舉例來說,我可以2個主分割加上1一個邏輯分割、可以3個主分割+好多個延伸分割,但是不可以4個主分割區加上延伸分割區。那麼,電腦要怎麼讀取延伸分割區的分區?很簡單,我們可以借助鏈式方式,磁頭從前面的512Bytes得知邏輯分割區的位置,進到邏輯分割區後會讀取第一個延伸分割區的資料來得知第一個延伸分割區的首尾,再往下一個延伸分割區直到找到目標的延伸分割區的分區。而這些分割區之間會有一些縫隙,GRUB(或是更早期的LILO)可以裝在這些縫隙裡面,達到鏈式啟動的方式來啟動延伸分割區的Linux操作系統,這是Windows Boot Manager做不到的事情(人家大概也沒打算支援,就像現在WIndows Boot Manager不能引導Linux一樣吧)。因此這一個16MB的MSR分區有一種說法是為了讓特定早期會需要用到這一個縫縫的程序使用的,或是磁碟對齊等功能。總之,我是不反對的。

  總之,我是使用命令提示字元來將1GB的RE(Recovery Environment)移到我的WindowsD槽後面,如此一來,WIndows就在我的電腦的前半分區,加上我基本不動Windows的分區,真是太剛好了。剩下的再摳一些空間作為Linux,最後剩下的就不使用(沒有檔案系統、為分配的分區),日後需要擴容或是作為其他用途(像是用來安裝FreeBSD也不錯,順帶一提,我成功地在FreeBSD的Live環境下使用終端機連上WiFi!)

  那麼,為何我會說微軟是鎖匠兼內賊?Windows有一個功能叫做「裝置加密」,這個不是Bitlocker,而是更加廣泛的加密,電腦要支援安全啟動、TPM要2.0以上、有RE環境等要求,即可以開啟。一般來說,如果有登入微軟帳號,就會自動開啟,密鑰會在微軟伺服器保存一份,這聽起來似乎很安全,對吧?這才是問題所在!我的電腦沒有登入微軟帳號,結果Windows自動幫我打開了裝置加密,幫我把NTFS的分區給加密了,也沒告訴我密鑰、密碼是什麼,伺服器搞不好已經存了一份密鑰,我是要拿什麼去換我的密鑰?電腦丟了比較有機會被偷竊資料,但是電腦還在我手上、沒有安裝來路不明的軟體的情況下,卻不自覺的被剝奪了了。你說這不就像是熱心的鎖匠幫你上鎖但鑰匙就在他手上一樣的可笑,是不是?Linux下,LUKS是自己打開,鑰匙丟了是自己負責,但是Windows弄得是我沒有自己打開加密結果鑰匙還來不及被自己搞丟就要去承擔資料丟失的風險。

為何回到了Btrfs?

  這個故事說來話長,容我慢慢說明。我在幾天前使用Ubuntu上的GNOME,出現一些奇怪的Bugs,像是畫面點了滑鼠左鍵沒有反應但是概覽(overview)是有用的,當然還有其他奇怪的Bugs累積起來(像是第一工作區的軟體關掉,工作區會卡在第二工作區,切不過去到第一工作區的問題之類的),總讓我覺得紅帽或是Debian系列的相關組件維護者、開發者不怎麼上進。我因此在我的Ubuntu上面切換到Wayfire+LxQt,我一開始覺得這樣的組合其實還不錯,因為Wayfire有GUI套件可以來寫設定檔(套件名叫做wcm,是Wayfire Configure Manager),這比openbox友好(Openbox需要用make install才有GUI管理器可以用,但我的底線是不使用make install。順帶一提,Openbox是LxQt官方欽定的Wayland合成器)。後來輾轉到Wayfire,發現入門門檻實在有些高,因此我放棄了,同時也把Ubuntu的桌面環境玩壞了。

  我過程中想要來安裝openSUSE,我發現openSUSE Leap 16.0的Agama安裝器和Ubuntu的安裝器一樣的糟糕,對於LVM完全不支持,準確說是GUI界面的選項壓根無法配置LVM。我再次思索LVM這個方案是否適合我,我沒有配置簡單卷因此LVM的快照特性我似乎用不到,再加上我對於共享池的概念還是覺得相對不錯的、可以方便擴容與縮容分區等條件都是值得考慮的因素,因此我決定用Btrfs。另一個更加膚淺的考量因素是,Debian系列以外的發行版(除了RHEL系列)對於Btrfs的支援度是很友好的,像是openSUSE、Fedora,Debian系列也還提供足夠的支持,只是還沒有實做好圖形安裝配置罷了,在加上曹子德曾說:「Btrfs是下一代Linux檔案系統。」我也就更加堅定了。

選Debian Testing的理由

  首先我偏好apt套件管理器,因此我很自然而然的選擇Debian系列;那麼大概就剩下Ubuntu和Debian二選一了(我沒用Linux Mint是因為集成度相對高,我偏好有些彈性),這一次的重裝其實也是很有時間折騰,但我現階段有些厭倦,為了省心我選擇Debian。為什麼?我的省心還希望儘量保持vanilla、純粹性,因此Ubuntu就不在我的考量了。總不能叫我再次debootstrap吧?而且Ubuntu的vanilla-gnome我覺得就是沒有Fedora的穩定,反而Ubuntu定製的GNOME還比較穩定(但這有些不純粹就是了)。

  第二個要考量的因素是我的家目錄。我原本想說家目錄獨立掛載,可以方便我切換發行版,但我發現這會破壞系統的穩定性,這個發行版的波函數的複數部分的響應會變得不可在容許範圍內預測,很多桌面環境刪掉後會在我的家目錄倒垃圾(這是套件管理器清不掉的),這為了日後電腦的穩定性帶來隱患(看來WIndows沒有使用者目錄獨立掛載這個選擇搞不好也是好事?),因此這一次的重灌我打算不要我的家目錄了,但是資料我是要得(我就另外割一塊NTFS分區讓雙系統共享,作為我的備份很少變動的個人資料似乎是平衡的選擇,我是打算之後買一個外界硬碟來備份就是了,檔案系統就btrfs或是ext4吧,感覺很少人用Linux專用的檔案系統來作為外界硬碟使用,感覺很有趣)。我也知道有的方案是另外掛載一個叫做data的分區,但這樣在雙系統的共享會有些麻煩,以及可能有需求要再做軟連結之類的,目前沒有心思折騰,而且這或許也會使我切換系統分區方案的阻力增加。這為我換系統有了一定的方便。

  那麼我在來說說我為何選擇Testing?在我之前的文章說過我覺得我不是那麼適合Debian Stable,Sid似乎太前線了,至少Testing有經過一定的自動測試,並且有著海量的套件可以安裝(光是forky/Testing源可以安裝telegram我就很開心了。而且有著相對新的套件可以用)。但這裡要講一下,使用testing分支是最不安全的選擇,因為stable有專門的安全團隊維護、Sid有最先接到上有修復安全漏洞,但是testing的順位就很後面(Sid的安全補丁得要沒有嚴重的bugs才會下放給testing),這部分要小心就是了。我是建議安裝UFW,拒絕所有連入、允許所有連出、僅允許ssh(可選)、僅允許KDE Connect(可選),至於AppArmor可以參考〈AppArmor和簡單的電腦安全採取行動〉。

  1. 安裝UFW
sudo apt install ufw
  1. 拒絕所有連入
sudo ufw default deny incoming
  1. 允許所有連出
sudo ufw default allow outgoing
  1. 允許SSH(可選)
sudo ufw allow ssh
  1. 允許KDE Connect的端口(可選)
sudo ufw allow*1714:1764/tcp
sudo ufw allow 1714:1764/udp
  1. 啟動防火牆
sudo ufw enable
  1. 重新載入規則(視需要)
sudo ufw reload
  1. 檢查最終狀態(可以檢查一下)
sudo ufw status

預計輸出

xjd@XJD:~$ sudo ufw status  
[sudo] password for xjd:   
Status: active  

To                         Action         From  
--                         ------         ----  
22/tcp                     ALLOW          Anywhere                    
1714:1764/tcp              ALLOW          Anywhere                    
1714:1764/udp              ALLOW          Anywhere                    
22/tcp (v6)                ALLOW          Anywhere (v6)               
1714:1764/tcp (v6)         ALLOW          Anywhere (v6)               
1714:1764/udp (v6)         ALLOW          Anywhere (v6)

  不過,如果你也是有和我類似的情況,想要新的套件、喜歡Debian系列,在不排斥snap等工具的情況下,我其實還是很推薦Ubuntu的(不過,我真心期待Debian系列有一個半滾動式更新的發行版,比較有趣。Ubuntu其實不算,Ubuntu還算是Point Release,他的Interim Release(過渡版本)並不是半滾動,因為發佈後大多數的套件都是會凍結的)。

關於之前安裝教學〈Debian + btrfs安裝指南(Windows雙系統指南)〉文章的補充(新分區新掛載)

  再說分區之前,我得要先簡單的講一下我的分區結構,順便講一下我的分區理由、掛載點。

  我先用我的宿主機執行「lsblk」來看看我的分區結構(建議參考:〈如何用debootstrap來重裝Ubuntu(附帶安全啓動處理)〉):

xjd@XJD:~$ lsblk  
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS  
nvme0n1     259:0    0 476.9G  0 disk   
├─nvme0n1p1 259:1    0   512M  0 part /boot/efi  
├─nvme0n1p2 259:2    0    16M  0 part   
├─nvme0n1p3 259:3    0 128.2G  0 part   
├─nvme0n1p4 259:4    0    45G  0 part   
├─nvme0n1p5 259:5    0     1G  0 part   
├─nvme0n1p6 259:6    0   1.9G  0 part /boot  
└─nvme0n1p7 259:7    0  93.1G  0 part /home
                                      /var/cache
                                      /var/log
                                      /     

  我的第一個分區(nvme0n1p1)是512MB的ESP分區,這是電腦開機引導的必要分區,檔案系統必須是vfat(又叫作Fat32);第二個分區是/boot(nvme0n1p6),這是用來存放操作系統內核的主要分區;第三個分區(nvme0n1p7)是系統其他目錄的分區。其餘的是Windows保留的分區。值得一提的是,這裡的分區是硬碟的分區表所記錄的分區,不是一般認為的掛載點對應一個分區,這後面會在解釋,我需要大家先將掛載點和分區的概念分離一下,分區就是硬碟分配空間實際切割的區塊,縱然在一般情況下確實是一個掛載點一個分區。總結一下,扣除Windows的分區,我給Linux的分區就三塊:啟動用的ESP、存放內核的boot分區、系統其他目錄的根分區。

  為何我會先請大家分離掛載點和分區的想法(我甚至希望你先忘記掛載點)?在絕大多數的Linux安裝教程,為了簡化流程、部分人用不到很複雜的分區方案,因此讓使用者用Windows的分區角度切入(認為C、D槽對應的是各自的一個分區),也因此大多數人的電腦的分區方案就是一個分區一個掛載點(進階一點的就會獨立家目錄,20多年前的Linux教學用書會是一個掛載點一個分區並且切割多個分區)。但我認為,我們或許要換一個角度切入。Linux是一種樹狀目錄(先不要用資料夾的角度切入,想象真的樹木),樹根是根目錄(用「/」表示),下面在分支出etc、var、dev……(你將這些目錄想象成樹木的分叉節點),而這些目錄會繼續分叉,目錄裡面的檔案相當於樹葉。這麼想的好處是,你就不用過度糾結為何一個硬體也對應一個目錄、一個目錄下的檔案,因為你用資料夾和資料夾裡面的檔案的角度來想,會覺得別扭是很正常的,這只是抽象化的一個表現(例如將實際硬體抽象化成一個檔案),我們要是從本質去看或許會好受許多。

  掛載點可以想象成嫁枝(將別的樹枝接到另一棵樹上),掛載點像是嫁枝的接點,不同的樹木像是不同的分區,因此我們可以在/etc/fstab標示掛載點,方便系統進入對應目錄要記得跳到對應的分區。想象一下,你把玉荷包嫁接到黑葉荔枝,你現在要去採玉荷包荔枝,總得要去找嫁枝的樹木在哪,而不是直接取摘黑葉荔枝。因為Btrfs有子卷機制,我可以在一個磁碟分區建立多個子卷(一個分區格式化成一個叫做btrfs的檔案系統,這個btrfs還可以獨立出多個子檔案系統,這些子檔案系統就叫作子卷。檔案系統可以想象成是圖書館員,我等一下會再舉個例子說明分割區的意義為何不一定等於檔案系統),再把目錄掛載到這些子卷上,這個就是針對btrfs的掛載點分配。

  我們來舉一個反例,說明為何一個分區不一定對應一個檔案系統。我可以割一塊100GB的空間來作為LVM,我再把LVM裡面切20GB作為ext4、剩下的80GB是XFS,但是電腦看來(就例如Windows的磁碟管理),就只有一個100GB的分割區,但實際上這一個分割區竟然有兩個檔案系統!這是可以成立的,因為LVM用映射的方式區別出兩個不同的檔案系統對應實體磁碟的位置。只不過btrfs採取共享池的做法,不像LVM透過映射像是在處理獨立分區那樣。

  我來講講我的分區理由。boot分區獨立出來是為了相容性,傳聞Canonical打算在新的Ubuntu上精簡掉GRUB,屆時GRUB無法直接引導有加密的分區(LUKS1、LUKS2)、LVM、Btrfs,但是如果有獨立一個未加密的boot分區,就可以引導這些檔案系統或是加密分區,我獨立2GB是因為考量某些發行版對於boot的要求(像是Fedora比較偏好保留舊的內核,因此會需要比較大的boot分區,如果你會手動清理內核,那麼留1GB就夠了。而Debian系列只要1GB就綽綽有餘了,因為apt會自動清理舊的內核,只保留上一個版本的內核);剩下是系統目錄的分區,我裡面建立了根目錄的@子卷、家目錄用的@home子卷、不開啟寫時複製的@log子卷(給/var/log)、不開啟寫時複製的@cache子卷(給/var/cache),如果你有需要也可以給flatpak建立一個不要寫時複製的子卷@flatpak(給/var/lib/flatpak),再懶一點可以把整個/var建立一個不要寫時複製的子卷。這裡值得一提的是,根目錄一定要叫做@,Timeshift才可以做快照,否則就只能夠手動建立快照,而Debian的根目錄預設叫做@rootfs,我們要記得修改就是了。

  Debian預設的安裝目錄是/target,而完成硬碟分割後,Debian的安裝程式會自動在這些分區下面建立好基本的目錄並放入重要的配置文件,因此分割完就會有fstab的文件,而這個@rootfs的子卷是有資料的,我們會用得到。

  1. 使用專家模式並且執行完硬碟分割後,進入shell(Busybox)
  2. 查看分割區的分配。請記得分區代號(像是nvme0n1p7)
~ # df -h  
Filesystem      Size  Used Avail Use% Mounted on  
udev            1.7G     0  1.7G   0% /dev  
tmpfs           346.6M  460.0K  1.7G   0% /run  
/dev/sda2   3.7G   3.7G   0  100% /cdrom  
none            1.0M     0  1.0M   0% /run/credentials/systemd-journald.service  
/dev/nvme0n1p7   94G   5.8M   94G  0% /target  
/dev/nvme0n1p6  1.8G  1M  1.8G   0% /target/boot  
/dev/nvme0n1p1  508M   71M  438M  14% /target/boot/efi
  1. 依序卸載分區
umount /target/boot/efi
umount /target/boot
umount /target
  1. 進入mnt目錄
cd mnt
  1. 將分區掛載到mnt目錄,顯示子卷
mount -o /dev/nvme0n1p7 /mnt  
ls
  1. 修改根目錄子卷
mv @rootfs @
  1. 建立需要的子卷
btrfs su cr @home*$ *btrfs su cr @log*$ *btrfs su cr @cache
  1. 將檔案系統掛載回去target目錄
mount -o noatime,compress=zstd:3,subvol=@ /dev/nvme0n1p7 /target*$ *mkdir -p /target/var/log
mount -o noatime,nodatacow,compress=zstd:3,subvol=@log /dev/nvme0n1p7 /target/var/log  
mkdir -p /target/var/cache
mount -o noatime,nodatacow,compress=zstd:3,subvol=@cache /dev/nvme0n1p7 /target/var/cache  
mkdir -p /target/boot
mount -t ext4 /dev/nvme0n1p6 /target/boot
mkdir -p /target/boot/efi
mount -t vfat /dev/nvme0n1p1 /target/boot/efi
  1. 修改fstab(下面有附上參考實例,不要照抄。理論上同一個物理分區的UUID是一樣的。)
nano /target/etc/fstab

我的示範

# /etc/fstab: static file system information.  
#  
# Use 'blkid' to print the universally unique identifier for a  
# device; this may be used with UUID= as a more robust way to name devices  
# that works even if disks are added and removed. See fstab(5).  
#  
# systemd generates mount units based on this file, see systemd.mount(5).  
# Please run 'systemctl daemon-reload' after making changes here.  
#  
#                  
# / was on /dev/nvme0n1p7 during installation  
UUID=e293a34b-609f-4f83-b444-a2e12f374c34 /               btrfs   noatime,compress=zstd:3,subvol=@                   0       1  
UUID=e293a34b-609f-4f83-b444-a2e12f374c34 /home           btrfs   noatime,compress=zstd:3,subvol=@home               0       2  
UUID=e293a34b-609f-4f83-b444-a2e12f374c34 /var/log        btrfs   noatime,nodatacow,compress=zstd:3,subvol=@log      0       0  
UUID=e293a34b-609f-4f83-b444-a2e12f374c34 /var/cache      btrfs   noatime,nodatacow,subvol=@cache                    0       0  
# /boot was on /dev/nvme0n1p6 during installation  
UUID=b1cdd255-cc62-4d9b-8147-3e81324badcc /boot           ext4    noatime         0       1  
# /boot/efi was on /dev/nvme0n1p1 during installation  
UUID=D88D-AD1A  /boot/efi       vfat    umask=0077      0       1
  1. 完成剩下安裝即可

如何修改已安裝好系統的Btrfs子卷名稱?(可選)

  如果你像我一樣,忘記修改根目錄的子卷名稱,我們可以在進入系統後進行修改。請注意:這個操作有一定風險,我因為貪圖方便,所以是在載入系統進行修改,而不是Live CD環境。(下列方案是參考〈迁移 Btrfs 根目录的数据至子卷〉做法後,請Gemini協助修改我再實做,系統差點就開不了機了呢……)

  1. 建立掛載用的目錄
sudo mkdir -p /mnt/btrfs-root
  1. 將頂層卷掛載起來。(如果你有印象Fedora的安裝器,有一個叫做top-level的卷,這就是btrfs的頂層卷)我的btrfs的系統目錄是在/dev/nvme0n1p7上,你應該換成你對應的目錄。
sudo mount -o subvolid=5 /dev/nvme0n1p7 /mnt/btrfs-root
  1. 檢查是否掛載到@rootfs的子卷
ls -la /mnt/btrfs-root
  1. 子卷改名
sudo mv /mnt/btrfs-root/@rootfs /mnt/btrfs-root/@
  1. 檢查是否改為@子卷
ls -la /mnt/btrfs-root
  1. 將其他目錄掛載到mnt下方,因為/mnt/btrfs-root裡面的子卷沒有層級關係,我們得要找個新地方掛載,以保留層級關係,方便我們後續chroot更新grub
sudo mount -o noatime,compress=zstd:3,subvol=@ /dev/nvme0n1p7 /mnt
sudo mount -o noatime,nodatacow,compress=zstd:3,subvol=@log /dev/nvme0n1p7 /mnt/var/log
sudo mount -o noatime,nodatacow,compress=zstd:3,subvol=@cache /dev/nvme0n1p7 /target/var/cache
sudo mount -o noatime,compress=zstd:3,subvol=@home /dev/nvme0n1p7 /mnt*/home  
sudo mount -t ext4 noatime /dev/nvme0n1p6 /mnt/boot*$ *sudo mount*-t vfat /dev/nvme0n1p1 /mnt/boot/efi
  1. 修改新子卷的fstab,將@rootfs改成@
sudo nano /mnt/etc/fstab
  1. 使用chroot。在〈如何用debootstrap來重裝Ubuntu(附帶安全啓動處理)〉我是用arch-install-scripts提供的chroot腳本一次chroot,這裡我們介紹比較傳統的做法來chroot,我們得要用迴圈掛載電腦的硬體、韌體再chroot
for i in /dev /dev/pts /proc /sys /run; do sudo mount --bind $i /mnt$i; done
  1. 進入chroot,為了方便,我們使用宿主機的命令(可以參考〈AppArmor和簡單的電腦安全採取行動〉來理解為何run0無法執行一些命令,〈这是Linux、Windows、macOS都适用的一个关键概念〉可以進一步知道為何我會掛載對應目錄)
sudo chroot /mnt /bin/bash
  1. 更新GRUB和initramfs
update-initramfs -u*$ *update-grub
  1. 離開chroot
exit
  1. 卸載/mnt下的所有目錄和檔案系統
sudo umount -R /mnt*$ *sudo umount /mnt/btrfs-root
  1. 重啟電腦

關於TimeShift和子卷的應用

  1. 安裝Timeshift
sudo apt install timeshift
  1. 確保根目錄的子卷叫做@之後,打開Timeshift
  2. 快照類型選擇btrfs,點擊下一步
  3. 選擇快照存放的位置,接著下一步
  4. 選擇快照頻率和保留的快照數量,以我來說,我是一週一次、保留最近三次,再下一步
  5. 可以順便快照家目錄(子卷得要叫做@home),下一步後完成設定
  6. 我是推薦在系統裝好後、第一次配置好就手動做一次快照,方便回退到最乾淨的狀態。

後記

  我想到Learn Linux TV的一部影片(TW Is Distro Hopping Bad? Here’s Why It’s Actually Great!),我也曾經覺得我不應該一直distro-hopping,但我卻一直如此,而且各種理由千奇百怪,我不像很多Arch Linux的使用者那樣,願意埋頭下去折騰(我大概很快就放棄的那種),因此我在Ubuntu桌面環境搞壞的當下,我是懶著去修桌面環境(搞下去大概會有好幾天只能先用Windows了,我暑假還是有別的需要使用電腦的需求),再加上我想體驗看看快照、btrfs還有很多我好想還沒玩到(之前換到LVM是因為那陣子看多了btrfs的缺點,但說實在,沒有完美的,而且在我的單硬碟電腦上,這些缺點幾乎碰不到而且我平常就做做文書,不玩電腦遊戲、手遊,那些缺點離我更加遙遠),所以才選擇換到btrfs。我知道有轉換工具可以將ext4直接換到btrfs,但是在我之前的狀況,這會變成LVM裡面鑲嵌了btrfs,映射再映射的關係,光想就頭大,還有我想將個人資料從家目錄獨立出來,才有了這次的文章。回過頭看,在用了Linux大約兩年的時間裡,我發現獨立家目錄不是一個完美的方案,因為部分設定檔會殘留,進而汙染了新系統,隔離資料讓家目錄是一個可被割捨的狀態似乎是一個比較好的選擇。

  而這一次選擇Debian Testing,主要是圖方便(找一個類似fedora那樣半滾動、是apt管理器,大概就Debian Testing),我圖方便到什麼程度?我直接使用預設安裝的桌面環境,為了避免破壞到GNOME桌面的metapackage,造成日後套件管理器版本控制等問題,再加上GNOME Circle的軟體也算不難用,我全保留GNOME預設的軟體,在此基礎上做加法(反正刪掉也沒釋放出多少空間)。令我訝異的是,Debian Testing裡面保留的GNOME套件竟然和Fedora一樣!以往Debian的終端機都是GTK3時代的gnome-terminal,現在竟然換到GTK4時代的ptyxis(竟然也不是gnome-console),看來舊的gnome-terminal可以退為了,後起之秀可能會被接納也是早晚的事了。

參考資料

#Debian #隨筆