systemd 258 permanently retires cgroup v1 and now requires at least Linux 5.4

  • End of cgroup v1, minimum kernel 5.4, and TTY security enhancements.
  • New utilities: systemd-factory-reset and systemd-pty-forward.
  • Boot improvements: UKIs with UEFI firmware and adjusted TPM2 policies.
  • Practical guide: DNSSEC and Pi-hole DNS outage solution.

systemd 258

systemd 258 arrives packed with changes affecting booting, security, session management, and daily administration in Linux. It's a substantial release: it simplifies key kernel technologies and removes legacy compatibility that many distributions still carried, while adding new utilities designed for real-world scenarios.

If you work with servers, workstations or container environments, it is worth catching up. From the final withdrawal of cgroup v1 to a more demanding kernel minimum, through TTY permission adjustments, changes in systemd-logind and news like systemd-factory-reset o systemd-pty-forward, this version is not just any update.

Goodbye to cgroup v1: only cgroup v2 from now on

The most talked about part of the launch is the Complete removal of support for cgroup v1. No more legacy or hybrid mode: starting with systemd 258, only cgroup v2 is mounted at boot, and the same happens in containers managed with systemd-nspawnThis change simplifies the kernel resource control stack and reduces attack surfaces and configuration ambiguities.

Why does it matter? cgroup v2 unifies the control model for CPU, memory, I/O, and more into a coherent hierarchy, avoiding past inconsistencies. This move has been anticipated for over two years, so it's not entirely unexpected; even so, it may impact those still using older configurations or relying on tools that haven't been adapted to v2.

Kernel requirement on systemd 258: minimum 5.4, recommended 5.7

Along with this cleanup, systemd 258 establishes a minimum supported kernel version of Linux 5.4 and suggests 5.7 as recommended. This step leaves older branches behind: in practice, it is the responsibility of each distribution to offer compatible kernels, but if you were maintaining systems with older versions, you will have to plan a kernel upgrade to keep up with systemd.

In addition to enabling modern features, a new kernel usually brings security and performance improvements, which fits with the goal of this version: to standardize behavior and reduce hard-to-maintain edge cases.

Security: More restrictive TTY permissions and unified cryptography

In terms of security, systemd 258 hardens access to TTY/PTS devices by default . Created nodes are given 0600 permissions instead of 0620, preventing other users from writing to the terminal. This measure eliminates several annoying and potentially dangerous situations in multi-user environments.

There is also unification in the encryption dependencies: systemd-resolved y systemd-importd now exclusively support OpenSSLGnuTLS and libgcrypt are excluded from these components, simplifying the compatibility matrix and avoiding duplication. If you assumed GnuTLS or libgcrypt were included in your builds or distro policies, it's time to review them.

Session Management: Background Tasks Reclassified

Another key novelty is in systemd-logind. As of this version, certain background tasks such as cron or FTP sessions are reclassified under new 'light' categories. What does this entail? a full service manager will no longer be started for them unless explicitly configured. For the end user, it doesn't change much, but for administration and auditing purposes, it's important to keep this in mind due to the impact on session accounting and resource consumption.

systemd 258 removes legacy support: end of System V scripts

The cleaning process continues: System V-style startup scripts are permanently removed. Along with them, classic commands like initctl o telinitThis is an expected step and is consistent with the reality of the current Linux ecosystem, where systemd has replaced previous mechanisms in most distros.

Along the same lines, traditional routes are withdrawn, such as /forcefsck y /fastboot. Instead, the recommendation is to use kernel parameters or credentials to indicate these operations. Less magic and more transparent and auditable configuration.

New tools: factory reset and PTY forwarding

systemd 258 incorporates interesting real-world utilities. The most notable is systemd-factory-reset, which allows you to request or cancel a full factory reset directly from the user space. This is gold in laboratories, appliances or server environments where it is necessary to return to a clean state in a controlled manner.

Next to her appears systemd-pty-forward, a tool for assign and forward pseudo-terminals (PTY)It's practical for automation, debugging, and managing background processes that need to be securely and flexibly attached to a TTY.

Startup, UKIs, and TPM2: Changes that pave the way

In the boot section, there are improvements in systemd-boot and, especially, relevant changes in the integration with TPM2. From now on, Policies no longer depend by default on PCR 7, which modifies the way keys and policies are managed for verified boots. This adjustment reduces constraints on specific metrics and allows for more adaptable security schemes.

In addition, the Unified Kernel Images (UKIs) have been refined . In this version, UKIs can embed UEFI firmware images , facilitating the distribution of self-contained boot packages and improving the chain of trust. This refinement is particularly interesting for administrators working with verified boots, secure boot, and reproducible deployments.

Systemd 258 Compatibility and Administration: What to Check

With all of the above in mind, there are several sensible checks to perform. First, check the kernel on your systems : if you're below version 5.4, you should plan an upgrade; if possible, even better, upgrade to 5.7 or higher to align with the project's recommendation.

On the other hand, check cryptographic dependencies if you were maintaining builds with GnuTLS or libgcrypt for the affected components. And if you still had remnants of System V scripts integrated into your workflow, migrate to native systemd units with properly declared dependencies; you'll gain in traceability and long-term maintainability.

Attention: resolved, DNSSEC and the Pi-hole case

There's a practical issue worth noting: if you're using a name server that doesn't implement DNSSEC (for example, Pi-hole as it comes out of the box), upgrading to systemd 258-2 can break resolution . It's not a completely 'mysterious' bug: by requiring DNSSEC validation, `resolved` will fail when the upstream server doesn't support that feature.

There are two simple ways to solve this, depending on your preference:

  1. Disable DNSSEC in systemd-resolved: edit /etc/systemd/resolved.conf, add or uncomment the line DNSSEC=no, save changes and restart the service with systemctl restart systemd-resolved. This is the fast track if you control the host and need to restore resolution as quickly as possible.
  2. Enable DNSSEC on Pi-hole: Go to the Pi-hole interface and enable DNSSEC under Settings -> Advanced DNS Settings. If your upstream server supports DNSSEC, this option allows you to maintain DNSSEC validation and still benefit from the added security.

As always, choose the option that best suits your network topology . In home or lab networks, temporarily disabling DNSSEC might be pragmatic; in production, enabling end-to-end DNSSEC support is the preferred option.

Permissions and Multi-User Settings: More Secure TTYs in Systemd 258

Returning to TTY permissions, it's no small matter: switching from 0620 to 0600 prevents other users from writing to your terminal, even in situations where groups allowed for unexpected interactions. If you have workflows that relied on this lax behavior, you'll need to adjust them to use explicit IPC channels, shared tmux, or similar solutions, instead of relying on writing to someone else's TTY.

More systemd 258 changes: udev, networkd, journalctl, and general cleanup

As in every version, there are many minor adjustments distributed between udev, networkd, journalctl and other pieces. Obsolete options are removed, messages are polished, behavioral corners are corrected, and validations are added. Although it's hard to see them one by one, the sum of these small improvements contributes to a more consistent and predictable experience.

If you're interested in the finer details, the release notes on GitHub are the place to go. Be warned, they're technical and dense; even so, for integrators and distributors, they're worth reviewing to identify changes that might affect CI/CD, packaging scripts, or corporate policies.

Looking ahead to the next version: preparing for the jump

This release also serves as a prelude: systemd 259 plans to raise system requirements, which could impact very old hardware and environments. The message is clear: it's time to reduce legacy burden and opt for sustainable long-term solutions. Migrating now to cgroup v2 and ensuring modern kernels will put you in a good position for what's to come.

Migration best practices and checks

For those still using hybrid or legacy environments, a checklist is helpful. Verify that your containers and services work correctly with cgroup v2; most modern orchestrators and tools already support it, but don't assume the defaults. Check units with resource directives (CPUQuota, MemoryMax, etc.) and verify their actual effect under v2.

In terms of security, audit services that relied on shared TTYs . If there were automations that allowed writing to other users' terminals, redirect them to clear methods with permission control. And if you maintained integration with encryption libraries other than OpenSSL for the affected components, adjust your build toolchain.

Quick FAQ

  • Can I still use System V scripts? Not with systemd 258. Migrate to native units and remove dependencies from initctl o telinit.
  • What if my kernel is older than 5.4? systemd 258 does not support it. Update the kernel; if not possible, you will not be able to adopt this version.
  • Does the change in TTY permissions affect me? In multi-user environments yes: check workflows that write on other people's TTYs and change them for explicit mechanisms.
  • Should I enable DNSSEC? Yes, you can. If your upstream DNS server doesn't support it, disable it in resolved or enable it in Pi-hole to avoid cuts.

It's clear that systemd 258 is a significant release: it standardizes cgroup v2, raises the bar for the kernel, strengthens security, and adds useful tools like factory reset and PTY forwarding. It also brings changes to boot, UKIs, and TPM2 that pave the way for future requirements, and it doesn't shy away from removing legacy features like System V scripts. With a quick review of the kernel, encryption dependencies, permissions, and DNS, the transition is quite manageable, even in demanding environments.

Linux 6.16
Related article:
All the key new features in Linux 6.16: support, improvements, and important fixes

Add as preferred source in Google