经过六个月的开发,系统管理器 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
