systemd 系统管理器版本 250

经过五个月的开发,系统管理器 systemd 250 发布了。新版本引入了以加密形式存储凭证的能力,使用数字签名实现了自动检测到的 GPT 分区的验证,改进了有关延迟原因的信息。启动服务,并添加了限制服务访问某些文件系统和网络接口的选项,提供了使用 dm-integrity 模块进行分区完整性监控的支持,并添加了对 sd-boot 自动更新的支持。

主要变化:

  • 添加了对加密和经过身份验证的凭据的支持,这对于安全存储 SSL 密钥和访问密码等敏感材料非常有用。 仅在必要时并且与本地安装或设备相关时才执行凭证解密。 数据使用对称加密算法自动加密,其密钥可以位于文件系统、TPM2 芯片中或使用组合方案。 当服务启动时,凭据会自动解密并以其正常形式可供服务使用。 为了使用加密凭据,添加了“systemd-creds”实用程序,并为服务建议了 LoadCredentialEncrypted 和 SetCredentialEncrypted 设置。
  • sd-stub 是允许 EFI 固件加载 Linux 内核的 EFI 可执行文件,现在支持使用 LINUX_EFI_INITRD_MEDIA_GUID EFI 协议启动内核。 sd-stub 还添加了将凭据和 sysext 文件打包到 cpio 存档中并将该存档与 initrd 一起传输到内核的功能(其他文件放置在 /.extra/ 目录中)。 此功能允许您使用可验证的、不可变的 initrd 环境,并辅以 sysexts 和加密的身份验证数据。
  • 可发现分区规范已得到显着扩展,提供了使用 GPT(GUID 分区表)识别、安装和激活系统分区的工具。 与以前的版本相比,该规范现在支持大多数架构的根分区和 /usr 分区,包括不使用 UEFI 的平台。

    Discoverable Partitions 还增加了对分区的支持,其完整性由 dm-verity 模块使用 PKCS#7 数字签名进行验证,从而更轻松地创建经过完全身份验证的磁盘映像。 验证支持集成到操作磁盘映像的各种实用程序中,包括 systemd-nspawn、systemd-sysext、systemd-dissect、RootImage 服务、systemd-tmpfiles 和 systemd-sysusers。

  • 对于需要很长时间才能启动或停止的单元,除了显示动画进度条之外,还可以显示状态信息,让您了解服务此刻到底发生了什么以及系统管理器正在执行哪个服务目前正在等待完成。
  • 在 /etc/systemd/system.conf 和 /etc/systemd/user.conf 中添加了 DefaultOOMScoreAdjust 参数,该参数允许您调整内存不足的 OOM-killer 阈值,适用于 systemd 为系统和用户启动的进程。 默认情况下,系统服务的权重高于用户服务的权重,即当内存不足时,用户服务终止的概率高于系统服务终止的概率。
  • 添加了 RestrictFileSystems 设置,该设置允许您限制服务对某些类型的文件系统的访问。 要查看可用的文件系统类型,可以使用“systemd-analyze filesystems”命令。 以此类推,RestrictNetworkInterfaces选项已经实现,它允许您限制对某些网络接口的访问。 该实现基于 BPF LSM 模块,该模块限制一组进程对内核对象的访问。
  • 添加了新的 /etc/integritytab 配置文件和 systemd-integritysetup 实用程序,用于配置 dm-integrity 模块以控制扇区级别的数据完整性,例如,保证加密数据的不变性(经过身份验证的加密,确保数据块具有没有以迂回的方式修改)。 /etc/integritytab 文件的格式与 /etc/crypttab 和 /etc/veritytab 文件类似,只不过使用 dm-integrity 而不是 dm-crypt 和 dm-verity。
  • 添加了新的单元文件 systemd-boot-update.service,当激活并安装 sd-boot 引导加载程序时,systemd 将自动更新 sd-boot 引导加载程序的版本,使引导加载程序代码始终保持最新。 sd-boot 本身现在默认构建为支持 SBAT(UEFI 安全启动高级目标)机制,该机制解决了 UEFI 安全启动的证书吊销问题。 此外,sd-boot 还提供了解析 Microsoft Windows 启动设置的功能,以正确生成 Windows 启动分区的名称并显示 Windows 版本。

    sd-boot 还提供在构建时定义配色方案的能力。 在启动过程中,添加了对通过按“r”键更改屏幕分辨率的支持。 添加热键“f”进入固件配置界面。 添加了根据上次启动时选择的菜单项自动启动系统的模式。 添加了自动加载位于 ESP(EFI 系统分区)部分的 /EFI/systemd/drivers/ 目录中的 EFI 驱动程序的功能。

  • 其中包含一个新的单元文件factory-reset.target,该文件在systemd-logind中以与重新启动、关机、挂起和休眠操作类似的方式进行处理,并用于创建执行恢复出厂设置的处理程序。
  • 除了 127.0.0.54 之外,systemd 解析的进程现在还在 127.0.0.53 处创建了一个额外的侦听套接字。 到达 127.0.0.54 的请求始终会重定向到上游 DNS 服务器,并且不会在本地进行处理。
  • 提供了使用 OpenSSL 库而不是 libgcrypt 构建 systemd-importd 和 systemd-resolved 的能力。
  • 增加了对龙芯处理器中使用的LoongArch架构的初步支持。
  • systemd-gpt-auto-generator 提供自动配置由 LUKS2 子系统加密的系统定义交换分区的功能。
  • systemd-nspawn、systemd-dissect 和类似实用程序中使用的 GPT 图像解析代码实现​​了为其他架构解码图像的能力,允许使用 systemd-nspawn 在其他架构的模拟器上运行图像。
  • 检查磁盘映像时,systemd-dissect 现在会显示有关分区用途的信息,例如是否适合通过 UEFI 启动或在容器中运行。
  • “SYSEXT_SCOPE”字段已添加到 system-extension.d/ 文件中,允许您指示系统映像的范围 - “initrd”、“system”或“portable”。
  • os-release 文件中添加了“PORTABLE_PREFIXES”字段,可在便携式映像中使用该字段来确定支持的单元文件前缀。
  • systemd-logind 引入了新设置 HandlePowerKeyLongPress、HandleRebootKeyLongPress、HandleSuspendKeyLongPress 和 HandleHibernateKeyLongPress,可用于确定按住某些按键超过 5 秒时会发生什么情况(例如,快速按下 Suspend 键可配置为进入待机模式) ,按住时,它将进入睡眠状态)。
  • 对于单元,实现了 StartupAllowedCPUs 和 StartupAllowedMemoryNodes 设置,这与没有 Startup 前缀的类似设置不同,因为它们仅在启动和关闭阶段应用,这允许您在启动期间设置其他资源限制。
  • 添加了[条件|断言][内存|CPU|IO]压力检查,如果PSI机制检测到系统中内存、CPU和I/O负载过重,则允许跳过或失败单元激活。
  • /dev 分区的默认最大 inode 限制已从 64k 增加到 1M,/tmp 分区的默认最大 inode 限制已从 400k 增加到 1M。
  • 已为服务提出了 ExecSearchPath 设置,这使得可以更改搜索通过 ExecStart 等设置启动的可执行文件的路径。
  • 添加了 RuntimeRandomizedExtraSec 设置,该设置允许您将随机偏差引入 RuntimeMaxSec 超时,从而限制单元的执行时间。
  • RuntimeDirectory、StateDirectory、CacheDirectory 和 LogsDirectory 设置的语法已得到扩展,其中通过指定用冒号分隔的附加值,您现在可以组织创建到给定目录的符号链接,以便组织沿多个路径的访问。
  • 对于服务,提供 TTYRows 和 TTYColumns 设置来设置 TTY 设备中的行数和列数。
  • 添加了 ExitType 设置,该设置允许您更改确定服务结束的逻辑。 默认情况下,systemd仅监视主进程的死亡,但如果设置了ExitType=cgroup,则系统管理器将等待cgroup中的最后一个进程完成。
  • systemd-cryptsetup 对 TPM2/FIDO2/PKCS11 支持的实现现在也构建为 cryptsetup 插件,允许使用正常的 cryptsetup 命令来解锁加密分区。
  • systemd-cryptsetup/systemd-cryptsetup 中的 TPM2 处理程序除了 ECC 密钥之外还添加了对 RSA 主密钥的支持,以提高与非 ECC 芯片的兼容性。
  • 令牌超时选项已添加到 /etc/crypttab,它允许您定义等待 PKCS#11/FIDO2 令牌连接的最长时间,之后系统将提示您输入密码或恢复密钥。
  • systemd-timesyncd 实现了 SaveIntervalSec 设置,它允许您定期将当前系统时间保存到磁盘,例如,在没有 RTC 的系统上实现单调时钟。
  • systemd-analyze 实用程序中添加了选项:“--image”和“--root”用于检查给定映像或根目录内的单元文件,“--recursive-errors”用于在出现错误时考虑依赖单元检测到,“--offline”用于单独检查保存到磁盘的单元文件,“--json”用于以 JSON 格式输出,“--quiet”用于禁用不重要的消息,“--profile”用于绑定到便携式配置文件。 还添加了inspect-elf命令,用于解析ELF格式的核心文件,以及检查具有给定单元名称的单元文件的能力,无论该名称是否与文件名匹配。
  • systemd-networkd 扩展了对控制器局域网 (CAN) 总线的支持。 添加了控制 CAN 模式的设置:Loopback、OneShot、PresumeAck 和 ClassicDataLengthCode。 在 .network 文件的 [CAN] 部分添加了 TimeQuantaNSec、PropagationSegment、PhaseBufferSegment1、PhaseBufferSegment2、SyncJumpWidth、DataTimeQuantaNSec、DataPropagationSegment、DataPhaseBufferSegment1、DataPhaseBufferSegment2 和 DataSyncJumpWidth 选项,以控制 CAN 接口的位同步。
  • Systemd-networkd 为 DHCPv4 客户端添加了一个 Label 选项,允许您配置在配置 IPv4 地址时使用的地址标签。
  • “ethtool”的 systemd-udevd 实现了对特殊“max”值的支持,这些值将缓冲区大小设置为硬件支持的最大值。
  • 在 systemd-udevd 的 .link 文件中,您现在可以配置用于组合网络适配器和连接硬件处理程序(卸载)的各种参数。
  • systemd-networkd 默认提供新的 .network 文件: 80-container-vb.network 来定义使用“--network-bridge”或“--network-zone”选项运行 systemd-nspawn 时创建的网桥; 80-6rd-tunnel.network 用于定义在接收带有 6RD 选项的 DHCP 响应时自动创建的隧道。
  • Systemd-networkd 和 systemd-udevd 添加了对 InfiniBand 接口上的 IP 转发的支持,其中“[IPoIB]”部分已添加到 systemd.netdev 文件中,并且“ipoib”值的处理已在 Kind 中实现环境。
  • systemd-networkd 为AllowedIPs 参数中指定的地址提供自动路由配置,可以通过[WireGuard] 和[WireGuardPeer] 部分中的RouteTable 和RouteMetric 参数进行配置。
  • systemd-networkd 为 batadv 和网桥接口自动生成不变的 MAC 地址。 要禁用此行为,您可以在 .netdev 文件中指定 MACAddress=none。
  • WakeOnLanPassword 设置已添加到 .link 文件的“[Link]”部分,以确定 WoL 在“SecureOn”模式下运行时的密码。
  • 在 .network 文件的“[CAKE]”部分添加了 AutoRateIngress、CompensationMode、FlowIsolationMode、NAT、MPUBytes、PriorityQueueingPreset、FirewallMark、Wash、SplitGSO 和 UseRawPacketSize 设置,以定义 CAKE(通用应用程序保持增强)网络队列管理机制的参数。
  • 在 .network 文件的“[Network]”部分添加了 IgnoreCarrierLoss 设置,允许您确定在对载波信号丢失做出反应之前等待多长时间。
  • Systemd-nspawn、homectl、machinectl 和 systemd-run 扩展了“--setenv”参数的语法 - 如果仅指定变量名称(不带“=”),则将从相应的环境变量中获取值(对于例如,当指定“--setenv=FOO”时,该值将从 $FOO 环境变量中获取,并在容器中设置的同名环境变量中使用)。
  • systemd-nspawn 添加了一个“--suppress-sync”选项,用于在创建容器时禁用sync()/fsync()/fdatasync()系统调用(当速度是优先考虑的并且在失败时保留构建工件不是有用的)很重要,因为它们可以随时重新创建)。
  • 添加了新的hwdb数据库,其中包括各种类型的信号分析仪(万用表、协议分析仪、示波器等)。 hwdb 中有关摄像机的信息已扩展为包含有关摄像机类型(常规或红外)和镜头位置(前置或后置)信息的字段。
  • 为 Xen 中使用的网络前端设备启用了不变的网络接口名称的生成。
  • 基于 libdw/libelf 库的 systemd-coredump 实用程序对核心文件的分析现在在单独的进程中执行,并隔离在沙箱环境中。
  • systemd-importd 添加了对环境变量 $SYSTEMD_IMPORT_BTRFS_SUBVOL、$SYSTEMD_IMPORT_BTRFS_QUOTA、$SYSTEMD_IMPORT_SYNC 的支持,使用它们可以禁用 Btrfs 子分区的生成,以及配置配额和磁盘同步。
  • 在 systemd-journald 中,在支持写时复制模式的文件系统上,为存档日志重新启用了 COW 模式,从而允许使用 Btrfs 对其进行压缩。
  • systemd-journald 在单个消息中实现相同字段的重复数据删除,这是在将消息放入日志之前的阶段执行的。
  • 在 shutdown 命令中添加了“--show”选项以显示计划的关闭。

来源: opennet.ru

添加评论