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 鍵盤配置輸入密碼。

使用者需輸入密碼解鎖加密的根分割區,成功後繼續開機流程。