Systemd 260 Removes System V Init Script Support After a Decade of Deprecation, Adds OverlayFS-Based Container Tooling
Systemd 260 removes SysV init script support, introduces OverlayFS-based mstack container tooling, adds a Varlink metrics framework, and raises the minimum kernel to Linux 5.10.
The systemd project released version 260 of its init system and service manager on March 17, marking the most disruptive update in recent memory. The headline change is the complete removal of System V init script support, a compatibility layer that has bridged the gap between Linux’s legacy boot infrastructure and systemd’s native unit files for over a decade.
The End of SysV Compatibility
Systemd 260 removes the systemd-sysv-generator, systemd-sysv-install, systemd-rc-local-generator, and rc-local.service components that previously allowed legacy /etc/init.d shell scripts to function alongside native systemd unit files. The project’s release notes state plainly: “Support for System V service scripts has been removed. Please make sure to update your software now to include a native systemd unit file instead of a legacy System V script.”
The removal has been anticipated for years. Major distributions have been migrating their service definitions to native unit files since systemd’s initial adoption, and the SysV generator had been documented as deprecated since version 254. Still, the change is expected to further deepen the divide between systemd adopters and the community of users who favor alternative init systems such as OpenRC and runit.
Distributions that still rely on SysV scripts for niche packages will need to complete their migration before adopting systemd 260. A build-time meson flag, -Dcompat-sysv-interfaces=yes, can restore the removed runlevel target units as a transitional measure, though the SysV generators themselves are gone.
MStack: OverlayFS for Services and Containers
The release introduces “mstack,” a new specification for defining OverlayFS-based directory structures that self-describe how a service or container should be invoked. An mstack is constructed by populating a .mstack/ directory hierarchy that specifies the overlay layers, mount points, and execution parameters for a workload.
A new systemd-mstack command-line tool provides interactive management of mstack directories, while systemd-nspawn gains a --mstack= parameter for launching containers directly from mstack definitions. The systemd-importd service now supports importctl pull-oci for downloading OCI container images and converting them to the mstack format. Together, these additions position systemd as a more capable alternative to standalone container runtimes for certain deployment patterns.
Varlink Metrics and Reporting Framework
Systemd 260 defines a new structured reporting framework built on the Varlink IPC protocol. System components can register endpoints under /run/systemd/report/, and the new systemd-report tool aggregates data from all registered endpoints into a combined JSON output. At launch, systemd-networkd and the service manager itself expose reports through this interface.
The Varlink adoption extends beyond metrics. resolvectl now communicates via Varlink rather than D-Bus, journalctl exposes a GetEntries() Varlink method for programmatic journal access, and a new Varlink registry at /run/varlink/registry/ allows services to advertise their IPC endpoints for discovery. Dynamic bridge executables can handle unrecognized URL schemes through socket activation.
Kernel and Dependency Requirements
The minimum supported Linux kernel version increases from 5.4 to 5.10, with 5.14 recommended and 6.6 required for full functionality. On the library side, systemd 260 now requires cryptsetup 2.4.0, glibc 2.34, OpenSSL 3.0.0, and Python 3.9.0. Support for the original libidn library has been dropped in favor of libidn2 exclusively.
Additional Changes
The release touches nearly every subsystem. systemd-networkd gains ModemManager integration for cellular connections through a new [MobileNetwork] configuration section. The service manager adds PrivateUsers=managed for automatic transient UID/GID range assignment, BindNetworkInterface= for socket-to-interface binding, and CPUSchedulingPolicy=ext for Linux’s extensible scheduler. The systemd-oomd out-of-memory daemon now supports pre-kill hooks, allowing components to register Varlink endpoints that are consulted before processes are terminated.
A new hardware ID registry at /usr/lib/systemd/boot/hwids/ provides canonical DeviceTree mappings for automatic device tree blob discovery in Unified Kernel Images, starting with Qualcomm Snapdragon ARM64 devices. The systemd-udevd subsystem reduces minimum backlight brightness from 5% to 1% and adds persistent naming for MCTP devices.
The project also adopted an AGENTS.md file to govern AI code assistance, requiring that any AI-assisted contributions disclose the tool used in commit messages. The systemd project currently limits AI integration to code review through Claude Code in pull requests.
Arch Linux’s April 2026 ISO is the first major distribution release to ship systemd 260, pairing it with Linux kernel 6.19. The release drew contributions from over 300 developers.