The new systemd update includes numerous new features

May 22, 2015 01:10 GMT  ·  By

Lennart Poettering has had the great pleasure of announcing today, May 21, the immediate availability for download of a new release of his controversial systemd init system that is being adopted by more and more Linux kernel-based operating systems.

systemd 220 is now available for download and includes "many many bugfixes, and a good number of new features," as Lennart Poettering himself wrote in the release announcement sent to the systemd-devel mailinglist Thursday afternoon.

According to the release notes, systemd 220 no longer supports the gudev library, which is now maintained by the GNOME Project. As such, distribution vendors should add the "--disable-gudev" argument when upgrading their Linux OSes to systemd 220.

For now, the gudev library is still available in this release, but it is highly recommended to install it separately from GNOME's Git repository, as it will be removed from systemd very soon. For more details about the decision to separate gudev from systemd, you should read this announcement.

Among other interesting things that have landed in today's release of systemd, we can mention support for exposing the CPUUsageNSec= property for each service unit on a bus that includes the total consumed CPU time of the respective service, mount point expiry support in the auto-mounter logic, and automatic unmounting of the EFI System Partition (ESP) from /boot after two minutes of inactivity.

networkd received new features in systemd 220

In addition to the changes mentioned above, systemd 220 comes with two new /etc/fstab options, x-systemd.requires-mounts-for= and x-systemd.requires=, which can be used to implemented extra dependencies for mounts, direct live-upgrades from older systemd versions prior to v44 are no longer supported, and systemd-networkd now supports configuration of the DHCP client identifier.

systemd 220 removes support for setting additional mappings of the ancient SysV runlevels to systemd targets, adds uplink failure detection support to systemd-networkd, and sets the $REMOTE_PORT and $REMOTE_ADDR environment variables to the remote IP port and address, respectively, when forking a new per-connection service instance.

Additionally, a new per-network UseNTP= option was added to systemd-networkd, which can be used for choosing if the information fetched by the Network Time Protocol (NTP) server via DHCP will be transferred to systemd-timesyncd or not. Also, support for vti6 tunnels was implemented in the systemd-networkd component, and a bug related to the management of the sysctl variable that controls IP forwarding was fixed.

"Note that systemd-networkd manages the sysctl variable /proc/sys/net/ipv[46]/conf/*/forwarding for each interface it is configured for since v219. The variable controls IP forwarding, and is a per-interface alternative to the global /proc/sys/net/ipv[46]/ip_forward. This setting is configurable in the IPForward= option, which defaults to 'no.' This means if networkd is used for an interface it is no longer sufficient to set the global sysctl option to turn on IP forwarding! Instead, the .network file option IPForward= needs to be turned on! Note that the implementation of this behavior was broken in v219 and has been fixed in v220," says Lennart Poettering.

The systemd-nspawn component received new features as well

Another component of systemd that received new and exciting features is nspawn. Among these, we can mention the implementation of a new --property= setting that can be used for configuring unit properties for the container scope, and a new switch for controlling the UNIX signal that is used when killing a container's init process during shutdown.

Furthermore, systemd-nspawn can now be summoned as part of a shell pipeline, a new --private-users= switch that can be used to adopt the user namespacing feature that was implemented not long ago in the Linux kernel, and a new --overlay= switch was added for helping with mounting of overlay file systems into a container via Linux kernel's new overlayfs feature.

The Gummiboot EFI bootloader was integrated with systemd

Another interesting feature implemented in systemd 220 is the integration of the Gummiboot EFI bootloader, which from now on will be known only as systemd-boot. As a result, the bootctl utility was updated to support the new systemd-boot component. Also, support for creating kernel EFI binaries that can contain OS information, boot splash, command-line, and initrd was implemented in systemd thanks to a new EFI kernel stub.

On the other hand, the systemd-importd and systemd-machined received some new features as well, such as support for Btrfs quota, support for importing containers from local .qcow2, .tar, and .raw images, support for exporting containers to .raw and .tar images, support for importing dkr v2 images from the network, support for verifying downloaded images via gpg2, and unprivileged processes can now access most bus calls via PolicyKit.

systemd 220 will now allow users to terminate their sessions without having to become root, thanks to an update to the systemd-logind component. In addition, the systemd-shutdownd component has been removed from this release as the scheduled shutdown functionality is now implemented in systemd-logind. A new --firmware-setup that was implemented in "systemctl reboot" allows users to reboot their machines into the EFI firmware setup.

Lots of other new features were implemented in systemd 220

Among other features, we can mention the implementation of a new "--now" switch to "systemctl disable," "systemctl enable," and "systemctl mask." Moreover, support for creating device symlinks for all block devices was disabled by default in udev, libsystemd gains a new API called sd-device.h, which in time will replace libudev, support for setting file attributes was implemented in systemd-tmpfiles, and support for translating audit message types to human readable identifiers was added to systemd-journald.

Last but not least, there's now a new hwdb database that can be used for storing metadata of pointing stick devices, systemd-fsck can now optionally transfer the progress report of the fsck tool to an AF_UNIX socket in the filesystem. Then, a new optional field called VARIANT= has been added to /usr/lib/os-release for GNU/Linux operating systems that are distributed in several flavors, Btrfs' NOCOW flag will no longer be unconditionally set on new journal files by systemd-journald, and support for the skip= and offset= options was implemented in the LUKS logic.

Systemd 220 Changelog