VYPR
advisoryPublished Jun 21, 2026· 1 source

Systemd 261 Introduces Software TPM, Cloud Metadata Daemon, and OS Installer

The release of systemd 261 adds a software-based TPM, a cloud instance metadata subsystem, process state persistence across kexec reboots, and a new operating system installer, impacting nearly all modern Linux distributions.

Systemd 261 has been released, adding a software-based TPM implementation and a new OS installer. The update also introduces a cloud metadata subsystem via the systemd-imdsd daemon, which exposes a local Varlink API for accessing instance metadata. Additionally, it improves process state preservation across kexec reboots and continues the effort to load external libraries on demand. These changes affect all Linux distributions using systemd as their init system.

A new daemon, systemd-imdsd, provides a local Varlink API that gives programs access to instance metadata from cloud providers like Amazon EC2, Microsoft Azure, and Google Compute Engine. A companion tool, systemd-imds, imports metadata fields into system credentials for later services to consume. The metadata is measured before import, and operators can lock down network access to cloud metadata services through a build option.

PID1 now supports the kernel's Live Update Orchestration and Kexec Handover mechanisms when present. System units' file descriptor stores can persist through a kexec, and units receive their stashed file descriptors back afterward where the kernel supports the descriptor type. User session managers and systemd-nspawn containers also gained matching support for carrying state across session restarts and kexec reboots.

A new service, systemd-tpm2-swtpm.service, can run IBM's swtpm as a software TPM for systems that lack physical hardware, gated behind a kernel command line option. A new condition, ConditionSecurity=measured-os, checks whether a system booted with measured-boot semantics. systemd-stub now maintains a boot secret derived from a persistent EFI variable and passes it to the OS for fallback codepaths where a local TPM is absent.

A new component, systemd-sysinstall, implements a textual OS installer built on Varlink calls to systemd-repart, bootctl, and systemd-creds. systemd-sysupdate left experimental status and moved to /usr/bin/. systemd-oomd gained support for OOM rulesets, and the manager exposes a ReloadCount property over D-Bus and Varlink. systemd-networkd added a DHCP relay backend and a networkctl command to dump acquired DHCP leases.

Most external library linking now happens through dlopen(), covering libgnutls, libcurl, libcrypto, libssl, libcryptsetup, and others, leaving libc as the remaining direct external link. Support for udev's database version 0 was removed, ending support for live upgrades from releases older than v247. systemd-nspawn's --user= option was renamed to --uid=, with the old form deprecated.

The required musl version rose to 1.2.6 for builds that use it. The project plans to remove the /run/boot-loader-entries/ directory support and the experimental systemd-sysupdated D-Bus API in the 262 release. This release marks a significant step in making systemd more self-sufficient in cloud environments and across kernel resets.

Synthesized by Vypr AI