systemd 系統和服務管理器 262 版本現已發布,經過三個月的開發,該版本進行了多項重大改進。此版本的主要亮點在於:針對輕量級虛擬化環境優化了架構;改進了與可信任平台模組 (TPM) 相關的加密協定;並為 run0 和 systemd-sysupdate 等原生工具添加了關鍵功能。
考慮到容器對系統佔用空間的要求極低, systemd現在提供了使用靜態連結編譯單一可執行檔的功能。這種編譯方式(可透過 Meson 啟用,例如使用`-Dsystemd-multicall-binary=true`等參數)旨在作為小型容器的啟動進程(PID 1),避免使用 `dlopen()` 呼叫加載動態庫,並依賴簡化的用戶和群組搜索,而不是標準的 NSS。
此外,可執行檔現在內部嵌入了一組必要的單元檔案(例如 basic.target、sysinit.target、multi-user.target 和 reboot.target 等)。這些嵌入的檔案用作備用方案,以防無法從磁碟載入配置,從而允許容器在不明確安裝單元檔案的情況下啟動。
服務管理和故障恢復
為了降低多個服務同時發生故障時同步重啟的風險,引入了 `RestartRandomizedDelaySec` 參數。此策略會在服務自動重新啟動前新增一個隨機(均勻分佈)的延遲,該延遲會加入 `RestartSec` 配置的時間。此外,切片單元還包含 `ActivatingConcurrencyMax` 參數,該參數限制了層級結構中可以同時啟動的最大單元數;任何超出限制的啟動操作都會被排隊,直到有可用容量槽位為止。
在需要持續高可用性的環境(例如關鍵伺服器)中,服務單元實作了 LUOSession 參數。此參數指示 systemd 建立即時更新協調器會話,從而能夠在不中斷服務運行的情況下熱更新系統內核,並保持進程和裝置的狀態。
TPM2、fscrypt 和儲存安全
此版本的其他新功能包括:TPM 中的密封憑證現在直接與其儲存根金鑰(SRK) 關聯,從而防止中間元件試圖攔截解密資料而發起的中間人 (MitM) 攻擊。透過 systemd-cryptenroll 進行的 TPM2 PIN 憑證註冊預設採用 Argon2id 演算法,產生的金鑰材料比傳統實作(直接/PBKDF2)更強大。
在使用者儲存層面,systemd-homed 修改了其對使用 fscrypt 檔案系統加密的目錄的行為:新建目錄將預設採用版本 2 (fscrypt v2) 的策略,允許主密鑰駐留在檔案系統的密鑰環中,並在不同的掛載命名空間中可見。 fscrypt v1 目錄仍可正常使用,但無法直接升級至 v2。
此外,還加入了對 dm-clone 內核模組的原生啟動支持,該模組允許從只讀塊設備生成可修改的克隆,並通過 systemd-clonesetup-generator 從 /etc/clonetab 讀取進行處理。
原子能升級和環境變化
systemd -sysupdate 套件旨在透過原子性地替換分區和目錄來進行系統更新,現在它維護一個已安裝檔案的持久性資料庫。新增的 cleanup 命令用於清除冗餘文件,並且引入了「建議組件」的概念。這些組件可以根據機器架構或機器標籤動態評估,從而實現驅動程式安裝的自動化。
版本 262 的其他重大變更包括:
- systemd-vmspawn: 增加了在 Intel TDX 架構 (–coco=tdx) 下運行機密虛擬機器的支持,加入了 AMD SEV-SNP。
- OpenSSL 與註冊: 記錄不可竄改系統(前向安全性密封,FSS)正從 libgcrypt 函式庫遷移到 OpenSSL 的原生加密函式。同時,也正在加入對 OpenSSL 4 的初始編譯支援。
- 終端和可用性: run0 權限提升工具新增了與 sudo 相容的選項,例如 -k、-K 和 -v,用於重設或驗證 Polkit 的授權逾時。 vconsole 允許使用 FONT_SCALE 將字體大小設為 100% 或 200%,而 FIDO2 令牌的密碼提示現在會顯示剩餘的 PIN 碼嘗試次數。
- systemd-sysctl: 現在它包含了 –verify 標誌,透過重新讀取來檢查寫入系統的值是否實際已套用。