systemd 系統管理器版本 248

經過四個月的開發,系統管理器systemd 248發布了,新版本提供了對擴展系統目錄的鏡像、/etc/veritytab配置文件、systemd-cryptenroll實用程式、使用TPM2晶片和FIDO2解鎖LUKS2的支援令牌、隔離IPC 標識符空間中的運作單元、網狀網路的BATMAN 協定、systemd-nspawn 的nftables 後端。 Systemd-oomd 已穩定。

主要變化:

  • 系統擴充映像的概念已實現,可用於擴展 /usr/ 和 /opt/ 目錄的層次結構,並在運行時添加其他文件,即使指定的目錄以只讀方式掛載也是如此。 當安裝系統擴充映像時,其內容將使用 OverlayFS 覆蓋在 /usr/ 和 /opt/ 層次結構上。

    已提出一個新實用程式 systemd-sysext 來連接、斷開、檢視和更新系統擴充的映像。 為了在啟動期間自動連接已安裝的映像,新增了 systemd-sysext.service 服務。 在 os-release 檔案中新增了「SYSEXT_LEVEL=」參數,以確定支援的系統擴充的等級。

  • 對於單元,已實作 ExtensionImages 設置,可用於將系統擴充映像連結到各個隔離服務的 FS 命名空間層次結構。
  • 新增了 /etc/veritytab 設定文件,以使用 dm-verity 模組在區塊層級配置資料驗證。 檔案格式類似 /etc/crypttab - “section_name device_for_data device_for_hashes check_hash_root options”。 新增了 systemd.verity.root_options 核心命令列選項來配置根設備的 dm-verity 行為。
  • systemd-cryptsetup 新增了從 JSON 格式的 LUKS11 元資料標頭中提取 PKCS#2 令牌 URI 和加密金鑰的功能,允許將有關開啟加密裝置的資訊整合到裝置本身中,而無需涉及外部檔案。
  • 除了先前支援的 PKCS#2 令牌之外,systemd-cryptsetup 還支援使用 TPM2 晶片和 FIDO2 令牌解鎖 LUKS11 加密分區。 載入 libfido2 是透過 dlopen() 完成的,即可用性是動態檢查的,而不是作為硬連線的依賴項。
  • 新選項「no-write-workqueue」和「no-read-workqueue」已新增至 systemd-cryptsetup 的 /etc/crypttab 中,以啟用與加密和解密相關的 I/O 同步處理。
  • systemd-repart 實用程式新增了使用 TPM2 晶片啟動加密分區的功能,例如,在首次啟動時建立加密的 /var 分區。
  • 新增了 systemd-cryptenroll 實用程序,用於將 TPM2、FIDO2 和 PKCS#11 令牌綁定到 LUKS 分區,以及取消固定和查看令牌、綁定備用密鑰以及設定存取密碼。
  • 新增了 PrivateIPC 參數,該參數可讓您設定單元檔案以在隔離的 IPC 空間中執行具有自己單獨的識別碼和訊息佇列的進程。 為了將單元連接到已建立的 IPC 識別符空間,建議使用 IPCNamespacePath 選項。
  • 新增了 ExecPaths 和 NoExecPaths 設置,以允許將 noexec 標誌套用至檔案系統的特定部分。
  • systemd-networkd 增加了對 BATMAN(移動自組織網絡的更好方法)網格協議的支持,該協議允許創建分散的網絡,其中每個節點都通過相鄰節點連接。 對於配置,建議使用 .netdev 中的 [BatmanAdvanced] 部分、.network 檔案中的 BatmanAdvanced 參數以及新的裝置類型「batadv」。
  • systemd-oomd系統中記憶體不足的早期響應機制的實現已經穩定。 新增了 DefaultMemoryPressureDurationSec 選項來配置在影響單元之前釋放資源的等待時間。 Systemd-oomd 使用 PSI(壓力失速資訊)核心子系統,可讓您偵測因缺乏資源而導致的延遲的發生,並在系統尚未處於關鍵狀態且不存在的階段選擇性地終止資源密集型進程。開始集中修剪快取並將資料轉移到交換分區。
  • 新增了核心命令列參數“root=tmpfs”,該參數可讓您使用 Tmpfs 將根分割區掛載到 RAM 中的暫存中。
  • 指定金鑰檔案的 /etc/crypttab 參數現在可以指向 AF_UNIX 和 SOCK_STREAM 套接字類型。 在這種情況下,連接到套接字時必須給出金鑰,例如,可以使用它來建立動態頒發金鑰的服務。
  • 系統管理員和 systemd-hostnamed 使用的後備主機名稱現在可以透過兩種方式設定:透過 os-release 中的 DEFAULT_HOSTNAME 參數和透過 $SYSTEMD_DEFAULT_HOSTNAME 環境變數。 systemd-hostnamed 也處理主機名稱中的“localhost”,並增加透過 DBus 匯出主機名稱以及“HardwareVendor”和“HardwareModel”屬性的功能。
  • 現在可以透過 system.conf 或 user.conf 中的新 ManagerEnvironment 選項來配置具有公開環境變數的區塊,而不僅僅是透過核心命令列和單元檔案設定。
  • 在編譯時,可以使用 fexecve() 系統呼叫來取代 execve() 來啟動進程,以減少檢查安全性上下文和應用它之間的延遲。
  • 對於單元文件,新增了新的條件操作 ConditionSecurity=tpm2 和 ConditionCPUFeature,以檢查是否有 TPM2 裝置和單一 CPU 功能(例如,ConditionCPUFeature=rdrand 可用於檢查處理器是否支援 RDRAND 操作)。
  • 對於可用的內核,已實作自動產生 seccomp 篩選器的系統呼叫表。
  • 新增了將新的綁定掛載替換到服務的現有掛載命名空間中的功能,而無需重新啟動服務。 使用命令“systemctl bind”執行替換...' 和 'systemctl 安裝映像……」。
  • 新增了以「truncate:」形式在 StandardOutput 和 StandardError 設定中指定路徑的支持» 用於使用前清潔。
  • 新增了在 sd-bus 的本機容器內建立與指定使用者會話的連線的功能。 例如“systemctl -user -M lennart@ start quux”。
  • 以下參數在 systemd.link 檔案的 [Link] 部分實現:
    • 混雜 - 讓您將裝置切換到「混雜」模式來處理所有網路封包,包括那些未傳送至目前系統的封包;
    • TransmitQueues和ReceiveQueues用來設定TX和RX隊列的數量;
    • TransmitQueueLength 設定TX隊列大小; GenericSegmentOffloadMaxBytes 和 GenericSegmentOffloadMaxSegment 用於設定 GRO(通用接收卸載)技術的使用限制。
  • 新設定已新增至 systemd.network 檔案:
    • [Network] RouteTable 選擇路由表;
    • [RoutingPolicyRule] Type為路由類型(「黑洞」、「不可達」、「禁止」);
    • [IPv6AcceptRA] RouteDenyList 和 RouteAllowList 用於允許和拒絕路由通告的清單;
    • [DHCPv6] UseAdres 忽略 DHCP 所頒發的位址;
    • [DHCPv6PrefixDelegation] 管理臨時位址;
    • ActivationPolicy 定義有關介面活動的策略(始終保持 UP 或 DOWN 狀態,或允許使用者使用「ip link set dev」指令變更狀態)。
  • 在 systemd.netdev 檔案中新增了 [VLAN] Protocol、IngressQOSMaps、EgressQOSMaps 和 [MACVLAN] BroadcastMulticastQueueLength 選項以配置 VLAN 封包處理。
  • 停止以 noexec 模式掛載 /dev/ 目錄,因為在 /dev/sgx 檔案中使用可執行標誌時會導致衝突。 若要傳回舊行為,您可以使用 NoExecPaths=/dev 設定。
  • /dev/vsock 檔案權限已變更為 0o666,/dev/vhost-vsock 和 /dev/vhost-net 檔案已移至 kvm 群組。
  • 硬體 ID 資料庫已透過正確支援睡眠模式的 USB 指紋讀取器進行了擴展。
  • systemd-resolved 新增了對透過存根解析器向 DNSSEC 查詢發出回應的支援。 本機用戶端可以對自身執行 DNSSEC 驗證,而外部用戶端則不變地代理到父 DNS 伺服器。
  • 在resolved.conf中新增了CacheFromLocalhost選項,設定後,systemd-resolved即使對127.0.0.1處的DNS伺服器的呼叫也將使用快取(預設情況下,停用此類請求的快取以避免雙重快取)。
  • systemd-resolved 在本機 DNS 解析器中新增了對 RFC-5001 NSID 的支持,可讓客戶端區分與本機解析器和另一個 DNS 伺服器的互動。
  • resolvctl 公用程式實作了顯示有關資料來源(本機快取、網路請求、本機處理器回應)的資訊以及傳輸資料時使用加密的功能。 提供選項 --cache、--synthesize、--network、--zone、--trust-anchor 和 --validate 來控制名稱確定過程。
  • 除了現有的 iptables 支援之外,systemd-nspawn 還增加了對使用 nftables 設定防火牆的支援。 systemd-networkd 中的 IPMasquerade 設定增加了使用基於 nftables 的後端的功能。
  • systemd-localed 新增了對呼叫 locale-gen 來產生缺少的語言環境的支援。
  • 選項 --pager/-no-pager/-json= 已新增至各種實用程式中,以啟用/停用分頁模式和 JSON 格式的輸出。 新增了透過 SYSTEMD_COLORS 環境變數(“16”或“256”)設定終端中使用的顏色數量的功能。
  • 具有單獨目錄層次結構(分割 / 和 /usr)和 cgroup v1 支援的建置已被棄用。
  • Git 中的 master 分支已從「master」重新命名為「main」。

來源: opennet.ru

添加評論