systemd 259:Musl 支援、run0 賦能以及告別 System V

關鍵點:
  • 對 Musl libc 的部分支援(需要在 Meson 中手動配置)。
  • run0 --empower 允許執行特權操作,而無需更改使用者 UID。
  • 已確認棄用 System V 腳本並提高要求(核心 5.10+)。
  • libsystemd 現在使用 dlopen() 載入外部程式庫,以減少相依性。
  • 日誌儲存現在預設是「持久化」的。

systemd

經過三個多月的開發, 推出 新版本 259。 本次更新對系統架構進行了更改,突出了對替代標準庫的開放性、更嚴格的權限管理以及對未來版本更嚴格的技術要求。

本輪變革中最受關注的趨勢之一是向更高的模組化和消除遺留依賴項過渡,這為 Linux 生態系統徹底擺脫過去幾十年的標準鋪平了道路。

systemd 259的主要新功能

新的 systemd 版本 259 的突出之處在於… 第一個版本增加了與Musl的部分相容性這是輕量級發行版和嵌入式環境中流行的 C 標準庫。這種集成 它是透過 Meson 建置系統中的 libc 選項進行管理的。 但是,由於 Musl 沒有實作 NSS(名稱服務切換)功能,因此在此配置中,幾個 systemd 元件仍然處於停用狀態。

在a使用 Musl 編譯時明顯缺失 他們是 nss-systemd、nss-resolve、systemd-homed、systemd-userdbd 和 DynamicUser 參數此外,在此程式庫下,無法以非特權模式運作 systemd-nspawn。開發者已發出警告,未來版本是否繼續支援此功能將取決於社群需求以及任何新增相容層的穩定性。

新版本的另一個新功能是 在 run0 實用程式中被設計成 sudo 的現代且安全的替代方案,並已獲得 新選項—賦權. 這個功能 它允許您以更高的權限登入。 無需將使用者識別碼 (UID) 變更為 root。

除此之外, 而不是完全委託控制權 透過使用者切換,–empower 使用核心功能指示符,例如 CAP_SYS_ADMIN, 核發絕對必要的許可證 執行特權系統呼叫。此外,產生的進程會被整合到一個特定的群組中,該群組授予它們存取 Polkit 操作的權限,從而比傳統的 sudo 模型保持更強大的權限分離。

一個時代的終點:告別System V與新的需求

systemd 259 標誌著終點的開始 與以下方面相容 System V 服務腳本官方宣布,在下一個版本中,systemd-sysv-generator、systemd-rc-local-generator 和 systemd-sysv-install 等舊版組件將永久移除。

隨著舊代碼的清理,systemd 生態系統的最低軟體要求也大幅提高:

  • Linux 核心:最低版本 5.10。
  • Glibc:2.34。
  • OpenSSL:3.0.0。
  • Util-linux:2.37。
  • 其他:Python 3.9.0、cryptsetup 2.4.0 和 libseccomp 2.4.0。

libsystemd 中的模組化和動態加載

科莫 這是減少依賴性舉措的一部分 直接在創業公司 libsystemd 現在使用 dlopen() 進行動態加載 對於 libacl、libblkid、libseccomp、libselinux 和 libmount 等函式庫,系統僅在流程需要其特定功能時才載入記憶體中,從而最佳化資源使用。此外,libcap 的功能已直接整合到 libsystemd 中,簡化了依賴鏈。

El 日誌處理已更改其預設配置: 日誌儲存模式(Journal) 從“自動”更改為“持久”無論 /var/log/journal 目錄之前是否存在。

在網路和虛擬化領域:

  • systemd-networkd 和 systemd-nspawn: 已移除對使用 iptables 的 NAT 規則的支持,只剩下 nftables 是唯一相容的選項。
  • systemd-resolved: 現在允許在 /run/systemd/resolve.hook/ 中使用本地鉤子(hooks)來幹預名稱解析請求。
  • systemd-importd: 處理 TAR 檔案的邏輯已原生整合。此外,`importd` 和 `machined` 現在都可以在使用者層級運行,從而允許在使用者的本地目錄(`~/.local/state/machines/`)中進行映像管理。

其他創新

基於協定的API Varlink 獲得了增強功能,允許存取服務設定並進行 IPC 調用 例如 Reload() 和 Reexecute() 函數。對於系統管理員來說,在服務中加入 OOMKills 屬性將非常有用,因為它允許他們直接透過 systemd 工具追蹤進程因記憶體不足而被終止的次數。

最後,隨著 systemd-boot 中對 TPM 1.2 的支援被移除,系統啟動過程變得更加現代化,並將所有安全工作集中在 TPM 2.0 標準上。

如果您有興趣了解更多,可以諮詢 以下鏈接中提供了詳細信息。