systemd 系统管理器版本 244

经过三个月的开发 提交 系统管理器发布 systemd 244.

主要变化:

  • 添加了对基于 cgroups v2 的 cpuset 资源控制器的支持,它提供了一种将进程绑定到特定 CPU(“AllowedCPUs”设置)和 NUMA 内存节点(“AllowedMemoryNodes”设置)的机制;
  • 添加了对从 systemd 配置的 SystemdOptions EFI 变量加载设置的支持,这允许您在难以更改内核命令行选项并且从磁盘读取配置太晚的情况下自定义 systemd 行为(例如,当您需要配置与 cgroup 层次结构相关的选项)。 您可以使用'bootctl systemd-efi-options'命令来设置EFI中的变量;
  • 已向单元添加了从与单元类型关联的“{unit_type}.d/”目录(例如“service.d/”)加载设置的支持,可用于添加覆盖给定单元文件的所有设置立即输入;
  • 为服务单元添加了新的沙箱隔离模式 ProtectKernelLogs,它允许您阻止程序通过 syslog 系统调用访问可用的内核日志缓冲区(不要与 libc 中提供的同名 API 混淆) 。 如果激活该模式,应用程序对/proc/kmsg、/dev/kmsg和CAP_SYSLOG的访问将被阻止;
  • 对于单位,已提出RestartKillSignal设置,它允许您覆盖任务重新启动期间用于终止进程的信号的数量(您可以更改在准备重新启动阶段停止进程的行为);
  • “systemctl clean”命令已适用于套接字、安装和交换单元(socket、mount、swap);
  • 在启动初期,禁用内核通过 printk 调用输出消息的速率的限制,这允许您在日志存储未存储的阶段积累有关启动进度的更完整的日志。尚未连接(日志累积在内核环形缓冲区中)。 从内核命令行设置 printk 的限制优先,并允许您覆盖 systemd 行为。 直接记录到 /dev/kmsg 的 systemd 程序(这仅在早期启动期间完成)使用单独的内部限制来防止缓冲区泛滥;
  • systemctl 实用程序中添加了“stop --job-mode=triggering”命令,该命令允许您停止命令行上指定的单元以及可以调用它的所有单元;
  • 单位状态信息现在包括有关呼叫和召唤单位的信息;
  • 添加了在范围单元中使用“RuntimeMaxSec”设置的功能(以前仅在服务单元中使用)。 例如,“RuntimeMaxSec”现在可用于通过创建范围单元来限制 PAM 会话的时间
    对于用户帐户。 时间限制也可以通过 pam_systemd PAM 模块选项中的 systemd.runtime_max_sec 选项设置;

  • 添加了新的系统调用组“@pkey”,同时限制容器和服务,更容易将与内存保护相关的系统调用列入白名单;
  • 向 systemd-tmpfiles 添加了“w+”标志以在文件追加模式下写入;
  • 在 systemd-analyze 输出中添加了有关内核内存配置是否与 systemd 设置匹配的信息(例如,是否某些第三方程序更改了内核参数);
  • 在systemd-analyze中添加了“--base-time”选项,该选项计算相对于该选项中指定的时间的日历数据,而不是相对于当前系统时间;
  • “journalctl --update-catalog”确保输出中元素的一致性(对于组织重复构建很有用);
  • 添加了为 systemd 服务中使用的“WatchdogSec”设置指定默认值的功能。 编译时,可以通过“-Dservice-watchdog”选项指定基值(如果设置为空,看门狗将被禁用);
  • 添加了“-Duser-path”构建选项来覆盖 $PATH 值;
  • 向 systemd-id128 实用程序添加了“-u”(“--uuid”)选项,以将 128 位标识符输出到 UUID(UUID 的规范表示);
  • 现在构建要求 libcryptsetup 版本至少为 2.0.1。

网络设置更改:

  • Systemd-networkd 添加了对动态链接重新配置的支持,为此,networkctl 中添加了“reload”和“reconfigure DEVICE…”命令来重新加载设置和重新配置设备;
  • systemd-networkd 停止为具有 Intranet 地址 4/169.254.0.0 的本地 IPv16 链接创建默认路由(链接本地)。 以前,为此类链接自动创建默认路由在某些情况下会导致意外行为和路由问题。 要返回旧行为,请使用“DefaultRouteOnDevice=yes”设置。 同样,如果没有为链路启用本地 IPv6 路由,则本地 IPv6 地址的分配也会停止;
  • 在systemd-networkd中,当以ad-hoc模式连接无线网络时,默认配置是使用链路本地寻址(link-local)来实现的;
  • 新增RxBufferSiz和TxBufferSize参数,用于设置接收和发送网络接口缓冲区的大小;
  • systemd-networkd 实现了额外 IPv6 路由的声明,可通过“[IPv6RoutePrefix]”部分中的 Route 和 LifetimeSec 选项进行调整;
  • Systemd-networkd 添加了使用“[NextHop]”部分中的“Gateway”和“Id”选项配置“下一跳”路由的功能;
  • systemd-networkd 和用于 DHCP 的 networkctl 提供通过“networkctl renew”命令实现的 IP 地址绑定(租约)的动态更新;
  • systemd-networkd 确保 DHCP 配置在重新启动时重置(使用 KeepConfiguration 选项保留设置)。 SendRelease 设置的默认值更改为“true”;
  • 强制 DHCPv4 客户端使用服务器传递的 OPTION_INFORMATION_REFRESH_TIME 选项的值。 要从服务器请求特定选项,建议使用“RequestOptions”参数,并将选项发送到服务器 - “SendOption”。 为了让DHCP客户端配置IP服务类型,增加了“IPServiceType”参数;
  • 为了让 DHCPv4 服务器替代 SIP(​​会话发起协议)服务器列表,添加了“EmitSIP”和“SIP”参数。 在客户端,可以使用“UseSIP=yes”设置启用来自 SIP 参数服务器的接收;
  • 向 DHCPv6 客户端添加“PrefixDelegationHint”选项以请求地址前缀;
  • .network 文件支持按 SSID 和 BSSID 映射无线网络,例如绑定到接入点名称和 MAC 地址。 无线接口的 SSID 和 BSSID 值显示在 networkctl 输出中。 还添加了按无线网络类型进行匹配的功能(参数 WLANInterfaceType);
  • systemd-networkd 添加了配置排队规则以使用新的父选项管理流量的功能,
    NetworkEmulatorDelaySec、NetworkEmulatorDelayJitterSec、
    NetworkEmulatorPacketLimit 和 NetworkEmulatorLossRate,
    “[TrafficControlQueueingDiscipline]”部分中的 NetworkEmulatorDuplicateRate;

  • systemd-resolved 在使用 GnuTLS 构建时提供证书中 IP 地址的验证。

与 udev 相关的更改:

  • Systemd-udevd 删除了强制终止挂起处理程序的 30 秒超时。 systemd-udevd 现在等待处理程序完成,对于大型安装中正常完成的操作来说,30 秒是不够的(例如,在切换根 FS 的已安装分区的过程中,超时可能会中断驱动程序初始化)。 使用 systemd 时,systemd-udevd 在退出之前等待的超时时间可以通过 systemd-udevd.service 中的 TimeoutStopSec 设置进行设置。 当没有systemd运行时,超时由udev.event_timeout参数控制;
  • 为 udev 添加了 fido_id 程序,用于识别 FIDO CTAP1 令牌
    (“U2F”)/CTAP2 基于其过去的使用情况并显示必要的环境变量(该程序允许您无需先前使用的所有已知令牌的外部白名单);

  • 为从 Chromium OS 导入的白名单中的设备实现了自动生成自动挂起 udev 规则(此更改允许您扩展其他设备的省电模式的使用);
  • udev 中添加了一个新设置“CONST{key}=value”,以允许直接映射系统常量值,而无需运行单独的检查处理程序。 目前仅支持“arch”和“virt”键;
  • 在执行支持模式操作的请求时,提供以非独占模式打开 CDROM(此更改解决了程序访问 CDROM 的问题,并降低了不使用独占访问模式的磁盘写入程序中断的风险)。

来源: opennet.ru

添加评论