經過六個月的開發,系統管理器systemd 257 發布了主要變化:新的實用程式systemd-sbsign 和systemd-keyutil、透過套接字啟動時對MPTCP 的支援、對使用Musl C 庫進行構建的初步支持、 updatectl 實用程序,用於透過 systemd-sysupdate 管理更新的安裝,能夠在單獨的 PID 命名空間中啟動服務,防止使用「systemd-tmpfiles —purge」時意外刪除檔案。
新版本的變化包括:
- 新增了一個名為 systemd-sbsign 的實用程序,用於對 PE(可移植可執行檔)格式的可執行檔進行數位簽名,這些文件旨在用於 EFI 安全啟動模式。可以使用 OpenSSL 庫提供的引擎和提供者來產生簽章。在產生通用核心映像 (UKI) 時,systemd-sbsign 可以取代 ukify 實用程式中的 sbsigntool 和 pesign 應用程式。 UKI 將 UEFI 開機載入程式(UEFI 開機存根)和核心映像組合在單一檔案中。 Linux initrd 系統環境已載入到記憶體中。
- 新增了一個新實用程式 systemd-keyutil,可對私鑰和 X.509 憑證實現各種操作。例如,systemd-keyutil 可用於測試載入私鑰和憑證以及從中提取 PEM 格式的公鑰的能力。
- 在用於確保套接字啟動機制(嘗試建立網路連線時啟動進程)正常運作的「.socket」單元中,實現了對MPTCP(多路徑TCP)的支援。 MPTCP是TCP協定的擴展,用於組織TCP連接的操作,透過綁定到不同網路介面的多條路徑同時傳輸封包。 IP位址.
- 包括使用標準 Musl C 庫建置所需的變更。
- 各種用於顯示進度指示器的 systemd 元件(例如 systemd-repart、systemd-sysupdate/updatectl 和 importctl)現在支援使用 ANSI 序列來實現進度動畫顯示。目前,此類序列僅在以下情況下支援: Windows 終端(預計隨著時間的推移,類似的功能將被轉移到終端模擬器中) Linux).
- systemd-sysupdate組件的功能得到了擴展,用於使用原子機制自動檢測、下載和安裝更新,以替換分區、文件或目錄(使用兩個獨立的分區/文件/目錄,其中一個包含當前工作的分區/檔案/目錄)資源,另一個安裝下一個)更新,之後交換部分/檔案/目錄)。實際上,systemd-sysupdate 已經在 GNOME 作業系統中使用。
除了 systemd-sysupdate 程序之外,還新增了同名服務,允許非特權使用者使用 D-Bus 來管理系統更新。為了管理該服務,還包括一個新的 updatectl 實用程式。在 systemd-sysupdate 中新增了「--offline」標誌,以停用透過網路下載元資料並僅使用已下載至本機系統的版本。新增了對所有命令的 JSON 格式輸出的支援。
- 服務實作了一個新屬性“PrivatePIDs”,使用該屬性您可以在單獨的進程標識符空間(PID 命名空間)中組織 PID 1(init 進程)的進程啟動。在為啟動的程序所建立的環境中,只有為其所建立的命名空間中的程序才是可見的。
- 增加了對 udev 規則的不區分大小寫匹配的支援(例如“ATTR{foo}==i»abcd»”)。使用 udev,可以為非特權本機使用者提供對 /dev/udmabuf 裝置的存取(「uaccess」),這是透過 libcamera 使用 IPMI 相機所必需的。 udev 提供對各種具有 USB 介面的硬體加密錢包的識別,並為它們設定 ID_HARDWARE_WALLET 屬性,這允許您對它們應用「uaccess」模式以供非特權用戶存取。
- 新欄位 RELEASE_TYPE、EXPERIMENT 和 EXPERIMENT_URL 已新增至 /etc/os-release 檔案。 「RELEASE_TYPE」可以採用值「experimental」、「development」、「stable」和「lts」來將穩定版本與開發和實驗版本分開。 EXPERIMENT 和 EXPERIMENT_URL 參數旨在解釋實驗建構的本質。
- run0 實用程式是作為 sudo 程式的替代品而開發的,添加了「--shell-prompt-prefix」選項,該選項指定命令 shell 提示符的前綴字串。預設情況下,表情符號「🦸」顯示為前綴,以直觀地突出顯示提升的會話。
- 在 systemd-tmpfiles 中,為了避免意外刪除錯誤的文件,「--purge」選項現在僅適用於 tmpfiles.d/ 中明確設定了「$」標誌的設定。 “--purge”操作現在還需要從 tmpfiles.d/ 目錄中指定至少一個檔案。對於「L」類型的字串,新增了「?」標誌,指定後,僅當目標檔案存在時才會建立符號連結。
- 在服務管理員和相關實用程式中,進程追蹤程式碼繼續轉換為使用 PIDFD 而不是 PID。 PIDFD 與特定進程關聯且不會改變,而 PID 在與該 PID 關聯的目前進程終止後可以與另一個進程關聯。
- 對於服務,現在可以在“RestartMode”參數中指定值“debug”,其中失敗的服務將在啟用偵錯模式的情況下重新啟動(設定環境變數 DEBUG_INVOCATION=1),並且 LogLevelMax 值將暫時提升到偵錯等級。
- PID 1 處理程序能夠載入 IPE(完整性策略執行)LSM 模組的規則,該模組定義整個系統的完整性策略(允許哪些操作以及應如何驗證元件的真實性)。
- 「DeferReactivation」選項已新增至「.timer」單元檔案中,如果服務自上次啟動以來尚未完成其執行,則允許您跳過下一次計時器啟動。
- 在 PrivateUsers 單元檔案參數中,現在可以指定「identity」值,以在建立使用者命名空間時啟用使用者 ID 對應。
- 新增了對 PrivateTmp 單元檔案參數「disconnected」值的支持,該參數將為 /tmp/ 和 /var/tmp/ 目錄使用單獨的 tmpfs 實例。
- ProtectControlGroups 單元檔案參數中新增了對新「私有」和「嚴格」模式的支持,設定後,將為服務建立新的 cgroup 命名空間並掛載 cgroupfs。當設定“strict”選項時,cgroupfs 以唯讀模式掛載。
- StateDirectory、RuntimeDirectory、CacheDirectory、LogsDirectory 和 ConfigurationDirectory 參數提供了使用「:ro」標誌將對對應目錄的存取限制為唯讀模式的功能。
- 在「systemd.machine_id」內核命令列參數中新增了對「firmware」值的支持,其中系統識別碼(機器 ID)將根據 SMBIOS/DeviceTree 中的 UUID 計算。
- 增加了對最近內核版本中引入的 mseal()、listmount() 和 statmount() 系統呼叫的支援。 Linux.
- solvectl、timedatectl 和 systemd-inhibit 實用程式現在支援使用 Polkit 進行互動式授權。
- 新增了在 systemctl 實用程式的「reenable」命令中使用「--now」標誌的功能。
- 在 systemd-mount 實用程式中新增了「--json」選項,用於以 JSON 格式輸出(例如,當與「--list-devices」一起指定時,裝置清單將以 JSON 格式輸出)。
- 在「localectl」實用程式新增了「-l」和「--full」選項,以在輸出期間停用長行的修剪。
- Sleep.conf 中新增了 HibernateOnACPower 選項,它允許您延遲切換到睡眠模式,直到裝置與固定電源斷開連接。
- 在 systemd-sysusers 中,「u」行中添加了對「!」修飾符的支持,您可以使用它來建立完全鎖定的用戶帳戶(以前,設定不正確的密碼用於阻止用戶,例如,在SSH 中的密鑰認證期間不會導致阻塞)。
- Systemd-coredump 新增了一個「EnterNamespace」選項,允許存取任何崩潰進程的掛載點空間以取得其偵錯符號。實際上,該選項對於組織在隔離容器中運行的應用程式的核心檔案的回溯很有用。
- systemd-logind 包括處理 Ctrl-Alt-Shift-Esc 組合,以將 org.freedesktop.login1.SecureAttentionKey 訊號傳送至使用者環境元件,並要求顯示安全登入對話方塊。實作「DesignatedMaintenanceTime」設定以自動安排工作在指定時間完成。與對 DRM 和 evdev 裝置的支援類比,增加了對配置非特權使用者對 hidraw 裝置(遊戲控制器和操縱桿)的存取權的支援。
- systemd-machined 現在支援非特權用戶端登入。 虛擬機 以及容器。除了 D-Bus 之外,還可以透過 Varlink API 存取 systemd-machined 功能。
- networkd.conf 設定檔中新增了新的「[IPv6AddressLabel]」部分,用於設定 IPv6 位址的標籤和前綴
- 在「networkctl edit」指令中新增了「--stdin」選項,以從標準流取得檔案內容。透過為「networkctl edit」和「networkctl cat」指令指定網路接口,新增了對編輯和顯示 .netdev 檔案的支援。新增了選項“--no-ask-password”以停用互動式授權。
- 為 ukify、bootctl、systemd-keyutil、systemd-measure、systemd-repart 和 systemd-sbsign 實用程式新增了「--certificate-source」選項,以透過 OpenSSL 提供者載入 X.509 證書,而不是直接從檔案。
- systemd-boot 增加了使用音量按鈕在啟動選單中上下移動的功能,這在智慧型手機等裝置上非常有用。 bootctl 公用程式中新增了對 systemd-boot 以 ESL(db/dbx/…) 格式安裝 UEFI 安全啟動資料庫的支援。
- 在journalctl中新增了「--list-inspiration」選項以顯示單元呼叫列表,並新增了「--inspiration」選項(「-I」)以顯示僅與特定呼叫相關的日誌。
- systemd-nspawn 新增了對容器中 FUSE(使用者空間中的檔案系統)的非特權使用的支援。使用「--bind-user」選項時,透過 SSH 存取所需的使用者 SSH 金鑰將轉送到容器。
- libsystemd 新增了一個使用 JSON 格式的新程式介面“sd-json”,以及一個使用 IPC Varlink 的介面“sd-varlink”。
- 推薦的基礎核心版本已升級至 5.4 年形成的 2019 版。明年,他們計劃停止支援舊內核,並將 5.4 版本標記為受支援的最低基礎版本。
- 對 cgroups v1 的支援已被棄用,預設情況下處於停用狀態(要啟用它,除了在 systemd 設定中啟用它之外,還必須在核心命令列上指定 SYSTEMD_CGROUP_ENABLE_LEGACY_FORCE=1)。 systemd 258 的下一個版本計劃完全刪除 cgroups v1 相關代碼。 Systemd 版本 258 也計畫取消對 System V 服務腳本的支援。
來源: opennet.ru
