Systemd 261 已发布,对 init 系统、服务管理器、启动工具、网络、TPM 支持、容器、虚拟机和系统更新工具进行了重大更新。

一项关键新增功能是全新的云实例元数据服务子系统。Systemd 现在包含该systemd-imdsd服务,这是一个基于 Varlink 的本地服务,使本地程序能够通过统一的接口访问云元数据,而无需直接连接到各个云提供商的元数据服务。
该子系统使用硬件数据库文件,hwdb.d/40-imds.hwdb通过 SMBIOS 信息识别公有云平台。支持的平台包括 Amazon EC2、Microsoft Azure、Google Compute Engine、Hetzner、Oracle Cloud、Scaleway、腾讯云、阿里云 ECS 和 Vultr。
此次发布还新增了一个选项,用于限制对已识别云的云元数据服务的网络访问。发布说明建议在安全部署中使用此功能,但请注意,这可能会与传统的 IMDS 客户端(例如)冲突cloud-init,因为这些客户端需要直接访问元数据端点。
TPM 支持迎来多项更新。Systemd 261 引入了ConditionSecurity=measured-os一个新的单元条件,用于检查系统是否使用测量启动语义启动。这类似于之前的条件ConditionSecurity=measured-uki,但更加通用,适用于操作系统层面提供 TPM 功能的系统。
systemd-boot此外,systemd-stub现在将 SMBIOS 类型 1、类型 2 和类型 11 的数据测量到 PCR 1 中,以解决固件不执行这些测量的情况。
FileDescriptorStorePreserve=yes服务管理器现在支持内核的实时更新编排和 Kexec 交接机制(如果可用),因此如果内核支持并且已设置,系统单元可以在 kexec 过程中保留文件描述符存储。
用户会话管理器现在支持持久化用户单元的文件描述符存储。结合 kexec 交接支持,这使得某些用户服务能够在会话重启和 kexec 重启后保留状态。
Systemd 261 还引入了用于服务管理的新控件和接口。新ReloadCount属性可通过 D-Bus 和 Varlink 访问,每次成功调用后递增daemon-reload,并在调用结束后重置daemon-reexec。Varlink 还提供了其他方法,允许启动瞬态服务单元和请求系统关闭操作。
此外,该版本还新增了ConditionFraction=一个用于跨机器集群分阶段部署的新单元条件。它使用系统的机器 ID 和标签字符串来确定某个单元是否应在指定百分比的系统上运行,从而使管理员能够逐步部署单元。
systemd-networkd此外,networkd 还收到了多项更新。新networkctl dhcp-lease INTERFACE命令会显示已获取的 DHCP 租约信息,包括从服务器接收的选项。networkd 现在公开了 Varlink 方法,用于描述、重新配置、续订和强制续订链路,并networkctl在可能的情况下优先使用这些方法。
此外,systemd-resolved现在支持从 JSON 配置文件中导入静态 DNS 资源记录systemd/resolve/static.d/。这扩展了其功能/etc/hosts,通过配置文件模型实现了更灵活的本地 DNS 数据导入。解析器还为 DNS、多播 DNS 和 LLMNR 添加了缓存大小设置,并在重新加载时重新读取/etc/hosts条目。
关于启动相关工具,systemd-stub现在会维护一个从持久化 EFI 变量派生的“启动密钥”,以便在 TPM 不可用时用作备用密钥材料。它还会检测活动的 EFI 串行控制台,并将相应的密钥传递console= parameter给内核命令行,从而简化使用统一内核映像部署串行控制台的过程。
systemd-boot现在,在安装新版本时,会将现有二进制文件存储为备用方案,并创建一个备用 UEFI 启动项。此外,systemd-sysupdate它现在已与其他面向用户的工具一起安装/usr/bin/,不再是实验性质的。
容器和虚拟机也会收到更新。systemd-nspawn新增了将日志条目从有效负载转发到选定日志套接字的选项。此外,如果已配置,它还支持在容器重启后保留有效负载系统管理器的文件描述符存储。
systemd-vmspawn引入了诸如绑定卷支持、无头控制台操作、EFI NVRAM 状态处理、无需 UEFI 固件的直接内核启动、可选择的映像磁盘类型以及通过io.systemd.MachineInstanceVarlink 接口进行运行时存储操作等新功能。
最后,该版本还指出 systemd 262 中计划移除一些功能。对/run/boot-loader-entries/相关接口的支持将被移除,但对 UAPI.1 引导加载程序规范的支持将保留。此外,实验性的D-Bus API 也将被移除,客户端应使用 Varlink 直接与.systemd-sysupdated通信。systemd-sysupdate

