Chimera Linux 是一個由社群驅動、從零開始打造的 Linux 發行版,採用不同的設計理念:使用 musl 取代傳統的 glibc 作為 C 函式庫,使用 dinit 取代 systemd 作為系統初始化,並且使用來自 FreeBSD 核心工具的使用者空間。
本文利用 Chimera 的基礎安裝映像,並依據優秀的安裝指南,示範如何配置 Chimera 搭配 OpenZFS 文件系統與 ZFSBootMenu 引導程式,打造一個加密且最小化的 Linux 系統,提供穩固的基礎以便後續擴充,無論是用於桌面、筆電或伺服器。
在本教學中,若程式碼區塊中出現方括號 [],表示該字串(包含方括號)需替換成其他內容,詳細說明會在程式碼區塊前後提供。
Chimera Linux 以單一磁碟安裝為唯一作業系統,採用三分割區配置:
最新的即時 ISO 安裝映像(目前版本為 20251220)可於 repo.chimera-linux.org 下載。
下載 chimera-linux-x86_64-LIVE-20251220-base.iso 及 sha256sums.txt,並驗證映像完整性。
使用 root 權限執行 dd 指令將安裝程式寫入未掛載的 USB 儲存裝置。
警告:務必確認正確的裝置名稱(可用 lsblk 指令辨識),否則裝置內所有資料將被清除!
範例:在 Linux 系統中,若 USB 裝置為 sdx1,則應將安裝程式寫入 sdx(不含分割區號)。
從 Chimera 安裝媒體啟動目標裝置,登入帳號與密碼為 root:chimera。
若字型大小過小,可使用 setfont 指令更換字型,字型檔位於 /usr/share/consolefonts/,設定時省略路徑與副檔名。
預設控制台鍵盤配置為 us,其他可用鍵盤配置列於 /usr/share/keymaps/。
若需臨時更換鍵盤配置,可用 loadkeys 指令,例如設定為 colemak 鍵盤配置,檔案位於 /usr/share/keymaps/i386/colemak。
確認目標裝置是否使用 UEFI 啟動模式:
執行指令若回傳 64,表示系統以 64 位元 x64 UEFI 啟動,表示設定正確。
若檔案不存在,表示非 UEFI 啟動。
有線網路介面應於開機時自動啟用並連線。
確認網路介面已啟動、取得 IP 並能連上網際網路。
為方便手動安裝過程,可從另一台電腦透過 ssh 遠端登入安裝系統。
於另一台電腦執行 ssh anon@chimera,ip_address 為目標裝置的 IP 位址(可用 ip addr 指令查詢)。
/etc/os-release 檔案定義作業系統資訊,$ID 變數可用於後續指令中設定發行版簡稱。
產生 hostid 十六進位識別碼供 ZFSBootMenu 使用。
注意:musl 不會讀取 /etc/hostid,預設顯示 00000000,這不會影響使用。
在單一磁碟上設定自訂分割區配置,準備安裝 Chimera 基礎系統。
列出區塊裝置以辨識安裝磁碟。
設定 DISK 變數,依 SATA 或 NVMe 磁碟分別設定。
若 DISK 先前有 ZFS 池,執行相關清除指令。
若 DISK 先前使用 LVM,關閉對應的卷組。
清除 DISK 上既有的檔案系統與分割區表。
通知系統分割區表已變更。
注意:許多分割區指南會將 EFI 系統分割區設定為 256-512MB,我偏好預留 2GB 以因應未來 Linux 可能的需求。
在 DISK 上建立 GPT 分割區表,並依照以下配置分割區。
新增磁碟或分割區至 ZFS 池時,建議使用 /dev/disk/by-partuuid(UEFI)中建立的符號連結,避免因磁碟命名變動導致匯入失敗。
將 ZFS 池的加密密碼存於金鑰檔案中。
建立啟用原生加密的 ZFS 池。
注意:必須明確設定每個開機環境的 canmount=noauto。
為每個系統建立額外的 home 資料集,方便未來建立多個開機環境時,保持使用者設定獨立,並將使用者資料與系統資料分離,有利於 ZFS 快照與系統回滾。
建立 data 資料集以共享多個開機環境間的共用檔案。
將檔案複製至新安裝的作業系統。
切換至新安裝的 Chimera 系統並進行基礎設定。
建立具有超級使用者權限的使用者帳號。
(選擇性)使用 doas 指令賦予該使用者無密碼的 root 權限。
新增使用者子倉庫並同步鏡像。
設定適合的微碼套件以載入更新與安全修補,Intel 處理器為 ucode-intel,AMD 處理器為 ucode-amd。
注意:Terminus 字型設定詳見 /usr/share/consolefonts/README.Lat2-Terminus16。
Chimera 採用與 Debian 相同的 console-setup 系統。
範例:修改 /etc/default/console-setup 使用 TerminusBold 字型並放大字型大小。
預設鍵盤為 us,若需其他鍵盤配置,請參考 keyboard(5) 文件。
範例:我偏好使用 colemak 鍵盤配置,透過修改 /etc/default/keyboard 設定。
時區檔案位於 /usr/share/zoneinfo/[Region]/[City],其中 Region 為地理區域(如 Africa、America、Europe 等),City 為該區域內城市。
範例:建立 /etc/localtime 符號連結指向多倫多時區。
設定系統主機名稱,單字且無空白。
管理員啟用的服務連結位於 /etc/dinit.d/boot.d/。
Chimera 預設使用 syslog-ng 作為日誌系統,日誌寫入 /var/log/messages。
有線網路可靜態或動態設定,預設由 dhcpcd 以 DHCP 配置所有介面,設定檔為 /etc/dhcpcd.conf。
啟用 sshd 服務以允許遠端登入。
注意:檔案系統標籤為選用,但有助於識別正確分割區,比單純使用裝置節點更可靠,且方便掛載。
使用原生 dm-crypt 可在開機時產生隨機一次性加密金鑰,無需使用者操作即可加密交換區,關機時金鑰會被丟棄,確保資料安全。
為讓交換區能使用標籤並存活於覆寫後,可在交換分割區上建立一個小型空檔案系統作為標籤。
透過在 crypttab 新增條目設定 dm-crypt 於開機時啟用加密交換區。
加密金鑰存放於 /etc/zfs,並會自動複製至 initramfs。
設定 UMASK=0077 為新建檔案與目錄的預設權限。
設定 RESUME=none 以停用 cryptsetup 對交換區缺乏休眠支援的警告。
任何類似警告訊息皆可安全忽略,因為根加密由 ZFS 處理。
安裝 ZBM 引導程式以支援 Linux 上的 Root-on-ZFS 開機環境。
注意:加入 hibernate=no 參數以確保無程序可觸發休眠至磁碟,符合使用一次性隨機金鑰交換區的目標。
設定開機時傳遞給核心的命令列參數。
將預建的 ZBM 執行檔安裝至 EFI 系統分割區。
注意:解鎖 zpool 時,無論系統鍵盤配置為何,皆使用 us 鍵盤配置輸入密碼。
使用者需輸入密碼解鎖加密的根分割區,成功後繼續開機流程。