summaryrefslogtreecommitdiffstats
path: root/NEWS
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:49:52 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:49:52 +0000
commit55944e5e40b1be2afc4855d8d2baf4b73d1876b5 (patch)
tree33f869f55a1b149e9b7c2b7e201867ca5dd52992 /NEWS
parentInitial commit. (diff)
downloadsystemd-55944e5e40b1be2afc4855d8d2baf4b73d1876b5.tar.xz
systemd-55944e5e40b1be2afc4855d8d2baf4b73d1876b5.zip
Adding upstream version 255.4.upstream/255.4
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'NEWS')
-rw-r--r--NEWS17023
1 files changed, 17023 insertions, 0 deletions
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..b2f0916
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,17023 @@
+systemd System and Service Manager
+
+CHANGES WITH 255:
+
+ Announcements of Future Feature Removals and Incompatible Changes:
+
+ * Support for split-usr (/usr/ mounted separately during late boot,
+ instead of being mounted by the initrd before switching to the rootfs)
+ and unmerged-usr (parallel directories /bin/ and /usr/bin/, /lib/ and
+ /usr/lib/, …) has been removed. For more details, see:
+ https://lists.freedesktop.org/archives/systemd-devel/2022-September/048352.html
+
+ * We intend to remove cgroup v1 support from a systemd release after
+ the end of 2023. If you run services that make explicit use of
+ cgroup v1 features (i.e. the "legacy hierarchy" with separate
+ hierarchies for each controller), please implement compatibility with
+ cgroup v2 (i.e. the "unified hierarchy") sooner rather than later.
+ Most of Linux userspace has been ported over already.
+
+ * Support for System V service scripts is now deprecated and will be
+ removed in a future release. Please make sure to update your software
+ *now* to include a native systemd unit file instead of a legacy
+ System V script to retain compatibility with future systemd releases.
+
+ * Support for the SystemdOptions EFI variable is deprecated.
+ 'bootctl systemd-efi-options' will emit a warning when used. It seems
+ that this feature is little-used and it is better to use alternative
+ approaches like credentials and confexts. The plan is to drop support
+ altogether at a later point, but this might be revisited based on
+ user feedback.
+
+ * systemd-run's switch --expand-environment= which currently is disabled
+ by default when combined with --scope, will be changed in a future
+ release to be enabled by default.
+
+ * "systemctl switch-root" is now restricted to initrd transitions only.
+
+ Transitions between real systems should be done with
+ "systemctl soft-reboot" instead.
+
+ * The "ip=off" and "ip=none" kernel command line options interpreted by
+ systemd-network-generator will now result in IPv6RA + link-local
+ addressing being disabled, too. Previously DHCP was turned off, but
+ IPv6RA and IPv6 link-local addressing was left enabled.
+
+ * The NAMING_BRIDGE_MULTIFUNCTION_SLOT naming scheme has been deprecated
+ and is now disabled.
+
+ * SuspendMode=, HibernateState= and HybridSleepState= in the [Sleep]
+ section of systemd-sleep.conf are now deprecated and have no effect.
+ They did not (and could not) take any value other than the respective
+ default. HybridSleepMode= is also deprecated, and will now always use
+ the 'suspend' disk mode.
+
+ Service Manager:
+
+ * The way services are spawned has been overhauled. Previously, a
+ process was forked that shared all of the manager's memory (via
+ copy-on-write) while doing all the required setup (e.g.: mount
+ namespaces, CGroup configuration, etc.) before exec'ing the target
+ executable. This was problematic for various reasons: several glibc
+ APIs were called that are not supposed to be used after a fork but
+ before an exec, copy-on-write meant that if either process (the
+ manager or the child) touched a memory page a copy was triggered, and
+ also the memory footprint of the child process was that of the
+ manager, but with the memory limits of the service. From this version
+ onward, the new process is spawned using CLONE_VM and CLONE_VFORK
+ semantics via posix_spawn(3), and it immediately execs a new internal
+ binary, systemd-executor, that receives the configuration to apply
+ via memfd, and sets up the process before exec'ing the target
+ executable. The systemd-executor binary is pinned by file descriptor
+ by each manager instance (system and users), and the reference is
+ updated on daemon-reexec - it is thus important to reexec all running
+ manager instances when the systemd-executor and/or libsystemd*
+ libraries are updated on the filesystem.
+
+ * Most of the internal process tracking is being changed to use PIDFDs
+ instead of PIDs when the kernel supports it, to improve robustness
+ and reliability.
+
+ * A new option SurviveFinalKillSignal= can be used to configure the
+ unit to be skipped in the final SIGTERM/SIGKILL spree on shutdown.
+ This is part of the required configuration to let a unit's processes
+ survive a soft-reboot operation.
+
+ * System extension images (sysext) can now set
+ EXTENSION_RELOAD_MANAGER=1 in their extension-release files to
+ automatically reload the service manager (PID 1) when
+ merging/refreshing/unmerging on boot. Generally, while this can be
+ used to ship services in system extension images it's recommended to
+ do that via portable services instead.
+
+ * The ExtensionImages= and ExtensionDirectories= options now support
+ confexts images/directories.
+
+ * A new option NFTSet= provides a method for integrating dynamic cgroup
+ IDs into firewall rules with NFT sets. The benefit of using this
+ setting is to be able to use control group as a selector in firewall
+ rules easily and this in turn allows more fine grained filtering.
+ Also, NFT rules for cgroup matching use numeric cgroup IDs, which
+ change every time a service is restarted, making them hard to use in
+ systemd environment.
+
+ * A new option CoredumpReceive= can be set for service and scope units,
+ together with Delegate=yes, to make systemd-coredump on the host
+ forward core files from processes crashing inside the delegated
+ CGroup subtree to systemd-coredump running in the container. This new
+ option is by default used by systemd-nspawn containers that use the
+ "--boot" switch.
+
+ * A new ConditionSecurity=measured-uki option is now available, to ensure
+ a unit can only run when the system has been booted from a measured UKI.
+
+ * MemoryAvailable= now considers physical memory if there are no CGroup
+ memory limits set anywhere in the tree.
+
+ * The $USER environment variable is now always set for services, while
+ previously it was only set if User= was specified. A new option
+ SetLoginEnvironment= is now supported to determine whether to also set
+ $HOME, $LOGNAME, and $SHELL.
+
+ * Socket units now support a new pair of
+ PollLimitBurst=/PollLimitInterval= options to configure a limit on
+ how often polling events on the file descriptors backing this unit
+ will be considered within a time window.
+
+ * Scope units can now be created using PIDFDs instead of PIDs to select
+ the processes they should include.
+
+ * Sending SIGRTMIN+18 with 0x500 as sigqueue() value will now cause the
+ manager to dump the list of currently pending jobs.
+
+ * If the kernel supports MOVE_MOUNT_BENEATH, the systemctl and
+ machinectl bind and mount-image verbs will now cause the new mount to
+ replace the old mount (if any), instead of overmounting it.
+
+ * Units now have MemoryPeak, MemorySwapPeak, MemorySwapCurrent and
+ MemoryZSwapCurrent properties, which respectively contain the values
+ of the cgroup v2's memory.peak, memory.swap.peak, memory.swap.current
+ and memory.zswap.current properties. This information is also shown in
+ "systemctl status" output, if available.
+
+ TPM2 Support + Disk Encryption & Authentication:
+
+ * systemd-cryptenroll now allows specifying a PCR bank and explicit hash
+ value in the --tpm2-pcrs= option.
+
+ * systemd-cryptenroll now allows specifying a TPM2 key handle (nv
+ index) to be used instead of the default SRK via the new
+ --tpm2-seal-key-handle= option.
+
+ * systemd-cryptenroll now allows TPM2 enrollment using only a TPM2
+ public key (in TPM2B_PUBLIC format) – without access to the TPM2
+ device itself – which enables offline sealing of LUKS images for a
+ specific TPM2 chip, as long as the SRK public key is known. Pass the
+ public to the tool via the new --tpm2-device-key= switch.
+
+ * systemd-cryptsetup is now installed in /usr/bin/ and is no longer an
+ internal-only executable.
+
+ * The TPM2 Storage Root Key will now be set up, if not already present,
+ by a new systemd-tpm2-setup.service early boot service. The SRK will
+ be stored in PEM format and TPM2_PUBLIC format (the latter is useful
+ for systemd-cryptenroll --tpm2-device-key=, as mentioned above) for
+ easier access. A new "srk" verb has been added to systemd-analyze to
+ allow extracting it on demand if it is already set up.
+
+ * The internal systemd-pcrphase executable has been renamed to
+ systemd-pcrextend.
+
+ * The systemd-pcrextend tool gained a new --pcr= switch to override
+ which PCR to measure into.
+
+ * systemd-pcrextend now exposes a Varlink interface at
+ io.systemd.PCRExtend that can be used to do measurements and event
+ logging on demand.
+
+ * TPM measurements are now also written to an event log at
+ /run/log/systemd/tpm2-measure.log, using a derivative of the TCG
+ Canonical Event Log format. Previously we'd only log them to the
+ journal, where they however were subject to rotation and similar.
+
+ * A new component "systemd-pcrlock" has been added that allows managing
+ local TPM2 PCR policies for PCRs 0-7 and similar, which are hard to
+ predict by the OS vendor because of the inherently local nature of
+ what measurements they contain, such as firmware versions of the
+ system and extension cards and suchlike. pcrlock can predict PCR
+ measurements ahead of time based on various inputs, such as the local
+ TPM2 event log, GPT partition tables, PE binaries, UKI kernels, and
+ various other things. It can then pre-calculate a TPM2 policy from
+ this, which it stores in an TPM2 NV index. TPM2 objects (such as disk
+ encryption keys) can be locked against this NV index, so that they
+ are locked against a specific combination of system firmware and
+ state. Alternatives for each component are supported to allowlist
+ multiple kernel versions or boot loader version simultaneously
+ without losing access to the disk encryption keys. The tool can also
+ be used to analyze and validate the local TPM2 event log.
+ systemd-cryptsetup, systemd-cryptenroll, systemd-repart have all been
+ updated to support such policies. There's currently no support for
+ locking the system's root disk against a pcrlock policy, this will be
+ added soon. Moreover, it is currently not possible to combine a
+ pcrlock policy with a signed PCR policy. This component is
+ experimental and its public interface is subject to change.
+
+ systemd-boot, systemd-stub, ukify, bootctl, kernel-install:
+
+ * bootctl will now show whether the system was booted from a UKI in its
+ status output.
+
+ * systemd-boot and systemd-stub now use different project keys in their
+ respective SBAT sections, so that they can be revoked individually if
+ needed.
+
+ * systemd-boot will no longer load unverified Devicetree blobs when UEFI
+ SecureBoot is enabled. For more details see:
+ https://github.com/systemd/systemd/security/advisories/GHSA-6m6p-rjcq-334c
+
+ * systemd-boot gained new hotkeys to reboot and power off the system
+ from the boot menu ("B" and "O"). If the "auto-poweroff" and
+ "auto-reboot" options in loader.conf are set these entries are also
+ shown as menu items (which is useful on devices lacking a regular
+ keyboard).
+
+ * systemd-boot gained a new configuration value "menu-disabled" for the
+ set-timeout option, to allow completely disabling the boot menu,
+ including the hotkey.
+
+ * systemd-boot will now measure the content of loader.conf in TPM2
+ PCR 5.
+
+ * systemd-stub will now concatenate the content of all kernel
+ command-line addons before measuring them in TPM2 PCR 12, in a single
+ measurement, instead of measuring them individually.
+
+ * systemd-stub will now measure and load Devicetree Blob addons, which
+ are searched and loaded following the same model as the existing
+ kernel command-line addons.
+
+ * systemd-stub will now ignore unauthenticated kernel command line options
+ passed from systemd-boot when running inside Confidential VMs with UEFI
+ SecureBoot enabled.
+
+ * systemd-stub will now load a Devicetree blob even if the firmware did
+ not load any beforehand (e.g.: for ACPI systems).
+
+ * ukify is no longer considered experimental, and now ships in /usr/bin/.
+
+ * ukify gained a new verb inspect to describe the sections of a UKI and
+ print the contents of the well-known sections.
+
+ * ukify gained a new verb genkey to generate a set of key pairs for
+ signing UKIs and their PCR data.
+
+ * The 90-loaderentry kernel-install hook now supports installing device
+ trees.
+
+ * kernel-install now supports the --json=, --root=, --image=, and
+ --image-policy= options for the inspect verb.
+
+ * kernel-install now supports new list and add-all verbs. The former
+ lists all installed kernel images (if those are available in
+ /usr/lib/modules/). The latter will install all the kernels it can
+ find to the ESP.
+
+ systemd-repart:
+
+ * A new option --copy-from= has been added that synthesizes partition
+ definitions from the given image, which are then applied by the
+ systemd-repart algorithm.
+
+ * A new option --copy-source= has been added, which can be used to specify
+ a directory to which CopyFiles= is considered relative to.
+
+ * New --make-ddi=confext, --make-ddi=sysext, and --make-ddi=portable
+ options have been added to make it easier to generate these types of
+ DDIs, without having to provide repart.d definitions for them.
+
+ * The dm-verity salt and UUID will now be derived from the specified
+ seed value.
+
+ * New VerityDataBlockSizeBytes= and VerityHashBlockSizeBytes= can now be
+ configured in repart.d/ configuration files.
+
+ * A new Subvolumes= setting is now supported in repart.d/ configuration
+ files, to indicate which directories in the target partition should be
+ btrfs subvolumes.
+
+ * A new --tpm2-device-key= option can be used to lock a disk against a
+ specific TPM2 public key. This matches the same switch the
+ systemd-cryptenroll tool now supports (see above).
+
+ Journal:
+
+ * The journalctl --lines= parameter now accepts +N to show the oldest N
+ entries instead of the newest.
+
+ * journald now ensures that sealing happens once per epoch, and sets a
+ new compatibility flag to distinguish old journal files that were
+ created before this change, for backward compatibility.
+
+ Device Management:
+
+ * udev will now create symlinks to loopback block devices in the
+ /dev/disk/by-loop-ref/ directory that are based on the .lo_file_name
+ string field selected during allocation. The systemd-dissect tool and
+ the util-linux losetup command now supports a complementing new switch
+ --loop-ref= for selecting the string. This means a loopback block
+ device may now be allocated under a caller-chosen reference and can
+ subsequently be referenced without first having to look up the block
+ device name the caller ended up with.
+
+ * udev also creates symlinks to loopback block devices in the
+ /dev/disk/by-loop-inode/ directory based on the .st_dev/st_ino fields
+ of the inode attached to the loopback block device. This means that
+ attaching a file to a loopback device will implicitly make a handle
+ available to be found via that file's inode information.
+
+ * udevadm info gained support for JSON output via a new --json= flag, and
+ for filtering output using the same mechanism that udevadm trigger
+ already implements.
+
+ * The predictable network interface naming logic is extended to include
+ the SR-IOV-R "representor" information in network interface names.
+ This feature was intended for v254, but even though the code was
+ merged, the part that actually enabled the feature was forgotten.
+ It is now enabled by default and is part of the new "v255" naming
+ scheme.
+
+ * A new hwdb/rules file has been added that sets the
+ ID_NET_AUTO_LINK_LOCAL_ONLY=1 udev property on all network interfaces
+ that should usually only be configured with link-local addressing
+ (IPv4LL + IPv6LL), i.e. for PC-to-PC cables ("laplink") or
+ Thunderbolt networking. systemd-networkd and NetworkManager (soon)
+ will make use of this information to apply an appropriate network
+ configuration by default.
+
+ * The ID_NET_DRIVER property on network interfaces is now set
+ relatively early in the udev rule set so that other rules may rely on
+ its use. This is implemented in a new "net-driver" udev built-in.
+
+ Network Management:
+
+ * The "duid-only" option for DHCPv4 client's ClientIdentifier= setting
+ is now dropped, as it never worked, hence it should not be used by
+ anyone.
+
+ * The 'prefixstable' ipv6 address generation mode now considers the SSID
+ when generating stable addresses, so that a different stable address
+ is used when roaming between wireless networks. If you already use
+ 'prefixstable' addresses with wireless networks, the stable address
+ will be changed by the update.
+
+ * The DHCPv4 client gained a RapidCommit option, true by default, which
+ enables RFC4039 Rapid Commit behavior to obtain a lease in a
+ simplified 2-message exchange instead of the typical 4-message
+ exchange, if also supported by the DHCP server.
+
+ * The DHCPv4 client gained new InitialCongestionWindow= and
+ InitialAdvertisedReceiveWindow= options for route configurations.
+
+ * The DHCPv4 client gained a new RequestAddress= option that allows
+ to send a preferred IP address in the initial DHCPDISCOVER message.
+
+ * The DHCPv4 server and client gained support for IPv6-only mode
+ (RFC8925).
+
+ * The SendHostname= and Hostname= options are now available for the
+ DHCPv6 client, independently of the DHCPv4= option, so that these
+ configuration values can be set independently for each client.
+
+ * The DHCPv4 and DHCPv6 client state can now be queried via D-Bus,
+ including lease information.
+
+ * The DHCPv6 client can now be configured to use a custom DUID type.
+
+ * .network files gained a new IPv4ReversePathFilter= setting in the
+ [Network] section, to control sysctl's rp_filter setting.
+
+ * .network files gaiend a new HopLimit= setting in the [Route] section,
+ to configure a per-route hop limit.
+
+ * .network files gained a new TCPRetransmissionTimeoutSec= setting in
+ the [Route] section, to configure a per-route TCP retransmission
+ timeout.
+
+ * A new directive NFTSet= provides a method for integrating network
+ configuration into firewall rules with NFT sets. The benefit of using
+ this setting is that static network configuration or dynamically
+ obtained network addresses can be used in firewall rules with the
+ indirection of NFT set types.
+
+ * The [IPv6AcceptRA] section supports the following new options:
+ UsePREF64=, UseHopLimit=, UseICMP6RateLimit=, and NFTSet=.
+
+ * The [IPv6SendRA] section supports the following new options:
+ RetransmitSec=, HopLimit=, HomeAgent=, HomeAgentLifetimeSec=, and
+ HomeAgentPreference=.
+
+ * A new [IPv6PREF64Prefix] set of options, containing Prefix= and
+ LifetimeSec=, has been introduced to append pref64 options in router
+ advertisements (RFC8781).
+
+ * The network generator now configures the interfaces with only
+ link-local addressing if "ip=link-local" is specified on the kernel
+ command line.
+
+ * The prefix of the configuration files generated by the network
+ generator from the kernel command line is now prefixed with '70-',
+ to make them have higher precedence over the default configuration
+ files.
+
+ * Added a new -Ddefault-network=BOOL meson option, that causes more
+ .network files to be installed as enabled by default. These configuration
+ files will which match generic setups, e.g. 89-ethernet.network matches
+ all Ethernet interfaces and enables both DHCPv4 and DHCPv6 clients.
+
+ * If a ID_NET_MANAGED_BY= udev property is set on a network device and
+ it is any other string than "io.systemd.Network" then networkd will
+ not manage this device. This may be used to allow multiple network
+ management services to run in parallel and assign ownership of
+ specific devices explicitly. NetworkManager will soon implement a
+ similar logic.
+
+ systemctl:
+
+ * systemctl is-failed now checks the system state if no unit is
+ specified.
+
+ * systemctl will now automatically soft-reboot if a new root file system
+ is found under /run/nextroot/ when a reboot operation is invoked.
+
+ Login management:
+
+ * Wall messages now work even when utmp support is disabled, using
+ systemd-logind to query the necessary information.
+
+ * systemd-logind now sends a new PrepareForShutdownWithMetadata D-Bus
+ signal before shutdown/reboot/soft-reboot that includes additional
+ information compared to the PrepareForShutdown signal. Currently the
+ additional information is the type of operation that is about to be
+ executed.
+
+ Hibernation & Suspend:
+
+ * The kernel and OS versions will no longer be checked on resume from
+ hibernation.
+
+ * Hibernation into swap files backed by btrfs are now
+ supported. (Previously this was supported only for other file
+ systems.)
+
+ Other:
+
+ * A new systemd-vmspawn tool has been added, that aims to provide for VMs
+ the same interfaces and functionality that systemd-nspawn provides for
+ containers. For now it supports QEMU as a backend, and exposes some of
+ its options to the user. This component is experimental and its public
+ interface is subject to change.
+
+ * "systemd-analyze plot" has gained tooltips on each unit name with
+ related-unit information in its svg output, such as Before=,
+ Requires=, and similar properties.
+
+ * A new varlinkctl tool has been added to allow interfacing with
+ Varlink services, and introspection has been added to all such
+ services. This component is experimental and its public interface is
+ subject to change.
+
+ * systemd-sysext and systemd-confext now expose a Varlink service
+ at io.systemd.sysext.
+
+ * portable services now accept confexts as extensions.
+
+ * systemd-sysupdate now accepts directories in the MatchPattern= option.
+
+ * systemd-run will now output the invocation ID of the launched
+ transient unit and its peak memory usage.
+
+ * systemd-analyze, systemd-tmpfiles, systemd-sysusers, systemd-sysctl,
+ and systemd-binfmt gained a new --tldr option that can be used instead
+ of --cat-config to suppress uninteresting configuration lines, such as
+ comments and whitespace.
+
+ * resolvectl gained a new "show-server-state" command that shows
+ current statistics of the resolver. This is backed by a new
+ DumpStatistics() Varlink method provided by systemd-resolved.
+
+ * systemd-timesyncd will now emit a D-Bus signal when the LinkNTPServers
+ property changes.
+
+ * vconsole now supports KEYMAP=@kernel for preserving the kernel keymap
+ as-is.
+
+ * seccomp now supports the LoongArch64 architecture.
+
+ * seccomp may now be enabled for services running as a non-root User=
+ without NoNewPrivileges=yes.
+
+ * systemd-id128 now supports a new -P option to show only values. The
+ combination of -P and --app options is also supported.
+
+ * A new pam_systemd_loadkey.so PAM module is now available, which will
+ automatically fetch the passphrase used by cryptsetup to unlock the
+ root file system and set it as the PAM authtok. This enables, among
+ other things, configuring auto-unlock of the GNOME Keyring / KDE
+ Wallet when autologin is configured.
+
+ * Many meson options now use the 'feature' type, which means they
+ take enabled/disabled/auto as values.
+
+ * A new meson option -Dconfigfiledir= can be used to change where
+ configuration files with default values are installed to.
+
+ * Options and verbs in man pages are now tagged with the version they
+ were first introduced in.
+
+ * A new component "systemd-storagetm" has been added, which exposes all
+ local block devices as NVMe-TCP devices, fully automatically. It's
+ hooked into a new target unit storage-target-mode.target that is
+ suppsoed to be booted into via
+ rd.systemd.unit=storage-target-mode.target on the kernel command
+ line. This is intended to be used for installers and debugging to
+ quickly get access to the local disk. It's inspired by MacOS "target
+ disk mode". This component is experimental and its public interface is
+ subject to change.
+
+ * A new component "systemd-bsod" has been added, which can show logged
+ error messages full screen, if they have a log level of LOG_EMERG log
+ level. This component is experimental and its public interface is
+ subject to change.
+
+ * The systemd-dissect tool's --with command will now set the
+ $SYSTEMD_DISSECT_DEVICE environment variable to the block device it
+ operates on for the invoked process.
+
+ * The systemd-mount tool gained a new --tmpfs switch for mounting a new
+ 'tmpfs' instance. This is useful since it does so via .mount units
+ and thus can be executed remotely or in containers.
+
+ * The various tools in systemd that take "verbs" (such as systemctl,
+ loginctl, machinectl, …) now will suggest a close verb name in case
+ the user specified an unrecognized one.
+
+ * libsystemd now exports a new function sd_id128_get_app_specific()
+ that generates "app-specific" 128bit IDs from any ID. It's similar to
+ sd_id128_get_machine_app_specific() and
+ sd_id128_get_boot_app_specific() but takes the ID to base calculation
+ on as input. This new functionality is also exposed in the
+ "systemd-id128" tool where you can now combine --app= with `show`.
+
+ * All tools that parse timestamps now can also parse RFC3339 style
+ timestamps that include the "T" and Z" characters.
+
+ * New documentation has been added:
+
+ https://systemd.io/FILE_DESCRIPTOR_STORE
+ https://systemd.io/TPM2_PCR_MEASUREMENTS
+ https://systemd.io/MOUNT_REQUIREMENTS
+
+ * The codebase now recognizes the suffix .confext.raw and .sysext.raw
+ as alternative to the .raw suffix generally accepted for DDIs. It is
+ recommended to name configuration extensions and system extensions
+ with such suffixes, to indicate their purpose in the name.
+
+ * The sd-device API gained a new function
+ sd_device_enumerator_add_match_property_required() which allows
+ configuring matches on properties that are strictly required. This is
+ different from the existing sd_device_enumerator_add_match_property()
+ matches of which one one needs to apply.
+
+ * The MAC address the veth side of an nspawn container shall get
+ assigned may now be controlled via the $SYSTEMD_NSPAWN_NETWORK_MAC
+ environment variable.
+
+ * The libiptc dependency is now implemented via dlopen(), so that tools
+ such as networkd and nspawn no longer have a hard dependency on the
+ shared library when compiled with support for libiptc.
+
+ * New rpm macros have been added: %systemd_user_daemon_reexec does
+ daemon-reexec for all user managers, and %systemd_postun_with_reload
+ and %systemd_user_postun_with_reload do a reload for system and user
+ units on upgrades.
+
+ * coredumpctl now propagates SIGTERM to the debugger process.
+
+ Contributions from: 김인수, Abderrahim Kitouni, Adam Goldman,
+ Adam Williamson, Alexandre Peixoto Ferreira, Alex Hudspith,
+ Alvin Alvarado, André Paiusco, Antonio Alvarez Feijoo,
+ Anton Lundin, Arian van Putten, Arseny Maslennikov, Arthur Shau,
+ Balázs Úr, beh_10257, Benjamin Peterson, Bertrand Jacquin,
+ Brian Norris, Charles Lee, Cheng-Chia Tseng, Chris Patterson,
+ Christian Hergert, Christian Hesse, Christian Kirbach,
+ Clayton Craft, commondservice, cunshunxia, Curtis Klein, cvlc12,
+ Daan De Meyer, Daniele Medri, Daniel P. Berrangé, Daniel Rusek,
+ Daniel Thompson, Dan Nicholson, Dan Streetman, David Rheinsberg,
+ David Santamaría Rogado, David Tardon, dependabot[bot],
+ Diego Viola, Dmitry V. Levin, Emanuele Giuseppe Esposito,
+ Emil Renner Berthing, Emil Velikov, Etienne Dechamps, Fabian Vogt,
+ felixdoerre, Felix Dörre, Florian Schmaus, Franck Bui,
+ Frantisek Sumsal, G2-Games, Gioele Barabucci, Hugo Carvalho,
+ huyubiao, Iago López Galeiras, IllusionMan1212, Jade Lovelace,
+ janana, Jan Janssen, Jan Kuparinen, Jan Macku, Jeremy Fleischman,
+ Jin Liu, jjimbo137, Joerg Behrmann, Johannes Segitz, Jordan Rome,
+ Jordan Williams, Julien Malka, Juno Computers, Khem Raj, khm,
+ Kingbom Dou, Kiran Vemula, Krzesimir Nowak, Laszlo Gombos,
+ Lennart Poettering, linuxlion, Luca Boccassi, Lucas Adriano Salles,
+ Lukas, Lukáš Nykrýn, Maanya Goenka, Maarten, Malte Poll,
+ Marc Pervaz Boocha, Martin Beneš, Martin Joerg, Martin Wilck,
+ Mathieu Tortuyaux, Matthias Schiffer, Maxim Mikityanskiy,
+ Max Kellermann, Michael A Cassaniti, Michael Biebl, Michael Kuhn,
+ Michael Vasseur, Michal Koutný, Michal Sekletár, Mike Yuan,
+ Milton D. Miller II, mordner, msizanoen, NAHO, Nandakumar Raghavan,
+ Neil Wilson, Nick Rosbrook, Nils K, NRK, Oğuz Ersen,
+ Omojola Joshua, onenowy, Paul Meyer, Paymon MARANDI, pelaufer,
+ Peter Hutterer, PhylLu, Pierre GRASSER, Piotr Drąg, Priit Laes,
+ Rahil Bhimjiani, Raito Bezarius, Raul Cheleguini, Reto Schneider,
+ Richard Maw, Robby Red, RoepLuke, Roland Hieber, Roland Singer,
+ Ronan Pigott, Sam James, Sam Leonard, Sergey A, Susant Sahani,
+ Sven Joachim, Tad Fisher, Takashi Sakamoto, Thorsten Kukuk, Tj,
+ Tomasz Świątek, Topi Miettinen, Valentin David,
+ Valentin Lefebvre, Victor Westerhuis, Vincent Haupert,
+ Vishal Chillara Srinivas, Vito Caputo, Warren, Weblate,
+ Xiaotian Wu, xinpeng wang, Yaron Shahrabani, Yo-Jung Lin,
+ Yu Watanabe, Zbigniew Jędrzejewski-Szmek, zeroskyx,
+ Дамјан Георгиевски, наб
+
+ — Edinburgh, 2023-12-06
+
+CHANGES WITH 254:
+
+ Announcements of Future Feature Removals and Incompatible Changes:
+
+ * The next release (v255) will remove support for split-usr (/usr/
+ mounted separately during late boot, instead of being mounted by the
+ initrd before switching to the rootfs) and unmerged-usr (parallel
+ directories /bin/ and /usr/bin/, /lib/ and /usr/lib/, …). For more
+ details, see:
+ https://lists.freedesktop.org/archives/systemd-devel/2022-September/048352.html
+
+ * We intend to remove cgroup v1 support from a systemd release after
+ the end of 2023. If you run services that make explicit use of
+ cgroup v1 features (i.e. the "legacy hierarchy" with separate
+ hierarchies for each controller), please implement compatibility with
+ cgroup v2 (i.e. the "unified hierarchy") sooner rather than later.
+ Most of Linux userspace has been ported over already.
+
+ * Support for System V service scripts is now deprecated and will be
+ removed in a future release. Please make sure to update your software
+ *now* to include a native systemd unit file instead of a legacy
+ System V script to retain compatibility with future systemd releases.
+
+ * Support for the SystemdOptions EFI variable is deprecated.
+ 'bootctl systemd-efi-options' will emit a warning when used. It seems
+ that this feature is little-used and it is better to use alternative
+ approaches like credentials and confexts. The plan is to drop support
+ altogether at a later point, but this might be revisited based on
+ user feedback.
+
+ * EnvironmentFile= now treats the line following a comment line
+ trailing with escape as a non comment line. For details, see:
+ https://github.com/systemd/systemd/issues/27975
+
+ * PrivateNetwork=yes and NetworkNamespacePath= now imply
+ PrivateMounts=yes unless PrivateMounts=no is explicitly specified.
+
+ * Behaviour of sandboxing options for the per-user service manager
+ units has changed. They now imply PrivateUsers=yes, which means user
+ namespaces will be implicitly enabled when a sandboxing option is
+ enabled in a user unit. Enabling user namespaces has the drawback
+ that system users will no longer be visible (and processes/files will
+ appear as owned by 'nobody') in the user unit.
+
+ By definition a sandboxed user unit should run with reduced
+ privileges, so impact should be small. This will remove a great
+ source of confusion that has been reported by users over the years,
+ due to how these options require an extra setting to be manually
+ enabled when used in the per-user service manager, which is not
+ needed in the system service manager. For more details, see:
+ https://lists.freedesktop.org/archives/systemd-devel/2022-December/048682.html
+
+ * systemd-run's switch --expand-environment= which currently is disabled
+ by default when combined with --scope, will be changed in a future
+ release to be enabled by default.
+
+ Security Relevant Changes:
+
+ * pam_systemd will now by default pass the CAP_WAKE_ALARM ambient
+ process capability to invoked session processes of regular users on
+ local seats (as well as to systemd --user), unless configured
+ otherwise via data from JSON user records, or via the PAM module's
+ parameter list. This is useful in order allow desktop tools such as
+ GNOME's Alarm Clock application to set a timer for
+ CLOCK_REALTIME_ALARM that wakes up the system when it elapses. A
+ per-user service unit file may thus use AmbientCapability= to pass
+ the capability to invoked processes. Note that this capability is
+ relatively narrow in focus (in particular compared to other process
+ capabilities such as CAP_SYS_ADMIN) and we already — by default —
+ permit more impactful operations such as system suspend to local
+ users.
+
+ Service Manager:
+
+ * Memory limits that apply while the unit is activating are now
+ supported. Previously IO and CPU settings were already supported via
+ StartupCPUWeight= and similar. The same logic has been added for the
+ various manager and unit memory settings (DefaultStartupMemoryLow=,
+ StartupMemoryLow=, StartupMemoryHigh=, StartupMemoryMax=,
+ StartupMemorySwapMax=, StartupMemoryZSwapMax=).
+
+ * The service manager gained support for enqueuing POSIX signals to
+ services that carry an additional integer value, exposing the
+ sigqueue() system call. This is accessible via new D-Bus calls
+ org.freedesktop.systemd1.Manager.QueueSignalUnit() and
+ org.freedesktop.systemd1.Unit.QueueSignal(), as well as in systemctl
+ via the new --kill-value= option.
+
+ * systemctl gained a new "list-paths" verb, which shows all currently
+ active .path units, similarly to how "systemctl list-timers" shows
+ active timers, and "systemctl list-sockets" shows active sockets.
+
+ * systemctl gained a new --when= switch which is honoured by the various
+ forms of shutdown (i.e. reboot, kexec, poweroff, halt) and allows
+ scheduling these operations by time, similar in fashion to how this
+ has been supported by SysV shutdown.
+
+ * If MemoryDenyWriteExecute= is enabled for a service and the kernel
+ supports the new PR_SET_MDWE prctl() call, it is used instead of the
+ seccomp()-based system call filter to achieve the same effect.
+
+ * A new set of kernel command line options is now understood:
+ systemd.tty.term.<name>=, systemd.tty.rows.<name>=,
+ systemd.tty.columns.<name>= allow configuring the TTY type and
+ dimensions for the tty specified via <name>. When systemd invokes a
+ service on a tty (via TTYName=) it will look for these and configure
+ the TTY accordingly. This is particularly useful in VM environments
+ to propagate host terminal settings into the appropriate TTYs of the
+ guest.
+
+ * A new RootEphemeral= setting is now understood in service units. It
+ takes a boolean argument. If enabled for services that use RootImage=
+ or RootDirectory= an ephemeral copy of the disk image or directory
+ tree is made when the service is started. It is removed automatically
+ when the service is stopped. That ephemeral copy is made using
+ btrfs/xfs reflinks or btrfs snapshots, if available.
+
+ * The service activation logic gained new settings RestartSteps= and
+ RestartMaxDelaySec= which allow exponentially-growing restart
+ intervals for Restart=.
+
+ * The service activation logic gained a new setting RestartMode= which
+ can be set to 'direct' to skip the inactive/failed states when
+ restarting, so that dependent units are not notified until the service
+ converges to a final (successful or failed) state. For example, this
+ means that OnSuccess=/OnFailure= units will not be triggered until the
+ service state has converged.
+
+ * PID 1 will now automatically load the virtio_console kernel module
+ during early initialization if running in a suitable VM. This is done
+ so that early-boot logging can be written to the console if available.
+
+ * Similarly, virtio-vsock support is loaded early in suitable VM
+ environments. PID 1 will send sd_notify() notifications via AF_VSOCK
+ to the VMM if configured, thus loading this early is beneficial.
+
+ * A new verb "fdstore" has been added to systemd-analyze to show the
+ current contents of the file descriptor store of a unit. This is
+ backed by a new D-Bus call DumpUnitFileDescriptorStore() provided by
+ the service manager.
+
+ * The service manager will now set a new $FDSTORE environment variable
+ when invoking processes for services that have the file descriptor
+ store enabled.
+
+ * A new service option FileDescriptorStorePreserve= has been added that
+ allows tuning the lifecycle of the per-service file descriptor store.
+ If set to "yes", the entries in the fd store are retained even after
+ the service has been fully stopped.
+
+ * The "systemctl clean" command may now be used to clear the fdstore of
+ a service.
+
+ * Unit *.preset files gained a new directive "ignore", in addition to
+ the existing "enable" and "disable". As the name suggests, matching
+ units are left unchanged, i.e. neither enabled nor disabled.
+
+ * Service units gained a new setting DelegateSubgroup=. It takes the
+ name of a sub-cgroup to place any processes the service manager forks
+ off in. Previously, the service manager would place all service
+ processes directly in the top-level cgroup it created for the
+ service. This usually meant that main process in a service with
+ delegation enabled would first have to create a subgroup and move
+ itself down into it, in order to not conflict with the "no processes
+ in inner cgroups" rule of cgroup v2. With this option, this step is
+ now handled by PID 1.
+
+ * The service manager will now look for .upholds/ directories,
+ similarly to the existing support for .wants/ and .requires/
+ directories. Symlinks in this directory result in Upholds=
+ dependencies.
+
+ The [Install] section of unit files gained support for a new
+ UpheldBy= directive to generate .upholds/ symlinks automatically when
+ a unit is enabled.
+
+ * The service manager now supports a new kernel command line option
+ systemd.default_device_timeout_sec=, which may be used to override
+ the default timeout for .device units.
+
+ * A new "soft-reboot" mechanism has been added to the service manager.
+ A "soft reboot" is similar to a regular reboot, except that it
+ affects userspace only: the service manager shuts down any running
+ services and other units, then optionally switches into a new root
+ file system (mounted to /run/nextroot/), and then passes control to a
+ systemd instance in the new file system which then starts the system
+ up again. The kernel is not rebooted and neither is the hardware,
+ firmware or boot loader. This provides a fast, lightweight mechanism
+ to quickly reset or update userspace, without the latency that a full
+ system reset involves. Moreover, open file descriptors may be passed
+ across the soft reboot into the new system where they will be passed
+ back to the originating services. This allows pinning resources
+ across the reboot, thus minimizing grey-out time further. This new
+ reboot mechanism is accessible via the new "systemctl soft-reboot"
+ command.
+
+ * Services using RootDirectory= or RootImage= will now have read-only
+ access to a copy of the host's os-release file under
+ /run/host/os-release, which will be kept up-to-date on 'soft-reboot'.
+ This was already the case for Portable Services, and the feature has
+ now been extended to all services that do not run off the host's
+ root filesystem.
+
+ * A new service setting MemoryKSM= has been added to enable kernel
+ same-page merging individually for services.
+
+ * A new service setting ImportCredentials= has been added that augments
+ LoadCredential= and LoadCredentialEncrypted= and searches for
+ credentials to import from the system, and supports globbing.
+
+ * A new job mode "restart-dependencies" has been added to the service
+ manager (exposed via systemctl --job-mode=). It is only valid when
+ used with "start" jobs, and has the effect that the "start" job will
+ be propagated as "restart" jobs to currently running units that have
+ a BindsTo= or Requires= dependency on the started unit.
+
+ * A new verb "whoami" has been added to "systemctl" which determines as
+ part of which unit the command is being invoked. It writes the unit
+ name to standard output. If one or more PIDs are specified reports
+ the unit names the processes referenced by the PIDs belong to.
+
+ * The system and service credential logic has been improved: there's
+ now a clearly defined place where system provisioning tools running
+ in the initrd can place credentials that will be imported into the
+ system's set of credentials during the initrd → host transition: the
+ /run/credentials/@initrd/ directory. Once the credentials placed
+ there are imported into the system credential set they are deleted
+ from this directory, and the directory itself is deleted afterwards
+ too.
+
+ * A new kernel command line option systemd.set_credential_binary= has
+ been added, that is similar to the pre-existing
+ systemd.set_credential= but accepts arbitrary binary credential data,
+ encoded in Base64. Note that the kernel command line is not a
+ recommend way to transfer credentials into a system, since it is
+ world-readable from userspace.
+
+ * The default machine ID to use may now be configured via the
+ system.machine_id system credential. It will only be used if no
+ machine ID was set yet on the host.
+
+ * On Linux kernel 6.4 and newer system and service credentials will now
+ be placed in a tmpfs instance that has the "noswap" mount option
+ set. Previously, a "ramfs" instance was used. By switching to tmpfs
+ ACL support and overall size limits can now be enforced, without
+ compromising on security, as the memory is never paged out either
+ way.
+
+ * The service manager now can detect when it is running in a
+ 'Confidential Virtual Machine', and a corresponding 'cvm' value is now
+ accepted by ConditionSecurity= for units that want to conditionalize
+ themselves on this. systemd-detect-virt gained new 'cvm' and
+ '--list-cvm' switches to respectively perform the detection or list
+ all known flavours of confidential VM, depending on the vendor. The
+ manager will publish a 'ConfidentialVirtualization' D-Bus property,
+ and will also set a SYSTEMD_CONFIDENTIAL_VIRTUALIZATION= environment
+ variable for unit generators. Finally, udev rules can match on a new
+ 'cvm' key that will be set when in a confidential VM.
+ Additionally, when running in a 'Confidential Virtual Machine', SMBIOS
+ strings and QEMU's fw_cfg protocol will not be used to import
+ credentials and kernel command line parameters by the system manager,
+ systemd-boot and systemd-stub, because the hypervisor is considered
+ untrusted in this particular setting.
+
+ Journal:
+
+ * The sd-journal API gained a new call sd_journal_get_seqnum() to
+ retrieve the current log record's sequence number and sequence number
+ ID, which allows applications to order records the same way as
+ journal does internally. The sequence number is now also exported in
+ the JSON and "export" output of the journal.
+
+ * journalctl gained a new switch --truncate-newline. If specified
+ multi-line log records will be truncated at the first newline,
+ i.e. only the first line of each log message will be shown.
+
+ * systemd-journal-upload gained support for --namespace=, similar to
+ the switch of the same name of journalctl.
+
+ systemd-repart:
+
+ * systemd-repart's drop-in files gained a new ExcludeFiles= option which
+ may be used to exclude certain files from the effect of CopyFiles=.
+
+ * systemd-repart's Verity support now implements the Minimize= setting
+ to minimize the size of the resulting partition.
+
+ * systemd-repart gained a new --offline= switch, which may be used to
+ control whether images shall be built "online" or "offline",
+ i.e. whether to make use of kernel facilities such as loopback block
+ devices and device mapper or not.
+
+ * If systemd-repart is told to populate a newly created ESP or XBOOTLDR
+ partition with some files, it will now default to VFAT rather than
+ ext4.
+
+ * systemd-repart gained a new --architecture= switch. If specified, the
+ per-architecture GPT partition types (i.e. the root and /usr/
+ partitions) configured in the partition drop-in files are
+ automatically adjusted to match the specified CPU architecture, in
+ order to simplify cross-architecture DDI building.
+
+ * systemd-repart will now default to a minimum size of 300MB for XFS
+ filesystems if no size parameter is specified. This matches what the
+ XFS tools (xfsprogs) can support.
+
+ systemd-boot, systemd-stub, ukify, bootctl, kernel-install:
+
+ * gnu-efi is no longer required to build systemd-boot and systemd-stub.
+ Instead, pyelftools is now needed, and it will be used to perform the
+ ELF -> PE relocations at build time.
+
+ * bootctl gained a new switch --print-root-device/-R that prints the
+ block device the root file system is backed by. If specified twice,
+ it returns the whole disk block device (as opposed to partition block
+ device) the root file system is on. It's useful for invocations such
+ as "cfdisk $(bootctl -RR)" to quickly show the partition table of the
+ running OS.
+
+ * systemd-stub will now look for the SMBIOS Type 1 field
+ "io.systemd.stub.kernel-cmdline-extra" and append its value to the
+ kernel command line it invokes. This is useful for VMMs such as qemu
+ to pass additional kernel command lines into the system even when
+ booting via full UEFI. The contents of the field are measured into
+ TPM PCR 12.
+
+ * The KERNEL_INSTALL_LAYOUT= setting for kernel-install gained a new
+ value "auto". With this value, a kernel will be automatically
+ analyzed, and if it qualifies as UKI, it will be installed as if the
+ setting was to set to "uki", otherwise as "bls".
+
+ * systemd-stub can now optionally load UEFI PE "add-on" images that may
+ contain additional kernel command line information. These "add-ons"
+ superficially look like a regular UEFI executable, and are expected
+ to be signed via SecureBoot/shim. However, they do not actually
+ contain code, but instead a subset of the PE sections that UKIs
+ support. They are supposed to provide a way to extend UKIs with
+ additional resources in a secure and authenticated way. Currently,
+ only the .cmdline PE section may be used in add-ons, in which case
+ any specified string is appended to the command line embedded into
+ the UKI itself. A new 'addon<EFI-ARCH>.efi.stub' is now provided that
+ can be used to trivially create addons, via 'ukify' or 'objcopy'. In
+ the future we expect other sections to be made extensible like this as
+ well.
+
+ * ukify has been updated to allow building these UEFI PE "add-on"
+ images, using the new 'addon<EFI-ARCH>.efi.stub'.
+
+ * ukify now accepts SBAT information to place in the .sbat PE section
+ of UKIs and addons. If a UKI is built the SBAT information from the
+ inner kernel is merged with any SBAT information associated with
+ systemd-stub and the SBAT data specified on the ukify command line.
+
+ * The kernel-install script has been rewritten in C, and reuses much of
+ the infrastructure of existing tools such as bootctl. It also gained
+ --esp-path= and --boot-path= options to override the path to the ESP,
+ and the $BOOT partition. Options --make-entry-directory= and
+ --entry-token= have been added as well, similar to bootctl's options
+ of the same name.
+
+ * A new kernel-install plugin 60-ukify has been added which will
+ combine kernel/initrd locally into a UKI and optionally sign them
+ with a local key. This may be used to switch to UKI mode even on
+ systems where a local kernel or initrd is used. (Typically UKIs are
+ built and signed by the vendor.)
+
+ * The ukify tool now supports "pesign" in addition to the pre-existing
+ "sbsign" for signing UKIs.
+
+ * systemd-measure and systemd-stub now look for the .uname PE section
+ that should contain the kernel's "uname -r" string.
+
+ * systemd-measure and ukify now calculate expected PCR hashes for a UKI
+ "offline", i.e. without access to a TPM (physical or
+ software-emulated).
+
+ Memory Pressure & Control:
+
+ * The sd-event API gained new calls sd_event_add_memory_pressure(),
+ sd_event_source_set_memory_pressure_type(),
+ sd_event_source_set_memory_pressure_period() to create and configure
+ an event source that is called whenever the OS signals memory
+ pressure. Another call sd_event_trim_memory() is provided that
+ compacts the process' memory use by releasing allocated but unused
+ malloc() memory back to the kernel. Services can also provide their
+ own custom callback to do memory trimming. This should improve system
+ behaviour under memory pressure, as on Linux traditionally provided
+ no mechanism to return process memory back to the kernel if the
+ kernel was under memory pressure. This makes use of the kernel's PSI
+ interface. Most long-running services in systemd have been hooked up
+ with this, and in particular systems with low memory should benefit
+ from this.
+
+ * Service units gained new settings MemoryPressureWatch= and
+ MemoryPressureThresholdSec= to configure the PSI memory pressure
+ logic individually. If these options are used, the
+ $MEMORY_PRESSURE_WATCH and $MEMORY_PRESSURE_WRITE environment
+ variables will be set for the invoked processes to inform them about
+ the requested memory pressure behaviour. (This is used by the
+ aforementioned sd-events API additions, if set.)
+
+ * systemd-analyze gained a new "malloc" verb that shows the output
+ generated by glibc's malloc_info() on services that support it. Right
+ now, only the service manager has been updated accordingly. This
+ call requires privileges.
+
+ User & Session Management:
+
+ * The sd-login API gained a new call sd_session_get_username() to
+ return the user name of the owner of a login session. It also gained
+ a new call sd_session_get_start_time() to retrieve the time the login
+ session started. A new call sd_session_get_leader() has been added to
+ return the PID of the "leader" process of a session. A new call
+ sd_uid_get_login_time() returns the time since the specified user has
+ most recently been continuously logged in with at least one session.
+
+ * JSON user records gained a new set of fields capabilityAmbientSet and
+ capabilityBoundingSet which contain a list of POSIX capabilities to
+ set for the logged in users in the ambient and bounding sets,
+ respectively. homectl gained the ability to configure these two sets
+ for users via --capability-bounding-set=/--capability-ambient-set=.
+
+ * pam_systemd learnt two new module options
+ default-capability-bounding-set= and default-capability-ambient-set=,
+ which configure the default bounding sets for users as they are
+ logging in, if the JSON user record doesn't specify this explicitly
+ (see above). The built-in default for the ambient set now contains
+ the CAP_WAKE_ALARM, thus allowing regular users who may log in
+ locally to resume from a system suspend via a timer.
+
+ * The Session D-Bus objects systemd-logind gained a new SetTTY() method
+ call to update the TTY of a session after it has been allocated. This
+ is useful for SSH sessions which are typically allocated first, and
+ for which a TTY is added later.
+
+ * The sd-login API gained a new call sd_pid_notifyf_with_fds() which
+ combines the various other sd_pid_notify() flavours into one: takes a
+ format string, an overriding PID, and a set of file descriptors to
+ send. It also gained a new call sd_pid_notify_barrier() call which is
+ equivalent to sd_notify_barrier() but allows the originating PID to
+ be specified.
+
+ * "loginctl list-users" and "loginctl list-sessions" will now show the
+ state of each logged in user/session in their tabular output. It will
+ also show the current idle state of sessions.
+
+ DDIs:
+
+ * systemd-dissect will now show the intended CPU architecture of an
+ inspected DDI.
+
+ * systemd-dissect will now install itself as mount helper for the "ddi"
+ pseudo-file system type. This means you may now mount DDIs directly
+ via /bin/mount or /etc/fstab, making full use of embedded Verity
+ information and all other DDI features.
+
+ Example: mount -t ddi myimage.raw /some/where
+
+ * The systemd-dissect tool gained the new switches --attach/--detach to
+ attach/detach a DDI to a loopback block device without mounting it.
+ It will automatically derive the right sector size from the image
+ and set up Verity and similar, but not mount the file systems in it.
+
+ * When systemd-gpt-auto-generator or the DDI mounting logic mount an
+ ESP or XBOOTLDR partition the MS_NOSYMFOLLOW mount option is now
+ implied. Given that these file systems are typically untrusted, this
+ should make mounting them automatically have less of a security
+ impact.
+
+ * All tools that parse DDIs (such as systemd-nspawn, systemd-dissect,
+ systemd-tmpfiles, …) now understand a new switch --image-policy= which
+ takes a string encoding image dissection policy. With this mechanism
+ automatic discovery and use of specific partition types and the
+ cryptographic requirements on the partitions (Verity, LUKS, …) can be
+ restricted, permitting better control of the exposed attack surfaces
+ when mounting disk images. systemd-gpt-auto-generator will honour such
+ an image policy too, configurable via the systemd.image_policy= kernel
+ command line option. Unit files gained the RootImagePolicy=,
+ MountImagePolicy= and ExtensionImagePolicy= to configure the same for
+ disk images a service runs off.
+
+ * systemd-analyze gained a new verb "image-policy" to validate and
+ parse image policy strings.
+
+ * systemd-dissect gained support for a new --validate switch to
+ superficially validate DDI structure, and check whether a specific
+ image policy allows the DDI.
+
+ * systemd-dissect gained support for a new --mtree-hash switch to
+ optionally disable calculating mtree hashes, which can be slow on
+ large images.
+
+ * systemd-dissect --copy-to, --copy-from, --list and --mtree switches
+ are now able to operate on directories too, other than images.
+
+ Network Management:
+
+ * networkd's GENEVE support as gained a new .network option
+ InheritInnerProtocol=.
+
+ * The [Tunnel] section in .netdev files has gained a new setting
+ IgnoreDontFragment for controlling the IPv4 "DF" flag of datagrams.
+
+ * A new global IPv6PrivacyExtensions= setting has been added that
+ selects the default value of the per-network setting of the same
+ name.
+
+ * The predictable network interface naming logic was extended to
+ include SR-IOV-R "representor" information in network interface
+ names. Unfortunately, this feature was not enabled by default and can
+ only be enabled at compilation time by setting
+ -Ddefault-net-naming-scheme=v254.
+
+ * The DHCPv4 + DHCPv6 + IPv6 RA logic in networkd gained support for
+ the RFC8910 captive portal option.
+
+ Device Management:
+
+ * udevadm gained the new "verify" verb for validating udev rules files
+ offline.
+
+ * udev gained a new tool "iocost" that can be used to configure QoS IO
+ cost data based on hwdb information onto suitable block devices. Also
+ see https://github.com/iocost-benchmark/iocost-benchmarks.
+
+ TPM2 Support + Disk Encryption & Authentication:
+
+ * systemd-cryptenroll/systemd-cryptsetup will now install a TPM2 SRK
+ ("Storage Root Key") as first step in the TPM2, and then use that
+ for binding FDE to, if TPM2 support is used. This matches
+ recommendations of TCG (see
+ https://trustedcomputinggroup.org/wp-content/uploads/TCG-TPM-v2.0-Provisioning-Guidance-Published-v1r1.pdf)
+
+ * systemd-cryptenroll and other tools that take TPM2 PCR parameters now
+ understand textual identifiers for these PCRs.
+
+ * systemd-veritysetup + /etc/veritytab gained support for a series of
+ new options: hash-offset=, superblock=, format=, data-block-size=,
+ hash-block-size=, data-blocks=, salt=, uuid=, hash=, fec-device=,
+ fec-offset=, fec-roots= to configure various aspects of a Verity
+ volume.
+
+ * systemd-cryptsetup + /etc/crypttab gained support for a new
+ veracrypt-pim= option for setting the Personal Iteration Multiplier
+ of veracrypt volumes.
+
+ * systemd-integritysetup + /etc/integritytab gained support for a new
+ mode= setting for controlling the dm-integrity mode (journal, bitmap,
+ direct) for the volume.
+
+ * systemd-analyze gained a new verb "pcrs" that shows the known TPM PCR
+ registers, their symbolic names and current values.
+
+ systemd-tmpfiles:
+
+ * The ACL support in tmpfiles.d/ has been updated: if an uppercase "X"
+ access right is specified this is equivalent to "x" but only if the
+ inode in question already has the executable bit set for at least
+ some user/group. Otherwise the "x" bit will be turned off.
+
+ * tmpfiles.d/'s C line type now understands a new modifier "+": a line
+ with C+ will result in a "merge" copy, i.e. all files of the source
+ tree are copied into the target tree, even if that tree already
+ exists, resulting in a combined tree of files already present in the
+ target tree and those copied in.
+
+ * systemd-tmpfiles gained a new --graceful switch. If specified lines
+ with unknown users/groups will silently be skipped.
+
+ systemd-notify:
+
+ * systemd-notify gained two new options --fd= and --fdname= for sending
+ arbitrary file descriptors to the service manager (while specifying an
+ explicit name for it).
+
+ * systemd-notify gained a new --exec switch, which makes it execute the
+ specified command line after sending the requested messages. This is
+ useful for sending out READY=1 first, and then continuing invocation
+ without changing process ID, so that the tool can be nicely used
+ within an ExecStart= line of a unit file that uses Type=notify.
+
+ sd-event + sd-bus APIs:
+
+ * The sd-event API gained a new call sd_event_source_leave_ratelimit()
+ which may be used to explicitly end a rate-limit state an event
+ source might be in, resetting all rate limiting counters.
+
+ * When the sd-bus library is used to make connections to AF_UNIX D-Bus
+ sockets, it will now encode the "description" set via
+ sd_bus_set_description() into the source socket address. It will also
+ look for this information when accepting a connection. This is useful
+ to track individual D-Bus connections on a D-Bus broker for debug
+ purposes.
+
+ systemd-resolved:
+
+ * systemd-resolved gained a new resolved.conf setting
+ StateRetentionSec= which may be used to retain cached DNS records
+ even after their nominal TTL, and use them in case upstream DNS
+ servers cannot be reached. This can be used to make name resolution
+ more resilient in case of network problems.
+
+ * resolvectl gained a new verb "show-cache" to show the current cache
+ contents of systemd-resolved. This verb communicates with the
+ systemd-resolved daemon and requires privileges.
+
+ Other:
+
+ * Meson >= 0.60.0 is now required to build systemd.
+
+ * The default keymap to apply may now be chosen at build-time via the
+ new -Ddefault-keymap= meson option.
+
+ * Most of systemd's long-running services now have a generic handler of
+ the SIGRTMIN+18 signal handler which executes various operations
+ depending on the sigqueue() parameter sent along. For example, values
+ 0x100…0x107 allow changing the maximum log level of such
+ services. 0x200…0x203 allow changing the log target of such
+ services. 0x300 make the services trim their memory similarly to the
+ automatic PSI-triggered action, see above. 0x301 make the services
+ output their malloc_info() data to the logs.
+
+ * machinectl gained new "edit" and "cat" verbs for editing .nspawn
+ files, inspired by systemctl's verbs of the same name which edit unit
+ files. Similarly, networkctl gained the same verbs for editing
+ .network, .netdev, .link files.
+
+ * A new syscall filter group "@sandbox" has been added that contains
+ syscalls for sandboxing system calls such as those for seccomp and
+ Landlock.
+
+ * New documentation has been added:
+
+ https://systemd.io/COREDUMP
+ https://systemd.io/MEMORY_PRESSURE
+ smbios-type-11(7)
+
+ * systemd-firstboot gained a new --reset option. If specified, the
+ settings in /etc/ it knows how to initialize are reset.
+
+ * systemd-sysext is now a multi-call binary and is also installed under
+ the systemd-confext alias name (via a symlink). When invoked that way
+ it will operate on /etc/ instead of /usr/ + /opt/. It thus becomes a
+ powerful, atomic, secure configuration management of sorts, that
+ locally can merge configuration from multiple confext configuration
+ images into a single immutable tree.
+
+ * The --network-macvlan=, --network-ipvlan=, --network-interface=
+ switches of systemd-nspawn may now optionally take the intended
+ network interface inside the container.
+
+ * All our programs will now send an sd_notify() message with their exit
+ status in the EXIT_STATUS= field when exiting, using the usual
+ protocol, including PID 1. This is useful for VMMs and container
+ managers to collect an exit status from a system as it shuts down, as
+ set via "systemctl exit …". This is particularly useful in test cases
+ and similar, as invocations via a VM can now nicely propagate an exit
+ status to the host, similar to local processes.
+
+ * systemd-run gained a new switch --expand-environment=no to disable
+ server-side environment variable expansion in specified command
+ lines. Expansion defaults to enabled for all execution types except
+ --scope, where it defaults to off (and prints a warning) for backward
+ compatibility reasons. --scope will be flipped to enabled by default
+ too in a future release. If you are using --scope and passing a '$'
+ character in the payload you should start explicitly using
+ --expand-environment=yes/no according to the use case.
+
+ * The systemd-system-update-generator has been updated to also look for
+ the special flag file /etc/system-update in addition to the existing
+ support for /system-update to decide whether to enter system update
+ mode.
+
+ * The /dev/hugepages/ file system is now mounted with nosuid + nodev
+ mount options by default.
+
+ * systemd-fstab-generator now understands two new kernel command line
+ options systemd.mount-extra= and systemd.swap-extra=, which configure
+ additional mounts or swaps in a format similar to /etc/fstab. 'fsck'
+ will be ran on these block devices, like it already happens for
+ 'root='. It also now supports the new fstab.extra and
+ fstab.extra.initrd credentials that may contain additional /etc/fstab
+ lines to apply at boot.
+
+ * systemd-getty-generator now understands two new credentials
+ getty.ttys.container and getty.ttys.serial. These credentials may
+ contain a list of TTY devices – one per line – to instantiate
+ container-getty@.service and serial-getty@.service on.
+
+ * The getty/serial-getty/container-getty units now import the 'agetty.*'
+ and 'login.*' credentials, which are consumed by the 'login' and
+ 'agetty' programs starting from util-linux v2.40.
+
+ * systemd-sysupdate's sysupdate.d/ drop-ins gained a new setting
+ PathRelativeTo=, which can be set to "esp", "xbootldr", "boot", in
+ which case the Path= setting is taken relative to the ESP or XBOOTLDR
+ partitions, rather than the system's root directory /. The relevant
+ directories are automatically discovered.
+
+ * The systemd-ac-power tool gained a new switch --low, which reports
+ whether the battery charge is considered "low", similar to how the
+ s2h suspend logic checks this state to decide whether to enter system
+ suspend or hibernation.
+
+ * The /etc/os-release file can now have two new optional fields
+ VENDOR_NAME= and VENDOR_URL= to carry information about the vendor of
+ the OS.
+
+ * When the system hibernates, information about the device and offset
+ used is now written to a non-volatile EFI variable. On next boot the
+ system will attempt to resume from the location indicated in this EFI
+ variable. This should make hibernation a lot more robust, while
+ requiring no manual configuration of the resume location.
+
+ * The $XDG_STATE_HOME environment variable (added in more recent
+ versions of the XDG basedir specification) is now honoured to
+ implement the StateDirectory= setting in user services.
+
+ * A new component "systemd-battery-check" has been added. It may run
+ during early boot (usually in the initrd), and checks the battery
+ charge level of the system. In case the charge level is very low the
+ user is notified (graphically via Plymouth – if available – as well
+ as in text form on the console), and the system is turned off after a
+ 10s delay. The feature can be disabled by passing
+ systemd.battery-check=0 through the kernel command line.
+
+ * The 'passwdqc' library is now supported as an alternative to the
+ 'pwquality' library and can be selected at build time.
+
+ Contributions from: 김인수, 07416, Addison Snelling, Adrian Vovk,
+ Aidan Dang, Alexander Krabler, Alfred Klomp, Anatoli Babenia,
+ Andrei Stepanov, Andrew Baxter, Antonio Alvarez Feijoo,
+ Arian van Putten, Arthur Shau, A S Alam,
+ Asier Sarasua Garmendia, Balló György, Bastien Nocera,
+ Benjamin Herrenschmidt, Benjamin Raison, Bill Peterson,
+ Brad Fitzpatrick, Brett Holman, bri, Chen Qi, Chitoku,
+ Christian Hesse, Christoph Anton Mitterer, Christopher Gurnee,
+ Colin Walters, Cornelius Hoffmann, Cristian Rodríguez, cunshunxia,
+ cvlc12, Cyril Roelandt, Daan De Meyer, Daniele Medri,
+ Daniel P. Berrangé, Daniel Rusek, Dan Streetman, David Edmundson,
+ David Schroeder, David Tardon, dependabot[bot],
+ Dimitri John Ledkov, Dmitrii Fomchenkov, Dmitry V. Levin, dmkUK,
+ Dominique Martinet, don bright, drosdeck, Edson Juliano Drosdeck,
+ Egor Ignatov, EinBaum, Emanuele Giuseppe Esposito, Eric Curtin,
+ Erik Sjölund, Evgeny Vereshchagin, Florian Klink, Franck Bui,
+ François Rigault, Fran Diéguez, Franklin Yu, Frantisek Sumsal,
+ Fuminobu TAKEYAMA, Gaël PORTAY, Gerd Hoffmann, Gertalitec,
+ Gibeom Gwon, Gustavo Noronha Silva, Hannu Lounento,
+ Hans de Goede, Haochen Tong, HATAYAMA Daisuke, Henrik Holst,
+ Hoe Hao Cheng, Igor Tsiglyar, Ivan Vecera, James Hilliard,
+ Jan Engelhardt, Jan Janssen, Jan Luebbe, Jan Macku, Janne Sirén,
+ jcg, Jeidnx, Joan Bruguera, Joerg Behrmann, jonathanmetzman,
+ Jordan Rome, Josef Miegl, Joshua Goins, Joyce, Joyce Brum,
+ Juno Computers, Kai Lueke, Kevin P. Fleming, Kiran Vemula, Klaus,
+ Klaus Zipfel, Lawrence Thorpe, Lennart Poettering, licunlong,
+ Lily Foster, Luca Boccassi, Ludwig Nussel, Luna Jernberg,
+ maanyagoenka, Maanya Goenka, Maksim Kliazovich, Malte Poll,
+ Marko Korhonen, Masatake YAMATO, Mateusz Poliwczak, Matt Johnston,
+ Miao Wang, Micah Abbott, Michael A Cassaniti, Michal Koutný,
+ Michal Sekletár, Mike Yuan, mooo, Morten Linderud, msizanoen,
+ Nick Rosbrook, nikstur, Olivier Gayot, Omojola Joshua,
+ Paolo Velati, Paul Barker, Pavel Borecki, Petr Menšík,
+ Philipp Kern, Philip Withnall, Piotr Drąg, Quintin Hill,
+ Rene Hollander, Richard Phibel, Robert Meijers, Robert Scheck,
+ Roger Gammans, Romain Geissler, Ronan Pigott, Russell Harmon,
+ saikat0511, Samanta Navarro, Sam James, Sam Morris,
+ Simon Braunschmidt, Sjoerd Simons, Sorah Fukumori,
+ Stanislaw Gruszka, Stefan Roesch, Steven Luo, Steve Ramage,
+ Susant Sahani, taniishkaaa, Tanishka, Temuri Doghonadze,
+ Thierry Martin, Thomas Blume, Thomas Genty, Thomas Weißschuh,
+ Thorsten Kukuk, Times-Z, Tobias Powalowski, tofylion,
+ Topi Miettinen, Uwe Kleine-König, Velislav Ivanov,
+ Vitaly Kuznetsov, Vít Zikmund, Weblate, Will Fancher,
+ William Roberts, Winterhuman, Wolfgang Müller, Xeonacid,
+ Xiaotian Wu, Xi Ruoyao, Yuri Chornoivan, Yu Watanabe, Yuxiang Zhu,
+ Zbigniew Jędrzejewski-Szmek, zhmylove, ZjYwMj,
+ Дамјан Георгиевски, наб
+
+ — Edinburgh, 2023-07-28
+
+CHANGES WITH 253:
+
+ Announcements of Future Feature Removals and Incompatible Changes:
+
+ * We intend to remove cgroup v1 support from systemd release after the
+ end of 2023. If you run services that make explicit use of cgroup v1
+ features (i.e. the "legacy hierarchy" with separate hierarchies for
+ each controller), please implement compatibility with cgroup v2 (i.e.
+ the "unified hierarchy") sooner rather than later. Most of Linux
+ userspace has been ported over already.
+
+ * We intend to remove support for split-usr (/usr mounted separately
+ during boot) and unmerged-usr (parallel directories /bin and
+ /usr/bin, /lib and /usr/lib, etc). This will happen in the second
+ half of 2023, in the first release that falls into that time window.
+ For more details, see:
+ https://lists.freedesktop.org/archives/systemd-devel/2022-September/048352.html
+
+ * We intend to change behaviour w.r.t. units of the per-user service
+ manager and sandboxing options, so that they work without having to
+ manually enable PrivateUsers= as well, which is not required for
+ system units. To make this work, we will implicitly enable user
+ namespaces (PrivateUsers=yes) when a sandboxing option is enabled in a
+ user unit. The drawback is that system users will no longer be visible
+ (and appear as 'nobody') to the user unit when a sandboxing option is
+ enabled. By definition a sandboxed user unit should run with reduced
+ privileges, so impact should be small. This will remove a great source
+ of confusion that has been reported by users over the years, due to
+ how these options require an extra setting to be manually enabled when
+ used in the per-user service manager, as opposed as to the system
+ service manager. We plan to enable this change in the next release
+ later this year. For more details, see:
+ https://lists.freedesktop.org/archives/systemd-devel/2022-December/048682.html
+
+ Deprecations and incompatible changes:
+
+ * systemctl will now warn when invoked without /proc/ mounted
+ (e.g. when invoked after chroot() into an directory tree without the
+ API mount points like /proc/ being set up.) Operation in such an
+ environment is not fully supported.
+
+ * The return value of 'systemctl is-active|is-enabled|is-failed' for
+ unknown units is changed: previously 1 or 3 were returned, but now 4
+ (EXIT_PROGRAM_OR_SERVICES_STATUS_UNKNOWN) is used as documented.
+
+ * 'udevadm hwdb' subcommand is deprecated and will emit a warning.
+ systemd-hwdb (added in 2014) should be used instead.
+
+ * 'bootctl --json' now outputs a single JSON array, instead of a stream
+ of newline-separated JSON objects.
+
+ * Udev rules in 60-evdev.rules have been changed to load hwdb
+ properties for all modalias patterns. Previously only the first
+ matching pattern was used. This could change what properties are
+ assigned if the user has more and less specific patterns that could
+ match the same device, but it is expected that the change will have
+ no effect for most users.
+
+ * systemd-networkd-wait-online exits successfully when all interfaces
+ are ready or unmanaged. Previously, if neither '--any' nor
+ '--interface=' options were used, at least one interface had to be in
+ configured state. This change allows the case where systemd-networkd
+ is enabled, but no interfaces are configured, to be handled
+ gracefully. It may occur in particular when a different network
+ manager is also enabled and used.
+
+ * Some compatibility helpers were dropped: EmergencyAction= in the user
+ manager, as well as measuring kernel command line into PCR 8 in
+ systemd-stub, along with the -Defi-tpm-pcr-compat compile-time
+ option.
+
+ * The '-Dupdate-helper-user-timeout=' build-time option has been
+ renamed to '-Dupdate-helper-user-timeout-sec=', and now takes an
+ integer as parameter instead of a string.
+
+ * The DDI image dissection logic (which backs RootImage= in service
+ unit files, the --image= switch in various tools such as
+ systemd-nspawn, as well as systemd-dissect) will now only mount file
+ systems of types btrfs, ext4, xfs, erofs, squashfs, vfat. This list
+ can be overridden via the $SYSTEMD_DISSECT_FILE_SYSTEMS environment
+ variable. These file systems are fairly well supported and maintained
+ in current kernels, while others are usually more niche, exotic or
+ legacy and thus typically do not receive the same level of security
+ support and fixes.
+
+ * The default per-link multicast DNS mode is changed to "yes"
+ (that was previously "no"). As the default global multicast DNS mode
+ has been "yes" (but can be changed by the build option), now the
+ multicast DNS is enabled on all links by default. You can disable the
+ multicast DNS on all links by setting MulticastDNS= in resolved.conf,
+ or on an interface by calling "resolvectl mdns INTERFACE no".
+
+ New components:
+
+ * A tool 'ukify' tool to build, measure, and sign Unified Kernel Images
+ (UKIs) has been added. This replaces functionality provided by
+ 'dracut --uefi' and extends it with automatic calculation of PE file
+ offsets, insertion of signed PCR policies generated by
+ systemd-measure, support for initrd concatenation, signing of the
+ embedded Linux image and the combined image with sbsign, and
+ heuristics to autodetect the kernel uname and verify the splash
+ image.
+
+ Changes in systemd and units:
+
+ * A new service type Type=notify-reload is defined. When such a unit is
+ reloaded a UNIX process signal (typically SIGHUP) is sent to the main
+ service process. The manager will then wait until it receives a
+ "RELOADING=1" followed by a "READY=1" notification from the unit as
+ response (via sd_notify()). Otherwise, this type is the same as
+ Type=notify. A new setting ReloadSignal= may be used to change the
+ signal to send from the default of SIGHUP.
+
+ user@.service, systemd-networkd.service, systemd-udevd.service, and
+ systemd-logind have been updated to this type.
+
+ * Initrd environments which are not on a pure memory file system (e.g.
+ overlayfs combination as opposed to tmpfs) are now supported. With
+ this change, during the initrd → host transition ("switch root")
+ systemd will erase all files of the initrd only when the initrd is
+ backed by a memory file system such as tmpfs.
+
+ * New per-unit MemoryZSwapMax= option has been added to configure
+ memory.zswap.max cgroup properties (the maximum amount of zswap
+ used).
+
+ * A new LogFilterPatterns= option has been added for units. It may be
+ used to specify accept/deny regular expressions for log messages
+ generated by the unit, that shall be enforced by systemd-journald.
+ Rejected messages are neither stored in the journal nor forwarded.
+ This option may be used to suppress noisy or uninteresting messages
+ from units.
+
+ * The manager has a new
+ org.freedesktop.systemd1.Manager.GetUnitByPIDFD() D-Bus method to
+ query process ownership via a PIDFD, which is more resilient against
+ PID recycling issues.
+
+ * Scope units now support OOMPolicy=. Login session scopes default to
+ OOMPolicy=continue, allowing login scopes to survive the OOM killer
+ terminating some processes in the scope.
+
+ * systemd-fstab-generator now supports x-systemd.makefs option for
+ /sysroot/ (in the initrd).
+
+ * The maximum rate at which daemon reloads are executed can now be
+ limited with the new ReloadLimitIntervalSec=/ReloadLimitBurst=
+ options. (Or the equivalent on the kernel command line:
+ systemd.reload_limit_interval_sec=/systemd.reload_limit_burst=). In
+ addition, systemd now logs the originating unit and PID when a reload
+ request is received over D-Bus.
+
+ * When enabling a swap device systemd will now reinitialize the device
+ when the page size of the swap space does not match the page size of
+ the running kernel. Note that this requires the 'swapon' utility to
+ provide the '--fixpgsz' option, as implemented by util-linux, and it
+ is not supported by busybox at the time of writing.
+
+ * systemd now executes generator programs in a mount namespace
+ "sandbox" with most of the file system read-only and write access
+ restricted to the output directories, and with a temporary /tmp/
+ mount provided. This provides a safeguard against programming errors
+ in the generators, but also fixes here-docs in shells, which
+ previously didn't work in early boot when /tmp/ wasn't available
+ yet. (This feature has no security implications, because the code is
+ still privileged and can trivially exit the sandbox.)
+
+ * The system manager will now parse a new "vmm.notify_socket"
+ system credential, which may be supplied to a VM via SMBIOS. If
+ found, the manager will send a "READY=1" notification on the
+ specified socket after boot is complete. This allows readiness
+ notification to be sent from a VM guest to the VM host over a VSOCK
+ socket.
+
+ * The sample PAM configuration file for systemd-user@.service now
+ includes a call to pam_namespace. This puts children of user@.service
+ in the expected namespace. (Many distributions replace their file
+ with something custom, so this change has limited effect.)
+
+ * A new environment variable $SYSTEMD_DEFAULT_MOUNT_RATE_LIMIT_BURST
+ can be used to override the mount units burst late limit for
+ parsing '/proc/self/mountinfo', which was introduced in v249.
+ Defaults to 5.
+
+ * Drop-ins for init.scope changing control group resource limits are
+ now applied, while they were previously ignored.
+
+ * New build-time configuration options '-Ddefault-timeout-sec=' and
+ '-Ddefault-user-timeout-sec=' have been added, to let distributions
+ choose the default timeout for starting/stopping/aborting system and
+ user units respectively.
+
+ * Service units gained a new setting OpenFile= which may be used to
+ open arbitrary files in the file system (or connect to arbitrary
+ AF_UNIX sockets in the file system), and pass the open file
+ descriptor to the invoked process via the usual file descriptor
+ passing protocol. This is useful to give unprivileged services access
+ to select files which have restrictive access modes that would
+ normally not allow this. It's also useful in case RootDirectory= or
+ RootImage= is used to allow access to files from the host environment
+ (which is after all not visible from the service if these two options
+ are used.)
+
+ Changes in udev:
+
+ * The new net naming scheme "v253" has been introduced. In the new
+ scheme, ID_NET_NAME_PATH is also set for USB devices not connected via
+ a PCI bus. This extends the coverage of predictable interface names
+ in some embedded systems.
+
+ The "amba" bus path is now included in ID_NET_NAME_PATH, resulting in
+ a more informative path on some embedded systems.
+
+ * Partition block devices will now also get symlinks in
+ /dev/disk/by-diskseq/<seq>-part<n>, which may be used to reference
+ block device nodes via the kernel's "diskseq" value. Previously those
+ symlinks were only created for the main block device.
+
+ * A new operator '-=' is supported for SYMLINK variables. This allows
+ symlinks to be unconfigured even if an earlier rule added them.
+
+ * 'udevadm --trigger --settle' now also works for network devices
+ that are being renamed.
+
+ Changes in sd-boot, bootctl, and the Boot Loader Specification:
+
+ * systemd-boot now passes its random seed directly to the kernel's RNG
+ via the LINUX_EFI_RANDOM_SEED_TABLE_GUID configuration table, which
+ means the RNG gets seeded very early in boot before userspace has
+ started.
+
+ * systemd-boot will pass a disk-backed random seed – even when secure
+ boot is enabled – if it can additionally get a random seed from EFI
+ itself (via EFI's RNG protocol), or a prior seed in
+ LINUX_EFI_RANDOM_SEED_TABLE_GUID from a preceding bootloader.
+
+ * systemd-boot-system-token.service was renamed to
+ systemd-boot-random-seed.service and extended to always save a random
+ seed to ESP on every boot when a compatible boot loader is used. This
+ allows a refreshed random seed to be used in the boot loader.
+
+ * systemd-boot handles various seed inputs using a domain- and
+ field-separated hashing scheme.
+
+ * systemd-boot's 'random-seed-mode' option has been removed. A system
+ token is now always required to be present for random seeds to be
+ used.
+
+ * systemd-boot now supports being loaded from other locations than the
+ ESP, for example for direct kernel boot under QEMU or when embedded
+ into the firmware.
+
+ * systemd-boot now parses SMBIOS information to detect
+ virtualization. This information is used to skip some warnings which
+ are not useful in a VM and to conditionalize other aspects of
+ behaviour.
+
+ * systemd-boot now supports a new 'if-safe' mode that will perform UEFI
+ Secure Boot automated certificate enrollment from the ESP only if it
+ is considered 'safe' to do so. At the moment 'safe' means running in
+ a virtual machine.
+
+ * systemd-stub now processes random seeds in the same way as
+ systemd-boot already does, in case a unified kernel image is being
+ used from a different bootloader than systemd-boot, or without any
+ boot load at all.
+
+ * bootctl will now generate a system token on all EFI systems, even
+ virtualized ones, and is activated in the case that the system token
+ is missing from either sd-boot and sd-stub booted systems.
+
+ * bootctl now implements two new verbs: 'kernel-identify' prints the
+ type of a kernel image file, and 'kernel-inspect' provides
+ information about the embedded command line and kernel version of
+ UKIs.
+
+ * bootctl now honours $KERNEL_INSTALL_CONF_ROOT with the same meaning
+ as for kernel-install.
+
+ * The JSON output of "bootctl list" will now contain two more fields:
+ isDefault and isSelected are boolean fields set to true on the
+ default and currently booted boot menu entries.
+
+ * bootctl gained a new verb "unlink" for removing a boot loader entry
+ type #1 file from disk in a safe and robust way.
+
+ * bootctl also gained a new verb "cleanup" that automatically removes
+ all files from the ESP's and XBOOTLDR's "entry-token" directory, that
+ is not referenced anymore by any installed Type #1 boot loader
+ specification entry. This is particularly useful in environments where
+ a large number of entries reference the same or partly the same
+ resources (for example, for snapshot-based setups).
+
+ Changes in kernel-install:
+
+ * A new "installation layout" can be configured as layout=uki. With
+ this setting, a Boot Loader Specification Type#1 entry will not be
+ created. Instead, a new kernel-install plugin 90-uki-copy.install
+ will copy any .efi files from the staging area into the boot
+ partition. A plugin to generate the UKI .efi file must be provided
+ separately.
+
+ Changes in systemctl:
+
+ * 'systemctl reboot' has dropped support for accepting a positional
+ argument as the argument to the reboot(2) syscall. Please use the
+ --reboot-argument= option instead.
+
+ * 'systemctl disable' will now warn when called on units without
+ install information. A new --no-warn option has been added that
+ silences this warning.
+
+ * New option '--drop-in=' can be used to tell 'systemctl edit' the name
+ of the drop-in to edit. (Previously, 'override.conf' was always
+ used.)
+
+ * 'systemctl list-dependencies' now respects --type= and --state=.
+
+ * 'systemctl kexec' now supports XEN VMM environments.
+
+ * 'systemctl edit' will now tell the invoked editor to jump into the
+ first line with actual unit file data, skipping over synthesized
+ comments.
+
+ Changes in systemd-networkd and related tools:
+
+ * The [DHCPv4] section in .network file gained new SocketPriority=
+ setting that assigns the Linux socket priority used by the DHCPv4 raw
+ socket. This may be used in conjunction with the
+ EgressQOSMaps=setting in [VLAN] section of .netdev file to send the
+ desired ethernet 802.1Q frame priority for DHCPv4 initial
+ packets. This cannot be achieved with netfilter mangle tables because
+ of the raw socket bypass.
+
+ * The [DHCPv4] and [IPv6AcceptRA] sections in .network file gained a
+ new QuickAck= boolean setting that enables the TCP quick ACK mode for
+ the routes configured by the acquired DHCPv4 lease or received router
+ advertisements (RAs).
+
+ * The RouteMetric= option (for DHCPv4, DHCPv6, and IPv6 advertised
+ routes) now accepts three values, for high, medium, and low preference
+ of the router (which can be set with the RouterPreference=) setting.
+
+ * systemd-networkd-wait-online now supports matching via alternative
+ interface names.
+
+ * The [DHCPv6] section in .network file gained new SendRelease=
+ setting which enables the DHCPv6 client to send release when
+ it stops. This is the analog of the [DHCPv4] SendRelease= setting.
+ It is enabled by default.
+
+ * If the Address= setting in [Network] or [Address] sections in .network
+ specified without its prefix length, then now systemd-networkd assumes
+ /32 for IPv4 or /128 for IPv6 addresses.
+
+ * networkctl shows network and link file dropins in status output.
+
+ Changes in systemd-dissect:
+
+ * systemd-dissect gained a new option --list, to print the paths of
+ all files and directories in a DDI.
+
+ * systemd-dissect gained a new option --mtree, to generate a file
+ manifest compatible with BSD mtree(5) of a DDI
+
+ * systemd-dissect gained a new option --with, to execute a command with
+ the specified DDI temporarily mounted and used as working
+ directory. This is for example useful to convert a DDI to "tar"
+ simply by running it within a "systemd-dissect --with" invocation.
+
+ * systemd-dissect gained a new option --discover, to search for
+ Discoverable Disk Images (DDIs) in well-known directories of the
+ system. This will list machine, portable service and system extension
+ disk images.
+
+ * systemd-dissect now understands 2nd stage initrd images stored as a
+ Discoverable Disk Image (DDI).
+
+ * systemd-dissect will now display the main UUID of GPT DDIs (i.e. the
+ disk UUID stored in the GPT header) among the other data it can show.
+
+ * systemd-dissect gained a new --in-memory switch to operate on an
+ in-memory copy of the specified DDI file. This is useful to access a
+ DDI with write access without persisting any changes. It's also
+ useful for accessing a DDI without keeping the originating file
+ system busy.
+
+ * The DDI dissection logic will now automatically detect the intended
+ sector size of disk images stored in files, based on the GPT
+ partition table arrangement. Loopback block devices for such DDIs
+ will then be configured automatically for the right sector size. This
+ is useful to make dealing with modern 4K sector size DDIs fully
+ automatic. The systemd-dissect tool will now show the detected sector
+ size among the other DDI information in its output.
+
+ Changes in systemd-repart:
+
+ * systemd-repart gained new options --include-partitions= and
+ --exclude-partitions= to filter operation on partitions by type UUID.
+ This allows systemd-repart to be used to build images in which the
+ type of one partition is set based on the contents of another
+ partition (for example when the boot partition shall include a verity
+ hash of the root partition).
+
+ * systemd-repart also gained a --defer-partitions= option that is
+ similar to --exclude-partitions=, but the size of the partition is
+ still taken into account when sizing partitions, but without
+ populating it.
+
+ * systemd-repart gained a new --sector-size= option to specify what
+ sector size should be used when an image is created.
+
+ * systemd-repart now supports generating erofs file systems via
+ CopyFiles= (a read-only file system similar to squashfs).
+
+ * The Minimize= option was extended to accept "best" (which means the
+ most minimal image possible, but may require multiple attempts) and
+ "guess" (which means a reasonably small image).
+
+ * The systemd-growfs binary now comes with a regular unit file template
+ systemd-growfs@.service which can be instantiated directly for any
+ desired file system. (Previously, the unit was generated dynamically
+ by various generators, but no regular unit file template was
+ available.)
+
+ Changes in journal tools:
+
+ * Various systemd tools will append extra fields to log messages when
+ in debug mode, or when SYSTEMD_ENABLE_LOG_CONTEXT=1 is set. Currently
+ this includes information about D-Bus messages when sd-bus is used,
+ e.g. DBUS_SENDER=, DBUS_DESTINATION=, and DBUS_PATH=, and information
+ about devices when sd-device is used, e.g. DEVNAME= and DRIVER=.
+ Details of what is logged and when are subject to change.
+
+ * The systemd-journald-audit.socket can now be disabled via the usual
+ "systemctl disable" mechanism to stop collection of audit
+ messages. Please note that it is not enabled statically anymore and
+ must be handled by the preset/enablement logic in package
+ installation scripts.
+
+ * New options MaxUse=, KeepFree=, MaxFileSize=, and MaxFiles= can
+ be used to curtail disk use by systemd-journal-remote. This is
+ similar to the options supported by systemd-journald.
+
+ Changes in systemd-cryptenroll, systemd-cryptsetup, and related
+ components:
+
+ * When enrolling new keys systemd-cryptenroll now supports unlocking
+ via FIDO2 tokens (option --unlock-fido2-device=). Previously, a
+ password was strictly required to be specified.
+
+ * systemd-cryptsetup now supports pre-flight requests for FIDO2 tokens
+ (except for tokens with user verification, UV) to identify tokens
+ before authentication. Multiple FIDO2 tokens can now be enrolled at
+ the same time, and systemd-cryptsetup will automatically select one
+ that corresponds to one of the available LUKS key slots.
+
+ * systemd-cryptsetup now supports new options tpm2-measure-bank= and
+ tpm2-measure-pcr= in crypttab(5). These allow specifying the TPM2 PCR
+ bank and number into which the volume key should be measured. This is
+ automatically enabled for the encrypted root volume discovered and
+ activated by systemd-gpt-auto-generator.
+
+ * systemd-gpt-auto-generator mounts the ESP and XBOOTLDR partitions with
+ "noexec,nosuid,nodev".
+
+ * systemd-gpt-auto-generator will now honour the rootfstype= and
+ rootflags= kernel command line switches for root file systems it
+ discovers, to match behaviour in case an explicit root fs is
+ specified via root=.
+
+ * systemd-pcrphase gained new options --machine-id and --file-system=
+ to measure the machine-id and mount point information into PCR 15.
+ New service unit files systemd-pcrmachine.service and
+ systemd-pcrfs@.service have been added that invoke the tool with
+ these switches during early boot.
+
+ * systemd-pcrphase gained a --graceful switch will make it exit cleanly
+ with a success exit code even if no TPM device is detected.
+
+ * systemd-cryptenroll now stores the user-supplied PIN with a salt,
+ making it harder to brute-force.
+
+ Changes in other tools:
+
+ * systemd-homed gained support for luksPbkdfForceIterations (the
+ intended number of iterations for the PBKDF operation on LUKS).
+
+ * Environment variables $SYSTEMD_HOME_MKFS_OPTIONS_BTRFS,
+ $SYSTEMD_HOME_MKFS_OPTIONS_EXT4, and $SYSTEMD_HOME_MKFS_OPTIONS_XFS
+ may now be used to specify additional arguments for mkfs when
+ systemd-homed formats a file system.
+
+ * systemd-hostnamed now exports the contents of
+ /sys/class/dmi/id/bios_vendor and /sys/class/dmi/id/bios_date via two
+ new D-Bus properties: FirmwareVendor and FirmwareDate. This allows
+ unprivileged code to access those values.
+
+ systemd-hostnamed also exports the SUPPORT_END= field from
+ os-release(5) as OperatingSystemSupportEnd. hostnamectl make uses of
+ this to show the status of the installed system.
+
+ * systemd-measure gained an --append= option to sign multiple phase
+ paths with different signing keys. This allows secrets to be
+ accessible only in certain parts of the boot sequence. Note that
+ 'ukify' provides similar functionality in a more accessible form.
+
+ * systemd-timesyncd will now write a structured log message with
+ MESSAGE_ID set to SD_MESSAGE_TIME_BUMP when it bumps the clock based
+ on a on-disk timestamp, similarly to what it did when reaching
+ synchronization via NTP.
+
+ * systemd-timesyncd will now update the on-disk timestamp file on each
+ boot at least once, making it more likely that the system time
+ increases in subsequent boots.
+
+ * systemd-vconsole-setup gained support for system/service credentials:
+ vconsole.keymap/vconsole.keymap_toggle and
+ vconsole.font/vconsole.font_map/vconsole.font_unimap are analogous
+ the similarly-named options in vconsole.conf.
+
+ * systemd-localed will now save the XKB keyboard configuration to
+ /etc/vconsole.conf, and also read it from there with a higher
+ preference than the /etc/X11/xorg.conf.d/00-keyboard.conf config
+ file. Previously, this information was stored in the former file in
+ converted form, and only in latter file in the original form. Tools
+ which want to access keyboard configuration can now do so from a
+ standard location.
+
+ * systemd-resolved gained support for configuring the nameservers and
+ search domains via kernel command line (nameserver=, domain=) and
+ credentials (network.dns, network.search_domains).
+
+ * systemd-resolved will now synthesize host names for the DNS stub
+ addresses it supports. Specifically when "_localdnsstub" is resolved,
+ 127.0.0.53 is returned, and if "_localdnsproxy" is resolved
+ 127.0.0.54 is returned.
+
+ * systemd-notify will now send a "RELOADING=1" notification when called
+ with --reloading, and "STOPPING=1" when called with --stopping. This
+ can be used to implement notifications from units where it's easier
+ to call a program than to use the sd-daemon library.
+
+ * systemd-analyze's 'plot' command can now output its information in
+ JSON, controlled via the --json= switch. Also, new --table, and
+ --no-legend options have been added.
+
+ * 'machinectl enable' will now automatically enable machines.target
+ unit in addition to adding the machine unit to the target.
+
+ Similarly, 'machinectl start|stop' gained a --now option to enable or
+ disable the machine unit when starting or stopping it.
+
+ * systemd-sysusers will now create /etc/ if it is missing.
+
+ * systemd-sleep 'HibernateDelaySec=' setting is changed back to
+ pre-v252's behaviour, and a new 'SuspendEstimationSec=' setting is
+ added to provide the new initial value for the new automated battery
+ estimation functionality. If 'HibernateDelaySec=' is set to any value,
+ the automated estimate (and thus the automated hibernation on low
+ battery to avoid data loss) functionality will be disabled.
+
+ * Default tmpfiles.d/ configuration will now automatically create
+ credentials storage directory '/etc/credstore/' with the appropriate,
+ secure permissions. If '/run/credstore/' exists, its permissions will
+ be fixed too in case they are not correct.
+
+ Changes in libsystemd and shared code:
+
+ * sd-bus gained new convenience functions sd_bus_emit_signal_to(),
+ sd_bus_emit_signal_tov(), and sd_bus_message_new_signal_to().
+
+ * sd-id128 functions now return -EUCLEAN (instead of -EIO) when the
+ 128-bit ID in files such as /etc/machine-id has an invalid
+ format. They also accept NULL as output parameter in more places,
+ which is useful when the caller only wants to validate the inputs and
+ does not need the output value.
+
+ * sd-login gained new functions sd_pidfd_get_session(),
+ sd_pidfd_get_owner_uid(), sd_pidfd_get_unit(),
+ sd_pidfd_get_user_unit(), sd_pidfd_get_slice(),
+ sd_pidfd_get_user_slice(), sd_pidfd_get_machine_name(), and
+ sd_pidfd_get_cgroup(), that are analogous to sd_pid_get_*(),
+ but accept a PIDFD instead of a PID.
+
+ * sd-path (and systemd-path) now export four new paths:
+ SD_PATH_SYSTEMD_SYSTEM_ENVIRONMENT_GENERATOR,
+ SD_PATH_SYSTEMD_USER_ENVIRONMENT_GENERATOR,
+ SD_PATH_SYSTEMD_SEARCH_SYSTEM_ENVIRONMENT_GENERATOR, and
+ SD_PATH_SYSTEMD_SEARCH_USER_ENVIRONMENT_GENERATOR,
+
+ * sd_notify() now supports AF_VSOCK as transport for notification
+ messages (in addition to the existing AF_UNIX support). This is
+ enabled if $NOTIFY_SOCKET is set in a "vsock:CID:port" format.
+
+ * Detection of chroot() environments now works if /proc/ is not
+ mounted. This affects systemd-detect-virt --chroot, but also means
+ that systemd tools will silently skip various operations in such an
+ environment.
+
+ * "Lockheed Martin Hardened Security for Intel Processors" (HS SRE)
+ virtualization is now detected.
+
+ Changes in the build system:
+
+ * Standalone variants of systemd-repart and systemd-shutdown may now be
+ built (if -Dstandalone=true).
+
+ * systemd-ac-power has been moved from /usr/lib/ to /usr/bin/, to, for
+ example, allow scripts to conditionalize execution on AC power
+ supply.
+
+ * The libp11kit library is now loaded through dlopen(3).
+
+ Changes in the documentation:
+
+ * Specifications that are not closely tied to systemd have moved to
+ https://uapi-group.org/specifications/: the Boot Loader Specification
+ and the Discoverable Partitions Specification.
+
+ Contributions from: 김인수, 13r0ck, Aidan Dang, Alberto Planas,
+ Alvin Šipraga, Andika Triwidada, AndyChi, angus-p, Anita Zhang,
+ Antonio Alvarez Feijoo, Arsen Arsenović, asavah, Benjamin Fogle,
+ Benjamin Tissoires, berenddeschouwer, BerndAdameit,
+ Bernd Steinhauser, blutch112, cake03, Callum Farmer, Carlo Teubner,
+ Charles Hardin, chris, Christian Brauner, Christian Göttsche,
+ Cristian Rodríguez, Daan De Meyer, Dan Streetman, DaPigGuy,
+ Darrell Kavanagh, David Tardon, dependabot[bot], Dirk Su,
+ Dmitry V. Levin, drosdeck, Edson Juliano Drosdeck, edupont,
+ Eric DeVolder, Erik Moqvist, Evgeny Vereshchagin, Fabian Gurtner,
+ Felix Riemann, Franck Bui, Frantisek Sumsal, Geert Lorang,
+ Gerd Hoffmann, Gio, Hannoskaj, Hans de Goede, Hugo Carvalho,
+ igo95862, Ilya Leoshkevich, Ivan Shapovalov, Jacek Migacz,
+ Jade Lovelace, Jan Engelhardt, Jan Janssen, Jan Macku, January,
+ Jason A. Donenfeld, jcg, Jean-Tiare Le Bigot, Jelle van der Waa,
+ Jeremy Linton, Jian Zhang, Jiayi Chen, Jia Zhang, Joerg Behrmann,
+ Jörg Thalheim, Joshua Goins, joshuazivkovic, Joshua Zivkovic,
+ Kai-Chuan Hsieh, Khem Raj, Koba Ko, Lennart Poettering, lichao,
+ Li kunyu, Luca Boccassi, Luca BRUNO, Ludwig Nussel,
+ Łukasz Stelmach, Lycowolf, marcel151, Marcus Schäfer, Marek Vasut,
+ Mark Laws, Michael Biebl, Michał Kotyla, Michal Koutný,
+ Michal Sekletár, Mike Gilbert, Mike Yuan, MkfsSion, ml,
+ msizanoen1, mvzlb, MVZ Ludwigsburg, Neil Moore, Nick Rosbrook,
+ noodlejetski, Pasha Vorobyev, Peter Cai, p-fpv, Phaedrus Leeds,
+ Philipp Jungkamp, Quentin Deslandes, Raul Tambre, Ray Strode,
+ reuben olinsky, Richard E. van der Luit, Richard Phibel,
+ Ricky Tigg, Robin Humble, rogg, Rudi Heitbaum, Sam James,
+ Samuel Cabrero, Samuel Thibault, Siddhesh Poyarekar, Simon Brand,
+ Space Meyer, Spindle Security, Steve Ramage, Takashi Sakamoto,
+ Thomas Haller, Tonći Galić, Topi Miettinen, Torsten Hilbrich,
+ Tuetuopay, uerdogan, Ulrich Ölmann, Valentin David,
+ Vitaly Kuznetsov, Vito Caputo, Waltibaba, Will Fancher,
+ William Roberts, wouter bolsterlee, Youfu Zhang, Yu Watanabe,
+ Zbigniew Jędrzejewski-Szmek, Дамјан Георгиевски,
+ наб
+
+ — Warsaw, 2023-02-15
+
+CHANGES WITH 252 🎃:
+
+ Announcements of Future Feature Removals:
+
+ * We intend to remove cgroup v1 support from systemd release after the
+ end of 2023. If you run services that make explicit use of cgroup v1
+ features (i.e. the "legacy hierarchy" with separate hierarchies for
+ each controller), please implement compatibility with cgroup v2 (i.e.
+ the "unified hierarchy") sooner rather than later. Most of Linux
+ userspace has been ported over already.
+
+ * We intend to remove support for split-usr (/usr mounted separately
+ during boot) and unmerged-usr (parallel directories /bin and
+ /usr/bin, /lib and /usr/lib, etc). This will happen in the second
+ half of 2023, in the first release that falls into that time window.
+ For more details, see:
+ https://lists.freedesktop.org/archives/systemd-devel/2022-September/048352.html
+
+ Compatibility Breaks:
+
+ * ConditionKernelVersion= checks that use the '=' or '!=' operators
+ will now do simple string comparisons (instead of version comparisons
+ à la stverscmp()). Version comparisons are still done for the
+ ordering operators '<', '>', '<=', '>='. Moreover, if no operator is
+ specified, a shell-style glob match is now done. This creates a minor
+ incompatibility compared to older systemd versions when the '*', '?',
+ '[', ']' characters are used, as these will now match as shell globs
+ instead of literally. Given that kernel version strings typically do
+ not include these characters we expect little breakage through this
+ change.
+
+ * The service manager will now read the SELinux label used for SELinux
+ access checks from the unit file at the time it loads the file.
+ Previously, the label would be read at the moment of the access
+ check, which was problematic since at that time the unit file might
+ already have been updated or removed.
+
+ New Features:
+
+ * systemd-measure is a new tool for calculating and signing expected
+ TPM2 PCR values for a given unified kernel image (UKI) booted via
+ sd-stub. The public key used for the signature and the signed
+ expected PCR information can be embedded inside the UKI. This
+ information can be extracted from the UKI by external tools and code
+ in the image itself and is made available to userspace in the booted
+ kernel.
+
+ systemd-cryptsetup, systemd-cryptenroll, and systemd-creds have been
+ updated to make use of this information if available in the booted
+ kernel: when locking an encrypted volume/credential to the TPM
+ systemd-cryptenroll/systemd-creds will use the public key to bind the
+ volume/credential to any kernel that carries PCR information signed
+ by the same key pair. When unlocking such volumes/credentials
+ systemd-cryptsetup/systemd-creds will use the signature embedded in
+ the booted UKI to gain access.
+
+ Binding TPM-based disk encryption to public keys/signatures of PCR
+ values — instead of literal PCR values — addresses the inherent
+ "brittleness" of traditional PCR-bound TPM disk encryption schemes:
+ disks remain accessible even if the UKI is updated, without any TPM
+ specific preparation during the OS update — as long as each UKI
+ carries the necessary PCR signature information.
+
+ Net effect: if you boot a properly prepared kernel, TPM-bound disk
+ encryption now defaults to be locked to kernels which carry PCR
+ signatures from the same key pair. Example: if a hypothetical distro
+ FooOS prepares its UKIs like this, TPM-based disk encryption is now –
+ by default – bound to only FooOS kernels, and encrypted volumes bound
+ to the TPM cannot be unlocked on kernels from other sources. (But do
+ note this behaviour requires preparation/enabling in the UKI, and of
+ course users can always enroll non-TPM ways to unlock the volume.)
+
+ * systemd-pcrphase is a new tool that is invoked at six places during
+ system runtime, and measures additional words into TPM2 PCR 11, to
+ mark milestones of the boot process. This allows binding access to
+ specific TPM2-encrypted secrets to specific phases of the boot
+ process. (Example: LUKS2 disk encryption key only accessible in the
+ initrd, but not later.)
+
+ Changes in systemd itself, i.e. the manager and units
+
+ * The cpu controller is delegated to user manager units by default, and
+ CPUWeight= settings are applied to the top-level user slice units
+ (app.slice, background.slice, session.slice). This provides a degree
+ of resource isolation between different user services competing for
+ the CPU.
+
+ * Systemd can optionally do a full preset in the "first boot" condition
+ (instead of just enable-only). This behaviour is controlled by the
+ compile-time option -Dfirst-boot-full-preset. Right now it defaults
+ to 'false', but the plan is to switch it to 'true' for the subsequent
+ release.
+
+ * Drop-ins are now allowed for transient units too.
+
+ * Systemd will set the taint flag 'support-ended' if it detects that
+ the OS image is past its end-of-support date. This date is declared
+ in a new /etc/os-release field SUPPORT_END= described below.
+
+ * Two new settings ConditionCredential= and AssertCredential= can be
+ used to skip or fail units if a certain system credential is not
+ provided.
+
+ * ConditionMemory= accepts size suffixes (K, M, G, T, …).
+
+ * DefaultSmackProcessLabel= can be used in system.conf and user.conf to
+ specify the SMACK security label to use when not specified in a unit
+ file.
+
+ * DefaultDeviceTimeoutSec= can be used in system.conf and user.conf to
+ specify the default timeout when waiting for device units to
+ activate.
+
+ * C.UTF-8 is used as the default locale if nothing else has been
+ configured.
+
+ * [Condition|Assert]Firmware= have been extended to support certain
+ SMBIOS fields. For example
+
+ ConditionFirmware=smbios-field(board_name = "Custom Board")
+
+ conditionalizes the unit to run only when
+ /sys/class/dmi/id/board_name contains "Custom Board" (without the
+ quotes).
+
+ * ConditionFirstBoot= now correctly evaluates as true only during the
+ boot phase of the first boot. A unit executed later, after booting
+ has completed, will no longer evaluate this condition as true.
+
+ * Socket units will now create sockets in the SELinuxContext= of the
+ associated service unit, if any.
+
+ * Boot phase transitions (start initrd → exit initrd → boot complete →
+ shutdown) will be measured into TPM2 PCR 11, so that secrets can be
+ bound to a specific runtime phase. E.g.: a LUKS encryption key can be
+ unsealed only in the initrd.
+
+ * Service credentials (i.e. SetCredential=/LoadCredential=/…) will now
+ also be provided to ExecStartPre= processes.
+
+ * Various units are now correctly ordered against
+ initrd-switch-root.target where previously a conflict without
+ ordering was configured. A stop job for those units would be queued,
+ but without the ordering it could be executed only after
+ initrd-switch-root.service, leading to units not being restarted in
+ the host system as expected.
+
+ * In order to fully support the IPMI watchdog driver, which has not yet
+ been ported to the new common watchdog device interface,
+ /dev/watchdog0 will be tried first and systemd will silently fallback
+ to /dev/watchdog if it is not found.
+
+ * New watchdog-related D-Bus properties are now published by systemd:
+ WatchdogDevice, WatchdogLastPingTimestamp,
+ WatchdogLastPingTimestampMonotonic.
+
+ * At shutdown, API virtual files systems (proc, sys, etc.) will be
+ unmounted lazily.
+
+ * At shutdown, systemd will now log about processes blocking unmounting
+ of file systems.
+
+ * A new meson build option 'clock-valid-range-usec-max' was added to
+ allow disabling system time correction if RTC returns a timestamp far
+ in the future.
+
+ * Propagated restart jobs will no longer be discarded while a unit is
+ activating.
+
+ * PID 1 will now import system credentials from SMBIOS Type 11 fields
+ ("OEM vendor strings"), in addition to qemu_fwcfg. This provides a
+ simple, fast and generic path for supplying credentials to a VM,
+ without involving external tools such as cloud-init/ignition.
+
+ * The CPUWeight= setting of unit files now accepts a new special value
+ "idle", which configures "idle" level scheduling for the unit.
+
+ * Service processes that are activated due to a .timer or .path unit
+ triggering will now receive information about this via environment
+ variables. Note that this is information is lossy, as activation
+ might be coalesced and only one of the activating triggers will be
+ reported. This is hence more suited for debugging or tracing rather
+ than for behaviour decisions.
+
+ * The riscv_flush_icache(2) system call has been added to the list of
+ system calls allowed by default when SystemCallFilter= is used.
+
+ * The selinux context derived from the target executable, instead of
+ 'init_t' used for the manager itself, is now used when creating
+ listening sockets for units that specify SELinuxContextFromNet=yes.
+
+ Changes in sd-boot, bootctl, and the Boot Loader Specification:
+
+ * The Boot Loader Specification has been cleaned up and clarified.
+ Various corner cases in version string comparisons have been fixed
+ (e.g. comparisons for empty strings). Boot counting is now part of
+ the main specification.
+
+ * New PCRs measurements are performed during boot: PCR 11 for the
+ kernel+initrd combo, PCR 13 for any sysext images. If a measurement
+ took place this is now reported to userspace via the new
+ StubPcrKernelImage and StubPcrInitRDSysExts EFI variables.
+
+ * As before, systemd-stub will measure kernel parameters and system
+ credentials into PCR 12. It will now report this fact via the
+ StubPcrKernelParameters EFI variable to userspace.
+
+ * The UEFI monotonic boot counter is now included in the updated random
+ seed file maintained by sd-boot, providing some additional entropy.
+
+ * sd-stub will use LoadImage/StartImage to execute the kernel, instead
+ of arranging the image manually and jumping to the kernel entry
+ point. sd-stub also installs a temporary UEFI SecurityOverride to
+ allow the (unsigned) nested image to be booted. This is safe because
+ the outer (signed) stub+kernel binary must have been verified before
+ the stub was executed.
+
+ * Booting in EFI mixed mode (a 64-bit kernel over 32-bit UEFI firmware)
+ is now supported by sd-boot.
+
+ * bootctl gained a bunch of new options: --all-architectures to install
+ binaries for all supported EFI architectures, --root= and --image=
+ options to operate on a directory or disk image, and
+ --install-source= to specify the source for binaries to install,
+ --efi-boot-option-description= to control the name of the boot entry.
+
+ * The sd-boot stub exports a StubFeatures flag, which is used by
+ bootctl to show features supported by the stub that was used to boot.
+
+ * The PE section offsets that are used by tools that assemble unified
+ kernel images have historically been hard-coded. This may lead to
+ overlapping PE sections which may break on boot. The UKI will now try
+ to detect and warn about this.
+
+ Any tools that assemble UKIs must update to calculate these offsets
+ dynamically. Future sd-stub versions may use offsets that will not
+ work with the currently used set of hard-coded offsets!
+
+ * sd-stub now accepts (and passes to the initrd and then to the full
+ OS) new PE sections '.pcrsig' and '.pcrkey' that can be used to embed
+ signatures of expected PCR values, to allow sealing secrets via the
+ TPM2 against pre-calculated PCR measurements.
+
+ Changes in the hardware database:
+
+ * 'systemd-hwdb query' now supports the --root= option.
+
+ Changes in systemctl:
+
+ * systemctl now supports --state= and --type= options for the 'show'
+ and 'status' verbs.
+
+ * systemctl gained a new verb 'list-automounts' to list automount
+ points.
+
+ * systemctl gained support for a new --image= switch to be able to
+ operate on the specified disk image (similar to the existing --root=
+ which operates relative to some directory).
+
+ Changes in systemd-networkd:
+
+ * networkd can set Linux NetLabel labels for integration with the
+ network control in security modules via a new NetLabel= option.
+
+ * The RapidCommit= is (re-)introduced to enable faster configuration
+ via DHCPv6 (RFC 3315).
+
+ * networkd gained a new option TCPCongestionControlAlgorithm= that
+ allows setting a per-route TCP algorithm.
+
+ * networkd gained a new option KeepFileDescriptor= to allow keeping a
+ reference (file descriptor) open on TUN/TAP interfaces, which is
+ useful to avoid link flaps while the underlying service providing the
+ interface is being serviced.
+
+ * RouteTable= now also accepts route table names.
+
+ Changes in systemd-nspawn:
+
+ * The --bind= and --overlay= options now support relative paths.
+
+ * The --bind= option now supports a 'rootidmap' value, which will
+ use id-mapped mounts to map the root user inside the container to the
+ owner of the mounted directory on the host.
+
+ Changes in systemd-resolved:
+
+ * systemd-resolved now persists DNSOverTLS in its state file too. This
+ fixes a problem when used in combination with NetworkManager, which
+ sends the setting only once, causing it to be lost if resolved was
+ restarted at any point.
+
+ * systemd-resolved now exposes a Varlink socket at
+ /run/systemd/resolve/io.systemd.Resolve.Monitor, accessible only for
+ root. Processed DNS requests in a JSON format will be published to
+ any clients connected to this socket.
+
+ resolvectl gained a 'monitor' verb to make use of this.
+
+ * systemd-resolved now treats unsupported DNSSEC algorithms as INSECURE
+ instead of returning SERVFAIL, as per RFC:
+ https://datatracker.ietf.org/doc/html/rfc6840#section-5.2
+
+ * OpenSSL is the default crypto backend for systemd-resolved. (gnutls
+ is still supported.)
+
+ Changes in libsystemd and other libraries:
+
+ * libsystemd now exports sd_bus_error_setfv() (a convenience function
+ for setting bus errors), sd_id128_string_equal (a convenience
+ function for 128-bit ID string comparisons), and
+ sd_bus_message_read_strv_extend() (a function to incrementally read
+ string arrays).
+
+ * libsystemd now exports sd_device_get_child_first()/_next() as a
+ high-level interface for enumerating child devices. It also supports
+ sd_device_new_child() for opening a child device given a device
+ object.
+
+ * libsystemd now exports sd_device_monitor_set()/get_description()
+ which allow setting a custom description that will be used in log
+ messages by sd_device_monitor*.
+
+ * Private shared libraries (libsystemd-shared-nnn.so,
+ libsystemd-core-nnn.so) are now installed into arch-specific
+ directories to allow multi-arch installs.
+
+ * A new sd-gpt.h header is now published, listing GUIDs from the
+ Discoverable Partitions specification. For more details see:
+ https://systemd.io/DISCOVERABLE_PARTITIONS/
+
+ * A new function sd_hwdb_new_from_path() has been added to open a hwdb
+ database given an explicit path to the file.
+
+ * The signal number argument to sd_event_add_signal() now can now be
+ ORed with the SD_EVENT_SIGNAL_PROCMASK flag, causing sigprocmask() to
+ be automatically invoked to block the specified signal. This is
+ useful to simplify invocations as the caller doesn't have to do this
+ manually.
+
+ * A new convenience call sd_event_set_signal_exit() has been added to
+ sd-event to set up signal handling so that the event loop
+ automatically terminates cleanly on SIGTERM/SIGINT.
+
+ Changes in other components:
+
+ * systemd-sysusers, systemd-tmpfiles, and systemd-sysctl configuration
+ can now be provided via the credential mechanism.
+
+ * systemd-analyze gained a new verb 'compare-versions' that implements
+ comparisons for versions strings (similarly to 'rpmdev-vercmp' and
+ 'dpkg --compare-versions').
+
+ * 'systemd-analyze dump' is extended to accept glob patterns for unit
+ names to limit the output to matching units.
+
+ * tmpfiles.d/ lines can read file contents to write from a credential.
+ The new modifier char '^' is used to specify that the argument is a
+ credential name. This mechanism is used to automatically populate
+ /etc/motd, /etc/issue, and /etc/hosts from credentials.
+
+ * tmpfiles.d/ may now be configured to avoid changing uid/gid/mode of
+ an inode if the specification is prefixed with ':' and the inode
+ already exists.
+
+ * Default tmpfiles.d/ configuration now carries a line to automatically
+ use an 'ssh.authorized_keys.root' credential if provided to set up
+ the SSH authorized_keys file for the root user.
+
+ * systemd-tmpfiles will now gracefully handle absent source of "C" copy
+ lines.
+
+ * tmpfiles.d/ F/w lines now optionally permit encoding of the payload
+ in base64. This is useful to write arbitrary binary data into files.
+
+ * The pkgconfig and rpm macros files now export the directory for user
+ units as 'user_tmpfiles_dir' and '%_user_tmpfilesdir'.
+
+ * Detection of Apple Virtualization and detection of Parallels and
+ KubeVirt virtualization on non-x86 archs have been added.
+
+ * os-release gained a new field SUPPORT_END=YYYY-MM-DD to inform the
+ user when their system will become unsupported.
+
+ * When performing suspend-then-hibernate, the system will estimate the
+ discharge rate and use that to set the delay until hibernation and
+ hibernate immediately instead of suspending when running from a
+ battery and the capacity is below 5%.
+
+ * systemd-sysctl gained a --strict option to fail when a sysctl
+ setting is unknown to the kernel.
+
+ * machinectl supports --force for the 'copy-to' and 'copy-from'
+ verbs.
+
+ * coredumpctl gained the --root and --image options to look for journal
+ files under the specified root directory, image, or block device.
+
+ * 'journalctl -o' and similar commands now implement a new output mode
+ "short-delta". It is similar to "short-monotonic", but also shows the
+ time delta between subsequent messages.
+
+ * journalctl now respects the --quiet flag when verifying consistency
+ of journal files.
+
+ * Journal log messages gained a new implicit field _RUNTIME_SCOPE= that
+ will indicate whether a message was logged in the 'initrd' phase or
+ in the 'system' phase of the boot process.
+
+ * Journal files gained a new compatibility flag
+ 'HEADER_INCOMPATIBLE_COMPACT'. Files with this flag implement changes
+ to the storage format that allow reducing size on disk. As with other
+ compatibility flags, older journalctl versions will not be able to
+ read journal files using this new format. The environment variable
+ 'SYSTEMD_JOURNAL_COMPACT=0' can be passed to systemd-journald to
+ disable this functionality. It is enabled by default.
+
+ * systemd-run's --working-directory= switch now works when used in
+ combination with --scope.
+
+ * portablectl gained a --force flag to skip certain sanity checks. This
+ is implemented using new flags accepted by systemd-portabled for the
+ *WithExtensions() D-Bus methods: SD_SYSTEMD_PORTABLE_FORCE_ATTACH
+ flag now means that the attach/detach checks whether the units are
+ already present and running will be skipped. Similarly,
+ SD_SYSTEMD_PORTABLE_FORCE_SYSEXT flag means that the check whether
+ image name matches the name declared inside of the image will be
+ skipped. Callers must be sure to do those checks themselves if
+ appropriate.
+
+ * systemd-portabled will now use the original filename to check
+ extension-release.NAME for correctness, in case it is passed a
+ symlink.
+
+ * systemd-portabled now uses PrivateTmp=yes in the 'trusted' profile
+ too.
+
+ * sysext's extension-release files now support '_any' as a special
+ value for the ID= field, to allow distribution-independent extensions
+ (e.g.: fully statically compiled binaries, scripts). It also gained
+ support for a new ARCHITECTURE= field that may be used to explicitly
+ restrict an image to hosts of a specific architecture.
+
+ * systemd-repart now supports creating squashfs partitions. This
+ requires mksquashfs from squashfs-tools.
+
+ * systemd-repart gained a --split flag to also generate split
+ artifacts, i.e. a separate file for each partition. This is useful in
+ conjunction with systemd-sysupdate or other tools, or to generate
+ split dm-verity artifacts.
+
+ * systemd-repart is now able to generate dm-verity partitions, including
+ signatures.
+
+ * systemd-repart can now set a partition UUID to zero, allowing it to
+ be filled in later, such as when using verity partitions.
+
+ * systemd-repart now supports drop-ins for its configuration files.
+
+ * Package metadata logged by systemd-coredump in the system journal is
+ now more compact.
+
+ * xdg-autostart-service now expands 'tilde' characters in Exec lines.
+
+ * systemd-oomd now automatically links against libatomic, if available.
+
+ * systemd-oomd now sends out a 'Killed' D-Bus signal when a cgroup is
+ killed.
+
+ * scope units now also provide oom-kill status.
+
+ * systemd-pstore will now try to load only the efi_pstore kernel module
+ before running, ensuring that pstore can be used.
+
+ * systemd-logind gained a new StopIdleSessionSec= option to stop an idle
+ session after a preconfigure timeout.
+
+ * systemd-homed will now wait up to 30 seconds for workers to terminate,
+ rather than indefinitely.
+
+ * homectl gained a new '--luks-sector-size=' flag that allows users to
+ select the preferred LUKS sector size. Must be a power of 2 between 512
+ and 4096. systemd-userdbd records gained a corresponding field.
+
+ * systemd-sysusers will now respect the 'SOURCE_DATE_EPOCH' environment
+ variable when generating the 'sp_lstchg' field, to ensure an image
+ build can be reproducible.
+
+ * 'udevadm wait' will now listen to kernel uevents too when called with
+ --initialized=no.
+
+ * When naming network devices udev will now consult the Devicetree
+ "alias" fields for the device.
+
+ * systemd-udev will now create infiniband/by-path and
+ infiniband/by-ibdev links for Infiniband verbs devices.
+
+ * systemd-udev-trigger.service will now also prioritize input devices.
+
+ * ConditionACPower= and systemd-ac-power will now assume the system is
+ running on AC power if no battery can be found.
+
+ * All features and tools using the TPM2 will now communicate with it
+ using a bind key. Beforehand, the tpm2 support used encrypted sessions
+ by creating a primary key that was used to encrypt traffic. This
+ creates a problem as the key created for encrypting the traffic could
+ be faked by an active interposer on the bus. In cases when a pin is
+ used, a bind key will be used. The pin is used as the auth value for
+ the seal key, aka the disk encryption key, and that auth value will be
+ used in the session establishment. An attacker would need the pin
+ value to create the secure session and thus an active interposer
+ without the pin cannot interpose on TPM2 traffic.
+
+ * systemd-growfs no longer requires udev to run.
+
+ * systemd-backlight now will better support systems with multiple
+ graphic cards.
+
+ * systemd-cryptsetup's keyfile-timeout= option now also works when a
+ device is used as a keyfile.
+
+ * systemd-cryptenroll gained a new --unlock-key-file= option to get the
+ unlocking key from a key file (instead of prompting the user). Note
+ that this is the key for unlocking the volume in order to be able to
+ enroll a new key, but it is not the key that is enrolled.
+
+ * systemd-dissect gained a new --umount switch that will safely and
+ synchronously unmount all partitions of an image previously mounted
+ with 'systemd-dissect --mount'.
+
+ * When using gcrypt, all systemd tools and services will now configure
+ it to prefer the OS random number generator if present.
+
+ * All example code shipped with documentation has been relicensed from CC0
+ to MIT-0.
+
+ * Unit tests will no longer fail when running on a system without
+ /etc/machine-id.
+
+ Experimental features:
+
+ * BPF programs can now be compiled with bpf-gcc (requires libbpf >= 1.0
+ and bpftool >= 7.0).
+
+ * sd-boot can automatically enroll SecureBoot keys from files found on
+ the ESP. This enrollment can be either automatic ('force' mode) or
+ controlled by the user ('manual' mode). It is sufficient to place the
+ SecureBoot keys in the right place in the ESP and they will be picked
+ up by sd-boot and shown in the boot menu.
+
+ * The mkosi config in systemd gained support for automatically
+ compiling a kernel with the configuration appropriate for testing
+ systemd. This may be useful when developing or testing systemd in
+ tandem with the kernel.
+
+ Contributions from: 김인수, Adam Williamson, adrian5, Aidan Dang,
+ Akihiko Odaki, Alban Bedel, Albert Mikaelyan, Aleksey Vasenev,
+ Alexander Graf, Alexander Shopov, Alexander Wilson,
+ Alper Nebi Yasak, anarcat, Anders Jonsson, Andre Kalb,
+ Andrew Stone, Andrey Albershteyn, Anita Zhang, Ansgar Burchardt,
+ Antonio Alvarez Feijoo, Arnaud Ferraris, Aryan singh, asavah,
+ Avamander, Avram Lubkin, Balázs Meskó, Bastien Nocera,
+ Benjamin Franzke, BerndAdameit, bin456789, Celeste Liu,
+ Chih-Hsuan Yen, Christian Brauner, Christian Göttsche,
+ Christian Hesse, Clyde Byrd III, codefiles, Colin Walters,
+ Cristian Rodríguez, Daan De Meyer, Daniel Braunwarth,
+ Daniel Rusek, Dan Streetman, Darsey Litzenberger, David Edmundson,
+ David Jaša, David Rheinsberg, David Seifert, David Tardon,
+ dependabot[bot], Devendra Tewari, Dominique Martinet, drosdeck,
+ Edson Juliano Drosdeck, Eduard Tolosa, eggfly, Einsler Lee,
+ Elias Probst, Eli Schwartz, Evgeny Vereshchagin, exploide, Fei Li,
+ Foster Snowhill, Franck Bui, Frank Dana, Frantisek Sumsal,
+ Gerd Hoffmann, Gio, Goffredo Baroncelli, gtwang01,
+ Guillaume W. Bres, H A, Hans de Goede, Heinrich Schuchardt,
+ Hugo Carvalho, i-do-cpp, igo95862, j00512545, Jacek Migacz,
+ Jade Bilkey, James Hilliard, Jan B, Janis Goldschmidt,
+ Jan Janssen, Jan Kuparinen, Jan Luebbe, Jan Macku,
+ Jason A. Donenfeld, Javkhlanbayar Khongorzul, Jeremy Soller,
+ JeroenHD, jiangchuangang, João Loureiro,
+ Joaquín Ignacio Aramendía, Jochen Sprickerhof,
+ Johannes Schauer Marin Rodrigues, Jonas Kümmerlin,
+ Jonas Witschel, Jonathan Kang, Jonathan Lebon, Joost Heitbrink,
+ Jörg Thalheim, josh-gordon-fb, Joyce, Kai Lueke, lastkrick,
+ Lennart Poettering, Leon M. George, licunlong, Li kunyu,
+ LockBlock-dev, Loïc Collignon, Lubomir Rintel, Luca Boccassi,
+ Luca BRUNO, Ludwig Nussel, Łukasz Stelmach, Maccraft123,
+ Marc Kleine-Budde, Marius Vollmer, Martin Wilck, matoro,
+ Matthias Lisin, Max Gautier, Maxim Mikityanskiy, Michael Biebl,
+ Michal Koutný, Michal Sekletár, Michal Stanke, Mike Gilbert,
+ Mitchell Freiderich, msizanoen1, Nick Rosbrook, nl6720, Oğuz Ersen,
+ Oleg Solovyov, Olga Smirnova, Pablo Ceballos, Pavel Zhukov,
+ Phaedrus Leeds, Philipp Gortan, Piotr Drąg, Pyfisch,
+ Quentin Deslandes, Rahil Bhimjiani, Rene Hollander, Richard Huang,
+ Richard Phibel, Rudi Heitbaum, Sam James, Sarah Brofeldt,
+ Sean Anderson, Sebastian Scheibner, Shreenidhi Shedi,
+ Sonali Srivastava, Steve Ramage, Suraj Krishnan, Swapnil Devesh,
+ Takashi Sakamoto, Ted X. Toth, Temuri Doghonadze, Thomas Blume,
+ Thomas Haller, Thomas Hebb, Tomáš Hnyk, Tomasz Paweł Gajc,
+ Topi Miettinen, Ulrich Ölmann, undef, Uriel Corfa,
+ Victor Westerhuis, Vincent Dagonneau, Vishal Chillara Srinivas,
+ Vito Caputo, Weblate, Wenchao Hao, William Roberts, williamsumendap,
+ wineway, xiaoyang, Yuri Chornoivan, Yu Watanabe,
+ Zbigniew Jędrzejewski-Szmek, Zhaofeng Li, наб
+
+ – The Great Beyond, 2022-10-31 👻
+
+CHANGES WITH 251:
+
+ Backwards-incompatible changes:
+
+ * The minimum kernel version required has been bumped from 3.13 to 4.15,
+ and CLOCK_BOOTTIME is now assumed to always exist.
+
+ * C11 with GNU extensions (aka "gnu11") is now used to build our
+ components. Public API headers are still restricted to ISO C89.
+
+ * In v250, a systemd-networkd feature that automatically configures
+ routes to addresses specified in AllowedIPs= was added and enabled by
+ default. However, this causes network connectivity issues in many
+ existing setups. Hence, it has been disabled by default since
+ systemd-stable 250.3. The feature can still be used by explicitly
+ configuring RouteTable= setting in .netdev files.
+
+ * Jobs started via StartUnitWithFlags() will no longer return 'skipped'
+ when a Condition*= check does not succeed, restoring the JobRemoved
+ signal to the behaviour it had before v250.
+
+ * The org.freedesktop.portable1 methods GetMetadataWithExtensions() and
+ GetImageMetadataWithExtensions() have been fixed to provide an extra
+ return parameter, containing the actual extension release metadata.
+ The current implementation was judged to be broken and unusable, and
+ thus the usual procedure of adding a new set of methods was skipped,
+ and backward compatibility broken instead on the assumption that
+ nobody can be affected given the current state of this interface.
+
+ * All kernels supported by systemd mix bytes returned by RDRAND (or
+ similar) into the entropy pool at early boot. This means that on
+ those systems, even if /dev/urandom is not yet initialized, it still
+ returns bytes that are of at least RDRAND quality. For that reason,
+ we no longer have reason to invoke RDRAND from systemd itself, which
+ has historically been a source of bugs. Furthermore, kernels ≥5.6
+ provide the getrandom(GRND_INSECURE) interface for returning random
+ bytes before the entropy pool is initialized without warning into
+ kmsg, which is what we attempt to use if available. systemd's direct
+ usage of RDRAND has been removed. x86 systems ≥Broadwell that are
+ running an older kernel may experience kmsg warnings that were not
+ seen with 250. For newer kernels, non-x86 systems, or older x86
+ systems, there should be no visible changes.
+
+ * sd-boot will now measure the kernel command line into TPM PCR 12
+ rather than PCR 8. This improves usefulness of the measurements on
+ systems where sd-boot is chainloaded from Grub. Grub measures all
+ commands its executes into PCR 8, which makes it very hard to use
+ reasonably, hence separate ourselves from that and use PCR 12
+ instead, which is what certain Ubuntu editions already do. To retain
+ compatibility with systems running older systemd systems a new meson
+ option 'efi-tpm-pcr-compat' has been added (which defaults to false).
+ If enabled, the measurement is done twice: into the new-style PCR 12
+ *and* the old-style PCR 8. It's strongly advised to migrate all users
+ to PCR 12 for this purpose in the long run, as we intend to remove
+ this compatibility feature in two years' time.
+
+ * busctl capture now writes output in the newer pcapng format instead
+ of pcap.
+
+ * A udev rule that imported hwdb matches for USB devices with lowercase
+ hexadecimal vendor/product ID digits was added in systemd 250. This
+ has been reverted, since uppercase hexadecimal digits are supposed to
+ be used, and we already had a rule with the appropriate match.
+
+ Users might need to adjust their local hwdb entries.
+
+ * arch_prctl(2) has been moved to the @default set in the syscall filters
+ (as exposed via the SystemCallFilter= setting in service unit files).
+ It is apparently used by the linker now.
+
+ * The tmpfiles entries that create the /run/systemd/netif directory and
+ its subdirectories were moved from tmpfiles.d/systemd.conf to
+ tmpfiles.d/systemd-network.conf.
+
+ Users might need to adjust their files that override tmpfiles.d/systemd.conf
+ to account for this change.
+
+ * The requirement for Portable Services images to contain a well-formed
+ os-release file (i.e.: contain at least an ID field) is now enforced.
+ This applies to base images and extensions, and also to systemd-sysext.
+
+ Changes in the Boot Loader Specification, kernel-install and sd-boot:
+
+ * kernel-install's and bootctl's Boot Loader Specification Type #1
+ entry generation logic has been reworked. The user may now pick
+ explicitly by which "token" string to name the installation's boot
+ entries, via the new /etc/kernel/entry-token file or the new
+ --entry-token= switch to bootctl. By default — as before — the
+ entries are named after the local machine ID. However, in "golden
+ image" environments, where the machine ID shall be initialized on
+ first boot (as opposed to at installation time before first boot) the
+ machine ID will not be available at build time. In this case the
+ --entry-token= switch to bootctl (or the /etc/kernel/entry-token
+ file) may be used to override the "token" for the entries, for
+ example the IMAGE_ID= or ID= fields from /etc/os-release. This will
+ make the OS images independent of any machine ID, and ensure that the
+ images will not carry any identifiable information before first boot,
+ but on the other hand means that multiple parallel installations of
+ the very same image on the same disk cannot be supported.
+
+ Summary: if you are building golden images that shall acquire
+ identity information exclusively on first boot, make sure to both
+ remove /etc/machine-id *and* to write /etc/kernel/entry-token to the
+ value of the IMAGE_ID= or ID= field of /etc/os-release or another
+ suitable identifier before deploying the image.
+
+ * The Boot Loader Specification has been extended with
+ /loader/entries.srel file located in the EFI System Partition (ESP)
+ that disambiguates the format of the entries in the /loader/entries/
+ directory (in order to discern them from incompatible uses of this
+ directory by other projects). For entries that follow the
+ Specification, the string "type1" is stored in this file.
+
+ bootctl will now write this file automatically when installing the
+ systemd-boot boot loader.
+
+ * kernel-install supports a new initrd_generator= setting in
+ /etc/kernel/install.conf, that is exported as
+ $KERNEL_INSTALL_INITRD_GENERATOR to kernel-install plugins. This
+ allows choosing different initrd generators.
+
+ * kernel-install will now create a "staging area" (an initially-empty
+ directory to gather files for a Boot Loader Specification Type #1
+ entry). The path to this directory is exported as
+ $KERNEL_INSTALL_STAGING_AREA to kernel-install plugins, which should
+ drop files there instead of writing them directly to the final
+ location. kernel-install will move them when all files have been
+ prepared successfully.
+
+ * New option sort-key= has been added to the Boot Loader Specification
+ to override the sorting order of the entries in the boot menu. It is
+ read by sd-boot and bootctl, and will be written by kernel-install,
+ with the default value of IMAGE_ID= or ID= fields from
+ os-release. Together, this means that on multiboot installations,
+ entries should be grouped and sorted in a predictable way.
+
+ * The sort order of boot entries has been updated: entries which have
+ the new field sort-key= are sorted by it first, and all entries
+ without it are ordered later. After that, entries are sorted by
+ version so that newest entries are towards the beginning of the list.
+
+ * The kernel-install tool gained a new 'inspect' verb which shows the
+ paths and other settings used.
+
+ * sd-boot can now optionally beep when the menu is shown and menu
+ entries are selected, which can be useful on machines without a
+ working display. (Controllable via a loader.conf setting.)
+
+ * The --make-machine-id-directory= switch to bootctl has been replaced
+ by --make-entry-directory=, given that the entry directory is not
+ necessarily named after the machine ID, but after some other suitable
+ ID as selected via --entry-token= described above. The old name of
+ the option is still understood to maximize compatibility.
+
+ * 'bootctl list' gained support for a new --json= switch to output boot
+ menu entries in JSON format.
+
+ * 'bootctl is-installed' now supports the --graceful, and various verbs
+ omit output with the new option --quiet.
+
+ Changes in systemd-homed:
+
+ * Starting with v250 systemd-homed uses UID/GID mapping on the mounts
+ of activated home directories it manages (if the kernel and selected
+ file systems support it). So far it mapped three UID ranges: the
+ range from 0…60000, the user's own UID, and the range 60514…65534,
+ leaving everything else unmapped (in other words, the 16-bit UID range
+ is mapped almost fully, with the exception of the UID subrange used
+ for systemd-homed users, with one exception: the user's own UID).
+ Unmapped UIDs may not be used for file ownership in the home
+ directory — any chown() attempts with them will fail. With this
+ release a fourth range is added to these mappings:
+ 524288…1879048191. This range is the UID range intended for container
+ uses, see:
+
+ https://systemd.io/UIDS-GIDS
+
+ This range may be used for container managers that place container OS
+ trees in the home directory (which is a questionable approach, for
+ quota, permission, SUID handling and network file system
+ compatibility reasons, but nonetheless apparently commonplace). Note
+ that this mapping is mapped 1:1 in a pass-through fashion, i.e. the
+ UID assignments from the range are not managed or mapped by
+ `systemd-homed`, and must be managed with other mechanisms, in the
+ context of the local system.
+
+ Typically, a better approach to user namespacing in relevant
+ container managers would be to leave container OS trees on disk at
+ UID offset 0, but then map them to a dynamically allocated runtime
+ UID range via another UID mount map at container invocation
+ time. That way user namespace UID ranges become strictly a runtime
+ concept, and do not leak into persistent file systems, persistent
+ user databases or persistent configuration, thus greatly simplifying
+ handling, and improving compatibility with home directories intended
+ to be portable like the ones managed by systemd-homed.
+
+ Changes in shared libraries:
+
+ * A new libsystemd-core-<version>.so private shared library is
+ installed under /usr/lib/systemd/system, mirroring the existing
+ libsystemd-shared-<version>.so library. This allows the total
+ installation size to be reduced by binary code reuse.
+
+ * The <version> tag used in the name of libsystemd-shared.so and
+ libsystemd-core.so can be configured via the meson option
+ 'shared-lib-tag'. Distributions may build subsequent versions of the
+ systemd package with unique tags (e.g. the full package version),
+ thus allowing multiple installations of those shared libraries to be
+ available at the same time. This is intended to fix an issue where
+ programs that link to those libraries would fail to execute because
+ they were installed earlier or later than the appropriate version of
+ the library.
+
+ * The sd-id128 API gained a new call sd_id128_to_uuid_string() that is
+ similar to sd_id128_to_string() but formats the ID in RFC 4122 UUID
+ format instead of as a simple series of hex characters.
+
+ * The sd-device API gained two new calls sd_device_new_from_devname()
+ and sd_device_new_from_path() which permit allocating an sd_device
+ object from a device node name or file system path.
+
+ * sd-device also gained a new call sd_device_open() which will open the
+ device node associated with a device for which an sd_device object
+ has been allocated. The call is supposed to address races around
+ device nodes being removed/recycled due to hotplug events, or media
+ change events: the call checks internally whether the major/minor of
+ the device node and the "diskseq" (in case of block devices) match
+ with the metadata loaded in the sd_device object, thus ensuring that
+ the device once opened really matches the provided sd_device object.
+
+ Changes in PID1, systemctl, and systemd-oomd:
+
+ * A new set of service monitor environment variables will be passed to
+ OnFailure=/OnSuccess= handlers, but only if exactly one unit lists the
+ handler unit as OnFailure=/OnSuccess=. The variables are:
+ $MONITOR_SERVICE_RESULT, $MONITOR_EXIT_CODE, $MONITOR_EXIT_STATUS,
+ $MONITOR_INVOCATION_ID and $MONITOR_UNIT. For cases when a single
+ handler needs to watch multiple units, use a templated handler.
+
+ * A new ExtensionDirectories= setting in service unit files allows
+ system extensions to be loaded from a directory. (It is similar to
+ ExtensionImages=, but takes paths to directories, instead of
+ disk image files.)
+
+ 'portablectl attach --extension=' now also accepts directory paths.
+
+ * The user.delegate and user.invocation_id extended attributes on
+ cgroups are used in addition to trusted.delegate and
+ trusted.invocation_id. The latter pair requires privileges to set,
+ but the former doesn't and can be also set by the unprivileged user
+ manager.
+
+ (Only supported on kernels ≥5.6.)
+
+ * Units that were killed by systemd-oomd will now have a service result
+ of 'oom-kill'. The number of times a service was killed is tallied
+ in the 'user.oomd_ooms' extended attribute.
+
+ The OOMPolicy= unit file setting is now also honoured by
+ systemd-oomd.
+
+ * In unit files the new %y/%Y specifiers can be used to refer to
+ normalized unit file path, which is particularly useful for symlinked
+ unit files.
+
+ The new %q specifier resolves to the pretty hostname
+ (i.e. PRETTY_HOSTNAME= from /etc/machine-info).
+
+ The new %d specifier resolves to the credentials directory of a
+ service (same as $CREDENTIALS_DIRECTORY).
+
+ * The RootDirectory=, MountAPIVFS=, ExtensionDirectories=,
+ *Capabilities*=, ProtectHome=, *Directory=, TemporaryFileSystem=,
+ PrivateTmp=, PrivateDevices=, PrivateNetwork=, NetworkNamespacePath=,
+ PrivateIPC=, IPCNamespacePath=, PrivateUsers=, ProtectClock=,
+ ProtectKernelTunables=, ProtectKernelModules=, ProtectKernelLogs=,
+ MountFlags= service settings now also work in unprivileged user
+ services, i.e. those run by the user's --user service manager, as long
+ as user namespaces are enabled on the system.
+
+ * Services with Restart=always and a failing ExecCondition= will no
+ longer be restarted, to bring ExecCondition= behaviour in line with
+ Condition*= settings.
+
+ * LoadCredential= now accepts a directory as the argument; all files
+ from the directory will be loaded as credentials.
+
+ * A new D-Bus property ControlGroupId is now exposed on service units,
+ that encapsulates the service's numeric cgroup ID that newer kernels
+ assign to each cgroup.
+
+ * PID 1 gained support for configuring the "pre-timeout" of watchdog
+ devices and the associated governor, via the new
+ RuntimeWatchdogPreSec= and RuntimeWatchdogPreGovernor= configuration
+ options in /etc/systemd/system.conf.
+
+ * systemctl's --timestamp= option gained a new choice "unix", to show
+ timestamp as unix times, i.e. seconds since 1970, Jan 1st.
+
+ * A new "taint" flag named "old-kernel" is introduced which is set when
+ the kernel systemd runs on is older then the current baseline version
+ (see above). The flag is shown in "systemctl status" output.
+
+ * Two additional taint flags "short-uid-range" and "short-gid-range"
+ have been added as well, which are set when systemd notices it is run
+ within a userns namespace that does not define the full 0…65535 UID
+ range
+
+ * A new "unmerged-usr" taint flag has been added that is set whenever
+ running on systems where /bin/ + /sbin/ are *not* symlinks to their
+ counterparts in /usr/, i.e. on systems where the /usr/-merge has not
+ been completed.
+
+ * Generators invoked by PID 1 will now have a couple of useful
+ environment variables set describing the execution context a
+ bit. $SYSTEMD_SCOPE encodes whether the generator is called from the
+ system service manager, or from the per-user service
+ manager. $SYSTEMD_IN_INITRD encodes whether the generator is invoked
+ in initrd context or on the host. $SYSTEMD_FIRST_BOOT encodes whether
+ systemd considers the current boot to be a "first"
+ boot. $SYSTEMD_VIRTUALIZATION encode whether virtualization is
+ detected and which type of hypervisor/container
+ manager. $SYSTEMD_ARCHITECTURE indicates which architecture the
+ kernel is built for.
+
+ * PID 1 will now automatically pick up system credentials from qemu's
+ fw_cfg interface, thus allowing passing arbitrary data into VM
+ systems similar to how this is already supported for passing them
+ into `systemd-nspawn` containers. Credentials may now also be passed
+ in via the new kernel command line option `systemd.set_credential=`
+ (note that kernel command line options are world-readable during
+ runtime, and only useful for credentials that require no
+ confidentiality). The credentials that can be passed to unified
+ kernels that use the `systemd-stub` UEFI stub are now similarly
+ picked up automatically. Automatic importing of system credentials
+ this way can be turned off via the new
+ `systemd.import_credentials=no` kernel command line option.
+
+ * LoadCredential= will now automatically look for credentials in the
+ /etc/credstore/, /run/credstore/, /usr/lib/credstore/ directories if
+ the argument is not an absolute path. Similarly,
+ LoadCredentialEncrypted= will check the same directories plus
+ /etc/credstore.encrypted/, /run/credstore.encrypted/ and
+ /usr/lib/credstore.encrypted/. The idea is to use those directories
+ as the system-wide location for credentials that services should pick
+ up automatically.
+
+ * System and service credentials are described in great detail in a new
+ document:
+
+ https://systemd.io/CREDENTIALS
+
+ Changes in systemd-journald:
+
+ * The journal JSON export format has been added to listed of stable
+ interfaces (https://systemd.io/PORTABILITY_AND_STABILITY/).
+
+ * journalctl --list-boots now supports JSON output and the --reverse option.
+
+ * Under docs/: JOURNAL_EXPORT_FORMATS was imported from the wiki and
+ updated, BUILDING_IMAGES is new:
+
+ https://systemd.io/JOURNAL_EXPORT_FORMATS
+ https://systemd.io/BUILDING_IMAGES
+
+ Changes in udev:
+
+ * Two new hwdb files have been added. One lists "handhelds" (PDAs,
+ calculators, etc.), the other AV production devices (DJ tables,
+ keypads, etc.) that should accessible to the seat owner user by
+ default.
+
+ * udevadm trigger gained a new --prioritized-subsystem= option to
+ process certain subsystems (and all their parent devices) earlier.
+
+ systemd-udev-trigger.service now uses this new option to trigger
+ block and TPM devices first, hopefully making the boot a bit faster.
+
+ * udevadm trigger now implements --type=all, --initialized-match,
+ --initialized-nomatch to trigger both subsystems and devices, only
+ already-initialized devices, and only devices which haven't been
+ initialized yet, respectively.
+
+ * udevadm gained a new "wait" command for safely waiting for a specific
+ device to show up in the udev device database. This is useful in
+ scripts that asynchronously allocate a block device (e.g. through
+ repartitioning, or allocating a loopback device or similar) and need
+ to synchronize on the creation to complete.
+
+ * udevadm gained a new "lock" command for locking one or more block
+ devices while formatting it or writing a partition table to it. It is
+ an implementation of https://systemd.io/BLOCK_DEVICE_LOCKING and
+ usable in scripts dealing with block devices.
+
+ * udevadm info will show a couple of additional device fields in its
+ output, and will not apply a limited set of coloring to line types.
+
+ * udevadm info --tree will now show a tree of objects (i.e. devices and
+ suchlike) in the /sys/ hierarchy.
+
+ * Block devices will now get a new set of device symlinks in
+ /dev/disk/by-diskseq/<nr>, which may be used to reference block
+ device nodes via the kernel's "diskseq" value. Note that this does
+ not guarantee that opening a device by a symlink like this will
+ guarantee that the opened device actually matches the specified
+ diskseq value. To be safe against races, the actual diskseq value of
+ the opened device (BLKGETDISKSEQ ioctl()) must still be compred with
+ the one in the symlink path.
+
+ * .link files gained support for setting MDI/MID-X on a link.
+
+ * .link files gained support for [Match] Firmware= setting to match on
+ the device firmware description string. By mistake, it was previously
+ only supported in .network files.
+
+ * .link files gained support for [Link] SR-IOVVirtualFunctions= setting
+ and [SR-IOV] section to configure SR-IOV virtual functions.
+
+ Changes in systemd-networkd:
+
+ * The default scope for unicast routes configured through [Route]
+ section is changed to "link", to make the behavior consistent with
+ "ip route" command. The manual configuration of [Route] Scope= is
+ still honored.
+
+ * A new unit systemd-networkd-wait-online@<interface>.service has been
+ added that can be used to wait for a specific network interface to be
+ up.
+
+ * systemd-networkd gained a new [Bridge] Isolated=true|false setting
+ that configures the eponymous kernel attribute on the bridge.
+
+ * .netdev files now can be used to create virtual WLAN devices, and
+ configure various settings on them, via the [WLAN] section.
+
+ * .link/.network files gained support for [Match] Kind= setting to match
+ on device kind ("bond", "bridge", "gre", "tun", "veth", etc.)
+
+ This value is also shown by 'networkctl status'.
+
+ * The Local= setting in .netdev files for various virtual network
+ devices gained support for specifying, in addition to the network
+ address, the name of a local interface which must have the specified
+ address.
+
+ * systemd-networkd gained a new [Tunnel] External= setting in .netdev
+ files, to configure tunnels in external mode (a.k.a. collect metadata
+ mode).
+
+ * [Network] L2TP= setting was removed. Please use interface specifier in
+ Local= setting in .netdev files of corresponding L2TP interface.
+
+ * New [DHCPServer] BootServerName=, BootServerAddress=, and
+ BootFilename= settings can be used to configure the server address,
+ server name, and file name sent in the DHCP packet (e.g. to configure
+ PXE boot).
+
+ Changes in systemd-resolved:
+
+ * systemd-resolved is started earlier (in sysinit.target), so it
+ available earlier and will also be started in the initrd if installed
+ there.
+
+ Changes in disk encryption:
+
+ * systemd-cryptenroll can now control whether to require the user to
+ enter a PIN when using TPM-based unlocking of a volume via the new
+ --tpm2-with-pin= option.
+
+ Option tpm2-pin= can be used in /etc/crypttab.
+
+ * When unlocking devices via TPM, TPM2 parameter encryption is now
+ used, to ensure that communication between CPU and discrete TPM chips
+ cannot be eavesdropped to acquire disk encryption keys.
+
+ * A new switch --fido2-credential-algorithm= has been added to
+ systemd-cryptenroll allowing selection of the credential algorithm to
+ use when binding encryption to FIDO2 tokens.
+
+ Changes in systemd-hostnamed:
+
+ * HARDWARE_VENDOR= and HARDWARE_MODEL= can be set in /etc/machine-info
+ to override the values gleaned from the hwdb.
+
+ * A ID_CHASSIS property can be set in the hwdb (for the DMI device
+ /sys/class/dmi/id) to override the chassis that is reported by
+ hostnamed.
+
+ * hostnamed's D-Bus interface gained a new method GetHardwareSerial()
+ for reading the hardware serial number, as reportd by DMI. It also
+ exposes a new method D-Bus property FirmwareVersion that encode the
+ firmware version of the system.
+
+ Changes in other components:
+
+ * /etc/locale.conf is now populated through tmpfiles.d factory /etc/
+ handling with the values that were configured during systemd build
+ (if /etc/locale.conf has not been created through some other
+ mechanism). This means that /etc/locale.conf should always have
+ reasonable contents and we avoid a potential mismatch in defaults.
+
+ * The userdbctl tool will now show UID range information as part of the
+ list of known users.
+
+ * A new build-time configuration setting default-user-shell= can be
+ used to set the default shell for user records and nspawn shell
+ invocations (instead of the default /bin/bash).
+
+ * systemd-timesyncd now provides a D-Bus API for receiving NTP server
+ information dynamically at runtime via IPC.
+
+ * The systemd-creds tool gained a new "has-tpm2" verb, which reports
+ whether a functioning TPM2 infrastructure is available, i.e. if
+ firmware, kernel driver and systemd all have TPM2 support enabled and
+ a device found.
+
+ * The systemd-creds tool gained support for generating encrypted
+ credentials that are using an empty encryption key. While this
+ provides no integrity nor confidentiality it's useful to implement
+ codeflows that work the same on TPM-ful and TPM2-less systems. The
+ service manager will only accept credentials "encrypted" that way if
+ a TPM2 device cannot be detected, to ensure that credentials
+ "encrypted" like that cannot be used to trick TPM2 systems.
+
+ * When deciding whether to colorize output, all systemd programs now
+ also check $COLORTERM (in addition to $NO_COLOR, $SYSTEMD_COLORS, and
+ $TERM).
+
+ * Meson's new install_tag feature is now in use for several components,
+ allowing to build and install select binaries only: pam, nss, devel
+ (pkg-config files), systemd-boot, libsystemd, libudev. Example:
+ $ meson build systemd-boot
+ $ meson install --tags systemd-boot --no-rebuild
+ https://mesonbuild.com/Installing.html#installation-tags
+
+ * A new build configuration option has been added, to allow selecting the
+ default compression algorithm used by systemd-journald and systemd-coredump.
+ This allows to build-in support for decompressing all supported formats,
+ but choose a specific one for compression. E.g.:
+ $ meson -Ddefault-compression=xz
+
+ Experimental features:
+
+ * sd-boot gained a new *experimental* setting "reboot-for-bitlocker" in
+ loader.conf that implements booting Microsoft Windows from the
+ sd-boot in a way that first reboots the system, to reset the TPM
+ PCRs. This improves compatibility with BitLocker's TPM use, as the
+ PCRs will only record the Windows boot process, and not sd-boot
+ itself, thus retaining the PCR measurements not involving sd-boot.
+ Note that this feature is experimental for now, and is likely going
+ to be generalized and renamed in a future release, without retaining
+ compatibility with the current implementation.
+
+ * A new systemd-sysupdate component has been added that automatically
+ discovers, downloads, and installs A/B-style updates for the host
+ installation itself, or container images, portable service images,
+ and other assets. See the new systemd-sysupdate man page for updates.
+
+ Contributions from: 4piu, Adam Williamson, adrian5, Albert Brox,
+ AlexCatze, Alex Henrie, Alfonso Sánchez-Beato, Alice S,
+ Alvin Šipraga, amarjargal, Amarjargal, Andrea Pappacoda,
+ Andreas Rammhold, Andy Chi, Anita Zhang, Antonio Alvarez Feijoo,
+ Arfrever Frehtes Taifersar Arahesis, ash, Bastien Nocera, Be,
+ bearhoney, Ben Efros, Benjamin Berg, Benjamin Franzke,
+ Brett Holman, Christian Brauner, Clyde Byrd III, Curtis Klein,
+ Daan De Meyer, Daniele Medri, Daniel Mack, Danilo Krummrich,
+ David, David Bond, Davide Cavalca, David Tardon, davijosw,
+ dependabot[bot], Donald Chan, Dorian Clay, Eduard Tolosa,
+ Elias Probst, Eli Schwartz, Erik Sjölund, Evgeny Vereshchagin,
+ Federico Ceratto, Franck Bui, Frantisek Sumsal, Gaël PORTAY,
+ Georges Basile Stavracas Neto, Gibeom Gwon, Goffredo Baroncelli,
+ Grigori Goronzy, Hans de Goede, Heiko Becker, Hugo Carvalho,
+ Jakob Lell, James Hilliard, Jan Janssen, Jason A. Donenfeld,
+ Joan Bruguera, Joerie de Gram, Josh Triplett, Julia Kartseva,
+ Kazuo Moriwaka, Khem Raj, ksa678491784, Lance, Lan Tian,
+ Laura Barcziova, Lennart Poettering, Leviticoh, licunlong,
+ Lidong Zhong, lincoln auster, Lubomir Rintel, Luca Boccassi,
+ Luca BRUNO, lucagoc, Ludwig Nussel, Marcel Hellwig, march1993,
+ Marco Scardovi, Mario Limonciello, Mariusz Tkaczyk,
+ Markus Weippert, Martin, Martin Liska, Martin Wilck, Matija Skala,
+ Matthew Blythe, Matthias Lisin, Matthijs van Duin, Matt Walton,
+ Max Gautier, Michael Biebl, Michael Olbrich, Michal Koutný,
+ Michal Sekletár, Mike Gilbert, MkfsSion, Morten Linderud,
+ Nick Rosbrook, Nikolai Grigoriev, Nikolai Kostrigin,
+ Nishal Kulkarni, Noel Kuntze, Pablo Ceballos, Peter Hutterer,
+ Peter Morrow, Pigmy-penguin, Piotr Drąg, prumian, Richard Neill,
+ Rike-Benjamin Schuppner, rodin-ia, Romain Naour, Ruben Kerkhof,
+ Ryan Hendrickson, Santa Wiryaman, Sebastian Pucilowski, Seth Falco,
+ Simon Ellmann, Sonali Srivastava, Stefan Seering,
+ Stephen Hemminger, tawefogo, techtino, Temuri Doghonadze,
+ Thomas Batten, Thomas Haller, Thomas Weißschuh, Tobias Stoeckmann,
+ Tomasz Pala, Tyson Whitehead, Vishal Chillara Srinivas,
+ Vivien Didelot, w30023233, wangyuhang, Weblate, Xiaotian Wu,
+ yangmingtai, YmrDtnJu, Yonathan Randolph, Yutsuten, Yu Watanabe,
+ Zbigniew Jędrzejewski-Szmek, наб
+
+ — Edinburgh, 2022-05-21
+
+CHANGES WITH 250:
+
+ * Support for encrypted and authenticated credentials has been added.
+ This extends the credential logic introduced with v247 to support
+ non-interactive symmetric encryption and authentication, based on a
+ key that is stored on the /var/ file system or in the TPM2 chip (if
+ available), or the combination of both (by default if a TPM2 chip
+ exists the combination is used, otherwise the /var/ key only). The
+ credentials are automatically decrypted at the moment a service is
+ started, and are made accessible to the service itself in unencrypted
+ form. A new tool 'systemd-creds' encrypts credentials for this
+ purpose, and two new service file settings LoadCredentialEncrypted=
+ and SetCredentialEncrypted= configure such credentials.
+
+ This feature is useful to store sensitive material such as SSL
+ certificates, passwords and similar securely at rest and only decrypt
+ them when needed, and in a way that is tied to the local OS
+ installation or hardware.
+
+ * systemd-gpt-auto-generator can now automatically set up discoverable
+ LUKS2 encrypted swap partitions.
+
+ * The GPT Discoverable Partitions Specification has been substantially
+ extended with support for root and /usr/ partitions for the majority
+ of architectures systemd supports. This includes platforms that do
+ not natively support UEFI, because even though GPT is specified under
+ UEFI umbrella, it is useful on other systems too. Specifically,
+ systemd-nspawn, systemd-sysext, systemd-gpt-auto-generator and
+ Portable Services use the concept without requiring UEFI.
+
+ * The GPT Discoverable Partitions Specifications has been extended with
+ a new set of partitions that may carry PKCS#7 signatures for Verity
+ partitions, encoded in a simple JSON format. This implements a simple
+ mechanism for building disk images that are fully authenticated and
+ can be tested against a set of cryptographic certificates. This is
+ now implemented for the various systemd tools that can operate with
+ disk images, such as systemd-nspawn, systemd-sysext, systemd-dissect,
+ Portable services/RootImage=, systemd-tmpfiles, and systemd-sysusers.
+ The PKCS#7 signatures are passed to the kernel (where they are
+ checked against certificates from the kernel keyring), or can be
+ verified against certificates provided in userspace (via a simple
+ drop-in file mechanism).
+
+ * systemd-dissect's inspection logic will now report for which uses a
+ disk image is intended. Specifically, it will display whether an
+ image is suitable for booting on UEFI or in a container (using
+ systemd-nspawn's --image= switch), whether it can be used as portable
+ service, or attached as system extension.
+
+ * The system-extension.d/ drop-in files now support a new field
+ SYSEXT_SCOPE= that may encode which purpose a system extension image
+ is for: one of "initrd", "system" or "portable". This is useful to
+ make images more self-descriptive, and to ensure system extensions
+ cannot be attached in the wrong contexts.
+
+ * The os-release file learnt a new PORTABLE_PREFIXES= field which may
+ be used in portable service images to indicate which unit prefixes
+ are supported.
+
+ * The GPT image dissection logic in systemd-nspawn/systemd-dissect/…
+ now is able to decode images for non-native architectures as well.
+ This allows systemd-nspawn to boot images of non-native architectures
+ if the corresponding user mode emulator is installed and
+ systemd-binfmtd is running.
+
+ * systemd-logind gained new settings HandlePowerKeyLongPress=,
+ HandleRebootKeyLongPress=, HandleSuspendKeyLongPress= and
+ HandleHibernateKeyLongPress= which may be used to configure actions
+ when the relevant keys are pressed for more than 5s. This is useful
+ on devices that only have hardware for a subset of these keys. By
+ default, if the reboot key is pressed long the poweroff operation is
+ now triggered, and when the suspend key is pressed long the hibernate
+ operation is triggered. Long pressing the other two keys currently
+ does not trigger any operation by default.
+
+ * When showing unit status updates on the console during boot and
+ shutdown, and a service is slow to start so that the cylon animation
+ is shown, the most recent sd_notify() STATUS= text is now shown as
+ well. Services may use this to make the boot/shutdown output easier
+ to understand, and to indicate what precisely a service that is slow
+ to start or stop is waiting for. In particular, the per-user service
+ manager instance now reports what it is doing and which service it is
+ waiting for this way to the system service manager.
+
+ * The service manager will now re-execute on reception of the
+ SIGRTMIN+25 signal. It previously already did that on SIGTERM — but
+ only when running as PID 1. There was no signal to request this when
+ running as per-user service manager, i.e. as any other PID than 1.
+ SIGRTMIN+25 works for both system and user managers.
+
+ * The hardware watchdog logic in PID 1 gained support for operating
+ with the default timeout configured in the hardware, instead of
+ insisting on re-configuring it. Set RuntimeWatchdogSec=default to
+ request this behavior.
+
+ * A new kernel command line option systemd.watchdog_sec= is now
+ understood which may be used to override the hardware watchdog
+ time-out for the boot.
+
+ * A new setting DefaultOOMScoreAdjust= is now supported in
+ /etc/systemd/system.conf and /etc/systemd/user.conf. It may be used
+ to set the default process OOM score adjustment value for processes
+ started by the service manager. For per-user service managers this
+ now defaults to 100, but for per-system service managers is left as
+ is. This means that by default now services forked off the user
+ service manager are more likely to be killed by the OOM killer than
+ system services or the managers themselves.
+
+ * A new per-service setting RestrictFileSystems= as been added that
+ restricts the file systems a service has access to by their type.
+ This is based on the new BPF LSM of the Linux kernel. It provides an
+ effective way to make certain API file systems unavailable to
+ services (and thus minimizing attack surface). A new command
+ "systemd-analyze filesystems" has been added that lists all known
+ file system types (and how they are grouped together under useful
+ group handles).
+
+ * Services now support a new setting RestrictNetworkInterfaces= for
+ restricting access to specific network interfaces.
+
+ * Service unit files gained new settings StartupAllowedCPUs= and
+ StartupAllowedMemoryNodes=. These are similar to their counterparts
+ without the "Startup" prefix and apply during the boot process
+ only. This is useful to improve boot-time behavior of the system and
+ assign resources differently during boot than during regular
+ runtime. This is similar to the preexisting StartupCPUWeight=
+ vs. CPUWeight.
+
+ * Related to this: the various StartupXYZ= settings
+ (i.e. StartupCPUWeight=, StartupAllowedCPUs=, …) are now also applied
+ during shutdown. The settings not prefixed with "Startup" hence apply
+ during regular runtime, and those that are prefixed like that apply
+ during boot and shutdown.
+
+ * A new per-unit set of conditions/asserts
+ [Condition|Assert][Memory|CPU|IO]Pressure= have been added to make a
+ unit skip/fail activation if the system's (or a slice's) memory/cpu/io
+ pressure is above the configured threshold, using the kernel PSI
+ feature. For more details see systemd.unit(5) and
+ https://docs.kernel.org/accounting/psi.html
+
+ * The combination of ProcSubset=pid and ProtectKernelTunables=yes and/or
+ ProtectKernelLogs=yes can now be used.
+
+ * The default maximum numbers of inodes have been raised from 64k to 1M
+ for /dev/, and from 400k to 1M for /tmp/.
+
+ * The per-user service manager learnt support for communicating with
+ systemd-oomd to acquire OOM kill information.
+
+ * A new service setting ExecSearchPath= has been added that allows
+ changing the search path for executables for services. It affects
+ where we look for the binaries specified in ExecStart= and similar,
+ and the specified directories are also added the $PATH environment
+ variable passed to invoked processes.
+
+ * A new setting RuntimeRandomizedExtraSec= has been added for service
+ and scope units that allows extending the runtime time-out as
+ configured by RuntimeMaxSec= with a randomized amount.
+
+ * The syntax of the service unit settings RuntimeDirectory=,
+ StateDirectory=, CacheDirectory=, LogsDirectory= has been extended:
+ if the specified value is now suffixed with a colon, followed by
+ another filename, the latter will be created as symbolic link to the
+ specified directory. This allows creating these service directories
+ together with alias symlinks to make them available under multiple
+ names.
+
+ * Service unit files gained two new settings TTYRows=/TTYColumns= for
+ configuring rows/columns of the TTY device passed to
+ stdin/stdout/stderr of the service. This is useful to propagate TTY
+ dimensions to a virtual machine.
+
+ * A new service unit file setting ExitType= has been added that
+ specifies when to assume a service has exited. By default systemd
+ only watches the main process of a service. By setting
+ ExitType=cgroup it can be told to wait for the last process in a
+ cgroup instead.
+
+ * Automount unit files gained a new setting ExtraOptions= that can be
+ used to configure additional mount options to pass to the kernel when
+ mounting the autofs instance.
+
+ * "Urlification" (generation of ESC sequences that generate clickable
+ hyperlinks in modern terminals) may now be turned off altogether
+ during build-time.
+
+ * Path units gained new TriggerLimitBurst= and TriggerLimitIntervalSec=
+ settings that default to 200 and 2 s respectively. The ratelimit
+ ensures that a path unit cannot cause PID1 to busy-loop when it is
+ trying to trigger a service that is skipped because of a Condition*=
+ not being satisfied. This matches the configuration and behaviour of
+ socket units.
+
+ * The TPM2/FIDO2/PKCS11 support in systemd-cryptsetup is now also built
+ as a plug-in for cryptsetup. This means the plain cryptsetup command
+ may now be used to unlock volumes set up this way.
+
+ * The TPM2 logic in cryptsetup will now automatically detect systems
+ where the TPM2 chip advertises SHA256 PCR banks but the firmware only
+ updates the SHA1 banks. In such a case PCR policies will be
+ automatically bound to the latter, not the former. This makes the PCR
+ policies reliable, but of course do not provide the same level of
+ trust as SHA256 banks.
+
+ * The TPM2 logic in systemd-cryptsetup/systemd-cryptsetup now supports
+ RSA primary keys in addition to ECC, improving compatibility with
+ TPM2 chips that do not support ECC. RSA keys are much slower to use
+ than ECC, and hence are only used if ECC is not available.
+
+ * /etc/crypttab gained support for a new token-timeout= setting for
+ encrypted volumes that allows configuration of the maximum time to
+ wait for PKCS#11/FIDO2 tokens to be plugged in. If the time elapses
+ the logic will query the user for a regular passphrase/recovery key
+ instead.
+
+ * Support for activating dm-integrity volumes at boot via a new file
+ /etc/integritytab and the tool systemd-integritysetup have been
+ added. This is similar to /etc/crypttab and /etc/veritytab, but deals
+ with dm-integrity instead of dm-crypt/dm-verity.
+
+ * The systemd-veritysetup-generator now understands a new usrhash=
+ kernel command line option for specifying the Verity root hash for
+ the partition backing the /usr/ file system. A matching set of
+ systemd.verity_usr_* kernel command line options has been added as
+ well. These all work similar to the corresponding options for the
+ root partition.
+
+ * The sd-device API gained a new API call sd_device_get_diskseq() to
+ return the DISKSEQ property of a device structure. The "disk
+ sequence" concept is a new feature recently introduced to the Linux
+ kernel that allows detecting reuse cycles of block devices, i.e. can
+ be used to recognize when loopback block devices are reused for a
+ different purpose or CD-ROM drives get their media changed.
+
+ * A new unit systemd-boot-update.service has been added. If enabled
+ (the default) and the sd-boot loader is detected to be installed, it
+ is automatically updated to the newest version when out of date. This
+ is useful to ensure the boot loader remains up-to-date, and updates
+ automatically propagate from the OS tree in /usr/.
+
+ * sd-boot will now build with SBAT by default in order to facilitate
+ working with recent versions of Shim that require it to be present.
+
+ * sd-boot can now parse Microsoft Windows' Boot Configuration Data.
+ This is used to robustly generate boot entry titles for Windows.
+
+ * A new generic target unit factory-reset.target has been added. It is
+ hooked into systemd-logind similar in fashion to
+ reboot/poweroff/suspend/hibernate, and is supposed to be used to
+ initiate a factory reset operation. What precisely this operation
+ entails is up for the implementer to decide, the primary goal of the
+ new unit is provide a framework where to plug in the implementation
+ and how to trigger it.
+
+ * A new meson build-time option 'clock-valid-range-usec-max' has been
+ added which takes a time in µs and defaults to 15 years. If the RTC
+ time is noticed to be more than the specified time ahead of the
+ built-in epoch of systemd (which by default is the release timestamp
+ of systemd) it is assumed that the RTC is not working correctly, and
+ the RTC is reset to the epoch. (It already is reset to the epoch when
+ noticed to be before it.) This should increase the chance that time
+ doesn't accidentally jump too far ahead due to faulty hardware or
+ batteries.
+
+ * A new setting SaveIntervalSec= has been added to systemd-timesyncd,
+ which may be used to automatically save the current system time to
+ disk in regular intervals. This is useful to maintain a roughly
+ monotonic clock even without RTC hardware and with some robustness
+ against abnormal system shutdown.
+
+ * systemd-analyze verify gained support for a pair of new --image= +
+ --root= switches for verifying units below a specific root
+ directory/image instead of on the host.
+
+ * systemd-analyze verify gained support for verifying unit files under
+ an explicitly specified unit name, independently of what the filename
+ actually is.
+
+ * systemd-analyze verify gained a new switch --recursive-errors= which
+ controls whether to only fail on errors found in the specified units
+ or recursively any dependent units.
+
+ * systemd-analyze security now supports a new --offline mode for
+ analyzing unit files stored on disk instead of loaded units. It may
+ be combined with --root=/--image to analyze unit files under a root
+ directory or disk image. It also learnt a new --threshold= parameter
+ for specifying an exposure level threshold: if the exposure level
+ exceeds the specified value the call will fail. It also gained a new
+ --security-policy= switch for configuring security policies to
+ enforce on the units. A policy is a JSON file that lists which tests
+ shall be weighted how much to determine the overall exposure
+ level. Altogether these new features are useful for fully automatic
+ analysis and enforcement of security policies on unit files.
+
+ * systemd-analyze security gain a new --json= switch for JSON output.
+
+ * systemd-analyze learnt a new --quiet switch for reducing
+ non-essential output. It's honored by the "dot", "syscall-filter",
+ "filesystems" commands.
+
+ * systemd-analyze security gained a --profile= option that can be used
+ to take into account a portable profile when analyzing portable
+ services, since a lot of the security-related settings are enabled
+ through them.
+
+ * systemd-analyze learnt a new inspect-elf verb that parses ELF core
+ files, binaries and executables and prints metadata information,
+ including the build-id and other info described on:
+ https://systemd.io/COREDUMP_PACKAGE_METADATA/
+
+ * .network files gained a new UplinkInterface= in the [IPv6SendRA]
+ section, for automatically propagating DNS settings from other
+ interfaces.
+
+ * The static lease DHCP server logic in systemd-networkd may now serve
+ IP addresses outside of the configured IP pool range for the server.
+
+ * CAN support in systemd-networkd gained four new settings Loopback=,
+ OneShot=, PresumeAck=, ClassicDataLengthCode= for tweaking CAN
+ control modes. It gained a number of further settings for tweaking
+ CAN timing quanta.
+
+ * The [CAN] section in .network file gained new TimeQuantaNSec=,
+ PropagationSegment=, PhaseBufferSegment1=, PhaseBufferSegment2=,
+ SyncJumpWidth=, DataTimeQuantaNSec=, DataPropagationSegment=,
+ DataPhaseBufferSegment1=, DataPhaseBufferSegment2=, and
+ DataSyncJumpWidth= settings to control bit-timing processed by the
+ CAN interface.
+
+ * DHCPv4 client support in systemd-networkd learnt a new Label= option
+ for configuring the address label to apply to configure IPv4
+ addresses.
+
+ * The [IPv6AcceptRA] section of .network files gained support for a new
+ UseMTU= setting that may be used to control whether to apply the
+ announced MTU settings to the local interface.
+
+ * The [DHCPv4] section in .network file gained a new Use6RD= boolean
+ setting to control whether the DHCPv4 client request and process the
+ DHCP 6RD option.
+
+ * The [DHCPv6PrefixDelegation] section in .network file is renamed to
+ [DHCPPrefixDelegation], as now the prefix delegation is also supported
+ with DHCPv4 protocol by enabling the Use6RD= setting.
+
+ * The [DHCPPrefixDelegation] section in .network file gained a new
+ setting UplinkInterface= to specify the upstream interface.
+
+ * The [DHCPv6] section in .network file gained a new setting
+ UseDelegatedPrefix= to control whether the delegated prefixes will be
+ propagated to the downstream interfaces.
+
+ * The [IPv6AcceptRA] section of .network files now understands two new
+ settings UseGateway=/UseRoutePrefix= for explicitly configuring
+ whether to use the relevant fields from the IPv6 Router Advertisement
+ records.
+
+ * The ForceDHCPv6PDOtherInformation= setting in the [DHCPv6] section
+ has been removed. Please use the WithoutRA= and UseDelegatedPrefix=
+ settings in the [DHCPv6] section and the DHCPv6Client= setting in the
+ [IPv6AcceptRA] section to control when the DHCPv6 client is started
+ and how the delegated prefixes are handled by the DHCPv6 client.
+
+ * The IPv6Token= section in the [Network] section is deprecated, and
+ the [IPv6AcceptRA] section gained the Token= setting for its
+ replacement. The [IPv6Prefix] section also gained the Token= setting.
+ The Token= setting gained 'eui64' mode to explicitly configure an
+ address with the EUI64 algorithm based on the interface MAC address.
+ The 'prefixstable' mode can now optionally take a secret key. The
+ Token= setting in the [DHCPPrefixDelegation] section now supports all
+ algorithms supported by the same settings in the other sections.
+
+ * The [RoutingPolicyRule] section of .network file gained a new
+ SuppressInterfaceGroup= setting.
+
+ * The IgnoreCarrierLoss= setting in the [Network] section of .network
+ files now allows a duration to be specified, controlling how long to
+ wait before reacting to carrier loss.
+
+ * The [DHCPServer] section of .network file gained a new Router=
+ setting to specify the router address.
+
+ * The [CAKE] section of .network files gained various new settings
+ AutoRateIngress=, CompensationMode=, FlowIsolationMode=, NAT=,
+ MPUBytes=, PriorityQueueingPreset=, FirewallMark=, Wash=, SplitGSO=,
+ and UseRawPacketSize= for configuring CAKE.
+
+ * systemd-networkd now ships with new default .network files:
+ 80-container-vb.network which matches host-side network bridge device
+ created by systemd-nspawn's --network-bridge or --network-zone
+ switch, and 80-6rd-tunnel.network which matches automatically created
+ sit tunnel with 6rd prefix when the DHCP 6RD option is received.
+
+ * systemd-networkd's handling of Endpoint= resolution for WireGuard
+ interfaces has been improved.
+
+ * systemd-networkd will now automatically configure routes to addresses
+ specified in AllowedIPs=. This feature can be controlled via
+ RouteTable= and RouteMetric= settings in [WireGuard] or
+ [WireGuardPeer] sections.
+
+ * systemd-networkd will now once again automatically generate persistent
+ MAC addresses for batadv and bridge interfaces. Users can disable this
+ by using MACAddress=none in .netdev files.
+
+ * systemd-networkd and systemd-udevd now support IP over InfiniBand
+ interfaces. The Kind= setting in .netdev file accepts "ipoib". And
+ systemd.netdev files gained the [IPoIB] section.
+
+ * systemd-networkd and systemd-udevd now support net.ifname-policy=
+ option on the kernel command-line. This is implemented through the
+ systemd-network-generator service that automatically generates
+ appropriate .link, .network, and .netdev files.
+
+ * The various systemd-udevd "ethtool" buffer settings now understand
+ the special value "max" to configure the buffers to the maximum the
+ hardware supports.
+
+ * systemd-udevd's .link files may now configure a large variety of
+ NIC coalescing settings, plus more hardware offload settings.
+
+ * .link files gained a new WakeOnLanPassword= setting in the [Link]
+ section that allows to specify a WoL "SecureOn" password on hardware
+ that supports this.
+
+ * systemd-nspawn's --setenv= switch now supports an additional syntax:
+ if only a variable name is specified (i.e. without being suffixed by
+ a '=' character and a value) the current value of the environment
+ variable is propagated to the container. e.g. --setenv=FOO will
+ lookup the current value of $FOO in the environment, and pass it down
+ to the container. Similar behavior has been added to homectl's,
+ machinectl's and systemd-run's --setenv= switch.
+
+ * systemd-nspawn gained a new switch --suppress-sync= which may be used
+ to optionally suppress the effect of the sync()/fsync()/fdatasync()
+ system calls for the container payload. This is useful for build
+ system environments where safety against abnormal system shutdown is
+ not essential as all build artifacts can be regenerated any time, but
+ the performance win is beneficial.
+
+ * systemd-nspawn will now raise the RLIMIT_NOFILE hard limit to the
+ same value that PID 1 uses for most forked off processes.
+
+ * systemd-nspawn's --bind=/--bind-ro= switches now optionally take
+ uidmap/nouidmap options as last parameter. If "uidmap" is used the
+ bind mounts are created with UID mapping taking place that ensures
+ the host's file ownerships are mapped 1:1 to container file
+ ownerships, even if user namespacing is used. This way
+ files/directories bound into containers will no longer show up as
+ owned by the nobody user as they typically did if no special care was
+ taken to shift them manually.
+
+ * When discovering Windows installations sd-boot will now attempt to
+ show the Windows version.
+
+ * The color scheme to use in sd-boot may now be configured at
+ build-time.
+
+ * sd-boot gained the ability to change screen resolution during
+ boot-time, by hitting the "r" key. This will cycle through available
+ resolutions and save the last selection.
+
+ * sd-boot learnt a new hotkey "f". When pressed the system will enter
+ firmware setup. This is useful in environments where it is difficult
+ to hit the right keys early enough to enter the firmware, and works
+ on any firmware regardless which key it natively uses.
+
+ * sd-boot gained support for automatically booting into the menu item
+ selected on the last boot (using the "@saved" identifier for menu
+ items).
+
+ * sd-boot gained support for automatically loading all EFI drivers
+ placed in the /EFI/systemd/drivers/ subdirectory of the EFI System
+ Partition (ESP). These drivers are loaded before the menu entries are
+ loaded. This is useful e.g. to load additional file system drivers
+ for the XBOOTLDR partition.
+
+ * systemd-boot will now paint the input cursor on its own instead of
+ relying on the firmware to do so, increasing compatibility with broken
+ firmware that doesn't make the cursor reasonably visible.
+
+ * sd-boot now embeds a .osrel PE section like we expect from Boot
+ Loader Specification Type #2 Unified Kernels. This means sd-boot
+ itself may be used in place of a Type #2 Unified Kernel. This is
+ useful for debugging purposes as it allows chain-loading one a
+ (development) sd-boot instance from another.
+
+ * sd-boot now supports a new "devicetree" field in Boot Loader
+ Specification Type #1 entries: if configured the specified device
+ tree file is installed before the kernel is invoked. This is useful
+ for installing/applying new devicetree files without updating the
+ kernel image.
+
+ * Similarly, sd-stub now can read devicetree data from a PE section
+ ".dtb" and apply it before invoking the kernel.
+
+ * sd-stub (the EFI stub that can be glued in front of a Linux kernel)
+ gained the ability to pick up credentials and sysext files, wrap them
+ in a cpio archive, and pass as an additional initrd to the invoked
+ Linux kernel, in effect placing those files in the /.extra/ directory
+ of the initrd environment. This is useful to implement trusted initrd
+ environments which are fully authenticated but still can be extended
+ (via sysexts) and parameterized (via encrypted/authenticated
+ credentials, see above).
+
+ Credentials can be located next to the kernel image file (credentials
+ specific to a single boot entry), or in one of the shared directories
+ (credentials applicable to multiple boot entries).
+
+ * sd-stub now comes with a full man page, that explains its feature set
+ and how to combine a kernel image, an initrd and the stub to build a
+ complete EFI unified kernel image, implementing Boot Loader
+ Specification Type #2.
+
+ * sd-stub may now provide the initrd to the executed kernel via the
+ LINUX_EFI_INITRD_MEDIA_GUID EFI protocol, adding compatibility for
+ non-x86 architectures.
+
+ * bootctl learnt new set-timeout and set-timeout-oneshot commands that
+ may be used to set the boot menu time-out of the boot loader (for all
+ or just the subsequent boot).
+
+ * bootctl and kernel-install will now read variables
+ KERNEL_INSTALL_LAYOUT= from /etc/machine-info and layout= from
+ /etc/kernel/install.conf. When set, it specifies the layout to use
+ for installation directories on the boot partition, so that tools
+ don't need to guess it based on the already-existing directories. The
+ only value that is defined natively is "bls", corresponding to the
+ layout specified in
+ https://systemd.io/BOOT_LOADER_SPECIFICATION/. Plugins for
+ kernel-install that implement a different layout can declare other
+ values for this variable.
+
+ 'bootctl install' will now write KERNEL_INSTALL_LAYOUT=bls, on the
+ assumption that if the user installed sd-boot to the ESP, they intend
+ to use the entry layout understood by sd-boot. It'll also write
+ KERNEL_INSTALL_MACHINE_ID= if it creates any directories using the ID
+ (and it wasn't specified in the config file yet). Similarly,
+ kernel-install will now write KERNEL_INSTALL_MACHINE_ID= (if it
+ wasn't specified in the config file yet). Effectively, those changes
+ mean that the machine-id used for boot loader entry installation is
+ "frozen" upon first use and becomes independent of the actual
+ machine-id.
+
+ Configuring KERNEL_INSTALL_MACHINE_ID fixes the following problem:
+ images created for distribution ("golden images") are built with no
+ machine-id, so that a unique machine-id can be created on the first
+ boot. But those images may contain boot loader entries with the
+ machine-id used during build included in paths. Using a "frozen"
+ value allows unambiguously identifying entries that match the
+ specific installation, while still permitting parallel installations
+ without conflict.
+
+ Configuring KERNEL_INSTALL_LAYOUT obviates the need for
+ kernel-install to guess the installation layout. This fixes the
+ problem where a (possibly empty) directory in the boot partition is
+ created from a different layout causing kernel-install plugins to
+ assume the wrong layout. A particular example of how this may happen
+ is the grub2 package in Fedora which includes directories under /boot
+ directly in its file list. Various other packages pull in grub2 as a
+ dependency, so it may be installed even if unused, breaking
+ installations that use the bls layout.
+
+ * bootctl and systemd-bless-boot can now be linked statically.
+
+ * systemd-sysext now optionally doesn't insist on extension-release.d/
+ files being placed in the image under the image's file name. If the
+ file system xattr user.extension-release.strict is set on the
+ extension release file, it is accepted regardless of its name. This
+ relaxes security restrictions a bit, as system extension may be
+ attached under a wrong name this way.
+
+ * udevadm's test-builtin command learnt a new --action= switch for
+ testing the built-in with the specified action (in place of the
+ default 'add').
+
+ * udevadm info gained new switches --property=/--value for showing only
+ specific udev properties/values instead of all.
+
+ * A new hwdb database has been added that contains matches for various
+ types of signal analyzers (protocol analyzers, logic analyzers,
+ oscilloscopes, multimeters, bench power supplies, etc.) that should
+ be accessible to regular users.
+
+ * A new hwdb database entry has been added that carries information
+ about types of cameras (regular or infrared), and in which direction
+ they point (front or back).
+
+ * A new rule to allow console users access to rfkill by default has been
+ added to hwdb.
+
+ * Device nodes for the Software Guard eXtension enclaves (sgx_vepc) are
+ now also owned by the system group "sgx".
+
+ * A new build-time meson option "extra-net-naming-schemes=" has been
+ added to define additional naming schemes for udev's network
+ interface naming logic. This is useful for enterprise distributions
+ and similar which want to pin the schemes of certain distribution
+ releases under a specific name and previously had to patch the
+ sources to introduce new named schemes.
+
+ * The predictable naming logic for network interfaces has been extended
+ to generate stable names from Xen netfront device information.
+
+ * hostnamed's chassis property can now be sourced from chassis-type
+ field encoded in devicetree (in addition to the existing DMI
+ support).
+
+ * systemd-cgls now optionally displays cgroup IDs and extended
+ attributes for each cgroup. (Controllable via the new --xattr= +
+ --cgroup-id= switches.)
+
+ * coredumpctl gained a new --all switch for operating on all
+ Journal files instead of just the local ones.
+
+ * systemd-coredump will now use libdw/libelf via dlopen() rather than
+ directly linking, allowing users to easily opt-out of backtrace/metadata
+ analysis of core files, and reduce image sizes when this is not needed.
+
+ * systemd-coredump will now analyze core files with libdw/libelf in a
+ forked, sandboxed process.
+
+ * systemd-homed will now try to unmount an activate home area in
+ regular intervals once the user logged out fully. Previously this was
+ attempted exactly once but if the home directory was busy for some
+ reason it was not tried again.
+
+ * systemd-homed's LUKS2 home area backend will now create a BSD file
+ system lock on the image file while the home area is active
+ (i.e. mounted). If a home area is found to be locked, logins are
+ politely refused. This should improve behavior when using home areas
+ images that are accessible via the network from multiple clients, and
+ reduce the chance of accidental file system corruption in that case.
+
+ * Optionally, systemd-homed will now drop the kernel buffer cache once
+ a user has fully logged out, configurable via the new --drop-caches=
+ homectl switch.
+
+ * systemd-homed now makes use of UID mapped mounts for the home areas.
+ If the kernel and used file system support it, files are now
+ internally owned by the "nobody" user (i.e. the user typically used
+ for indicating "this ownership is not mapped"), and dynamically
+ mapped to the UID used locally on the system via the UID mapping
+ mount logic of recent kernels. This makes migrating home areas
+ between different systems cheaper because recursively chown()ing file
+ system trees is no longer necessary.
+
+ * systemd-homed's CIFS backend now optionally supports CIFS service
+ names with a directory suffix, in order to place home directories in
+ a subdirectory of a CIFS share, instead of the top-level directory.
+
+ * systemd-homed's CIFS backend gained support for specifying additional
+ mount options in the JSON user record (cifsExtraMountOptions field,
+ and --cifs-extra-mount-options= homectl switch). This is for example
+ useful for configuring mount options such as "noserverino" that some
+ SMB3 services require (use that to run a homed home directory from a
+ FritzBox SMB3 share this way).
+
+ * systemd-homed will now default to btrfs' zstd compression for home
+ areas. This is inspired by Fedora's recent decision to switch to zstd
+ by default.
+
+ * Additional mount options to use when mounting the file system of
+ LUKS2 volumes in systemd-homed has been added. Via the
+ $SYSTEMD_HOME_MOUNT_OPTIONS_BTRFS, $SYSTEMD_HOME_MOUNT_OPTIONS_EXT4,
+ $SYSTEMD_HOME_MOUNT_OPTIONS_XFS environment variables to
+ systemd-homed or via the luksExtraMountOptions user record JSON
+ property. (Exposed via homectl --luks-extra-mount-options)
+
+ * homectl's resize command now takes the special size specifications
+ "min" and "max" to shrink/grow the home area to the minimum/maximum
+ size possible, taking disk usage/space constraints and file system
+ limitations into account. Resizing is now generally graceful: the
+ logic will try to get as close to the specified size as possible, but
+ not consider it a failure if the request couldn't be fulfilled
+ precisely.
+
+ * systemd-homed gained the ability to automatically shrink home areas
+ on logout to their minimal size and grow them again on next
+ login. This ensures that while inactive, a home area only takes up
+ the minimal space necessary, but once activated, it provides
+ sufficient space for the user's needs. This behavior is only
+ supported if btrfs is used as file system inside the home area
+ (because only for btrfs online growing/shrinking is implemented in
+ the kernel). This behavior is now enabled by default, but may be
+ controlled via the new --auto-resize-mode= setting of homectl.
+
+ * systemd-homed gained support for automatically re-balancing free disk
+ space among active home areas, in case the LUKS2 backends are used,
+ and no explicit disk size was requested. This way disk space is
+ automatically managed and home areas resized in regular intervals and
+ manual resizing when disk space becomes scarce should not be
+ necessary anymore. This behavior is only supported if btrfs is used
+ within the home areas (as only then online shrinking and growing is
+ supported), and may be configured via the new rebalanceWeight JSON
+ user record field (as exposed via the new --rebalance-weight= homectl
+ setting). Re-balancing is mostly automatic, but can also be requested
+ explicitly via "homectl rebalance", which is synchronous, and thus
+ may be used to wait until the rebalance run is complete.
+
+ * userdbctl gained a --json= switch for configured the JSON formatting
+ to use when outputting user or group records.
+
+ * userdbctl gained a new --multiplexer= switch for explicitly
+ configuring whether to use the systemd-userdbd server side user
+ record resolution logic.
+
+ * userdbctl's ssh-authorized-keys command learnt a new --chain switch,
+ for chaining up another command to execute after completing the
+ look-up. Since the OpenSSH's AuthorizedKeysCommand only allows
+ configuration of a single command to invoke, this maybe used to
+ invoke multiple: first userdbctl's own implementation, and then any
+ other also configured in the command line.
+
+ * The sd-event API gained a new function sd_event_add_inotify_fd() that
+ is similar to sd_event_add_inotify() but accepts a file descriptor
+ instead of a path in the file system for referencing the inode to
+ watch.
+
+ * The sd-event API gained a new function
+ sd_event_source_set_ratelimit_expire_callback() that may be used to
+ define a callback function that is called whenever an event source
+ leaves the rate limiting phase.
+
+ * New documentation has been added explaining which steps are necessary
+ to port systemd to a new architecture:
+
+ https://systemd.io/PORTING_TO_NEW_ARCHITECTURES
+
+ * The x-systemd.makefs option in /etc/fstab now explicitly supports
+ ext2, ext3, and f2fs file systems.
+
+ * Mount units and units generated from /etc/fstab entries with 'noauto'
+ are now ordered the same as other units. Effectively, they will be
+ started earlier (if something actually pulled them in) and stopped
+ later, similarly to normal mount units that are part of
+ fs-local.target. This change should be invisible to users, but
+ should prevent those units from being stopped too early during
+ shutdown.
+
+ * The systemd-getty-generator now honors a new kernel command line
+ argument systemd.getty_auto= and a new environment variable
+ $SYSTEMD_GETTY_AUTO that allows turning it off at boot. This is for
+ example useful to turn off gettys inside of containers or similar
+ environments.
+
+ * systemd-resolved now listens on a second DNS stub address: 127.0.0.54
+ (in addition to 127.0.0.53, as before). If DNS requests are sent to
+ this address they are propagated in "bypass" mode only, i.e. are
+ almost not processed locally, but mostly forwarded as-is to the
+ current upstream DNS servers. This provides a stable DNS server
+ address that proxies all requests dynamically to the right upstream
+ DNS servers even if these dynamically change. This stub does not do
+ mDNS/LLMNR resolution. However, it will translate look-ups to
+ DNS-over-TLS if necessary. This new stub is particularly useful in
+ container/VM environments, or for tethering setups: use DNAT to
+ redirect traffic to any IP address to this stub.
+
+ * systemd-importd now honors new environment variables
+ $SYSTEMD_IMPORT_BTRFS_SUBVOL, $SYSTEMD_IMPORT_BTRFS_QUOTA,
+ $SYSTEMD_IMPORT_SYNC, which may be used disable btrfs subvolume
+ generation, btrfs quota setup and disk synchronization.
+
+ * systemd-importd and systemd-resolved can now be optionally built with
+ OpenSSL instead of libgcrypt.
+
+ * systemd-repart no longer requires OpenSSL.
+
+ * systemd-sysusers will no longer create the redundant 'nobody' group
+ by default, as the 'nobody' user is already created with an
+ appropriate primary group.
+
+ * If a unit uses RuntimeMaxSec, systemctl show will now display it.
+
+ * systemctl show-environment gained support for --output=json.
+
+ * pam_systemd will now first try to use the X11 abstract socket, and
+ fallback to the socket file in /tmp/.X11-unix/ only if that does not
+ work.
+
+ * systemd-journald will no longer go back to volatile storage
+ regardless of configuration when its unit is restarted.
+
+ * Initial support for the LoongArch architecture has been added (system
+ call lists, GPT partition table UUIDs, etc).
+
+ * systemd-journald's own logging messages are now also logged to the
+ journal itself when systemd-journald logs to /dev/kmsg.
+
+ * systemd-journald now re-enables COW for archived journal files on
+ filesystems that support COW. One benefit of this change is that
+ archived journal files will now get compressed on btrfs filesystems
+ that have compression enabled.
+
+ * systemd-journald now deduplicates fields in a single log message
+ before adding it to the journal. In archived journal files, it will
+ also punch holes for unused parts and truncate the file as
+ appropriate, leading to reductions in disk usage.
+
+ * journalctl --verify was extended with more informative error
+ messages.
+
+ * More of sd-journal's functions are now resistant against journal file
+ corruption.
+
+ * The shutdown command learnt a new option --show, to display the
+ scheduled shutdown.
+
+ * A LICENSES/ directory is now included in the git tree. It contains a
+ README.md file that explains the licenses used by source files in
+ this repository. It also contains the text of all applicable
+ licenses as they appear on spdx.org.
+
+ Contributions from: Aakash Singh, acsfer, Adolfo Jayme Barrientos,
+ Adrian Vovk, Albert Brox, Alberto Mardegan, Alexander Kanavin,
+ alexlzhu, Alfonso Sánchez-Beato, Alvin Šipraga, Alyssa Ross,
+ Amir Omidi, Anatol Pomozov, Andika Triwidada, Andreas Rammhold,
+ Andreas Valder, Andrej Lajovic, Andrew Soutar, Andrew Stone, Andy Chi,
+ Anita Zhang, Anssi Hannula, Antonio Alvarez Feijoo,
+ Antony Deepak Thomas, Arnaud Ferraris, Arvid E. Picciani,
+ Bastien Nocera, Benjamin Berg, Benjamin Herrenschmidt, Ben Stockett,
+ Bogdan Seniuc, Boqun Feng, Carl Lei, chlorophyll-zz, Chris Packham,
+ Christian Brauner, Christian Göttsche, Christian Wehrli,
+ Christoph Anton Mitterer, Cristian Rodríguez, Daan De Meyer,
+ Daniel Maixner, Dann Frazier, Dan Streetman, Davide Cavalca,
+ David Seifert, David Tardon, dependabot[bot], Dimitri John Ledkov,
+ Dimitri Papadopoulos, Dimitry Ishenko, Dmitry Khlebnikov,
+ Dominique Martinet, duament, Egor, Egor Ignatov, Emil Renner Berthing,
+ Emily Gonyer, Ettore Atalan, Evgeny Vereshchagin, Florian Klink,
+ Franck Bui, Frantisek Sumsal, Geass-LL, Gibeom Gwon, GnunuX,
+ Gogo Gogsi, gregzuro, Greg Zuro, Gustavo Costa, Hans de Goede,
+ Hela Basa, Henri Chain, hikigaya58, Hugo Carvalho,
+ Hugo Osvaldo Barrera, Iago Lopez Galeiras, Iago López Galeiras,
+ I-dont-need-name, igo95862, Jack Dähn, James Hilliard, Jan Janssen,
+ Jan Kuparinen, Jan Macku, Jan Palus, Jarkko Sakkinen, Jayce Fayne,
+ jiangchuangang, jlempen, John Lindgren, Jonas Dreßler, Jonas Jelten,
+ Jonas Witschel, Joris Hartog, José Expósito, Julia Kartseva,
+ Kai-Heng Feng, Kai Wohlfahrt, Kay Siver Bø, KennthStailey,
+ Kevin Kuehler, Kevin Orr, Khem Raj, Kristian Klausen, Kyle Laker,
+ lainahai, LaserEyess, Lennart Poettering, Lia Lenckowski, longpanda,
+ Luca Boccassi, Luca BRUNO, Ludwig Nussel, Lukas Senionis,
+ Maanya Goenka, Maciek Borzecki, Marcel Menzel, Marco Scardovi,
+ Marcus Harrison, Mark Boudreau, Matthijs van Duin, Mauricio Vásquez,
+ Maxime de Roucy, Max Resch, MertsA, Michael Biebl, Michael Catanzaro,
+ Michal Koutný, Michal Sekletár, Miika Karanki, Mike Gilbert,
+ Milo Turner, ml, monosans, Nacho Barrientos, nassir90, Nishal Kulkarni,
+ nl6720, Ondrej Kozina, Paulo Neves, Pavel Březina, pedro martelletto,
+ Peter Hutterer, Peter Morrow, Piotr Drąg, Rasmus Villemoes, ratijas,
+ Raul Tambre, rene, Riccardo Schirone, Robert-L-Turner, Robert Scheck,
+ Ross Jennings, saikat0511, Scott Lamb, Scott Worley,
+ Sergei Trofimovich, Sho Iizuka, Slava Bacherikov, Slimane Selyan Amiri,
+ StefanBruens, Steven Siloti, svonohr, Taiki Sugawara, Takashi Sakamoto,
+ Takuro Onoue, Thomas Blume, Thomas Haller, Thomas Mühlbacher,
+ Tianlu Shao, Toke Høiland-Jørgensen, Tom Yan, Tony Asleson,
+ Topi Miettinen, Ulrich Ölmann, Urs Ritzmann, Vincent Bernat,
+ Vito Caputo, Vladimir Panteleev, WANG Xuerui, Wind/owZ, Wu Xiaotian,
+ xdavidwu, Xiaotian Wu, xujing, yangmingtai, Yao Wei, Yao Wei (魏銘廷),
+ Yegor Alexeyev, Yu Watanabe, Zbigniew Jędrzejewski-Szmek,
+ Дамјан Георгиевски, наб
+
+ — Warsaw, 2021-12-23
+
+CHANGES WITH 249:
+
+ * When operating on disk images via the --image= switch of various
+ tools (such as systemd-nspawn or systemd-dissect), or when udev finds
+ no 'root=' parameter on the kernel command line, and multiple
+ suitable root or /usr/ partitions exist in the image, then a simple
+ comparison inspired by strverscmp() is done on the GPT partition
+ label, and the newest partition is picked. This permits a simple and
+ generic whole-file-system A/B update logic where new operating system
+ versions are dropped into partitions whose label is then updated with
+ a matching version identifier.
+
+ * systemd-sysusers now supports querying the passwords to set for the
+ users it creates via the "credentials" logic introduced in v247: the
+ passwd.hashed-password.<user> and passwd.plaintext-password.<user>
+ credentials are consulted for the password to use (either in UNIX
+ hashed form, or literally). By default these credentials are inherited
+ down from PID1 (which in turn imports it from a container manager if
+ there is one). This permits easy configuration of user passwords
+ during first boot. Example:
+
+ # systemd-nspawn -i foo.raw --volatile=yes --set-credential=passwd.plaintext-password.root:foo
+
+ Note that systemd-sysusers operates in purely additive mode: it
+ executes no operation if the declared users already exist, and hence
+ doesn't set any passwords as effect of the command line above if the
+ specified root user exists already in the image. (Note that
+ --volatile=yes ensures it doesn't, though.)
+
+ * systemd-firstboot now also supports querying various system
+ parameters via the credential subsystems. Thus, as above this may be
+ used to initialize important system parameters on first boot of
+ previously unprovisioned images (i.e. images with a mostly empty
+ /etc/).
+
+ * PID 1 may now show both the unit name and the unit description
+ strings in its status output during boot. This may be configured with
+ StatusUnitFormat=combined in system.conf or
+ systemd.status-unit-format=combined on the kernel command line.
+
+ * The systemd-machine-id-setup tool now supports a --image= switch for
+ provisioning a machine ID file into an OS disk image, similar to how
+ --root= operates on an OS file tree. This matches the existing switch
+ of the same name for systemd-tmpfiles, systemd-firstboot, and
+ systemd-sysusers tools.
+
+ * Similarly, systemd-repart gained support for the --image= switch too.
+ In combination with the existing --size= option, this makes the tool
+ particularly useful for easily growing disk images in a single
+ invocation, following the declarative rules included in the image
+ itself.
+
+ * systemd-repart's partition configuration files gained support for a
+ new switch MakeDirectories= which may be used to create arbitrary
+ directories inside file systems that are created, before registering
+ them in the partition table. This is useful in particular for root
+ partitions to create mount point directories for other partitions
+ included in the image. For example, a disk image that contains a
+ root, /home/, and /var/ partitions, may set MakeDirectories=yes to
+ create /home/ and /var/ as empty directories in the root file system
+ on its creation, so that the resulting image can be mounted
+ immediately, even in read-only mode.
+
+ * systemd-repart's CopyBlocks= setting gained support for the special
+ value "auto". If used, a suitable matching partition on the booted OS
+ is found as source to copy blocks from. This is useful when
+ implementing replicating installers, that are booted from one medium
+ and then stream their own root partition onto the target medium.
+
+ * systemd-repart's partition configuration files gained support for a
+ Flags=, a ReadOnly= and a NoAuto= setting, allowing control of these
+ GPT partition flags for the created partitions: this is useful for
+ marking newly created partitions as read-only, or as not being
+ subject for automatic mounting from creation on.
+
+ * The /etc/os-release file has been extended with two new (optional)
+ variables IMAGE_VERSION= and IMAGE_ID=, carrying identity and version
+ information for OS images that are updated comprehensively and
+ atomically as one image. Two new specifiers %M, %A now resolve to
+ these two fields in the various configuration options that resolve
+ specifiers.
+
+ * portablectl gained a new switch --extension= for enabling portable
+ service images with extensions that follow the extension image
+ concept introduced with v248, and thus allows layering multiple
+ images when setting up the root filesystem of the service.
+
+ * systemd-coredump will now extract ELF build-id information from
+ processes dumping core and include it in the coredump report.
+ Moreover, it will look for ELF .note.package sections with
+ distribution packaging meta-information about the crashing process.
+ This is useful to directly embed the rpm or deb (or any other)
+ package name and version in ELF files, making it easy to match
+ coredump reports with the specific package for which the software was
+ compiled. This is particularly useful on environments with ELF files
+ from multiple vendors, different distributions and versions, as is
+ common today in our containerized and sand-boxed world. For further
+ information, see:
+
+ https://systemd.io/COREDUMP_PACKAGE_METADATA
+
+ * A new udev hardware database has been added for FireWire devices
+ (IEEE 1394).
+
+ * The "net_id" built-in of udev has been updated with three
+ backwards-incompatible changes:
+
+ - PCI hotplug slot names on s390 systems are now parsed as
+ hexadecimal numbers. They were incorrectly parsed as decimal
+ previously, or ignored if the name was not a valid decimal
+ number.
+
+ - PCI onboard indices up to 65535 are allowed. Previously, numbers
+ above 16383 were rejected. This primarily impacts s390 systems,
+ where values up to 65535 are used.
+
+ - Invalid characters in interface names are replaced with "_".
+
+ The new version of the net naming scheme is "v249". The previous
+ scheme can be selected via the "net.naming-scheme=v247" kernel
+ command line parameter.
+
+ * sd-bus' sd_bus_is_ready() and sd_bus_is_open() calls now accept a
+ NULL bus object, for which they will return false. Or in other words,
+ an unallocated bus connection is neither ready nor open.
+
+ * The sd-device API acquired a new API function
+ sd_device_get_usec_initialized() that returns the monotonic time when
+ the udev device first appeared in the database.
+
+ * sd-device gained a new APIs sd_device_trigger_with_uuid() and
+ sd_device_get_trigger_uuid(). The former is similar to
+ sd_device_trigger() but returns a randomly generated UUID that is
+ associated with the synthetic uevent generated by the call. This UUID
+ may be read from the sd_device object a monitor eventually receives,
+ via the sd_device_get_trigger_uuid(). This interface requires kernel
+ 4.13 or above to work, and allows tracking a synthetic uevent through
+ the entire device management stack. The "udevadm trigger --settle"
+ logic has been updated to make use of this concept if available to
+ wait precisely for the uevents it generates. "udevadm trigger" also
+ gained a new parameter --uuid that prints the UUID for each generated
+ uevent.
+
+ * sd-device also gained new APIs sd_device_new_from_ifname() and
+ sd_device_new_from_ifindex() for allocating an sd-device object for
+ the specified network interface. The former accepts an interface name
+ (either a primary or an alternative name), the latter an interface
+ index.
+
+ * The native Journal protocol has been documented. Clients may talk
+ this as alternative to the classic BSD syslog protocol for locally
+ delivering log records to the Journal. The protocol has been stable
+ for a long time and in fact been implemented already in a variety
+ of alternative client libraries. This documentation makes the support
+ for that official:
+
+ https://systemd.io/JOURNAL_NATIVE_PROTOCOL
+
+ * A new BPFProgram= setting has been added to service files. It may be
+ set to a path to a loaded kernel BPF program, i.e. a path to a bpffs
+ file, or a bind mount or symlink to one. This may be used to upload
+ and manage BPF programs externally and then hook arbitrary systemd
+ services into them.
+
+ * The "home.arpa" domain that has been officially declared as the
+ choice for domain for local home networks per RFC 8375 has been added
+ to the default NTA list of resolved, since DNSSEC is generally not
+ available on private domains.
+
+ * The CPUAffinity= setting of unit files now resolves "%" specifiers.
+
+ * A new ManageForeignRoutingPolicyRules= setting has been added to
+ .network files which may be used to exclude foreign-created routing
+ policy rules from systemd-networkd management.
+
+ * systemd-network-wait-online gained two new switches -4 and -6 that
+ may be used to tweak whether to wait for only IPv4 or only IPv6
+ connectivity.
+
+ * .network files gained a new RequiredFamilyForOnline= setting to
+ fine-tune whether to require an IPv4 or IPv6 address in order to
+ consider an interface "online".
+
+ * networkctl will now show an over-all "online" state in the per-link
+ information.
+
+ * In .network files a new OutgoingInterface= setting has been added to
+ specify the output interface in bridge FDB setups.
+
+ * In .network files the Multipath group ID may now be configured for
+ [NextHop] entries, via the new Group= setting.
+
+ * The DHCP server logic configured in .network files gained a new
+ setting RelayTarget= that turns the server into a DHCP server relay.
+ The RelayAgentCircuitId= and RelayAgentRemoteId= settings may be used
+ to further tweak the DHCP relay behaviour.
+
+ * The DHCP server logic also gained a new ServerAddress= setting in
+ .network files that explicitly specifies the server IP address to
+ use. If not specified, the address is determined automatically, as
+ before.
+
+ * The DHCP server logic in systemd-networkd gained support for static
+ DHCP leases, configurable via the [DHCPServerStaticLease]
+ section. This allows explicitly mapping specific MAC addresses to
+ fixed IP addresses and vice versa.
+
+ * The RestrictAddressFamilies= setting in service files now supports a
+ new special value "none". If specified sockets of all address
+ families will be made unavailable to services configured that way.
+
+ * systemd-fstab-generator and systemd-repart have been updated to
+ support booting from disks that carry only a /usr/ partition but no
+ root partition yet, and where systemd-repart can add it in on the
+ first boot. This is useful for implementing systems that ship with a
+ single /usr/ file system, and whose root file system shall be set up
+ and formatted on a LUKS-encrypted volume whose key is generated
+ locally (and possibly enrolled in the TPM) during the first boot.
+
+ * The [Address] section of .network files now accepts a new
+ RouteMetric= setting that configures the routing metric to use for
+ the prefix route created as effect of the address configuration.
+ Similarly, the [DHCPv6PrefixDelegation] and [IPv6Prefix] sections
+ gained matching settings for their prefix routes. (The option of the
+ same name in the [DHCPv6] section is moved to [IPv6AcceptRA], since
+ it conceptually belongs there; the old option is still understood for
+ compatibility.)
+
+ * The DHCPv6 IAID and DUID are now explicitly configurable in .network
+ files.
+
+ * A new udev property ID_NET_DHCP_BROADCAST on network interface
+ devices is now honoured by systemd-networkd, controlling whether to
+ issue DHCP offers via broadcasting. This is used to ensure that s390
+ layer 3 network interfaces work out-of-the-box with systemd-networkd.
+
+ * nss-myhostname and systemd-resolved will now synthesize address
+ records for a new special hostname "_outbound". The name will always
+ resolve to the local IP addresses most likely used for outbound
+ connections towards the default routes. On multi-homed hosts this is
+ useful to have a stable handle referring to "the" local IP address
+ that matters most, to the point where this is defined.
+
+ * The Discoverable Partition Specification has been updated with a new
+ GPT partition flag "grow-file-system" defined for its partition
+ types. Whenever partitions with this flag set are automatically
+ mounted (i.e. via systemd-gpt-auto-generator or the --image= switch
+ of systemd-nspawn or other tools; and as opposed to explicit mounting
+ via /etc/fstab), the file system within the partition is
+ automatically grown to the full size of the partition. If the file
+ system size already matches the partition size this flag has no
+ effect. Previously, this functionality has been available via the
+ explicit x-systemd.growfs mount option, and this new flag extends
+ this to automatically discovered mounts. A new GrowFileSystem=
+ setting has been added to systemd-repart drop-in files that allows
+ configuring this partition flag. This new flag defaults to on for
+ partitions automatically created by systemd-repart, except if they
+ are marked read-only. See the specification for further details:
+
+ https://systemd.io/DISCOVERABLE_PARTITIONS
+
+ * .network files gained a new setting RoutesToNTP= in the [DHCPv4]
+ section. If enabled (which is the default), and an NTP server address
+ is acquired through a DHCP lease on this interface an explicit route
+ to this address is created on this interface to ensure that NTP
+ traffic to the NTP server acquired on an interface is also routed
+ through that interface. The pre-existing RoutesToDNS= setting that
+ implements the same for DNS servers is now enabled by default.
+
+ * A pair of service settings SocketBindAllow= + SocketBindDeny= have
+ been added that may be used to restrict the network interfaces
+ sockets created by the service may be bound to. This is implemented
+ via BPF.
+
+ * A new ConditionFirmware= setting has been added to unit files to
+ conditionalize on certain firmware features. At the moment it may
+ check whether running on a UEFI system, a device.tree system, or if
+ the system is compatible with some specified device-tree feature.
+
+ * A new ConditionOSRelease= setting has been added to unit files to
+ check os-release(5) fields. The "=", "!=", "<", "<=", ">=", ">"
+ operators may be used to check if some field has some specific value
+ or do an alphanumerical comparison. Equality comparisons are useful
+ for fields like ID, but relative comparisons for fields like
+ VERSION_ID or IMAGE_VERSION.
+
+ * hostnamed gained a new Describe() D-Bus method that returns a JSON
+ serialization of the host data it exposes. This is exposed via
+ "hostnamectl --json=" to acquire a host identity description in JSON.
+ It's our intention to add a similar features to most services and
+ objects systemd manages, in order to simplify integration with
+ program code that can consume JSON.
+
+ * Similarly, networkd gained a Describe() method on its Manager and
+ Link bus objects. This is exposed via "networkctl --json=".
+
+ * hostnamectl's various "get-xyz"/"set-xyz" verb pairs
+ (e.g. "hostnamectl get-hostname", "hostnamectl "set-hostname") have
+ been replaced by a single "xyz" verb (e.g. "hostnamectl hostname")
+ that is used both to get the value (when no argument is given), and
+ to set the value (when an argument is specified). The old names
+ continue to be supported for compatibility.
+
+ * systemd-detect-virt and ConditionVirtualization= are now able to
+ correctly identify Amazon EC2 environments.
+
+ * The LogLevelMax= setting of unit files now applies not only to log
+ messages generated *by* the service, but also to log messages
+ generated *about* the service by PID 1. To suppress logs concerning a
+ specific service comprehensively, set this option to a high log
+ level.
+
+ * bootctl gained support for a new --make-machine-id-directory= switch
+ that allows precise control on whether to create the top-level
+ per-machine directory in the boot partition that typically contains
+ Type 1 boot loader entries.
+
+ * During build SBAT data to include in the systemd-boot EFI PE binaries
+ may be specified now.
+
+ * /etc/crypttab learnt a new option "headless". If specified any
+ requests to query the user interactively for passwords or PINs will
+ be skipped. This is useful on systems that are headless, i.e. where
+ an interactive user is generally not present.
+
+ * /etc/crypttab also learnt a new option "password-echo=" that allows
+ configuring whether the encryption password prompt shall echo the
+ typed password and if so, do so literally or via asterisks. (The
+ default is the same behaviour as before: provide echo feedback via
+ asterisks.)
+
+ * FIDO2 support in systemd-cryptenroll/systemd-cryptsetup and
+ systemd-homed has been updated to allow explicit configuration of the
+ "user presence" and "user verification" checks, as well as whether a
+ PIN is required for authentication, via the new switches
+ --fido2-with-user-presence=, --fido2-with-user-verification=,
+ --fido2-with-client-pin= to systemd-cryptenroll and homectl. Which
+ features are available, and may be enabled or disabled depends on the
+ used FIDO2 token.
+
+ * systemd-nspawn's --private-user= switch now accepts the special value
+ "identity" which configures a user namespacing environment with an
+ identity mapping of 65535 UIDs. This means the container UID 0 is
+ mapped to the host UID 0, and the UID 1 to host UID 1. On first look
+ this doesn't appear to be useful, however it does reduce the attack
+ surface a bit, since the resulting container will possess process
+ capabilities only within its namespace and not on the host.
+
+ * systemd-nspawn's --private-user-chown switch has been replaced by a
+ more generic --private-user-ownership= switch that accepts one of
+ three values: "chown" is equivalent to the old --private-user-chown,
+ and "off" is equivalent to the absence of the old switch. The value
+ "map" uses the new UID mapping mounts of Linux 5.12 to map ownership
+ of files and directories of the underlying image to the chosen UID
+ range for the container. "auto" is equivalent to "map" if UID mapping
+ mount are supported, otherwise it is equivalent to "chown". The short
+ -U switch systemd-nspawn now implies --private-user-ownership=auto
+ instead of the old --private-user-chown. Effectively this means: if
+ the backing file system supports UID mapping mounts the feature is
+ now used by default if -U is used. Generally, it's a good idea to use
+ UID mapping mounts instead of recursive chown()ing, since it allows
+ running containers off immutable images (since no modifications of
+ the images need to take place), and share images between multiple
+ instances. Moreover, the recursive chown()ing operation is slow and
+ can be avoided. Conceptually it's also a good thing if transient UID
+ range uses do not leak into persistent file ownership anymore. TLDR:
+ finally, the last major drawback of user namespacing has been
+ removed, and -U should always be used (unless you use btrfs, where
+ UID mapped mounts do not exist; or your container actually needs
+ privileges on the host).
+
+ * nss-systemd now synthesizes user and group shadow records in addition
+ to the main user and group records. Thus, hashed passwords managed by
+ systemd-homed are now accessible via the shadow database.
+
+ * The userdb logic (and thus nss-systemd, and so on) now read
+ additional user/group definitions in JSON format from the drop-in
+ directories /etc/userdb/, /run/userdb/, /run/host/userdb/ and
+ /usr/lib/userdb/. This is a simple and powerful mechanism for making
+ additional users available to the system, with full integration into
+ NSS including the shadow databases. Since the full JSON user/group
+ record format is supported this may also be used to define users with
+ resource management settings and other runtime settings that
+ pam_systemd and systemd-logind enforce at login.
+
+ * The userdbctl tool gained two new switches --with-dropin= and
+ --with-varlink= which can be used to fine-tune the sources used for
+ user database lookups.
+
+ * systemd-nspawn gained a new switch --bind-user= for binding a host
+ user account into the container. This does three things: the user's
+ home directory is bind mounted from the host into the container,
+ below the /run/userdb/home/ hierarchy. A free UID is picked in the
+ container, and a user namespacing UID mapping to the host user's UID
+ installed. And finally, a minimal JSON user and group record (along
+ with its hashed password) is dropped into /run/host/userdb/. These
+ records are picked up automatically by the userdb drop-in logic
+ describe above, and allow the user to login with the same password as
+ on the host. Effectively this means: if host and container run new
+ enough systemd versions making a host user available to the container
+ is trivially simple.
+
+ * systemd-journal-gatewayd now supports the switches --user, --system,
+ --merge, --file= that are equivalent to the same switches of
+ journalctl, and permit exposing only the specified subset of the
+ Journal records.
+
+ * The OnFailure= dependency between units is now augmented with a
+ implicit reverse dependency OnFailureOf= (this new dependency cannot
+ be configured directly it's only created as effect of an OnFailure=
+ dependency in the reverse order — it's visible in "systemctl show"
+ however). Similar, Slice= now has an reverse dependency SliceOf=,
+ that is also not configurable directly, but useful to determine all
+ units that are members of a slice.
+
+ * A pair of new dependency types between units PropagatesStopTo= +
+ StopPropagatedFrom= has been added, that allows propagation of unit
+ stop events between two units. It operates similar to the existing
+ PropagatesReloadTo= + ReloadPropagatedFrom= dependencies.
+
+ * A new dependency type OnSuccess= has been added (plus the reverse
+ dependency OnSuccessOf=, which cannot be configured directly, but
+ exists only as effect of the reverse OnSuccess=). It is similar to
+ OnFailure=, but triggers in the opposite case: when a service exits
+ cleanly. This allows "chaining up" of services where one or more
+ services are started once another service has successfully completed.
+
+ * A new dependency type Upholds= has been added (plus the reverse
+ dependency UpheldBy=, which cannot be configured directly, but exists
+ only as effect of Upholds=). This dependency type is a stronger form
+ of Wants=: if a unit has an UpHolds= dependency on some other unit
+ and the former is active then the latter is started whenever it is
+ found inactive (and no job is queued for it). This is an alternative
+ to Restart= inside service units, but less configurable, and the
+ request to uphold a unit is not encoded in the unit itself but in
+ another unit that intends to uphold it.
+
+ * The systemd-ask-password tool now also supports reading passwords
+ from the credentials subsystem, via the new --credential= switch.
+
+ * The systemd-ask-password tool learnt a new switch --emoji= which may
+ be used to explicit control whether the lock and key emoji (🔐) is
+ shown in the password prompt on suitable TTYs.
+
+ * The --echo switch of systemd-ask-password now optionally takes a
+ parameter that controls character echo. It may either show asterisks
+ (default, as before), turn echo off entirely, or echo the typed
+ characters literally.
+
+ * The systemd-ask-password tool also gained a new -n switch for
+ suppressing output of a trailing newline character when writing the
+ acquired password to standard output, similar to /bin/echo's -n
+ switch.
+
+ * New documentation has been added that describes the organization of
+ the systemd source code tree:
+
+ https://systemd.io/ARCHITECTURE
+
+ * Units using ConditionNeedsUpdate= will no longer be activated in
+ the initrd.
+
+ * It is now possible to list a template unit in the WantedBy= or
+ RequiredBy= settings of the [Install] section of another template
+ unit, which will be instantiated using the same instance name.
+
+ * A new MemoryAvailable property is available for units. If the unit,
+ or the slices it is part of, have a memory limit set via MemoryMax=/
+ MemoryHigh=, MemoryAvailable will indicate how much more memory the
+ unit can claim before hitting the limits.
+
+ * systemd-coredump will now try to stay below the cgroup memory limit
+ placed on itself or one of the slices it runs under, if the storage
+ area for core files (/var/lib/systemd/coredump/) is placed on a tmpfs,
+ since files written on such filesystems count toward the cgroup memory
+ limit. If there is not enough available memory in such cases to store
+ the core file uncompressed, systemd-coredump will skip to compressed
+ storage directly (if enabled) and it will avoid analyzing the core file
+ to print backtrace and metadata in the journal.
+
+ * tmpfiles.d/ drop-ins gained a new '=' modifier to check if the type
+ of a path matches the configured expectations, and remove it if not.
+
+ * tmpfiles.d/'s 'Age' now accepts an 'age-by' argument, which allows to
+ specify which of the several available filesystem timestamps (access
+ time, birth time, change time, modification time) to look at when
+ deciding whether a path has aged enough to be cleaned.
+
+ * A new IPv6StableSecretAddress= setting has been added to .network
+ files, which takes an IPv6 address to use as secret for IPv6 address
+ generation.
+
+ * The [DHCPServer] logic in .network files gained support for a new
+ UplinkInterface= setting that permits configuration of the uplink
+ interface name to propagate DHCP lease information from.
+
+ * The WakeOnLan= setting in .link files now accepts a list of flags
+ instead of a single one, to configure multiple wake-on-LAN policies.
+
+ * User-space defined tracepoints (USDT) have been added to udev at
+ strategic locations. This is useful for tracing udev behaviour and
+ performance with bpftrace and similar tools.
+
+ * systemd-journald-upload gained a new NetworkTimeoutSec= option for
+ setting a network timeout time.
+
+ * If a system service is running in a new mount namespace (RootDirectory=
+ and friends), all file systems will be mounted with MS_NOSUID by
+ default, unless the system is running with SELinux enabled.
+
+ * When enumerating time zones the timedatectl tool will now consult the
+ 'tzdata.zi' file shipped by the IANA time zone database package, in
+ addition to 'zone1970.tab', as before. This makes sure time zone
+ aliases are now correctly supported. Some distributions so far did
+ not install this additional file, most do however. If you
+ distribution does not install it yet, it might make sense to change
+ that.
+
+ * Intel HID rfkill event is no longer masked, since it's the only
+ source of rfkill event on newer HP laptops. To have both backward and
+ forward compatibility, userspace daemon needs to debounce duplicated
+ events in a short time window.
+
+ Contributions from: Aakash Singh, adrian5, Albert Brox,
+ Alexander Sverdlin, Alexander Tsoy, Alexey Rubtsov, alexlzhu,
+ Allen Webb, Alvin Šipraga, Alyssa Ross, Anders Wenhaug,
+ Andrea Pappacoda, Anita Zhang, asavah, Balint Reczey, Bertrand Jacquin,
+ borna-blazevic, caoxia2008cxx, Carlo Teubner, Christian Göttsche,
+ Christian Hesse, Daniel Schaefer, Dan Streetman,
+ David Santamaría Rogado, David Tardon, Deepak Rawat, dgcampea,
+ Dimitri John Ledkov, ei-ke, Emilio Herrera, Emil Renner Berthing,
+ Eric Cook, Flos Lonicerae, Franck Bui, Francois Gervais,
+ Frantisek Sumsal, Gibeom Gwon, gitm0, Hamish Moffatt, Hans de Goede,
+ Harsh Barsaiyan, Henri Chain, Hristo Venev, Icenowy Zheng, Igor Zhbanov,
+ imayoda, Jakub Warczarek, James Buren, Jan Janssen, Jan Macku,
+ Jan Synacek, Jason Francis, Jayanth Ananthapadmanaban, Jeremy Szu,
+ Jérôme Carretero, Jesse Stricker, jiangchuangang, Joerg Behrmann,
+ Jóhann B. Guðmundsson, Jörg Deckert, Jörg Thalheim, Juergen Hoetzel,
+ Julia Kartseva, Kai-Heng Feng, Khem Raj, KoyamaSohei, laineantti,
+ Lennart Poettering, LetzteInstanz, Luca Adrian L, Luca Boccassi,
+ Lucas Magasweran, Mantas Mikulėnas, Marco Antonio Mauro, Mark Wielaard,
+ Masahiro Matsuya, Matt Johnston, Michael Catanzaro, Michal Koutný,
+ Michal Sekletár, Mike Crowe, Mike Kazantsev, Milan, milaq,
+ Miroslav Suchý, Morten Linderud, nerdopolis, nl6720, Noah Meyerhans,
+ Oleg Popov, Olle Lundberg, Ondrej Kozina, Paweł Marciniak, Perry.Yuan,
+ Peter Hutterer, Peter Kjellerstedt, Peter Morrow, Phaedrus Leeds,
+ plattrap, qhill, Raul Tambre, Roman Beranek, Roshan Shariff,
+ Ryan Hendrickson, Samuel BF, scootergrisen, Sebastian Blunt,
+ Seong-ho Cho, Sergey Bugaev, Sevan Janiyan, Sibo Dong, simmon,
+ Simon Watts, Srinidhi Kaushik, Štěpán Němec, Steve Bonds, Susant Sahani,
+ sverdlin, syyhao1994, Takashi Sakamoto, Topi Miettinen, tramsay,
+ Trent Piepho, Uwe Kleine-König, Viktor Mihajlovski, Vincent Dechenaux,
+ Vito Caputo, William A. Kennington III, Yangyang Shen, Yegor Alexeyev,
+ Yi Gao, Yu Watanabe, Zbigniew Jędrzejewski-Szmek, zsien, наб
+
+ — Edinburgh, 2021-07-07
+
+CHANGES WITH 248:
+
+ * A concept of system extension images is introduced. Such images may
+ be used to extend the /usr/ and /opt/ directory hierarchies at
+ runtime with additional files (even if the file system is read-only).
+ When a system extension image is activated, its /usr/ and /opt/
+ hierarchies and os-release information are combined via overlayfs
+ with the file system hierarchy of the host OS.
+
+ A new systemd-sysext tool can be used to merge, unmerge, list, and
+ refresh system extension hierarchies. See
+ https://www.freedesktop.org/software/systemd/man/systemd-sysext.html.
+
+ The systemd-sysext.service automatically merges installed system
+ extensions during boot (before basic.target, but not in very early
+ boot, since various file systems have to be mounted first).
+
+ The SYSEXT_LEVEL= field in os-release(5) may be used to specify the
+ supported system extension level.
+
+ * A new ExtensionImages= unit setting can be used to apply the same
+ system extension image concept from systemd-sysext to the namespaced
+ file hierarchy of specific services, following the same rules and
+ constraints.
+
+ * Support for a new special "root=tmpfs" kernel command-line option has
+ been added. When specified, a tmpfs is mounted on /, and mount.usr=
+ should be used to point to the operating system implementation.
+
+ * A new configuration file /etc/veritytab may be used to configure
+ dm-verity integrity protection for block devices. Each line is in the
+ format "volume-name data-device hash-device roothash options",
+ similar to /etc/crypttab.
+
+ * A new kernel command-line option systemd.verity.root_options= may be
+ used to configure dm-verity behaviour for the root device.
+
+ * The key file specified in /etc/crypttab (the third field) may now
+ refer to an AF_UNIX/SOCK_STREAM socket in the file system. The key is
+ acquired by connecting to that socket and reading from it. This
+ allows the implementation of a service to provide key information
+ dynamically, at the moment when it is needed.
+
+ * When the hostname is set explicitly to "localhost", systemd-hostnamed
+ will respect this. Previously such a setting would be mostly silently
+ ignored. The goal is to honour configuration as specified by the
+ user.
+
+ * The fallback hostname that will be used by the system manager and
+ systemd-hostnamed can now be configured in two new ways: by setting
+ DEFAULT_HOSTNAME= in os-release(5), or by setting
+ $SYSTEMD_DEFAULT_HOSTNAME in the environment block. As before, it can
+ also be configured during compilation. The environment variable is
+ intended for testing and local overrides, the os-release(5) field is
+ intended to allow customization by different variants of a
+ distribution that share the same compiled packages.
+
+ * The environment block of the manager itself may be configured through
+ a new ManagerEnvironment= setting in system.conf or user.conf. This
+ complements existing ways to set the environment block (the kernel
+ command line for the system manager, the inherited environment and
+ user@.service unit file settings for the user manager).
+
+ * systemd-hostnamed now exports the default hostname and the source of
+ the configured hostname ("static", "transient", or "default") as
+ D-Bus properties.
+
+ * systemd-hostnamed now exports the "HardwareVendor" and
+ "HardwareModel" D-Bus properties, which are supposed to contain a
+ pair of cleaned up, human readable strings describing the system's
+ vendor and model. It's typically sourced from the firmware's DMI
+ tables, but may be augmented from a new hwdb database. hostnamectl
+ shows this in the status output.
+
+ * Support has been added to systemd-cryptsetup for extracting the
+ PKCS#11 token URI and encrypted key from the LUKS2 JSON embedded
+ metadata header. This allows the information how to open the
+ encrypted device to be embedded directly in the device and obviates
+ the need for configuration in an external file.
+
+ * systemd-cryptsetup gained support for unlocking LUKS2 volumes using
+ TPM2 hardware, as well as FIDO2 security tokens (in addition to the
+ pre-existing support for PKCS#11 security tokens).
+
+ * systemd-repart may enroll encrypted partitions using TPM2
+ hardware. This may be useful for example to create an encrypted /var
+ partition bound to the machine on first boot.
+
+ * A new systemd-cryptenroll tool has been added to enroll TPM2, FIDO2
+ and PKCS#11 security tokens to LUKS volumes, list and destroy
+ them. See:
+
+ https://0pointer.net/blog/unlocking-luks2-volumes-with-tpm2-fido2-pkcs11-security-hardware-on-systemd-248.html
+
+ It also supports enrolling "recovery keys" and regular passphrases.
+
+ * The libfido2 dependency is now based on dlopen(), so that the library
+ is used at runtime when installed, but is not a hard runtime
+ dependency.
+
+ * systemd-cryptsetup gained support for two new options in
+ /etc/crypttab: "no-write-workqueue" and "no-read-workqueue" which
+ request synchronous processing of encryption/decryption IO.
+
+ * The manager may be configured at compile time to use the fexecve()
+ instead of the execve() system call when spawning processes. Using
+ fexecve() closes a window between checking the security context of an
+ executable and spawning it, but unfortunately the kernel displays
+ stale information in the process' "comm" field, which impacts ps
+ output and such.
+
+ * The configuration option -Dcompat-gateway-hostname has been dropped.
+ "_gateway" is now the only supported name.
+
+ * The ConditionSecurity=tpm2 unit file setting may be used to check if
+ the system has at least one TPM2 (tpmrm class) device.
+
+ * A new ConditionCPUFeature= has been added that may be used to
+ conditionalize units based on CPU features. For example,
+ ConditionCPUFeature=rdrand will condition a unit so that it is only
+ run when the system CPU supports the RDRAND opcode.
+
+ * The existing ConditionControlGroupController= setting has been
+ extended with two new values "v1" and "v2". "v2" means that the
+ unified v2 cgroup hierarchy is used, and "v1" means that legacy v1
+ hierarchy or the hybrid hierarchy are used.
+
+ * A new PrivateIPC= setting on a unit file allows executed processes to
+ be moved into a private IPC namespace, with separate System V IPC
+ identifiers and POSIX message queues.
+
+ A new IPCNamespacePath= allows the unit to be joined to an existing
+ IPC namespace.
+
+ * The tables of system calls in seccomp filters are now automatically
+ generated from kernel lists exported on
+ https://fedora.juszkiewicz.com.pl/syscalls.html.
+
+ The following architectures should now have complete lists:
+ alpha, arc, arm64, arm, i386, ia64, m68k, mips64n32, mips64, mipso32,
+ powerpc, powerpc64, s390, s390x, tilegx, sparc, x86_64, x32.
+
+ * The MountAPIVFS= service file setting now additionally mounts a tmpfs
+ on /run/ if it is not already a mount point. A writable /run/ has
+ always been a requirement for a functioning system, but this was not
+ guaranteed when using a read-only image.
+
+ Users can always specify BindPaths= or InaccessiblePaths= as
+ overrides, and they will take precedence. If the host's root mount
+ point is used, there is no change in behaviour.
+
+ * New bind mounts and file system image mounts may be injected into the
+ mount namespace of a service (without restarting it). This is exposed
+ respectively as 'systemctl bind <unit> <path>…' and
+ 'systemctl mount-image <unit> <image>…'.
+
+ * The StandardOutput= and StandardError= settings can now specify files
+ to be truncated for output (as "truncate:<path>").
+
+ * The ExecPaths= and NoExecPaths= settings may be used to specify
+ noexec for parts of the file system.
+
+ * sd-bus has a new function sd_bus_open_user_machine() to open a
+ connection to the session bus of a specific user in a local container
+ or on the local host. This is exposed in the existing -M switch to
+ systemctl and similar tools:
+
+ systemctl --user -M lennart@foobar start foo
+
+ This will connect to the user bus of a user "lennart" in container
+ "foobar". If no container name is specified, the specified user on
+ the host itself is connected to
+
+ systemctl --user -M lennart@ start quux
+
+ * sd-bus also gained a convenience function sd_bus_message_send() to
+ simplify invocations of sd_bus_send(), taking only a single
+ parameter: the message to send.
+
+ * sd-event allows rate limits to be set on event sources, for dealing
+ with high-priority event sources that might starve out others. See
+ the new man page sd_event_source_set_ratelimit(3) for details.
+
+ * systemd.link files gained a [Link] Promiscuous= switch, which allows
+ the device to be raised in promiscuous mode.
+
+ New [Link] TransmitQueues= and ReceiveQueues= settings allow the
+ number of TX and RX queues to be configured.
+
+ New [Link] TransmitQueueLength= setting allows the size of the TX
+ queue to be configured.
+
+ New [Link] GenericSegmentOffloadMaxBytes= and
+ GenericSegmentOffloadMaxSegments= allow capping the packet size and
+ the number of segments accepted in Generic Segment Offload.
+
+ * systemd-networkd gained support for the "B.A.T.M.A.N. advanced"
+ wireless routing protocol that operates on ISO/OSI Layer 2 only and
+ uses ethernet frames to route/bridge packets. This encompasses a new
+ "batadv" netdev Type=, a new [BatmanAdvanced] section with a bunch of
+ new settings in .netdev files, and a new BatmanAdvanced= setting in
+ .network files.
+
+ * systemd.network files gained a [Network] RouteTable= configuration
+ switch to select the routing policy table.
+
+ systemd.network files gained a [RoutingPolicyRule] Type=
+ configuration switch (one of "blackhole, "unreachable", "prohibit").
+
+ systemd.network files gained a [IPv6AcceptRA] RouteDenyList= and
+ RouteAllowList= settings to ignore/accept route advertisements from
+ routers matching specified prefixes. The DenyList= setting has been
+ renamed to PrefixDenyList= and a new PrefixAllowList= option has been
+ added.
+
+ systemd.network files gained a [DHCPv6] UseAddress= setting to
+ optionally ignore the address provided in the lease.
+
+ systemd.network files gained a [DHCPv6PrefixDelegation]
+ ManageTemporaryAddress= switch.
+
+ systemd.network files gained a new ActivationPolicy= setting which
+ allows configuring how the UP state of an interface shall be managed,
+ i.e. whether the interface is always upped, always downed, or may be
+ upped/downed by the user using "ip link set dev".
+
+ * The default for the Broadcast= setting in .network files has slightly
+ changed: the broadcast address will not be configured for wireguard
+ devices.
+
+ * systemd.netdev files gained a [VLAN] Protocol=, IngressQOSMaps=,
+ EgressQOSMaps=, and [MACVLAN] BroadcastMulticastQueueLength=
+ configuration options for VLAN packet handling.
+
+ * udev rules may now set log_level= option. This allows debug logs to
+ be enabled for select events, e.g. just for a specific subsystem or
+ even a single device.
+
+ * udev now exports the VOLUME_ID, LOGICAL_VOLUME_ID, VOLUME_SET_ID, and
+ DATA_PREPARED_ID properties for block devices with ISO9660 file
+ systems.
+
+ * udev now exports decoded DMI information about installed memory slots
+ as device properties under the /sys/class/dmi/id/ pseudo device.
+
+ * /dev/ is not mounted noexec anymore. This didn't provide any
+ significant security benefits and would conflict with the executable
+ mappings used with /dev/sgx device nodes. The previous behaviour can
+ be restored for individual services with NoExecPaths=/dev (or by allow-
+ listing and excluding /dev from ExecPaths=).
+
+ * Permissions for /dev/vsock are now set to 0o666, and /dev/vhost-vsock
+ and /dev/vhost-net are owned by the kvm group.
+
+ * The hardware database has been extended with a list of fingerprint
+ readers that correctly support USB auto-suspend using data from
+ libfprint.
+
+ * systemd-resolved can now answer DNSSEC questions through the stub
+ resolver interface in a way that allows local clients to do DNSSEC
+ validation themselves. For a question with DO+CD set, it'll proxy the
+ DNS query and respond with a mostly unmodified packet received from
+ the upstream server.
+
+ * systemd-resolved learnt a new boolean option CacheFromLocalhost= in
+ resolved.conf. If true the service will provide caching even for DNS
+ lookups made to an upstream DNS server on the 127.0.0.1/::1
+ addresses. By default (and when the option is false) systemd-resolved
+ will not cache such lookups, in order to avoid duplicate local
+ caching, under the assumption the local upstream server caches
+ anyway.
+
+ * systemd-resolved now implements RFC5001 NSID in its local DNS
+ stub. This may be used by local clients to determine whether they are
+ talking to the DNS resolver stub or a different DNS server.
+
+ * When resolving host names and other records resolvectl will now
+ report where the data was acquired from (i.e. the local cache, the
+ network, locally synthesized, …) and whether the network traffic it
+ effected was encrypted or not. Moreover the tool acquired a number of
+ new options --cache=, --synthesize=, --network=, --zone=,
+ --trust-anchor=, --validate= that take booleans and may be used to
+ tweak a lookup, i.e. whether it may be answered from cached
+ information, locally synthesized information, information acquired
+ through the network, the local mDNS/LLMNR zone, the DNSSEC trust
+ anchor, and whether DNSSEC validation shall be executed for the
+ lookup.
+
+ * systemd-nspawn gained a new --ambient-capability= setting
+ (AmbientCapability= in .nspawn files) to configure ambient
+ capabilities passed to the container payload.
+
+ * systemd-nspawn gained the ability to configure the firewall using the
+ nftables subsystem (in addition to the existing iptables
+ support). Similarly, systemd-networkd's IPMasquerade= option now
+ supports nftables as back-end, too. In both cases NAT on IPv6 is now
+ supported too, in addition to IPv4 (the iptables back-end still is
+ IPv4-only).
+
+ "IPMasquerade=yes", which was the same as "IPMasquerade=ipv4" before,
+ retains its meaning, but has been deprecated. Please switch to either
+ "ivp4" or "both" (if covering IPv6 is desired).
+
+ * systemd-importd will now download .verity and .roothash.p7s files
+ along with the machine image (as exposed via machinectl pull-raw).
+
+ * systemd-oomd now gained a new DefaultMemoryPressureDurationSec=
+ setting to configure the time a unit's cgroup needs to exceed memory
+ pressure limits before action will be taken, and a new
+ ManagedOOMPreference=none|avoid|omit setting to avoid killing certain
+ units.
+
+ systemd-oomd is now considered fully supported (the usual
+ backwards-compatibility promises apply). Swap is not required for
+ operation, but it is still recommended.
+
+ * systemd-timesyncd gained a new ConnectionRetrySec= setting which
+ configures the retry delay when trying to contact servers.
+
+ * systemd-stdio-bridge gained --system/--user options to connect to the
+ system bus (previous default) or the user session bus.
+
+ * systemd-localed may now call locale-gen to generate missing locales
+ on-demand (UTF-8-only). This improves integration with Debian-based
+ distributions (Debian/Ubuntu/PureOS/Tanglu/...) and Arch Linux.
+
+ * systemctl --check-inhibitors=true may now be used to obey inhibitors
+ even when invoked non-interactively. The old --ignore-inhibitors
+ switch is now deprecated and replaced by --check-inhibitors=false.
+
+ * systemctl import-environment will now emit a warning when called
+ without any arguments (i.e. to import the full environment block of
+ the called program). This command will usually be invoked from a
+ shell, which means that it'll inherit a bunch of variables which are
+ specific to that shell, and usually to the TTY the shell is connected
+ to, and don't have any meaning in the global context of the system or
+ user service manager. Instead, only specific variables should be
+ imported into the manager environment block.
+
+ Similarly, programs which update the manager environment block by
+ directly calling the D-Bus API of the manager, should also push
+ specific variables, and not the full inherited environment.
+
+ * systemctl's status output now shows unit state with a more careful
+ choice of Unicode characters: units in maintenance show a "○" symbol
+ instead of the usual "●", failed units show "×", and services being
+ reloaded "↻".
+
+ * coredumpctl gained a --debugger-arguments= switch to pass arguments
+ to the debugger. It also gained support for showing coredump info in
+ a simple JSON format.
+
+ * systemctl/loginctl/machinectl's --signal= option now accept a special
+ value "list", which may be used to show a brief table with known
+ process signals and their numbers.
+
+ * networkctl now shows the link activation policy in status.
+
+ * Various tools gained --pager/--no-pager/--json= switches to
+ enable/disable the pager and provide JSON output.
+
+ * Various tools now accept two new values for the SYSTEMD_COLORS
+ environment variable: "16" and "256", to configure how many terminal
+ colors are used in output.
+
+ * less 568 or newer is now required for the auto-paging logic of the
+ various tools. Hyperlink ANSI sequences in terminal output are now
+ used even if a pager is used, and older versions of less are not able
+ to display these sequences correctly. SYSTEMD_URLIFY=0 may be used to
+ disable this output again.
+
+ * Builds with support for separate / and /usr/ hierarchies ("split-usr"
+ builds, non-merged-usr builds) are now officially deprecated. A
+ warning is emitted during build. Support is slated to be removed in
+ about a year (when the Debian Bookworm release development starts).
+
+ * Systems with the legacy cgroup v1 hierarchy are now marked as
+ "tainted", to make it clearer that using the legacy hierarchy is not
+ recommended.
+
+ * systemd-localed will now refuse to configure a keymap which is not
+ installed in the file system. This is intended as a bug fix, but
+ could break cases where systemd-localed was used to configure the
+ keymap in advanced of it being installed. It is necessary to install
+ the keymap file first.
+
+ * The main git development branch has been renamed to 'main'.
+
+ * mmcblk[0-9]boot[0-9] devices will no longer be probed automatically
+ for partitions, as in the vast majority of cases they contain none
+ and are used internally by the bootloader (eg: uboot).
+
+ * systemd will now set the $SYSTEMD_EXEC_PID environment variable for
+ spawned processes to the PID of the process itself. This may be used
+ by programs for detecting whether they were forked off by the service
+ manager itself or are a process forked off further down the tree.
+
+ * The sd-device API gained four new calls: sd_device_get_action() to
+ determine the uevent add/remove/change/… action the device object has
+ been seen for, sd_device_get_seqno() to determine the uevent sequence
+ number, sd_device_new_from_stat_rdev() to allocate a new sd_device
+ object from stat(2) data of a device node, and sd_device_trigger() to
+ write to the 'uevent' attribute of a device.
+
+ * For most tools the --no-legend= switch has been replaced by
+ --legend=no and --legend=yes, to force whether tables are shown with
+ headers/legends.
+
+ * Units acquired a new property "Markers" that takes a list of zero,
+ one or two of the following strings: "needs-reload" and
+ "needs-restart". These markers may be set via "systemctl
+ set-property". Once a marker is set, "systemctl reload-or-restart
+ --marked" may be invoked to execute the operation the units are
+ marked for. This is useful for package managers that want to mark
+ units for restart/reload while updating, but effect the actual
+ operations at a later step at once.
+
+ * The sd_bus_message_read_strv() API call of sd-bus may now also be
+ used to parse arrays of D-Bus signatures and D-Bus paths, in addition
+ to regular strings.
+
+ * bootctl will now report whether the UEFI firmware used a TPM2 device
+ and measured the boot process into it.
+
+ * systemd-tmpfiles learnt support for a new environment variable
+ $SYSTEMD_TMPFILES_FORCE_SUBVOL which takes a boolean value. If true
+ the v/q/Q lines in tmpfiles.d/ snippets will create btrfs subvolumes
+ even if the root fs of the system is not itself a btrfs volume.
+
+ * systemd-detect-virt/ConditionVirtualization= will now explicitly
+ detect Docker/Podman environments where possible. Moreover, they
+ should be able to generically detect any container manager as long as
+ it assigns the container a cgroup.
+
+ * portablectl gained a new "reattach" verb for detaching/reattaching a
+ portable service image, useful for updating images on-the-fly.
+
+ * Intel SGX enclave device nodes (which expose a security feature of
+ newer Intel CPUs) will now be owned by a new system group "sgx".
+
+ Contributions from: Adam Nielsen, Adrian Vovk, AJ Jordan, Alan Perry,
+ Alastair Pharo, Alexander Batischev, Ali Abdallah, Andrew Balmos,
+ Anita Zhang, Annika Wickert, Ansgar Burchardt, Antonio Terceiro,
+ Antonius Frie, Ardy, Arian van Putten, Ariel Fermani, Arnaud T,
+ A S Alam, Bastien Nocera, Benjamin Berg, Benjamin Robin, Björn Daase,
+ caoxia, Carlo Wood, Charles Lee, ChopperRob, chri2, Christian Ehrhardt,
+ Christian Hesse, Christopher Obbard, clayton craft, corvusnix, cprn,
+ Daan De Meyer, Daniele Medri, Daniel Rusek, Dan Sanders, Dan Streetman,
+ Darren Ng, David Edmundson, David Tardon, Deepak Rawat, Devon Pringle,
+ Dmitry Borodaenko, dropsignal, Einsler Lee, Endre Szabo,
+ Evgeny Vereshchagin, Fabian Affolter, Fangrui Song, Felipe Borges,
+ feliperodriguesfr, Felix Stupp, Florian Hülsmann, Florian Klink,
+ Florian Westphal, Franck Bui, Frantisek Sumsal, Gablegritule,
+ Gaël PORTAY, Gaurav, Giedrius Statkevičius, Greg Depoire-Ferrer,
+ Gustavo Costa, Hans de Goede, Hela Basa, heretoenhance, hide,
+ Iago López Galeiras, igo95862, Ilya Dmitrichenko, Jameer Pathan,
+ Jan Tojnar, Jiehong, Jinyuan Si, Joerg Behrmann, John Slade,
+ Jonathan G. Underwood, Jonathan McDowell, Josh Triplett, Joshua Watt,
+ Julia Cartwright, Julien Humbert, Kairui Song, Karel Zak,
+ Kevin Backhouse, Kevin P. Fleming, Khem Raj, Konomi, krissgjeng,
+ l4gfcm, Lajos Veres, Lennart Poettering, Lincoln Ramsay, Luca Boccassi,
+ Luca BRUNO, Lucas Werkmeister, Luka Kudra, Luna Jernberg,
+ Marc-André Lureau, Martin Wilck, Matthias Klumpp, Matt Turner,
+ Michael Gisbers, Michael Marley, Michael Trapp, Michal Fabik,
+ Michał Kopeć, Michal Koutný, Michal Sekletár, Michele Guerini Rocco,
+ Mike Gilbert, milovlad, moson-mo, Nick, nihilix-melix, Oğuz Ersen,
+ Ondrej Mosnacek, pali, Pavel Hrdina, Pavel Sapezhko, Perry Yuan,
+ Peter Hutterer, Pierre Dubouilh, Piotr Drąg, Pjotr Vertaalt,
+ Richard Laager, RussianNeuroMancer, Sam Lunt, Sebastiaan van Stijn,
+ Sergey Bugaev, shenyangyang4, simmon, Simonas Kazlauskas,
+ Slimane Selyan Amiri, Stefan Agner, Steve Ramage, Susant Sahani,
+ Sven Mueller, Tad Fisher, Takashi Iwai, Thomas Haller, Tom Shield,
+ Topi Miettinen, Torsten Hilbrich, tpgxyz, Tyler Hicks, ulf-f,
+ Ulrich Ölmann, Vincent Pelletier, Vinnie Magro, Vito Caputo, Vlad,
+ walbit-de, Whired Planck, wouter bolsterlee, Xℹ Ruoyao, Yangyang Shen,
+ Yuri Chornoivan, Yu Watanabe, Zach Smith, Zbigniew Jędrzejewski-Szmek,
+ Zmicer Turok, Дамјан Георгиевски
+
+ — Berlin, 2021-03-30
+
+CHANGES WITH 247:
+
+ * KERNEL API INCOMPATIBILITY: Linux 4.14 introduced two new uevents
+ "bind" and "unbind" to the Linux device model. When this kernel
+ change was made, systemd-udevd was only minimally updated to handle
+ and propagate these new event types. The introduction of these new
+ uevents (which are typically generated for USB devices and devices
+ needing a firmware upload before being functional) resulted in a
+ number of issues which we so far didn't address. We hoped the kernel
+ maintainers would themselves address these issues in some form, but
+ that did not happen. To handle them properly, many (if not most) udev
+ rules files shipped in various packages need updating, and so do many
+ programs that monitor or enumerate devices with libudev or sd-device,
+ or otherwise process uevents. Please note that this incompatibility
+ is not fault of systemd or udev, but caused by an incompatible kernel
+ change that happened back in Linux 4.14, but is becoming more and
+ more visible as the new uevents are generated by more kernel drivers.
+
+ To minimize issues resulting from this kernel change (but not avoid
+ them entirely) starting with systemd-udevd 247 the udev "tags"
+ concept (which is a concept for marking and filtering devices during
+ enumeration and monitoring) has been reworked: udev tags are now
+ "sticky", meaning that once a tag is assigned to a device it will not
+ be removed from the device again until the device itself is removed
+ (i.e. unplugged). This makes sure that any application monitoring
+ devices that match a specific tag is guaranteed to both see uevents
+ where the device starts being relevant, and those where it stops
+ being relevant (the latter now regularly happening due to the new
+ "unbind" uevent type). The udev tags concept is hence now a concept
+ tied to a *device* instead of a device *event* — unlike for example
+ udev properties whose lifecycle (as before) is generally tied to a
+ device event, meaning that the previously determined properties are
+ forgotten whenever a new uevent is processed.
+
+ With the newly redefined udev tags concept, sometimes it's necessary
+ to determine which tags are the ones applied by the most recent
+ uevent/database update, in order to discern them from those
+ originating from earlier uevents/database updates of the same
+ device. To accommodate for this a new automatic property CURRENT_TAGS
+ has been added that works similar to the existing TAGS property but
+ only lists tags set by the most recent uevent/database
+ update. Similarly, the libudev/sd-device API has been updated with
+ new functions to enumerate these 'current' tags, in addition to the
+ existing APIs that now enumerate the 'sticky' ones.
+
+ To properly handle "bind"/"unbind" on Linux 4.14 and newer it is
+ essential that all udev rules files and applications are updated to
+ handle the new events. Specifically:
+
+ • All rule files that currently use a header guard similar to
+ ACTION!="add|change",GOTO="xyz_end" should be updated to use
+ ACTION=="remove",GOTO="xyz_end" instead, so that the
+ properties/tags they add are also applied whenever "bind" (or
+ "unbind") is seen. (This is most important for all physical device
+ types — those for which "bind" and "unbind" are currently
+ generated, for all other device types this change is still
+ recommended but not as important — but certainly prepares for
+ future kernel uevent type additions).
+
+ • Similarly, all code monitoring devices that contains an 'if' branch
+ discerning the "add" + "change" uevent actions from all other
+ uevents actions (i.e. considering devices only relevant after "add"
+ or "change", and irrelevant on all other events) should be reworked
+ to instead negatively check for "remove" only (i.e. considering
+ devices relevant after all event types, except for "remove", which
+ invalidates the device). Note that this also means that devices
+ should be considered relevant on "unbind", even though conceptually
+ this — in some form — invalidates the device. Since the precise
+ effect of "unbind" is not generically defined, devices should be
+ considered relevant even after "unbind", however I/O errors
+ accessing the device should then be handled gracefully.
+
+ • Any code that uses device tags for deciding whether a device is
+ relevant or not most likely needs to be updated to use the new
+ udev_device_has_current_tag() API (or sd_device_has_current_tag()
+ in case sd-device is used), to check whether the tag is set at the
+ moment an uevent is seen (as opposed to the existing
+ udev_device_has_tag() API which checks if the tag ever existed on
+ the device, following the API concept redefinition explained
+ above).
+
+ We are very sorry for this breakage and the requirement to update
+ packages using these interfaces. We'd again like to underline that
+ this is not caused by systemd/udev changes, but result of a kernel
+ behaviour change.
+
+ * UPCOMING INCOMPATIBILITY: So far most downstream distribution
+ packages have not retriggered devices once the udev package (or any
+ auxiliary package installing additional udev rules) is updated. We
+ intend to work with major distributions to change this, so that
+ "udevadm trigger -c change" is issued on such upgrades, ensuring that
+ the updated ruleset is applied to the devices already discovered, so
+ that (asynchronously) after the upgrade completed the udev database
+ is consistent with the updated rule set. This means udev rules must
+ be ready to be retriggered with a "change" action any time, and
+ result in correct and complete udev database entries. While the
+ majority of udev rule files known to us currently get this right,
+ some don't. Specifically, there are udev rules files included in
+ various packages that only set udev properties on the "add" action,
+ but do not handle the "change" action. If a device matching those
+ rules is retriggered with the "change" action (as is intended here)
+ it would suddenly lose the relevant properties. This always has been
+ problematic, but as soon as all udev devices are triggered on relevant
+ package upgrades this will become particularly so. It is strongly
+ recommended to fix offending rules so that they can handle a "change"
+ action at any time, and acquire all necessary udev properties even
+ then. Or in other words: the header guard mentioned above
+ (ACTION=="remove",GOTO="xyz_end") is the correct approach to handle
+ this, as it makes sure rules are rerun on "change" correctly, and
+ accumulate the correct and complete set of udev properties. udev rule
+ definitions that cannot handle "change" events being triggered at
+ arbitrary times should be considered buggy.
+
+ * The MountAPIVFS= service file setting now defaults to on if
+ RootImage= and RootDirectory= are used, which means that with those
+ two settings /proc/, /sys/ and /dev/ are automatically properly set
+ up for services. Previous behaviour may be restored by explicitly
+ setting MountAPIVFS=off.
+
+ * Since PAM 1.2.0 (2015) configuration snippets may be placed in
+ /usr/lib/pam.d/ in addition to /etc/pam.d/. If a file exists in the
+ latter it takes precedence over the former, similar to how most of
+ systemd's own configuration is handled. Given that PAM stack
+ definitions are primarily put together by OS vendors/distributions
+ (though possibly overridden by users), this systemd release moves its
+ own PAM stack configuration for the "systemd-user" PAM service (i.e.
+ for the PAM session invoked by the per-user user@.service instance)
+ from /etc/pam.d/ to /usr/lib/pam.d/. We recommend moving all
+ packages' vendor versions of their PAM stack definitions from
+ /etc/pam.d/ to /usr/lib/pam.d/, but if such OS-wide migration is not
+ desired the location to which systemd installs its PAM stack
+ configuration may be changed via the -Dpamconfdir Meson option.
+
+ * The runtime dependencies on libqrencode, libpcre2, libidn/libidn2,
+ libpwquality and libcryptsetup have been changed to be based on
+ dlopen(): instead of regular dynamic library dependencies declared in
+ the binary ELF headers, these libraries are now loaded on demand
+ only, if they are available. If the libraries cannot be found the
+ relevant operations will fail gracefully, or a suitable fallback
+ logic is chosen. This is supposed to be useful for general purpose
+ distributions, as it allows minimizing the list of dependencies the
+ systemd packages pull in, permitting building of more minimal OS
+ images, while still making use of these "weak" dependencies should
+ they be installed. Since many package managers automatically
+ synthesize package dependencies from ELF shared library dependencies,
+ some additional manual packaging work has to be done now to replace
+ those (slightly downgraded from "required" to "recommended" or
+ whatever is conceptually suitable for the package manager). Note that
+ this change does not alter build-time behaviour: as before the
+ build-time dependencies have to be installed during build, even if
+ they now are optional during runtime.
+
+ * sd-event.h gained a new call sd_event_add_time_relative() for
+ installing timers relative to the current time. This is mostly a
+ convenience wrapper around the pre-existing sd_event_add_time() call
+ which installs absolute timers.
+
+ * sd-event event sources may now be placed in a new "exit-on-failure"
+ mode, which may be controlled via the new
+ sd_event_source_get_exit_on_failure() and
+ sd_event_source_set_exit_on_failure() functions. If enabled, any
+ failure returned by the event source handler functions will result in
+ exiting the event loop (unlike the default behaviour of just
+ disabling the event source but continuing with the event loop). This
+ feature is useful to set for all event sources that define "primary"
+ program behaviour (where failure should be fatal) in contrast to
+ "auxiliary" behaviour (where failure should remain local).
+
+ * Most event source types sd-event supports now accept a NULL handler
+ function, in which case the event loop is exited once the event
+ source is to be dispatched, using the userdata pointer — converted to
+ a signed integer — as exit code of the event loop. Previously this
+ was supported for IO and signal event sources already. Exit event
+ sources still do not support this (simply because it makes little
+ sense there, as the event loop is already exiting when they are
+ dispatched).
+
+ * A new per-unit setting RootImageOptions= has been added which allows
+ tweaking the mount options for any file system mounted as effect of
+ the RootImage= setting.
+
+ * Another new per-unit setting MountImages= has been added, that allows
+ mounting additional disk images into the file system tree accessible
+ to the service.
+
+ * Timer units gained a new FixedRandomDelay= boolean setting. If
+ enabled, the random delay configured with RandomizedDelaySec= is
+ selected in a way that is stable on a given system (though still
+ different for different units).
+
+ * Socket units gained a new setting Timestamping= that takes "us", "ns"
+ or "off". This controls the SO_TIMESTAMP/SO_TIMESTAMPNS socket
+ options.
+
+ * systemd-repart now generates JSON output when requested with the new
+ --json= switch.
+
+ * systemd-machined's OpenMachineShell() bus call will now pass
+ additional policy metadata data fields to the PolicyKit
+ authentication request.
+
+ * systemd-tmpfiles gained a new -E switch, which is equivalent to
+ --exclude-prefix=/dev --exclude-prefix=/proc --exclude=/run
+ --exclude=/sys. It's particularly useful in combination with --root=,
+ when operating on OS trees that do not have any of these four runtime
+ directories mounted, as this means no files below these subtrees are
+ created or modified, since those mount points should probably remain
+ empty.
+
+ * systemd-tmpfiles gained a new --image= switch which is like --root=,
+ but takes a disk image instead of a directory as argument. The
+ specified disk image is mounted inside a temporary mount namespace
+ and the tmpfiles.d/ drop-ins stored in the image are executed and
+ applied to the image. systemd-sysusers similarly gained a new
+ --image= switch, that allows the sysusers.d/ drop-ins stored in the
+ image to be applied onto the image.
+
+ * Similarly, the journalctl command also gained an --image= switch,
+ which is a quick one-step solution to look at the log data included
+ in OS disk images.
+
+ * journalctl's --output=cat option (which outputs the log content
+ without any metadata, just the pure text messages) will now make use
+ of terminal colors when run on a suitable terminal, similarly to the
+ other output modes.
+
+ * JSON group records now support a "description" string that may be
+ used to add a human-readable textual description to such groups. This
+ is supposed to match the user's GECOS field which traditionally
+ didn't have a counterpart for group records.
+
+ * The "systemd-dissect" tool that may be used to inspect OS disk images
+ and that was previously installed to /usr/lib/systemd/ has now been
+ moved to /usr/bin/, reflecting its updated status of an officially
+ supported tool with a stable interface. It gained support for a new
+ --mkdir switch which when combined with --mount has the effect of
+ creating the directory to mount the image to if it is missing
+ first. It also gained two new commands --copy-from and --copy-to for
+ copying files and directories in and out of an OS image without the
+ need to manually mount it. It also acquired support for a new option
+ --json= to generate JSON output when inspecting an OS image.
+
+ * The cgroup2 file system is now mounted with the
+ "memory_recursiveprot" mount option, supported since kernel 5.7. This
+ means that the MemoryLow= and MemoryMin= unit file settings now apply
+ recursively to whole subtrees.
+
+ * systemd-homed now defaults to using the btrfs file system — if
+ available — when creating home directories in LUKS volumes. This may
+ be changed with the DefaultFileSystemType= setting in homed.conf.
+ It's now the default file system in various major distributions and
+ has the major benefit for homed that it can be grown and shrunk while
+ mounted, unlike the other contenders ext4 and xfs, which can both be
+ grown online, but not shrunk (in fact xfs is the technically most
+ limited option here, as it cannot be shrunk at all).
+
+ * JSON user records managed by systemd-homed gained support for
+ "recovery keys". These are basically secondary passphrases that can
+ unlock user accounts/home directories. They are computer-generated
+ rather than user-chosen, and typically have greater entropy.
+ homectl's --recovery-key= option may be used to add a recovery key to
+ a user account. The generated recovery key is displayed as a QR code,
+ so that it can be scanned to be kept in a safe place. This feature is
+ particularly useful in combination with systemd-homed's support for
+ FIDO2 or PKCS#11 authentication, as a secure fallback in case the
+ security tokens are lost. Recovery keys may be entered wherever the
+ system asks for a password.
+
+ * systemd-homed now maintains a "dirty" flag for each LUKS encrypted
+ home directory which indicates that a home directory has not been
+ deactivated cleanly when offline. This flag is useful to identify
+ home directories for which the offline discard logic did not run when
+ offlining, and where it would be a good idea to log in again to catch
+ up.
+
+ * systemctl gained a new parameter --timestamp= which may be used to
+ change the style in which timestamps are output, i.e. whether to show
+ them in local timezone or UTC, or whether to show µs granularity.
+
+ * Alibaba's "pouch" container manager is now detected by
+ systemd-detect-virt, ConditionVirtualization= and similar
+ constructs. Similar, they now also recognize IBM PowerVM machine
+ virtualization.
+
+ * systemd-nspawn has been reworked to use the /run/host/incoming/ as
+ place to use for propagating external mounts into the
+ container. Similarly /run/host/notify is now used as the socket path
+ for container payloads to communicate with the container manager
+ using sd_notify(). The container manager now uses the
+ /run/host/inaccessible/ directory to place "inaccessible" file nodes
+ of all relevant types which may be used by the container payload as
+ bind mount source to over-mount inodes to make them inaccessible.
+ /run/host/container-manager will now be initialized with the same
+ string as the $container environment variable passed to the
+ container's PID 1. /run/host/container-uuid will be initialized with
+ the same string as $container_uuid. This means the /run/host/
+ hierarchy is now the primary way to make host resources available to
+ the container. The Container Interface documents these new files and
+ directories:
+
+ https://systemd.io/CONTAINER_INTERFACE
+
+ * Support for the "ConditionNull=" unit file condition has been
+ deprecated and undocumented for 6 years. systemd started to warn
+ about its use 1.5 years ago. It has now been removed entirely.
+
+ * sd-bus.h gained a new API call sd_bus_error_has_names(), which takes
+ a sd_bus_error struct and a list of error names, and checks if the
+ error matches one of these names. It's a convenience wrapper that is
+ useful in cases where multiple errors shall be handled the same way.
+
+ * A new system call filter list "@known" has been added, that contains
+ all system calls known at the time systemd was built.
+
+ * Behaviour of system call filter allow lists has changed slightly:
+ system calls that are contained in @known will result in EPERM by
+ default, while those not contained in it result in ENOSYS. This
+ should improve compatibility because known system calls will thus be
+ communicated as prohibited, while unknown (and thus newer ones) will
+ be communicated as not implemented, which hopefully has the greatest
+ chance of triggering the right fallback code paths in client
+ applications.
+
+ * "systemd-analyze syscall-filter" will now show two separate sections
+ at the bottom of the output: system calls known during systemd build
+ time but not included in any of the filter groups shown above, and
+ system calls defined on the local kernel but known during systemd
+ build time.
+
+ * If the $SYSTEMD_LOG_SECCOMP=1 environment variable is set for
+ systemd-nspawn all system call filter violations will be logged by
+ the kernel (audit). This is useful for tracking down system calls
+ invoked by container payloads that are prohibited by the container's
+ system call filter policy.
+
+ * If the $SYSTEMD_SECCOMP=0 environment variable is set for
+ systemd-nspawn (and other programs that use seccomp) all seccomp
+ filtering is turned off.
+
+ * Two new unit file settings ProtectProc= and ProcSubset= have been
+ added that expose the hidepid= and subset= mount options of procfs.
+ All processes of the unit will only see processes in /proc that are
+ are owned by the unit's user. This is an important new sandboxing
+ option that is recommended to be set on all system services. All
+ long-running system services that are included in systemd itself set
+ this option now. This option is only supported on kernel 5.8 and
+ above, since the hidepid= option supported on older kernels was not a
+ per-mount option but actually applied to the whole PID namespace.
+
+ * Socket units gained a new boolean setting FlushPending=. If enabled
+ all pending socket data/connections are flushed whenever the socket
+ unit enters the "listening" state, i.e. after the associated service
+ exited.
+
+ * The unit file setting NUMAMask= gained a new "all" value: when used,
+ all existing NUMA nodes are added to the NUMA mask.
+
+ * A new "credentials" logic has been added to system services. This is
+ a simple mechanism to pass privileged data to services in a safe and
+ secure way. It's supposed to be used to pass per-service secret data
+ such as passwords or cryptographic keys but also associated less
+ private information such as user names, certificates, and similar to
+ system services. Each credential is identified by a short user-chosen
+ name and may contain arbitrary binary data. Two new unit file
+ settings have been added: SetCredential= and LoadCredential=. The
+ former allows setting a credential to a literal string, the latter
+ sets a credential to the contents of a file (or data read from a
+ user-chosen AF_UNIX stream socket). Credentials are passed to the
+ service via a special credentials directory, one file for each
+ credential. The path to the credentials directory is passed in a new
+ $CREDENTIALS_DIRECTORY environment variable. Since the credentials
+ are passed in the file system they may be easily referenced in
+ ExecStart= command lines too, thus no explicit support for the
+ credentials logic in daemons is required (though ideally daemons
+ would look for the bits they need in $CREDENTIALS_DIRECTORY
+ themselves automatically, if set). The $CREDENTIALS_DIRECTORY is
+ backed by unswappable memory if privileges allow it, immutable if
+ privileges allow it, is accessible only to the service's UID, and is
+ automatically destroyed when the service stops.
+
+ * systemd-nspawn supports the same credentials logic. It can both
+ consume credentials passed to it via the aforementioned
+ $CREDENTIALS_DIRECTORY protocol as well as pass these credentials on
+ to its payload. The service manager/PID 1 has been updated to match
+ this: it can also accept credentials from the container manager that
+ invokes it (in fact: any process that invokes it), and passes them on
+ to its services. Thus, credentials can be propagated recursively down
+ the tree: from a system's service manager to a systemd-nspawn
+ service, to the service manager that runs as container payload and to
+ the service it runs below. Credentials may also be added on the
+ systemd-nspawn command line, using new --set-credential= and
+ --load-credential= command line switches that match the
+ aforementioned service settings.
+
+ * systemd-repart gained new settings Format=, Encrypt=, CopyFiles= in
+ the partition drop-ins which may be used to format/LUKS
+ encrypt/populate any created partitions. The partitions are
+ encrypted/formatted/populated before they are registered in the
+ partition table, so that they appear atomically: either the
+ partitions do not exist yet or they exist fully encrypted, formatted,
+ and populated — there is no time window where they are
+ "half-initialized". Thus the system is robust to abrupt shutdown: if
+ the tool is terminated half-way during its operations on next boot it
+ will start from the beginning.
+
+ * systemd-repart's --size= operation gained a new "auto" value. If
+ specified, and operating on a loopback file it is automatically sized
+ to the minimal size the size constraints permit. This is useful to
+ use "systemd-repart" as an image builder for minimally sized images.
+
+ * systemd-resolved now gained a third IPC interface for requesting name
+ resolution: besides D-Bus and local DNS to 127.0.0.53 a Varlink
+ interface is now supported. The nss-resolve NSS module has been
+ modified to use this new interface instead of D-Bus. Using Varlink
+ has a major benefit over D-Bus: it works without a broker service,
+ and thus already during earliest boot, before the dbus daemon has
+ been started. This means name resolution via systemd-resolved now
+ works at the same time systemd-networkd operates: from earliest boot
+ on, including in the initrd.
+
+ * systemd-resolved gained support for a new DNSStubListenerExtra=
+ configuration file setting which may be used to specify additional IP
+ addresses the built-in DNS stub shall listen on, in addition to the
+ main one on 127.0.0.53:53.
+
+ * Name lookups issued via systemd-resolved's D-Bus and Varlink
+ interfaces (and thus also via glibc NSS if nss-resolve is used) will
+ now honour a trailing dot in the hostname: if specified the search
+ path logic is turned off. Thus "resolvectl query foo." is now
+ equivalent to "resolvectl query --search=off foo.".
+
+ * systemd-resolved gained a new D-Bus property "ResolvConfMode" that
+ exposes how /etc/resolv.conf is currently managed: by resolved (and
+ in which mode if so) or another subsystem. "resolvctl" will display
+ this property in its status output.
+
+ * The resolv.conf snippets systemd-resolved provides will now set "."
+ as the search domain if no other search domain is known. This turns
+ off the derivation of an implicit search domain by nss-dns for the
+ hostname, when the hostname is set to an FQDN. This change is done to
+ make nss-dns using resolv.conf provided by systemd-resolved behave
+ more similarly to nss-resolve.
+
+ * systemd-tmpfiles' file "aging" logic (i.e. the automatic clean-up of
+ /tmp/ and /var/tmp/ based on file timestamps) now looks at the
+ "birth" time (btime) of a file in addition to the atime, mtime, and
+ ctime.
+
+ * systemd-analyze gained a new verb "capability" that lists all known
+ capabilities by the systemd build and by the kernel.
+
+ * If a file /usr/lib/clock-epoch exists, PID 1 will read its mtime and
+ advance the system clock to it at boot if it is noticed to be before
+ that time. Previously, PID 1 would only advance the time to an epoch
+ time that is set during build-time. With this new file OS builders
+ can change this epoch timestamp on individual OS images without
+ having to rebuild systemd.
+
+ * systemd-logind will now listen to the KEY_RESTART key from the Linux
+ input layer and reboot the system if it is pressed, similarly to how
+ it already handles KEY_POWER, KEY_SUSPEND or KEY_SLEEP. KEY_RESTART
+ was originally defined in the Multimedia context (to restart playback
+ of a song or film), but is now primarily used in various embedded
+ devices for "Reboot" buttons. Accordingly, systemd-logind will now
+ honour it as such. This may configured in more detail via the new
+ HandleRebootKey= and RebootKeyIgnoreInhibited=.
+
+ * systemd-nspawn/systemd-machined will now reconstruct hardlinks when
+ copying OS trees, for example in "systemd-nspawn --ephemeral",
+ "systemd-nspawn --template=", "machinectl clone" and similar. This is
+ useful when operating with OSTree images, which use hardlinks heavily
+ throughout, and where such copies previously resulting in "exploding"
+ hardlinks.
+
+ * systemd-nspawn's --console= setting gained support for a new
+ "autopipe" value, which is identical to "interactive" when invoked on
+ a TTY, and "pipe" otherwise.
+
+ * systemd-networkd's .network files gained support for explicitly
+ configuring the multicast membership entries of bridge devices in the
+ [BridgeMDB] section. It also gained support for the PIE queuing
+ discipline in the [FlowQueuePIE] sections.
+
+ * systemd-networkd's .netdev files may now be used to create "BareUDP"
+ tunnels, configured in the new [BareUDP] setting.
+
+ * systemd-networkd's Gateway= setting in .network files now accepts the
+ special values "_dhcp4" and "_ipv6ra" to configure additional,
+ locally defined, explicit routes to the gateway acquired via DHCP or
+ IPv6 Router Advertisements. The old setting "_dhcp" is deprecated,
+ but still accepted for backwards compatibility.
+
+ * systemd-networkd's [IPv6PrefixDelegation] section and
+ IPv6PrefixDelegation= options have been renamed as [IPv6SendRA] and
+ IPv6SendRA= (the old names are still accepted for backwards
+ compatibility).
+
+ * systemd-networkd's .network files gained the DHCPv6PrefixDelegation=
+ boolean setting in [Network] section. If enabled, the delegated prefix
+ gained by another link will be configured, and an address within the
+ prefix will be assigned.
+
+ * systemd-networkd's .network files gained the Announce= boolean setting
+ in [DHCPv6PrefixDelegation] section. When enabled, the delegated
+ prefix will be announced through IPv6 router advertisement (IPv6 RA).
+ The setting is enabled by default.
+
+ * VXLAN tunnels may now be marked as independent of any underlying
+ network interface via the new Independent= boolean setting.
+
+ * systemctl gained support for two new verbs: "service-log-level" and
+ "service-log-target" may be used on services that implement the
+ generic org.freedesktop.LogControl1 D-Bus interface to dynamically
+ adjust the log level and target. All of systemd's long-running
+ services support this now, but ideally all system services would
+ implement this interface to make the system more uniformly
+ debuggable.
+
+ * The SystemCallErrorNumber= unit file setting now accepts the new
+ "kill" and "log" actions, in addition to arbitrary error number
+ specifications as before. If "kill" the processes are killed on the
+ event, if "log" the offending system call is audit logged.
+
+ * A new SystemCallLog= unit file setting has been added that accepts a
+ list of system calls that shall be logged about (audit).
+
+ * The OS image dissection logic (as used by RootImage= in unit files or
+ systemd-nspawn's --image= switch) has gained support for identifying
+ and mounting explicit /usr/ partitions, which are now defined in the
+ discoverable partition specification. This should be useful for
+ environments where the root file system is
+ generated/formatted/populated dynamically on first boot and combined
+ with an immutable /usr/ tree that is supplied by the vendor.
+
+ * In the final phase of shutdown, within the systemd-shutdown binary
+ we'll now try to detach MD devices (i.e software RAID) in addition to
+ loopback block devices and DM devices as before. This is supposed to
+ be a safety net only, in order to increase robustness if things go
+ wrong. Storage subsystems are expected to properly detach their
+ storage volumes during regular shutdown already (or in case of
+ storage backing the root file system: in the initrd hook we return to
+ later).
+
+ * If the SYSTEMD_LOG_TID environment variable is set all systemd tools
+ will now log the thread ID in their log output. This is useful when
+ working with heavily threaded programs.
+
+ * If the SYSTEMD_RDRAND environment variable is set to "0", systemd will
+ not use the RDRAND CPU instruction. This is useful in environments
+ such as replay debuggers where non-deterministic behaviour is not
+ desirable.
+
+ * The autopaging logic in systemd's various tools (such as systemctl)
+ has been updated to turn on "secure" mode in "less"
+ (i.e. $LESSECURE=1) if execution in a "sudo" environment is
+ detected. This disables invoking external programs from the pager,
+ via the pipe logic. This behaviour may be overridden via the new
+ $SYSTEMD_PAGERSECURE environment variable.
+
+ * Units which have resource limits (.service, .mount, .swap, .slice,
+ .socket, and .slice) gained new configuration settings
+ ManagedOOMSwap=, ManagedOOMMemoryPressure=, and
+ ManagedOOMMemoryPressureLimitPercent= that specify resource pressure
+ limits and optional action taken by systemd-oomd.
+
+ * A new service systemd-oomd has been added. It monitors resource
+ contention for selected parts of the unit hierarchy using the PSI
+ information reported by the kernel, and kills processes when memory
+ or swap pressure is above configured limits. This service is only
+ enabled by default in developer mode (see below) and should be
+ considered a preview in this release. Behaviour details and option
+ names are subject to change without the usual backwards-compatibility
+ promises.
+
+ * A new helper oomctl has been added to introspect systemd-oomd state.
+ It is only enabled by default in developer mode and should be
+ considered a preview without the usual backwards-compatibility
+ promises.
+
+ * New meson option -Dcompat-mutable-uid-boundaries= has been added. If
+ enabled, systemd reads the system UID boundaries from /etc/login.defs
+ at runtime, instead of using the built-in values selected during
+ build. This is an option to improve compatibility for upgrades from
+ old systems. It's strongly recommended not to make use of this
+ functionality on new systems (or even enable it during build), as it
+ makes something runtime-configurable that is mostly an implementation
+ detail of the OS, and permits avoidable differences in deployments
+ that create all kinds of problems in the long run.
+
+ * New meson option '-Dmode=developer|release' has been added. When
+ 'developer', additional checks and features are enabled that are
+ relevant during upstream development, e.g. verification that
+ semi-automatically-generated documentation has been properly updated
+ following API changes. Those checks are considered hints for
+ developers and are not actionable in downstream builds. In addition,
+ extra features that are not ready for general consumption may be
+ enabled in developer mode. It is thus recommended to set
+ '-Dmode=release' in end-user and distro builds.
+
+ * systemd-cryptsetup gained support for processing detached LUKS
+ headers specified on the kernel command line via the header=
+ parameter of the luks.options= kernel command line option. The same
+ device/path syntax as for key files is supported for header files
+ like this.
+
+ * The "net_id" built-in of udev has been updated to ignore ACPI _SUN
+ slot index data for devices that are connected through a PCI bridge
+ where the _SUN index is associated with the bridge instead of the
+ network device itself. Previously this would create ambiguous device
+ naming if multiple network interfaces were connected to the same PCI
+ bridge. Since this is a naming scheme incompatibility on systems that
+ possess hardware like this it has been introduced as new naming
+ scheme "v247". The previous scheme can be selected via the
+ "net.naming-scheme=v245" kernel command line parameter.
+
+ * ConditionFirstBoot= semantics have been modified to be safe towards
+ abnormal system power-off during first boot. Specifically, the
+ "systemd-machine-id-commit.service" service now acts as boot
+ milestone indicating when the first boot process is sufficiently
+ complete in order to not consider the next following boot also a
+ first boot. If the system is reset before this unit is reached the
+ first time, the next boot will still be considered a first boot; once
+ it has been reached, no further boots will be considered a first
+ boot. The "first-boot-complete.target" unit now acts as official hook
+ point to order against this. If a service shall be run on every boot
+ until the first boot fully succeeds it may thus be ordered before
+ this target unit (and pull it in) and carry ConditionFirstBoot=
+ appropriately.
+
+ * bootctl's set-default and set-oneshot commands now accept the three
+ special strings "@default", "@oneshot", "@current" in place of a boot
+ entry id. These strings are resolved to the current default and
+ oneshot boot loader entry, as well as the currently booted one. Thus
+ a command "bootctl set-default @current" may be used to make the
+ currently boot menu item the new default for all subsequent boots.
+
+ * "systemctl edit" has been updated to show the original effective unit
+ contents in commented form in the text editor.
+
+ * Units in user mode are now segregated into three new slices:
+ session.slice (units that form the core of graphical session),
+ app.slice ("normal" user applications), and background.slice
+ (low-priority tasks). Unless otherwise configured, user units are
+ placed in app.slice. The plan is to add resource limits and
+ protections for the different slices in the future.
+
+ * New GPT partition types for RISCV32/64 for the root and /usr
+ partitions, and their associated Verity partitions have been defined,
+ and are now understood by systemd-gpt-auto-generator, and the OS
+ image dissection logic.
+
+ Contributions from: Adolfo Jayme Barrientos, afg, Alec Moskvin, Alyssa
+ Ross, Amitanand Chikorde, Andrew Hangsleben, Anita Zhang, Ansgar
+ Burchardt, Arian van Putten, Aurelien Jarno, Axel Rasmussen, bauen1,
+ Beniamino Galvani, Benjamin Berg, Bjørn Mork, brainrom, Chandradeep
+ Dey, Charles Lee, Chris Down, Christian Göttsche, Christof Efkemann,
+ Christoph Ruegge, Clemens Gruber, Daan De Meyer, Daniele Medri, Daniel
+ Mack, Daniel Rusek, Dan Streetman, David Tardon, Dimitri John Ledkov,
+ Dmitry Borodaenko, Elias Probst, Elisei Roca, ErrantSpore, Etienne
+ Doms, Fabrice Fontaine, fangxiuning, Felix Riemann, Florian Klink,
+ Franck Bui, Frantisek Sumsal, fwSmit, George Rawlinson, germanztz,
+ Gibeom Gwon, Glen Whitney, Gogo Gogsi, Göran Uddeborg, Grant Mathews,
+ Hans de Goede, Hans Ulrich Niedermann, Haochen Tong, Harald Seiler,
+ huangyong, Hubert Kario, igo95862, Ikey Doherty, Insun Pyo, Jan Chren,
+ Jan Schlüter, Jérémy Nouhaud, Jian-Hong Pan, Joerg Behrmann, Jonathan
+ Lebon, Jörg Thalheim, Josh Brobst, Juergen Hoetzel, Julien Humbert,
+ Kai-Chuan Hsieh, Kairui Song, Kamil Dudka, Kir Kolyshkin, Kristijan
+ Gjoshev, Kyle Huey, Kyle Russell, Lee Whalen, Lennart Poettering,
+ lichangze, Luca Boccassi, Lucas Werkmeister, Luca Weiss, Marc
+ Kleine-Budde, Marco Wang, Martin Wilck, Marti Raudsepp, masmullin2000,
+ Máté Pozsgay, Matt Fenwick, Michael Biebl, Michael Scherer, Michal
+ Koutný, Michal Sekletár, Michal Suchanek, Mikael Szreder, Milo
+ Casagrande, mirabilos, Mitsuha_QuQ, mog422, Muhammet Kara, Nazar
+ Vinnichuk, Nicholas Narsing, Nicolas Fella, Njibhu, nl6720, Oğuz Ersen,
+ Olivier Le Moal, Ondrej Kozina, onlybugreports, Pass Automated Testing
+ Suite, Pat Coulthard, Pavel Sapezhko, Pedro Ruiz, perry_yuan, Peter
+ Hutterer, Phaedrus Leeds, PhoenixDiscord, Piotr Drąg, Plan C,
+ Purushottam choudhary, Rasmus Villemoes, Renaud Métrich, Robert Marko,
+ Roman Beranek, Ronan Pigott, Roy Chen (陳彥廷), RussianNeuroMancer,
+ Samanta Navarro, Samuel BF, scootergrisen, Sorin Ionescu, Steve Dodd,
+ Susant Sahani, Timo Rothenpieler, Tobias Hunger, Tobias Kaufmann, Topi
+ Miettinen, vanou, Vito Caputo, Weblate, Wen Yang, Whired Planck,
+ williamvds, Yu, Li-Yu, Yuri Chornoivan, Yu Watanabe, Zbigniew
+ Jędrzejewski-Szmek, Zmicer Turok, Дамјан Георгиевски
+
+ – Warsaw, 2020-11-26
+
+CHANGES WITH 246:
+
+ * The service manager gained basic support for cgroup v2 freezer. Units
+ can now be suspended or resumed either using new systemctl verbs,
+ freeze and thaw respectively, or via D-Bus.
+
+ * PID 1 may now automatically load pre-compiled AppArmor policies from
+ /etc/apparmor/earlypolicy during early boot.
+
+ * The CPUAffinity= setting in service unit files now supports a new
+ special value "numa" that causes the CPU affinity masked to be set
+ based on the NUMA mask.
+
+ * systemd will now log about all left-over processes remaining in a
+ unit when the unit is stopped. It will now warn about services using
+ KillMode=none, as this is generally an unsafe thing to make use of.
+
+ * Two new unit file settings
+ ConditionPathIsEncrypted=/AssertPathIsEncrypted= have been
+ added. They may be used to check whether a specific file system path
+ resides on a block device that is encrypted on the block level
+ (i.e. using dm-crypt/LUKS).
+
+ * Another pair of new settings ConditionEnvironment=/AssertEnvironment=
+ has been added that may be used for simple environment checks. This
+ is particularly useful when passing in environment variables from a
+ container manager (or from PAM in case of the systemd --user
+ instance).
+
+ * .service unit files now accept a new setting CoredumpFilter= which
+ allows configuration of the memory sections coredumps of the
+ service's processes shall include.
+
+ * .mount units gained a new ReadWriteOnly= boolean option. If set
+ it will not be attempted to mount a file system read-only if mounting
+ in read-write mode doesn't succeed. An option x-systemd.rw-only is
+ available in /etc/fstab to control the same.
+
+ * .socket units gained a new boolean setting PassPacketInfo=. If
+ enabled, the kernel will attach additional per-packet metadata to all
+ packets read from the socket, as an ancillary message. This controls
+ the IP_PKTINFO, IPV6_RECVPKTINFO, NETLINK_PKTINFO socket options,
+ depending on socket type.
+
+ * .service units gained a new setting RootHash= which may be used to
+ specify the root hash for verity enabled disk images which are
+ specified in RootImage=. RootVerity= may be used to specify a path to
+ the Verity data matching a RootImage= file system. (The latter is
+ only useful for images that do not contain the Verity data embedded
+ into the same image that carries a GPT partition table following the
+ Discoverable Partition Specification). Similarly, systemd-nspawn
+ gained a new switch --verity-data= that takes a path to a file with
+ the verity data of the disk image supplied in --image=, if the image
+ doesn't contain the verity data itself.
+
+ * .service units gained a new setting RootHashSignature= which takes
+ either a base64 encoded PKCS#7 signature of the root hash specified
+ with RootHash=, or a path to a file to read the signature from. This
+ allows validation of the root hash against public keys available in
+ the kernel keyring, and is only supported on recent kernels
+ (>= 5.4)/libcryptsetup (>= 2.30). A similar switch has been added to
+ systemd-nspawn and systemd-dissect (--root-hash-sig=). Support for
+ this mechanism has also been added to systemd-veritysetup.
+
+ * .service unit files gained two new options
+ TimeoutStartFailureMode=/TimeoutStopFailureMode= that may be used to
+ tune behaviour if a start or stop timeout is hit, i.e. whether to
+ terminate the service with SIGTERM, SIGABRT or SIGKILL.
+
+ * Most options in systemd that accept hexadecimal values prefixed with
+ 0x in additional to the usual decimal notation now also support octal
+ notation when the 0o prefix is used and binary notation if the 0b
+ prefix is used.
+
+ * Various command line parameters and configuration file settings that
+ configure key or certificate files now optionally take paths to
+ AF_UNIX sockets in the file system. If configured that way a stream
+ connection is made to the socket and the required data read from
+ it. This is a simple and natural extension to the existing regular
+ file logic, and permits other software to provide keys or
+ certificates via simple IPC services, for example when unencrypted
+ storage on disk is not desired. Specifically, systemd-networkd's
+ Wireguard and MACSEC key file settings as well as
+ systemd-journal-gatewayd's and systemd-journal-remote's PEM
+ key/certificate parameters support this now.
+
+ * Unit files, tmpfiles.d/ snippets, sysusers.d/ snippets and other
+ configuration files that support specifier expansion learnt six new
+ specifiers: %a resolves to the current architecture, %o/%w/%B/%W
+ resolve to the various ID fields from /etc/os-release, %l resolves to
+ the "short" hostname of the system, i.e. the hostname configured in
+ the kernel truncated at the first dot.
+
+ * Support for the .include syntax in unit files has been removed. The
+ concept has been obsolete for 6 years and we started warning about
+ its pending removal 2 years ago (also see NEWS file below). It's
+ finally gone now.
+
+ * StandardError= and StandardOutput= in unit files no longer support
+ the "syslog" and "syslog-console" switches. They were long removed
+ from the documentation, but will now result in warnings when used,
+ and be converted to "journal" and "journal+console" automatically.
+
+ * If the service setting User= is set to the "nobody" user, a warning
+ message is now written to the logs (but the value is nonetheless
+ accepted). Setting User=nobody is unsafe, since the primary purpose
+ of the "nobody" user is to own all files whose owner cannot be mapped
+ locally. It's in particular used by the NFS subsystem and in user
+ namespacing. By running a service under this user's UID it might get
+ read and even write access to all these otherwise unmappable files,
+ which is quite likely a major security problem.
+
+ * tmpfs mounts automatically created by systemd (/tmp, /run, /dev/shm,
+ and others) now have a size and inode limits applied (50% of RAM for
+ /tmp and /dev/shm, 10% of RAM for other mounts, etc.). Please note
+ that the implicit kernel default is 50% too, so there is no change
+ in the size limit for /tmp and /dev/shm.
+
+ * nss-mymachines lost support for resolution of users and groups, and
+ now only does resolution of hostnames. This functionality is now
+ provided by nss-systemd. Thus, the 'mymachines' entry should be
+ removed from the 'passwd:' and 'group:' lines in /etc/nsswitch.conf
+ (and 'systemd' added if it is not already there).
+
+ * A new kernel command line option systemd.hostname= has been added
+ that allows controlling the hostname that is initialized early during
+ boot.
+
+ * A kernel command line option "udev.blockdev_read_only" has been
+ added. If specified all hardware block devices that show up are
+ immediately marked as read-only by udev. This option is useful for
+ making sure that a specific boot under no circumstances modifies data
+ on disk. Use "blockdev --setrw" to undo the effect of this, per
+ device.
+
+ * A new boolean kernel command line option systemd.swap= has been
+ added, which may be used to turn off automatic activation of swap
+ devices listed in /etc/fstab.
+
+ * New kernel command line options systemd.condition-needs-update= and
+ systemd.condition-first-boot= have been added, which override the
+ result of the ConditionNeedsUpdate= and ConditionFirstBoot=
+ conditions.
+
+ * A new kernel command line option systemd.clock-usec= has been added
+ that allows setting the system clock to the specified time in µs
+ since Jan 1st, 1970 early during boot. This is in particular useful
+ in order to make test cases more reliable.
+
+ * The fs.suid_dumpable sysctl is set to 2 / "suidsafe". This allows
+ systemd-coredump to save core files for suid processes. When saving
+ the core file, systemd-coredump will use the effective uid and gid of
+ the process that faulted.
+
+ * The /sys/module/kernel/parameters/crash_kexec_post_notifiers file is
+ now automatically set to "Y" at boot, in order to enable pstore
+ generation for collection with systemd-pstore.
+
+ * We provide a set of udev rules to enable auto-suspend on PCI and USB
+ devices that were tested to correctly support it. Previously, this
+ was distributed as a set of udev rules, but has now been replaced by
+ by a set of hwdb entries (and a much shorter udev rule to take action
+ if the device modalias matches one of the new hwdb entries).
+
+ As before, entries are periodically imported from the database
+ maintained by the ChromiumOS project. If you have a device that
+ supports auto-suspend correctly and where it should be enabled by
+ default, please submit a patch that adds it to the database (see
+ /usr/lib/udev/hwdb.d/60-autosuspend.hwdb).
+
+ * systemd-udevd gained the new configuration option timeout_signal= as well
+ as a corresponding kernel command line option udev.timeout_signal=.
+ The option can be used to configure the UNIX signal that the main
+ daemon sends to the worker processes on timeout. Setting the signal
+ to SIGABRT is useful for debugging.
+
+ * .link files managed by systemd-udevd gained options RxFlowControl=,
+ TxFlowControl=, AutoNegotiationFlowControl= in the [Link] section, in
+ order to configure various flow control parameters. They also gained
+ RxMiniBufferSize= and RxJumboBufferSize= in order to configure jumbo
+ frame ring buffer sizes.
+
+ * networkd.conf gained a new boolean setting ManageForeignRoutes=. If
+ enabled systemd-networkd manages all routes configured by other tools.
+
+ * .network files managed by systemd-networkd gained a new section
+ [SR-IOV], in order to configure SR-IOV capable network devices.
+
+ * systemd-networkd's [IPv6Prefix] section in .network files gained a
+ new boolean setting Assign=. If enabled an address from the prefix is
+ automatically assigned to the interface.
+
+ * systemd-networkd gained a new section [DHCPv6PrefixDelegation] which
+ controls delegated prefixes assigned by DHCPv6 client. The section
+ has three settings: SubnetID=, Assign=, and Token=. The setting
+ SubnetID= allows explicit configuration of the preferred subnet that
+ systemd-networkd's Prefix Delegation logic assigns to interfaces. If
+ Assign= is enabled (which is the default) an address from any acquired
+ delegated prefix is automatically chosen and assigned to the
+ interface. The setting Token= specifies an optional address generation
+ mode for Assign=.
+
+ * systemd-networkd's [Network] section gained a new setting
+ IPv4AcceptLocal=. If enabled the interface accepts packets with local
+ source addresses.
+
+ * systemd-networkd gained support for configuring the HTB queuing
+ discipline in the [HierarchyTokenBucket] and
+ [HierarchyTokenBucketClass] sections. Similar the "pfifo" qdisc may
+ be configured in the [PFIFO] section, "GRED" in
+ [GenericRandomEarlyDetection], "SFB" in [StochasticFairBlue], "cake"
+ in [CAKE], "PIE" in [PIE], "DRR" in [DeficitRoundRobinScheduler] and
+ [DeficitRoundRobinSchedulerClass], "BFIFO" in [BFIFO],
+ "PFIFOHeadDrop" in [PFIFOHeadDrop], "PFIFOFast" in [PFIFOFast], "HHF"
+ in [HeavyHitterFilter], "ETS" in [EnhancedTransmissionSelection] and
+ "QFQ" in [QuickFairQueueing] and [QuickFairQueueingClass].
+
+ * systemd-networkd gained support for a new Termination= setting in the
+ [CAN] section for configuring the termination resistor. It also
+ gained a new ListenOnly= setting for controlling whether to only
+ listen on CAN interfaces, without interfering with traffic otherwise
+ (which is useful for debugging/monitoring CAN network
+ traffic). DataBitRate=, DataSamplePoint=, FDMode=, FDNonISO= have
+ been added to configure various CAN-FD aspects.
+
+ * systemd-networkd's [DHCPv6] section gained a new option WithoutRA=.
+ When enabled, DHCPv6 will be attempted right-away without requiring an
+ Router Advertisement packet suggesting it first (i.e. without the 'M'
+ or 'O' flags set). The [IPv6AcceptRA] section gained a boolean option
+ DHCPv6Client= that may be used to turn off the DHCPv6 client even if
+ the RA packets suggest it.
+
+ * systemd-networkd's [DHCPv4] section gained a new setting UseGateway=
+ which may be used to turn off use of the gateway information provided
+ by the DHCP lease. A new FallbackLeaseLifetimeSec= setting may be
+ used to configure how to process leases that lack a lifetime option.
+
+ * systemd-networkd's [DHCPv4] and [DHCPServer] sections gained a new
+ setting SendVendorOption= allowing configuration of additional vendor
+ options to send in the DHCP requests/responses. The [DHCPv6] section
+ gained a new SendOption= setting for sending arbitrary DHCP
+ options. RequestOptions= has been added to request arbitrary options
+ from the server. UserClass= has been added to set the DHCP user class
+ field.
+
+ * systemd-networkd's [DHCPServer] section gained a new set of options
+ EmitPOP3=/POP3=, EmitSMTP=/SMTP=, EmitLPR=/LPR= for including server
+ information about these three protocols in the DHCP lease. It also
+ gained support for including "MUD" URLs ("Manufacturer Usage
+ Description"). Support for "MUD" URLs was also added to the LLDP
+ stack, configurable in the [LLDP] section in .network files.
+
+ * The Mode= settings in [MACVLAN] and [MACVTAP] now support 'source'
+ mode. Also, the sections now support a new setting SourceMACAddress=.
+
+ * systemd-networkd's .netdev files now support a new setting
+ VLANProtocol= in the [Bridge] section that allows configuration of
+ the VLAN protocol to use.
+
+ * systemd-networkd supports a new Group= setting in the [Link] section
+ of the .network files, to control the link group.
+
+ * systemd-networkd's [Network] section gained a new
+ IPv6LinkLocalAddressGenerationMode= setting, which specifies how IPv6
+ link local address is generated.
+
+ * A new default .network file is now shipped that matches TUN/TAP
+ devices that begin with "vt-" in their name. Such interfaces will
+ have IP routing onto the host links set up automatically. This is
+ supposed to be used by VM managers to trivially acquire a network
+ interface which is fully set up for host communication, simply by
+ carefully picking an interface name to use.
+
+ * systemd-networkd's [DHCPv6] section gained a new setting RouteMetric=
+ which sets the route priority for routes specified by the DHCP server.
+
+ * systemd-networkd's [DHCPv6] section gained a new setting VendorClass=
+ which configures the vendor class information sent to DHCP server.
+
+ * The BlackList= settings in .network files' [DHCPv4] and
+ [IPv6AcceptRA] sections have been renamed DenyList=. The old names
+ are still understood to provide compatibility.
+
+ * networkctl gained the new "forcerenew" command for forcing all DHCP
+ server clients to renew their lease. The interface "status" output
+ will now show numerous additional fields of information about an
+ interface. There are new "up" and "down" commands to bring specific
+ interfaces up or down.
+
+ * systemd-resolved's DNS= configuration option now optionally accepts a
+ port number (after ":") and a host name (after "#"). When the host
+ name is specified, the DNS-over-TLS certificate is validated to match
+ the specified hostname. Additionally, in case of IPv6 addresses, an
+ interface may be specified (after "%").
+
+ * systemd-resolved may be configured to forward single-label DNS names.
+ This is not standard-conformant, but may make sense in setups where
+ public DNS servers are not used.
+
+ * systemd-resolved's DNS-over-TLS support gained SNI validation.
+
+ * systemd-nspawn's --resolv-conf= switch gained a number of new
+ supported values. Specifically, options starting with "replace-" are
+ like those prefixed "copy-" but replace any existing resolv.conf
+ file. And options ending in "-uplink" and "-stub" can now be used to
+ propagate other flavours of resolv.conf into the container (as
+ defined by systemd-resolved).
+
+ * The various programs included in systemd can now optionally output
+ their log messages on stderr prefixed with a timestamp, controlled by
+ the $SYSTEMD_LOG_TIME environment variable.
+
+ * systemctl gained a new "-P" switch that is a shortcut for "--value
+ --property=…".
+
+ * "systemctl list-units" and "systemctl list-machines" no longer hide
+ their first output column with --no-legend. To hide the first column,
+ use --plain.
+
+ * "systemctl reboot" takes the option "--reboot-argument=".
+ The optional positional argument to "systemctl reboot" is now
+ being deprecated in favor of this option.
+
+ * systemd-run gained a new switch --slice-inherit. If specified the
+ unit it generates is placed in the same slice as the systemd-run
+ process itself.
+
+ * systemd-journald gained support for zstd compression of large fields
+ in journal files. The hash tables in journal files have been hardened
+ against hash collisions. This is an incompatible change and means
+ that journal files created with new systemd versions are not readable
+ with old versions. If the $SYSTEMD_JOURNAL_KEYED_HASH boolean
+ environment variable for systemd-journald.service is set to 0 this
+ new hardening functionality may be turned off, so that generated
+ journal files remain compatible with older journalctl
+ implementations.
+
+ * journalctl will now include a clickable link in the default output for
+ each log message for which a URL with further documentation is
+ known. This is only supported on terminal emulators that support
+ clickable hyperlinks, and is turned off if a pager is used (since
+ "less" still doesn't support hyperlinks,
+ unfortunately). Documentation URLs may be included in log messages
+ either by including a DOCUMENTATION= journal field in it, or by
+ associating a journal message catalog entry with the log message's
+ MESSAGE_ID, which then carries a "Documentation:" tag.
+
+ * journald.conf gained a new boolean setting Audit= that may be used to
+ control whether systemd-journald will enable audit during
+ initialization.
+
+ * when systemd-journald's log stream is broken up into multiple lines
+ because the PID of the sender changed this is indicated in the
+ generated log records via the _LINE_BREAK=pid-change field.
+
+ * journalctl's "-o cat" output mode will now show one or more journal
+ fields specified with --output-fields= instead of unconditionally
+ MESSAGE=. This is useful to retrieve a very specific set of fields
+ without any decoration.
+
+ * The sd-journal.h API gained two new functions:
+ sd_journal_enumerate_available_unique() and
+ sd_journal_enumerate_available_data() that operate like their
+ counterparts that lack the _available_ in the name, but skip items
+ that cannot be read and processed by the local implementation
+ (i.e. are compressed in an unsupported format or such),
+
+ * coredumpctl gained a new --file= switch, matching the same one in
+ journalctl: a specific journal file may be specified to read the
+ coredump data from.
+
+ * coredumps collected by systemd-coredump may now be compressed using
+ the zstd algorithm.
+
+ * systemd-binfmt gained a new switch --unregister for unregistering all
+ registered entries at once. This is now invoked automatically at
+ shutdown, so that binary formats registered with the "F" flag will
+ not block clean file system unmounting.
+
+ * systemd-notify's --pid= switch gained new values: "parent", "self",
+ "auto" for controlling which PID to send to the service manager: the
+ systemd-notify process' PID, or the one of the process invoking it.
+
+ * systemd-logind's Session bus object learnt a new method call
+ SetType() for temporarily updating the session type of an already
+ allocated session. This is useful for upgrading tty sessions to
+ graphical ones once a compositor is invoked.
+
+ * systemd-socket-proxy gained a new switch --exit-idle-time= for
+ configuring an exit-on-idle time.
+
+ * systemd-repart's --empty= setting gained a new value "create". If
+ specified a new empty regular disk image file is created under the
+ specified name. Its size may be specified with the new --size=
+ option. The latter is also supported without the "create" mode, in
+ order to grow existing disk image files to the specified size. These
+ two new options are useful when creating or manipulating disk images
+ instead of operating on actual block devices.
+
+ * systemd-repart drop-ins now support a new UUID= setting to control
+ the UUID to assign to a newly created partition.
+
+ * systemd-repart's SizeMin= per-partition parameter now defaults to 10M
+ instead of 0.
+
+ * systemd-repart's Label= setting now support the usual, simple
+ specifier expansion.
+
+ * systemd-homed's LUKS backend gained the ability to discard empty file
+ system blocks automatically when the user logs out. This is enabled
+ by default to ensure that home directories take minimal space when
+ logged out but get full size guarantees when logged in. This may be
+ controlled with the new --luks-offline-discard= switch to homectl.
+
+ * If systemd-homed detects that /home/ is encrypted as a whole it will
+ now default to the directory or subvolume backends instead of the
+ LUKS backend, in order to avoid double encryption. The default
+ storage and file system may now be configured explicitly, too, via
+ the new /etc/systemd/homed.conf configuration file.
+
+ * systemd-homed now supports unlocking home directories with FIDO2
+ security tokens that support the 'hmac-secret' extension, in addition
+ to the existing support for PKCS#11 security token unlocking
+ support. Note that many recent hardware security tokens support both
+ interfaces. The FIDO2 support is accessible via homectl's
+ --fido2-device= option.
+
+ * homectl's --pkcs11-uri= setting now accepts two special parameters:
+ if "auto" is specified and only one suitable PKCS#11 security token
+ is plugged in, its URL is automatically determined and enrolled for
+ unlocking the home directory. If "list" is specified a brief table of
+ suitable PKCS#11 security tokens is shown. Similar, the new
+ --fido2-device= option also supports these two special values, for
+ automatically selecting and listing suitable FIDO2 devices.
+
+ * The /etc/crypttab tmp option now optionally takes an argument
+ selecting the file system to use. Moreover, the default is now
+ changed from ext2 to ext4.
+
+ * There's a new /etc/crypttab option "keyfile-erase". If specified the
+ key file listed in the same line is removed after use, regardless if
+ volume activation was successful or not. This is useful if the key
+ file is only acquired transiently at runtime and shall be erased
+ before the system continues to boot.
+
+ * There's also a new /etc/crypttab option "try-empty-password". If
+ specified, before asking the user for a password it is attempted to
+ unlock the volume with an empty password. This is useful for
+ installing encrypted images whose password shall be set on first boot
+ instead of at installation time.
+
+ * systemd-cryptsetup will now attempt to load the keys to unlock
+ volumes with automatically from files in
+ /etc/cryptsetup-keys.d/<volume>.key and
+ /run/cryptsetup-keys.d/<volume>.key, if any of these files exist.
+
+ * systemd-cryptsetup may now activate Microsoft BitLocker volumes via
+ /etc/crypttab, during boot.
+
+ * logind.conf gained a new RuntimeDirectoryInodesMax= setting to
+ control the inode limit for the per-user $XDG_RUNTIME_DIR tmpfs
+ instance.
+
+ * A new generator systemd-xdg-autostart-generator has been added. It
+ generates systemd unit files from XDG autostart .desktop files, and
+ may be used to let the systemd user instance manage services that are
+ started automatically as part of the desktop session.
+
+ * "bootctl" gained a new verb "reboot-to-firmware" that may be used
+ to query and change the firmware's 'Reboot Into Firmware Interface'
+ setup flag.
+
+ * systemd-firstboot gained a new switch --kernel-command-line= that may
+ be used to initialize the /etc/kernel/cmdline file of the image. It
+ also gained a new switch --root-password-hashed= which is like
+ --root-password= but accepts a pre-hashed UNIX password as
+ argument. The new option --delete-root-password may be used to unset
+ any password for the root user (dangerous!). The --root-shell= switch
+ may be used to control the shell to use for the root account. A new
+ --force option may be used to override any already set settings with
+ the parameters specified on the command line (by default, the tool
+ will not override what has already been set before, i.e. is purely
+ incremental).
+
+ * systemd-firstboot gained support for a new --image= switch, which is
+ similar to --root= but accepts the path to a disk image file, on
+ which it then operates.
+
+ * A new sd-path.h API has been added to libsystemd. It provides a
+ simple API for retrieving various search paths and primary
+ directories for various resources.
+
+ * A new call sd_notify_barrier() has been added to the sd-daemon.h
+ API. The call will block until all previously sent sd_notify()
+ messages have been processed by the service manager. This is useful
+ to remove races caused by a process already having disappeared at the
+ time a notification message is processed by the service manager,
+ making correct attribution impossible. The systemd-notify tool will
+ now make use of this call implicitly, but this can be turned off again
+ via the new --no-block switch.
+
+ * When sending a file descriptor (fd) to the service manager to keep
+ track of, using the sd_notify() mechanism, a new parameter FDPOLL=0
+ may be specified. If passed the service manager will refrain from
+ poll()ing on the file descriptor. Traditionally (and when the
+ parameter is not specified), the service manager will poll it for
+ POLLHUP or POLLERR events, and immediately close the fds in that
+ case.
+
+ * The service manager (PID1) gained a new D-Bus method call
+ SetShowStatus() which may be used to control whether it shall show
+ boot-time status output on the console. This method has a similar
+ effect to sending SIGRTMIN+20/SIGRTMIN+21 to PID 1.
+
+ * The sd-bus API gained a number of convenience functions that take
+ va_list arguments rather than "...". For example, there's now
+ sd_bus_call_methodv() to match sd_bus_call_method(). Those calls make
+ it easier to build wrappers that accept variadic arguments and want
+ to pass a ready va_list structure to sd-bus.
+
+ * sd-bus vtable entries can have a new SD_BUS_VTABLE_ABSOLUTE_OFFSET
+ flag which alters how the userdata pointer to pass to the callbacks
+ is determined. When the flag is set, the offset field is converted
+ as-is into a pointer, without adding it to the object pointer the
+ vtable is associated with.
+
+ * sd-bus now exposes four new functions:
+ sd_bus_interface_name_is_valid() + sd_bus_service_name_is_valid() +
+ sd_bus_member_name_is_valid() + sd_bus_object_path_is_valid() will
+ validate strings to check if they qualify as various D-Bus concepts.
+
+ * The sd-bus API gained the SD_BUS_METHOD_WITH_ARGS(),
+ SD_BUS_METHOD_WITH_ARGS_OFFSET() and SD_BUS_SIGNAL_WITH_ARGS() macros
+ that simplify adding argument names to D-Bus methods and signals.
+
+ * The man pages for the sd-bus and sd-hwdb APIs have been completed.
+
+ * Various D-Bus APIs of systemd daemons now have man pages that
+ document the methods, signals and properties.
+
+ * The expectations on user/group name syntax are now documented in
+ detail; documentation on how classic home directories may be
+ converted into home directories managed by homed has been added;
+ documentation regarding integration of homed/userdb functionality in
+ desktops has been added:
+
+ https://systemd.io/USER_NAMES
+ https://systemd.io/CONVERTING_TO_HOMED
+ https://systemd.io/USERDB_AND_DESKTOPS
+
+ * Documentation for the on-disk Journal file format has been updated
+ and has now moved to:
+
+ https://systemd.io/JOURNAL_FILE_FORMAT
+
+ * The interface for containers (https://systemd.io/CONTAINER_INTERFACE)
+ has been extended by a set of environment variables that expose
+ select fields from the host's os-release file to the container
+ payload. Similarly, host's os-release files can be mounted into the
+ container underneath /run/host. Together, those mechanisms provide a
+ standardized way to expose information about the host to the
+ container payload. Both interfaces are implemented in systemd-nspawn.
+
+ * All D-Bus services shipped in systemd now implement the generic
+ LogControl1 D-Bus API which allows clients to change log level +
+ target of the service during runtime.
+
+ * Only relevant for developers: the mkosi.default symlink has been
+ dropped from version control. Please create a symlink to one of the
+ distribution-specific defaults in .mkosi/ based on your preference.
+
+ Contributions from: 24bisquitz, Adam Nielsen, Alan Perry, Alexander
+ Malafeev, Amitanand.Chikorde, Alin Popa, Alvin Šipraga, Amos Bird,
+ Andreas Rammhold, AndreRH, Andrew Doran, Anita Zhang, Ankit Jain,
+ antznin, Arnaud Ferraris, Arthur Moraes do Lago, Arusekk, Balaji
+ Punnuru, Balint Reczey, Bastien Nocera, bemarek, Benjamin Berg,
+ Benjamin Dahlhoff, Benjamin Robin, Chris Down, Chris Kerr, Christian
+ Göttsche, Christian Hesse, Christian Oder, Ciprian Hacman, Clinton Roy,
+ codicodi, Corey Hinshaw, Daan De Meyer, Dana Olson, Dan Callaghan,
+ Daniel Fullmer, Daniel Rusek, Dan Streetman, Dave Reisner, David
+ Edmundson, David Wood, Denis Pronin, Diego Escalante Urrelo, Dimitri
+ John Ledkov, dolphrundgren, duguxy, Einsler Lee, Elisei Roca, Emmanuel
+ Garette, Eric Anderson, Eric DeVolder, Evgeny Vereshchagin,
+ ExtinctFire, fangxiuning, Ferran Pallarès Roca, Filipe Brandenburger,
+ Filippo Falezza, Finn, Florian Klink, Florian Mayer, Franck Bui,
+ Frantisek Sumsal, gaurav, Georg Müller, Gergely Polonkai, Giedrius
+ Statkevičius, Gigadoc2, gogogogi, Gaurav Singh, gzjsgdsb, Hans de
+ Goede, Haochen Tong, ianhi, ignapk, Jakov Smolic, James T. Lee, Jan
+ Janssen, Jan Klötzke, Jan Palus, Jay Burger, Jeremy Cline, Jérémy
+ Rosen, Jian-Hong Pan, Jiri Slaby, Joel Shapiro, Joerg Behrmann, Jörg
+ Thalheim, Jouke Witteveen, Kai-Heng Feng, Kenny Levinsen, Kevin
+ Kuehler, Kumar Kartikeya Dwivedi, layderv, laydervus, Lénaïc Huard,
+ Lennart Poettering, Lidong Zhong, Luca Boccassi, Luca BRUNO, Lucas
+ Werkmeister, Lukas Klingsbo, Lukáš Nykrýn, Łukasz Stelmach, Maciej
+ S. Szmigiero, MadMcCrow, Marc-André Lureau, Marcel Holtmann, Marc
+ Kleine-Budde, Martin Hundebøll, Matthew Leeds, Matt Ranostay, Maxim
+ Fomin, MaxVerevkin, Michael Biebl, Michael Chapman, Michael Gubbels,
+ Michael Marley, Michał Bartoszkiewicz, Michal Koutný, Michal Sekletár,
+ Mike Gilbert, Mike Kazantsev, Mikhail Novosyolov, ml, Motiejus Jakštys,
+ nabijaczleweli, nerdopolis, Niccolò Maggioni, Niklas Hambüchen, Norbert
+ Lange, Paul Cercueil, pelzvieh, Peter Hutterer, Piero La Terza, Pieter
+ Lexis, Piotr Drąg, Rafael Fontenelle, Richard Petri, Ronan Pigott, Ross
+ Lagerwall, Rubens Figueiredo, satmandu, Sean-StarLabs, Sebastian
+ Jennen, sterlinghughes, Surhud More, Susant Sahani, szb512, Thomas
+ Haller, Tobias Hunger, Tom, Tomáš Pospíšek, Tomer Shechner, Tom Hughes,
+ Topi Miettinen, Tudor Roman, Uwe Kleine-König, Valery0xff, Vito Caputo,
+ Vladimir Panteleev, Vladyslav Tronko, Wen Yang, Yegor Vialov, Yigal
+ Korman, Yi Gao, YmrDtnJu, Yuri Chornoivan, Yu Watanabe, Zbigniew
+ Jędrzejewski-Szmek, Zhu Li, Дамјан Георгиевски, наб
+
+ – Warsaw, 2020-07-30
+
+CHANGES WITH 245:
+
+ * A new tool "systemd-repart" has been added, that operates as an
+ idempotent declarative repartitioner for GPT partition tables.
+ Specifically, a set of partitions that must or may exist can be
+ configured via drop-in files, and during every boot the partition
+ table on disk is compared with these files, creating missing
+ partitions or growing existing ones based on configurable relative
+ and absolute size constraints. The tool is strictly incremental,
+ i.e. does not delete, shrink or move partitions, but only adds and
+ grows them. The primary use-case is OS images that ship in minimized
+ form, that on first boot are grown to the size of the underlying
+ block device or augmented with additional partitions. For example,
+ the root partition could be extended to cover the whole disk, or a
+ swap or /home partitions could be added on first boot. It can also be
+ used for systems that use an A/B update scheme but ship images with
+ just the A partition, with B added on first boot. The tool is
+ primarily intended to be run in the initrd, shortly before
+ transitioning into the host OS, but can also be run after the
+ transition took place. It automatically discovers the disk backing
+ the root file system, and should hence not require any additional
+ configuration besides the partition definition drop-ins. If no
+ configuration drop-ins are present, no action is taken.
+
+ * A new component "userdb" has been added, along with a small daemon
+ "systemd-userdbd.service" and a client tool "userdbctl". The framework
+ allows defining rich user and group records in a JSON format,
+ extending on the classic "struct passwd" and "struct group"
+ structures. Various components in systemd have been updated to
+ process records in this format, including systemd-logind and
+ pam-systemd. The user records are intended to be extensible, and
+ allow setting various resource management, security and runtime
+ parameters that shall be applied to processes and sessions of the
+ user as they log in. This facility is intended to allow associating
+ such metadata directly with user/group records so that they can be
+ produced, extended and consumed in unified form. We hope that
+ eventually frameworks such as sssd will generate records this way, so
+ that for the first time resource management and various other
+ per-user settings can be configured in LDAP directories and then
+ provided to systemd (specifically to systemd-logind and pam-system)
+ to apply on login. For further details see:
+
+ https://systemd.io/USER_RECORD
+ https://systemd.io/GROUP_RECORD
+ https://systemd.io/USER_GROUP_API
+
+ * A small new service systemd-homed.service has been added, that may be
+ used to securely manage home directories with built-in encryption.
+ The complete user record data is unified with the home directory,
+ thus making home directories naturally migratable. Its primary
+ back-end is based on LUKS volumes, but fscrypt, plain directories,
+ and other storage schemes are also supported. This solves a couple of
+ problems we saw with traditional ways to manage home directories, in
+ particular when it comes to encryption. For further discussion of
+ this, see the video of Lennart's talk at AllSystemsGo! 2019:
+
+ https://media.ccc.de/v/ASG2019-164-reinventing-home-directories
+
+ For further details about the format and expectations on home
+ directories this new daemon makes, see:
+
+ https://systemd.io/HOME_DIRECTORY
+
+ * systemd-journald is now multi-instantiable. In addition to the main
+ instance systemd-journald.service there's now a template unit
+ systemd-journald@.service, with each instance defining a new named
+ log 'namespace' (whose name is specified via the instance part of the
+ unit name). A new unit file setting LogNamespace= has been added,
+ taking such a namespace name, that assigns services to the specified
+ log namespaces. As each log namespace is serviced by its own
+ independent journal daemon, this functionality may be used to improve
+ performance and increase isolation of applications, at the price of
+ losing global message ordering. Each instance of journald has a
+ separate set of configuration files, with possibly different disk
+ usage limitations and other settings.
+
+ journalctl now takes a new option --namespace= to show logs from a
+ specific log namespace. The sd-journal.h API gained
+ sd_journal_open_namespace() for opening the log stream of a specific
+ log namespace. systemd-journald also gained the ability to exit on
+ idle, which is useful in the context of log namespaces, as this means
+ log daemons for log namespaces can be activated automatically on
+ demand and will stop automatically when no longer used, minimizing
+ resource usage.
+
+ * When systemd-tmpfiles copies a file tree using the 'C' line type it
+ will now label every copied file according to the SELinux database.
+
+ * When systemd/PID 1 detects it is used in the initrd it will now boot
+ into initrd.target rather than default.target by default. This should
+ make it simpler to build initrds with systemd as for many cases the
+ only difference between a host OS image and an initrd image now is
+ the presence of the /etc/initrd-release file.
+
+ * A new kernel command line option systemd.cpu_affinity= is now
+ understood. It's equivalent to the CPUAffinity= option in
+ /etc/systemd/system.conf and allows setting the CPU mask for PID 1
+ itself and the default for all other processes.
+
+ * When systemd/PID 1 is reloaded (with systemctl daemon-reload or
+ equivalent), the SELinux database is now reloaded, ensuring that
+ sockets and other file system objects are generated taking the new
+ database into account.
+
+ * systemd/PID 1 accepts a new "systemd.show-status=error" setting, and
+ "quiet" has been changed to imply that instead of
+ "systemd.show-status=auto". In this mode, only messages about errors
+ and significant delays in boot are shown on the console.
+
+ * The sd-event.h API gained native support for the new Linux "pidfd"
+ concept. This permits watching processes using file descriptors
+ instead of PID numbers, which fixes a number of races and makes
+ process supervision more robust and efficient. All of systemd's
+ components will now use pidfds if the kernel supports it for process
+ watching, with the exception of PID 1 itself, unfortunately. We hope
+ to move PID 1 to exclusively using pidfds too eventually, but this
+ requires some more kernel work first. (Background: PID 1 watches
+ processes using waitid() with the P_ALL flag, and that does not play
+ together nicely with pidfds yet.)
+
+ * Closely related to this, the sd-event.h API gained two new calls
+ sd_event_source_send_child_signal() (for sending a signal to a
+ watched process) and sd_event_source_get_child_process_own() (for
+ marking a process so that it is killed automatically whenever the
+ event source watching it is freed).
+
+ * systemd-networkd gained support for configuring Token Bucket Filter
+ (TBF) parameters in its qdisc configuration support. Similarly,
+ support for Stochastic Fairness Queuing (SFQ), Controlled-Delay
+ Active Queue Management (CoDel), and Fair Queue (FQ) has been added.
+
+ * systemd-networkd gained support for Intermediate Functional Block
+ (IFB) network devices.
+
+ * systemd-networkd gained support for configuring multi-path IP routes,
+ using the new MultiPathRoute= setting in the [Route] section.
+
+ * systemd-networkd's DHCPv4 client has been updated to support a new
+ SendDecline= option. If enabled, duplicate address detection is done
+ after a DHCP offer is received from the server. If a conflict is
+ detected, the address is declined. The DHCPv4 client also gained
+ support for a new RouteMTUBytes= setting that allows to configure the
+ MTU size to be used for routes generated from DHCPv4 leases.
+
+ * The PrefixRoute= setting in systemd-networkd's [Address] section of
+ .network files has been deprecated, and replaced by AddPrefixRoute=,
+ with its sense inverted.
+
+ * The Gateway= setting of [Route] sections of .network files gained
+ support for a special new value "_dhcp". If set, the configured
+ static route uses the gateway host configured via DHCP.
+
+ * New User= and SuppressPrefixLength= settings have been implemented
+ for the [RoutingPolicyRule] section of .network files to configure
+ source routing based on UID ranges and prefix length, respectively.
+
+ * The Type= match property of .link files has been generalized to
+ always match the device type shown by 'networkctl status', even for
+ devices where udev does not set DEVTYPE=. This allows e.g. Type=ether
+ to be used.
+
+ * sd-bus gained a new API call sd_bus_message_sensitive() that marks a
+ D-Bus message object as "sensitive". Those objects are erased from
+ memory when they are freed. This concept is intended to be used for
+ messages that contain security sensitive data. A new flag
+ SD_BUS_VTABLE_SENSITIVE has been introduced as well to mark methods
+ in sd-bus vtables, causing any incoming and outgoing messages of
+ those methods to be implicitly marked as "sensitive".
+
+ * sd-bus gained a new API call sd_bus_message_dump() for dumping the
+ contents of a message (or parts thereof) to standard output for
+ debugging purposes.
+
+ * systemd-sysusers gained support for creating users with the primary
+ group named differently than the user.
+
+ * systemd-growfs (i.e. the x-systemd.growfs mount option in /etc/fstab)
+ gained support for growing XFS partitions. Previously it supported
+ only ext4 and btrfs partitions.
+
+ * The support for /etc/crypttab gained a new x-initrd.attach option. If
+ set, the specified encrypted volume is unlocked already in the
+ initrd. This concept corresponds to the x-initrd.mount option in
+ /etc/fstab.
+
+ * systemd-cryptsetup gained native support for unlocking encrypted
+ volumes utilizing PKCS#11 smartcards, i.e. for example to bind
+ encryption of volumes to YubiKeys. This is exposed in the new
+ pkcs11-uri= option in /etc/crypttab.
+
+ * The /etc/fstab support in systemd now supports two new mount options
+ x-systemd.{required,wanted}-by=, for explicitly configuring the units
+ that the specified mount shall be pulled in by, in place of
+ the usual local-fs.target/remote-fs.target.
+
+ * The https://systemd.io/ web site has been relaunched, directly
+ populated with most of the documentation included in the systemd
+ repository. systemd also acquired a new logo, thanks to Tobias
+ Bernard.
+
+ * systemd-udevd gained support for managing "alternative" network
+ interface names, as supported by new Linux kernels. For the first
+ time this permits assigning multiple (and longer!) names to a network
+ interface. systemd-udevd will now by default assign the names
+ generated via all supported naming schemes to each interface. This
+ may be further tweaked with .link files and the AlternativeName= and
+ AlternativeNamesPolicy= settings. Other components of systemd have
+ been updated to support the new alternative names wherever
+ appropriate. For example, systemd-nspawn will now generate
+ alternative interface names for the host-facing side of container
+ veth links based on the full container name without truncation.
+
+ * systemd-nspawn interface naming logic has been updated in another way
+ too: if the main interface name (i.e. as opposed to new-style
+ "alternative" names) based on the container name is truncated, a
+ simple hashing scheme is used to give different interface names to
+ multiple containers whose names all begin with the same prefix. Since
+ this changes the primary interface names pointing to containers if
+ truncation happens, the old scheme may still be requested by
+ selecting an older naming scheme, via the net.naming-scheme= kernel
+ command line option.
+
+ * PrivateUsers= in service files now works in services run by the
+ systemd --user per-user instance of the service manager.
+
+ * A new per-service sandboxing option ProtectClock= has been added that
+ locks down write access to the system clock. It takes away device
+ node access to /dev/rtc as well as the system calls that set the
+ system clock and the CAP_SYS_TIME and CAP_WAKE_ALARM capabilities.
+ Note that this option does not affect access to auxiliary services
+ that allow changing the clock, for example access to
+ systemd-timedated.
+
+ * The systemd-id128 tool gained a new "show" verb for listing or
+ resolving a number of well-known UUIDs/128-bit IDs, currently mostly
+ GPT partition table types.
+
+ * The Discoverable Partitions Specification has been updated to support
+ /var and /var/tmp partition discovery. Support for this has been
+ added to systemd-gpt-auto-generator. For details see:
+
+ https://systemd.io/DISCOVERABLE_PARTITIONS
+
+ * "systemctl list-unit-files" has been updated to show a new column
+ with the suggested enablement state based on the vendor preset files
+ for the respective units.
+
+ * "systemctl" gained a new option "--with-dependencies". If specified
+ commands such as "systemctl status" or "systemctl cat" will now show
+ all specified units along with all units they depend on.
+
+ * networkctl gained support for showing per-interface logs in its
+ "status" output.
+
+ * systemd-networkd-wait-online gained support for specifying the maximum
+ operational state to wait for, and to wait for interfaces to
+ disappear.
+
+ * The [Match] section of .link and .network files now supports a new
+ option PermanentMACAddress= which may be used to check against the
+ permanent MAC address of a network device even if a randomized MAC
+ address is used.
+
+ * The [TrafficControlQueueingDiscipline] section in .network files has
+ been renamed to [NetworkEmulator] with the "NetworkEmulator" prefix
+ dropped from the individual setting names.
+
+ * Any .link and .network files that have an empty [Match] section (this
+ also includes empty and commented-out files) will now be
+ rejected. systemd-udev and systemd-networkd started warning about
+ such files in version 243.
+
+ * systemd-logind will now validate access to the operation of changing
+ the virtual terminal via a polkit action. By default, only users
+ with at least one session on a local VT are granted permission.
+
+ * When systemd sets up PAM sessions that invoked service processes
+ shall run in, the pam_setcred() API is now invoked, thus permitting
+ PAM modules to set additional credentials for the processes.
+
+ * portablectl attach/detach verbs now accept --now and --enable options
+ to combine attachment with enablement and invocation, or detachment
+ with stopping and disablement.
+
+ * UPGRADE ISSUE: a bug where some jobs were trimmed as redundant was
+ fixed, which in turn exposed bugs in unit configuration of services
+ which have Type=oneshot and should only run once, but do not have
+ RemainAfterExit=yes set. Without RemainAfterExit=yes, a one-shot
+ service may be started again after exiting successfully, for example
+ as a dependency in another transaction. Affected services included
+ some internal systemd services (most notably
+ systemd-vconsole-setup.service, which was updated to have
+ RemainAfterExit=yes), and plymouth-start.service. Please ensure that
+ plymouth has been suitably updated or patched before upgrading to
+ this systemd release. See
+ https://bugzilla.redhat.com/show_bug.cgi?id=1807771 for some
+ additional discussion.
+
+ Contributions from: AJ Bagwell, Alin Popa, Andreas Rammhold, Anita
+ Zhang, Ansgar Burchardt, Antonio Russo, Arian van Putten, Ashley Davis,
+ Balint Reczey, Bart Willems, Bastien Nocera, Benjamin Dahlhoff, Charles
+ (Chas) Williams, cheese1, Chris Down, Chris Murphy, Christian Ehrhardt,
+ Christian Göttsche, cvoinf, Daan De Meyer, Daniele Medri, Daniel Rusek,
+ Daniel Shahaf, Dann Frazier, Dan Streetman, Dariusz Gadomski, David
+ Michael, Dimitri John Ledkov, Emmanuel Bourg, Evgeny Vereshchagin,
+ ezst036, Felipe Sateler, Filipe Brandenburger, Florian Klink, Franck
+ Bui, Fran Dieguez, Frantisek Sumsal, Greg "GothAck" Miell, Guilhem
+ Lettron, Guillaume Douézan-Grard, Hans de Goede, HATAYAMA Daisuke, Iain
+ Lane, James Buren, Jan Alexander Steffens (heftig), Jérémy Rosen, Jin
+ Park, Jun'ichi Nomura, Kai Krakow, Kevin Kuehler, Kevin P. Fleming,
+ Lennart Poettering, Leonid Bloch, Leonid Evdokimov, lothrond, Luca
+ Boccassi, Lukas K, Lynn Kirby, Mario Limonciello, Mark Deneen, Matthew
+ Leeds, Michael Biebl, Michal Koutný, Michal Sekletár, Mike Auty, Mike
+ Gilbert, mtron, nabijaczleweli, Naïm Favier, Nate Jones, Norbert Lange,
+ Oliver Giles, Paul Davey, Paul Menzel, Peter Hutterer, Piotr Drąg, Rafa
+ Couto, Raphael, rhn, Robert Scheck, Rocka, Romain Naour, Ryan Attard,
+ Sascha Dewald, Shengjing Zhu, Slava Kardakov, Spencer Michaels, Sylvain
+ Plantefeve, Stanislav Angelovič, Susant Sahani, Thomas Haller, Thomas
+ Schmitt, Timo Schlüßler, Timo Wilken, Tobias Bernard, Tobias Klauser,
+ Tobias Stoeckmann, Topi Miettinen, tsia, WataruMatsuoka, Wieland
+ Hoffmann, Wilhelm Schuster, Will Fleming, xduugu, Yong Cong Sin, Yuri
+ Chornoivan, Yu Watanabe, Zach Smith, Zbigniew Jędrzejewski-Szmek, Zeyu
+ DONG
+
+ – Warsaw, 2020-03-06
+
+CHANGES WITH 244:
+
+ * Support for the cpuset cgroups v2 controller has been added.
+ Processes may be restricted to specific CPUs using the new
+ AllowedCPUs= setting, and to specific memory NUMA nodes using the new
+ AllowedMemoryNodes= setting.
+
+ * The signal used in restart jobs (as opposed to e.g. stop jobs) may
+ now be configured using a new RestartKillSignal= setting. This
+ allows units which signals to request termination to implement
+ different behaviour when stopping in preparation for a restart.
+
+ * "systemctl clean" may now be used also for socket, mount, and swap
+ units.
+
+ * systemd will also read configuration options from the EFI variable
+ SystemdOptions. This may be used to configure systemd behaviour when
+ modifying the kernel command line is inconvenient, but configuration
+ on disk is read too late, for example for the options related to
+ cgroup hierarchy setup. 'bootctl systemd-efi-options' may be used to
+ set the EFI variable.
+
+ * systemd will now disable printk ratelimits in early boot. This should
+ allow us to capture more logs from the early boot phase where normal
+ storage is not available and the kernel ring buffer is used for
+ logging. Configuration on the kernel command line has higher priority
+ and overrides the systemd setting.
+
+ systemd programs which log to /dev/kmsg directly use internal
+ ratelimits to prevent runaway logging. (Normally this is only used
+ during early boot, so in practice this change has very little
+ effect.)
+
+ * Unit files now support top level dropin directories of the form
+ <unit_type>.d/ (e.g. service.d/) that may be used to add configuration
+ that affects all corresponding unit files.
+
+ * systemctl gained support for 'stop --job-mode=triggering' which will
+ stop the specified unit and any units which could trigger it.
+
+ * Unit status display now includes units triggering and triggered by
+ the unit being shown.
+
+ * The RuntimeMaxSec= setting is now supported by scopes, not just
+ .service units. This is particularly useful for PAM sessions which
+ create a scope unit for the user login. systemd.runtime_max_sec=
+ setting may used with the pam_systemd module to limit the duration
+ of the PAM session, for example for time-limited logins.
+
+ * A new @pkey system call group is now defined to make it easier to
+ allow-list memory protection syscalls for containers and services
+ which need to use them.
+
+ * systemd-udevd: removed the 30s timeout for killing stale workers on
+ exit. systemd-udevd now waits for workers to finish. The hard-coded
+ exit timeout of 30s was too short for some large installations, where
+ driver initialization could be prematurely interrupted during initrd
+ processing if the root file system had been mounted and init was
+ preparing to switch root. If udevd is run without systemd and workers
+ are hanging while udevd receives an exit signal, udevd will now exit
+ when udev.event_timeout is reached for the last hanging worker. With
+ systemd, the exit timeout can additionally be configured using
+ TimeoutStopSec= in systemd-udevd.service.
+
+ * udev now provides a program (fido_id) that identifies FIDO CTAP1
+ ("U2F")/CTAP2 security tokens based on the usage declared in their
+ report and descriptor and outputs suitable environment variables.
+ This replaces the externally maintained allow lists of all known
+ security tokens that were used previously.
+
+ * Automatically generated autosuspend udev rules for allow-listed
+ devices have been imported from the Chromium OS project. This should
+ improve power saving with many more devices.
+
+ * udev gained a new "CONST{key}=value" setting that allows matching
+ against system-wide constants without forking a helper binary.
+ Currently "arch" and "virt" keys are supported.
+
+ * udev now opens CDROMs in non-exclusive mode when querying their
+ capabilities. This should fix issues where other programs trying to
+ use the CDROM cannot gain access to it, but carries a risk of
+ interfering with programs writing to the disk, if they did not open
+ the device in exclusive mode as they should.
+
+ * systemd-networkd does not create a default route for IPv4 link local
+ addressing anymore. The creation of the route was unexpected and was
+ breaking routing in various cases, but people who rely on it being
+ created implicitly will need to adjust. Such a route may be requested
+ with DefaultRouteOnDevice=yes.
+
+ Similarly, systemd-networkd will not assign a link-local IPv6 address
+ when IPv6 link-local routing is not enabled.
+
+ * Receive and transmit buffers may now be configured on links with
+ the new RxBufferSize= and TxBufferSize= settings.
+
+ * systemd-networkd may now advertise additional IPv6 routes. A new
+ [IPv6RoutePrefix] section with Route= and LifetimeSec= options is
+ now supported.
+
+ * systemd-networkd may now configure "next hop" routes using the
+ [NextHop] section and Gateway= and Id= settings.
+
+ * systemd-networkd will now retain DHCP config on restarts by default
+ (but this may be overridden using the KeepConfiguration= setting).
+ The default for SendRelease= has been changed to true.
+
+ * The DHCPv4 client now uses the OPTION_INFORMATION_REFRESH_TIME option
+ received from the server.
+
+ The client will use the received SIP server list if UseSIP=yes is
+ set.
+
+ The client may be configured to request specific options from the
+ server using a new RequestOptions= setting.
+
+ The client may be configured to send arbitrary options to the server
+ using a new SendOption= setting.
+
+ A new IPServiceType= setting has been added to configure the "IP
+ service type" value used by the client.
+
+ * The DHCPv6 client learnt a new PrefixDelegationHint= option to
+ request prefix hints in the DHCPv6 solicitation.
+
+ * The DHCPv4 server may be configured to send arbitrary options using
+ a new SendOption= setting.
+
+ * The DHCPv4 server may now be configured to emit SIP server list using
+ the new EmitSIP= and SIP= settings.
+
+ * systemd-networkd and networkctl may now renew DHCP leases on demand.
+ networkctl has a new 'networkctl renew' verb.
+
+ * systemd-networkd may now reconfigure links on demand. networkctl
+ gained two new verbs: "reload" will reload the configuration, and
+ "reconfigure DEVICE…" will reconfigure one or more devices.
+
+ * .network files may now match on SSID and BSSID of a wireless network,
+ i.e. the access point name and hardware address using the new SSID=
+ and BSSID= options. networkctl will display the current SSID and
+ BSSID for wireless links.
+
+ .network files may also match on the wireless network type using the
+ new WLANInterfaceType= option.
+
+ * systemd-networkd now includes default configuration that enables
+ link-local addressing when connected to an ad-hoc wireless network.
+
+ * systemd-networkd may configure the Traffic Control queueing
+ disciplines in the kernel using the new
+ [TrafficControlQueueingDiscipline] section and Parent=,
+ NetworkEmulatorDelaySec=, NetworkEmulatorDelayJitterSec=,
+ NetworkEmulatorPacketLimit=, NetworkEmulatorLossRate=,
+ NetworkEmulatorDuplicateRate= settings.
+
+ * systemd-tmpfiles gained a new w+ setting to append to files.
+
+ * systemd-analyze dump will now report when the memory configuration in
+ the kernel does not match what systemd has configured (usually,
+ because some external program has modified the kernel configuration
+ on its own).
+
+ * systemd-analyze gained a new --base-time= switch instructs the
+ 'calendar' verb to resolve times relative to that timestamp instead
+ of the present time.
+
+ * journalctl --update-catalog now produces deterministic output (making
+ reproducible image builds easier).
+
+ * A new devicetree-overlay setting is now documented in the Boot Loader
+ Specification.
+
+ * The default value of the WatchdogSec= setting used in systemd
+ services (the ones bundled with the project itself) may be set at
+ configuration time using the -Dservice-watchdog= setting. If set to
+ empty, the watchdogs will be disabled.
+
+ * systemd-resolved validates IP addresses in certificates now when GnuTLS
+ is being used.
+
+ * libcryptsetup >= 2.0.1 is now required.
+
+ * A configuration option -Duser-path= may be used to override the $PATH
+ used by the user service manager. The default is again to use the same
+ path as the system manager.
+
+ * The systemd-id128 tool gained a new switch "-u" (or "--uuid") for
+ outputting the 128-bit IDs in UUID format (i.e. in the "canonical
+ representation").
+
+ * Service units gained a new sandboxing option ProtectKernelLogs= which
+ makes sure the program cannot get direct access to the kernel log
+ buffer anymore, i.e. the syslog() system call (not to be confused
+ with the API of the same name in libc, which is not affected), the
+ /proc/kmsg and /dev/kmsg nodes and the CAP_SYSLOG capability are made
+ inaccessible to the service. It's recommended to enable this setting
+ for all services that should not be able to read from or write to the
+ kernel log buffer, which are probably almost all.
+
+ Contributions from: Aaron Plattner, Alcaro, Anita Zhang, Balint Reczey,
+ Bastien Nocera, Baybal Ni, Benjamin Bouvier, Benjamin Gilbert, Carlo
+ Teubner, cbzxt, Chen Qi, Chris Down, Christian Rebischke, Claudio
+ Zumbo, ClydeByrdIII, crashfistfight, Cyprien Laplace, Daniel Edgecumbe,
+ Daniel Gorbea, Daniel Rusek, Daniel Stuart, Dan Streetman, David
+ Pedersen, David Tardon, Dimitri John Ledkov, Dominique Martinet, Donald
+ A. Cupp Jr, Evgeny Vereshchagin, Fabian Henneke, Filipe Brandenburger,
+ Franck Bui, Frantisek Sumsal, Georg Müller, Hans de Goede, Haochen
+ Tong, HATAYAMA Daisuke, Iwan Timmer, Jan Janssen, Jan Kundrát, Jan
+ Synacek, Jan Tojnar, Jay Strict, Jérémy Rosen, Jóhann B. Guðmundsson,
+ Jonas Jelten, Jonas Thelemann, Justin Trudell, J. Xing, Kai-Heng Feng,
+ Kenneth D'souza, Kevin Becker, Kevin Kuehler, Lennart Poettering,
+ Léonard Gérard, Lorenz Bauer, Luca Boccassi, Maciej Stanczew, Mario
+ Limonciello, Marko Myllynen, Mark Stosberg, Martin Wilck, matthiasroos,
+ Michael Biebl, Michael Olbrich, Michael Tretter, Michal Sekletar,
+ Michal Sekletár, Michal Suchanek, Mike Gilbert, Mike Kazantsev, Nicolas
+ Douma, nikolas, Norbert Lange, pan93412, Pascal de Bruijn, Paul Menzel,
+ Pavel Hrdina, Peter Wu, Philip Withnall, Piotr Drąg, Rafael Fontenelle,
+ Renaud Métrich, Riccardo Schirone, RoadrunnerWMC, Ronan Pigott, Ryan
+ Attard, Sebastian Wick, Serge, Siddharth Chandrasekara, Steve Ramage,
+ Steve Traylen, Susant Sahani, Thibault Nélis, Tim Teichmann, Tom
+ Fitzhenry, Tommy J, Torsten Hilbrich, Vito Caputo, ypf791, Yu Watanabe,
+ Zach Smith, Zbigniew Jędrzejewski-Szmek
+
+ – Warsaw, 2019-11-29
+
+CHANGES WITH 243:
+
+ * This release enables unprivileged programs (i.e. requiring neither
+ setuid nor file capabilities) to send ICMP Echo (i.e. ping) requests
+ by turning on the "net.ipv4.ping_group_range" sysctl of the Linux
+ kernel for the whole UNIX group range, i.e. all processes. This
+ change should be reasonably safe, as the kernel support for it was
+ specifically implemented to allow safe access to ICMP Echo for
+ processes lacking any privileges. If this is not desirable, it can be
+ disabled again by setting the parameter to "1 0".
+
+ * Previously, filters defined with SystemCallFilter= would have the
+ effect that any calling of an offending system call would terminate
+ the calling thread. This behaviour never made much sense, since
+ killing individual threads of unsuspecting processes is likely to
+ create more problems than it solves. With this release the default
+ action changed from killing the thread to killing the whole
+ process. For this to work correctly both a kernel version (>= 4.14)
+ and a libseccomp version (>= 2.4.0) supporting this new seccomp
+ action is required. If an older kernel or libseccomp is used the old
+ behaviour continues to be used. This change does not affect any
+ services that have no system call filters defined, or that use
+ SystemCallErrorNumber= (and thus see EPERM or another error instead
+ of being killed when calling an offending system call). Note that
+ systemd documentation always claimed that the whole process is
+ killed. With this change behaviour is thus adjusted to match the
+ documentation.
+
+ * On 64 bit systems, the "kernel.pid_max" sysctl is now bumped to
+ 4194304 by default, i.e. the full 22bit range the kernel allows, up
+ from the old 16-bit range. This should improve security and
+ robustness, as PID collisions are made less likely (though certainly
+ still possible). There are rumours this might create compatibility
+ problems, though at this moment no practical ones are known to
+ us. Downstream distributions are hence advised to undo this change in
+ their builds if they are concerned about maximum compatibility, but
+ for everybody else we recommend leaving the value bumped. Besides
+ improving security and robustness this should also simplify things as
+ the maximum number of allowed concurrent tasks was previously bounded
+ by both "kernel.pid_max" and "kernel.threads-max" and now effectively
+ only a single knob is left ("kernel.threads-max"). There have been
+ concerns that usability is affected by this change because larger PID
+ numbers are harder to type, but we believe the change from 5 digits
+ to 7 digits doesn't hamper usability.
+
+ * MemoryLow= and MemoryMin= gained hierarchy-aware counterparts,
+ DefaultMemoryLow= and DefaultMemoryMin=, which can be used to
+ hierarchically set default memory protection values for a particular
+ subtree of the unit hierarchy.
+
+ * Memory protection directives can now take a value of zero, allowing
+ explicit opting out of a default value propagated by an ancestor.
+
+ * systemd now defaults to the "unified" cgroup hierarchy setup during
+ build-time, i.e. -Ddefault-hierarchy=unified is now the build-time
+ default. Previously, -Ddefault-hierarchy=hybrid was the default. This
+ change reflects the fact that cgroupsv2 support has matured
+ substantially in both systemd and in the kernel, and is clearly the
+ way forward. Downstream production distributions might want to
+ continue to use -Ddefault-hierarchy=hybrid (or even =legacy) for
+ their builds as unfortunately the popular container managers have not
+ caught up with the kernel API changes.
+
+ * Man pages are not built by default anymore (html pages were already
+ disabled by default), to make development builds quicker. When
+ building systemd for a full installation with documentation, meson
+ should be called with -Dman=true and/or -Dhtml=true as appropriate.
+ The default was changed based on the assumption that quick one-off or
+ repeated development builds are much more common than full optimized
+ builds for installation, and people need to pass various other
+ options to when doing "proper" builds anyway, so the gain from making
+ development builds quicker is bigger than the one time disruption for
+ packagers.
+
+ Two scripts are created in the *build* directory to generate and
+ preview man and html pages on demand, e.g.:
+
+ build/man/man systemctl
+ build/man/html systemd.index
+
+ * libidn2 is used by default if both libidn2 and libidn are installed.
+ Please use -Dlibidn=true if libidn is preferred.
+
+ * The D-Bus "wire format" of the CPUAffinity= attribute is changed on
+ big-endian machines. Before, bytes were written and read in native
+ machine order as exposed by the native libc __cpu_mask interface.
+ Now, little-endian order is always used (CPUs 0–7 are described by
+ bits 0–7 in byte 0, CPUs 8–15 are described by byte 1, and so on).
+ This change fixes D-Bus calls that cross endianness boundary.
+
+ The presentation format used for CPUAffinity= by "systemctl show" and
+ "systemd-analyze dump" is changed to present CPU indices instead of
+ the raw __cpu_mask bitmask. For example, CPUAffinity=0-1 would be
+ shown as CPUAffinity=03000000000000000000000000000… (on
+ little-endian) or CPUAffinity=00000000000000300000000000000… (on
+ 64-bit big-endian), and is now shown as CPUAffinity=0-1, matching the
+ input format. The maximum integer that will be printed in the new
+ format is 8191 (four digits), while the old format always used a very
+ long number (with the length varying by architecture), so they can be
+ unambiguously distinguished.
+
+ * /usr/sbin/halt.local is no longer supported. Implementation in
+ distributions was inconsistent and it seems this functionality was
+ very rarely used.
+
+ To replace this functionality, users should:
+ - either define a new unit and make it a dependency of final.target
+ (systemctl add-wants final.target my-halt-local.service)
+ - or move the shutdown script to /usr/lib/systemd/system-shutdown/
+ and ensure that it accepts "halt", "poweroff", "reboot", and
+ "kexec" as an argument, see the description in systemd-shutdown(8).
+
+ * When a [Match] section in .link or .network file is empty (contains
+ no match patterns), a warning will be emitted. Please add any "match
+ all" pattern instead, e.g. OriginalName=* or Name=* in case all
+ interfaces should really be matched.
+
+ * A new setting NUMAPolicy= may be used to set process memory
+ allocation policy. This setting can be specified in
+ /etc/systemd/system.conf and hence will set the default policy for
+ PID1. The default policy can be overridden on a per-service
+ basis. The related setting NUMAMask= is used to specify NUMA node
+ mask that should be associated with the selected policy.
+
+ * PID 1 will now listen to Out-Of-Memory (OOM) events the kernel
+ generates when processes it manages are reaching their memory limits,
+ and will place their units in a special state, and optionally kill or
+ stop the whole unit.
+
+ * The service manager will now expose bus properties for the IO
+ resources used by units. This information is also shown in "systemctl
+ status" now (for services that have IOAccounting=yes set). Moreover,
+ the IO accounting data is included in the resource log message
+ generated whenever a unit stops.
+
+ * Units may now configure an explicit timeout to wait for when killed
+ with SIGABRT, for example when a service watchdog is hit. Previously,
+ the regular TimeoutStopSec= timeout was applied in this case too —
+ now a separate timeout may be set using TimeoutAbortSec=.
+
+ * Services may now send a special WATCHDOG=trigger message with
+ sd_notify() to trigger an immediate "watchdog missed" event, and thus
+ trigger service termination. This is useful both for testing watchdog
+ handling, but also for defining error paths in services, that shall
+ be handled the same way as watchdog events.
+
+ * There are two new per-unit settings IPIngressFilterPath= and
+ IPEgressFilterPath= which allow configuration of a BPF program
+ (usually by specifying a path to a program uploaded to /sys/fs/bpf/)
+ to apply to the IP packet ingress/egress path of all processes of a
+ unit. This is useful to allow running systemd services with BPF
+ programs set up externally.
+
+ * systemctl gained a new "clean" verb for removing the state, cache,
+ runtime or logs directories of a service while it is terminated. The
+ new verb may also be used to remove the state maintained on disk for
+ timer units that have Persistent= configured.
+
+ * During the last phase of shutdown systemd will now automatically
+ increase the log level configured in the "kernel.printk" sysctl so
+ that any relevant loggable events happening during late shutdown are
+ made visible. Previously, loggable events happening so late during
+ shutdown were generally lost if the "kernel.printk" sysctl was set to
+ high thresholds, as regular logging daemons are terminated at that
+ time and thus nothing is written to disk.
+
+ * If processes terminated during the last phase of shutdown do not exit
+ quickly systemd will now show their names after a short time, to make
+ debugging easier. After a longer timeout they are forcibly killed,
+ as before.
+
+ * journalctl (and the other tools that display logs) will now highlight
+ warnings in yellow (previously, both LOG_NOTICE and LOG_WARNING where
+ shown in bright bold, now only LOG_NOTICE is). Moreover, audit logs
+ are now shown in blue color, to separate them visually from regular
+ logs. References to configuration files are now turned into clickable
+ links on terminals that support that.
+
+ * systemd-journald will now stop logging to /var/log/journal during
+ shutdown when /var/ is on a separate mount, so that it can be
+ unmounted safely during shutdown.
+
+ * systemd-resolved gained support for a new 'strict' DNS-over-TLS mode.
+
+ * systemd-resolved "Cache=" configuration option in resolved.conf has
+ been extended to also accept the 'no-negative' value. Previously,
+ only a boolean option was allowed (yes/no), having yes as the
+ default. If this option is set to 'no-negative', negative answers are
+ not cached while the old cache heuristics are used positive answers.
+ The default remains unchanged.
+
+ * The predictable naming scheme for network devices now supports
+ generating predictable names for "netdevsim" devices.
+
+ Moreover, the "en" prefix was dropped from the ID_NET_NAME_ONBOARD
+ udev property.
+
+ Those two changes form a new net.naming-policy-scheme= entry.
+ Distributions which want to preserve naming stability may want to set
+ the -Ddefault-net-naming-scheme= configuration option.
+
+ * systemd-networkd now supports MACsec, nlmon, IPVTAP and Xfrm
+ interfaces natively.
+
+ * systemd-networkd's bridge FDB support now allows configuration of a
+ destination address for each entry (Destination=), as well as the
+ VXLAN VNI (VNI=), as well as an option to declare what an entry is
+ associated with (AssociatedWith=).
+
+ * systemd-networkd's DHCPv4 support now understands a new MaxAttempts=
+ option for configuring the maximum number of DHCP lease requests. It
+ also learnt a new BlackList= option for deny-listing DHCP servers (a
+ similar setting has also been added to the IPv6 RA client), as well
+ as a SendRelease= option for configuring whether to send a DHCP
+ RELEASE message when terminating.
+
+ * systemd-networkd's DHCPv4 and DHCPv6 stacks can now be configured
+ separately in the [DHCPv4] and [DHCPv6] sections.
+
+ * systemd-networkd's DHCP support will now optionally create an
+ implicit host route to the DNS server specified in the DHCP lease, in
+ addition to the routes listed explicitly in the lease. This should
+ ensure that in multi-homed systems DNS traffic leaves the systems on
+ the interface that acquired the DNS server information even if other
+ routes such as default routes exist. This behaviour may be turned on
+ with the new RoutesToDNS= option.
+
+ * systemd-networkd's VXLAN support gained a new option
+ GenericProtocolExtension= for enabling VXLAN Generic Protocol
+ Extension support, as well as IPDoNotFragment= for setting the IP
+ "Don't fragment" bit on outgoing packets. A similar option has been
+ added to the GENEVE support.
+
+ * In systemd-networkd's [Route] section you may now configure
+ FastOpenNoCookie= for configuring per-route TCP fast-open support, as
+ well as TTLPropagate= for configuring Label Switched Path (LSP) TTL
+ propagation. The Type= setting now supports local, broadcast,
+ anycast, multicast, any, xresolve routes, too.
+
+ * systemd-networkd's [Network] section learnt a new option
+ DefaultRouteOnDevice= for automatically configuring a default route
+ onto the network device.
+
+ * systemd-networkd's bridging support gained two new options ProxyARP=
+ and ProxyARPWifi= for configuring proxy ARP behaviour as well as
+ MulticastRouter= for configuring multicast routing behaviour. A new
+ option MulticastIGMPVersion= may be used to change bridge's multicast
+ Internet Group Management Protocol (IGMP) version.
+
+ * systemd-networkd's FooOverUDP support gained the ability to configure
+ local and peer IP addresses via Local= and Peer=. A new option
+ PeerPort= may be used to configure the peer's IP port.
+
+ * systemd-networkd's TUN support gained a new setting VnetHeader= for
+ tweaking Generic Segment Offload support.
+
+ * The address family for policy rules may be specified using the new
+ Family= option in the [RoutingPolicyRule] section.
+
+ * networkctl gained a new "delete" command for removing virtual network
+ devices, as well as a new "--stats" switch for showing device
+ statistics.
+
+ * networkd.conf gained a new setting SpeedMeter= and
+ SpeedMeterIntervalSec=, to measure bitrate of network interfaces. The
+ measured speed may be shown by 'networkctl status'.
+
+ * "networkctl status" now displays MTU and queue lengths, and more
+ detailed information about VXLAN and bridge devices.
+
+ * systemd-networkd's .network and .link files gained a new Property=
+ setting in the [Match] section, to match against devices with
+ specific udev properties.
+
+ * systemd-networkd's tunnel support gained a new option
+ AssignToLoopback= for selecting whether to use the loopback device
+ "lo" as underlying device.
+
+ * systemd-networkd's MACAddress= setting in the [Neighbor] section has
+ been renamed to LinkLayerAddress=, and it now allows configuration of
+ IP addresses, too.
+
+ * systemd-networkd's handling of the kernel's disable_ipv6 sysctl is
+ simplified: systemd-networkd will disable the sysctl (enable IPv6) if
+ IPv6 configuration (static or DHCPv6) was found for a given
+ interface. It will not touch the sysctl otherwise.
+
+ * The order of entries is $PATH used by the user manager instance was
+ changed to put bin/ entries before the corresponding sbin/ entries.
+ It is recommended to not rely on this order, and only ever have one
+ binary with a given name in the system paths under /usr.
+
+ * A new tool systemd-network-generator has been added that may generate
+ .network, .netdev and .link files from IP configuration specified on
+ the kernel command line in the format used by Dracut.
+
+ * The CriticalConnection= setting in .network files is now deprecated,
+ and replaced by a new KeepConfiguration= setting which allows more
+ detailed configuration of the IP configuration to keep in place.
+
+ * systemd-analyze gained a few new verbs:
+
+ - "systemd-analyze timestamp" parses and converts timestamps. This is
+ similar to the existing "systemd-analyze calendar" command which
+ does the same for recurring calendar events.
+
+ - "systemd-analyze timespan" parses and converts timespans (i.e.
+ durations as opposed to points in time).
+
+ - "systemd-analyze condition" will parse and test ConditionXYZ=
+ expressions.
+
+ - "systemd-analyze exit-status" will parse and convert exit status
+ codes to their names and back.
+
+ - "systemd-analyze unit-files" will print a list of all unit
+ file paths and unit aliases.
+
+ * SuccessExitStatus=, RestartPreventExitStatus=, and
+ RestartForceExitStatus= now accept exit status names (e.g. "DATAERR"
+ is equivalent to "65"). Those exit status name mappings may be
+ displayed with the systemd-analyze exit-status verb describe above.
+
+ * systemd-logind now exposes a per-session SetBrightness() bus call,
+ which may be used to securely change the brightness of a kernel
+ brightness device, if it belongs to the session's seat. By using this
+ call unprivileged clients can make changes to "backlight" and "leds"
+ devices securely with strict requirements on session membership.
+ Desktop environments may use this to generically make brightness
+ changes to such devices without shipping private SUID binaries or
+ udev rules for that purpose.
+
+ * "udevadm info" gained a --wait-for-initialization switch to wait for
+ a device to be initialized.
+
+ * systemd-hibernate-resume-generator will now look for resumeflags= on
+ the kernel command line, which is similar to rootflags= and may be
+ used to configure device timeout for the hibernation device.
+
+ * sd-event learnt a new API call sd_event_source_disable_unref() for
+ disabling and unref'ing an event source in a single function. A
+ related call sd_event_source_disable_unrefp() has been added for use
+ with gcc's cleanup extension.
+
+ * The sd-id128.h public API gained a new definition
+ SD_ID128_UUID_FORMAT_STR for formatting a 128-bit ID in UUID format
+ with printf().
+
+ * "busctl introspect" gained a new switch --xml-interface for dumping
+ XML introspection data unmodified.
+
+ * PID 1 may now show the unit name instead of the unit description
+ string in its status output during boot. This may be configured in
+ the StatusUnitFormat= setting in /etc/systemd/system.conf or the
+ kernel command line option systemd.status_unit_format=.
+
+ * PID 1 now understands a new option KExecWatchdogSec= in
+ /etc/systemd/system.conf to set a watchdog timeout for kexec reboots.
+ Previously watchdog functionality was only available for regular
+ reboots. The new setting defaults to off, because we don't know in
+ the general case if the watchdog will be reset after kexec (some
+ drivers do reset it, but not all), and the new userspace might not be
+ configured to handle the watchdog.
+
+ Moreover, the old ShutdownWatchdogSec= setting has been renamed to
+ RebootWatchdogSec= to more clearly communicate what it is about. The
+ old name is still accepted for compatibility.
+
+ * The systemd.debug_shell kernel command line option now optionally
+ takes a tty name to spawn the debug shell on, which allows a
+ different tty to be selected than the built-in default.
+
+ * Service units gained a new ExecCondition= setting which will run
+ before ExecStartPre= and either continue execution of the unit (for
+ clean exit codes), stop execution without marking the unit failed
+ (for exit codes 1 through 254), or stop execution and fail the unit
+ (for exit code 255 or abnormal termination).
+
+ * A new service systemd-pstore.service has been added that pulls data
+ from /sys/fs/pstore/ and saves it to /var/lib/pstore for later
+ review.
+
+ * timedatectl gained new verbs for configuring per-interface NTP
+ service configuration for systemd-timesyncd.
+
+ * "localectl list-locales" won't list non-UTF-8 locales anymore. It's
+ 2019. (You can set non-UTF-8 locales though, if you know their name.)
+
+ * If variable assignments in sysctl.d/ files are prefixed with "-" any
+ failures to apply them are now ignored.
+
+ * systemd-random-seed.service now optionally credits entropy when
+ applying the seed to the system. Set $SYSTEMD_RANDOM_SEED_CREDIT to
+ true for the service to enable this behaviour, but please consult the
+ documentation first, since this comes with a couple of caveats.
+
+ * systemd-random-seed.service is now a synchronization point for full
+ initialization of the kernel's entropy pool. Services that require
+ /dev/urandom to be correctly initialized should be ordered after this
+ service.
+
+ * The systemd-boot boot loader has been updated to optionally maintain
+ a random seed file in the EFI System Partition (ESP). During the boot
+ phase, this random seed is read and updated with a new seed
+ cryptographically derived from it. Another derived seed is passed to
+ the OS. The latter seed is then credited to the kernel's entropy pool
+ very early during userspace initialization (from PID 1). This allows
+ systems to boot up with a fully initialized kernel entropy pool from
+ earliest boot on, and thus entirely removes all entropy pool
+ initialization delays from systems using systemd-boot. Special care
+ is taken to ensure different seeds are derived on system images
+ replicated to multiple systems. "bootctl status" will show whether
+ a seed was received from the boot loader.
+
+ * bootctl gained two new verbs:
+
+ - "bootctl random-seed" will generate the file in ESP and an EFI
+ variable to allow a random seed to be passed to the OS as described
+ above.
+
+ - "bootctl is-installed" checks whether systemd-boot is currently
+ installed.
+
+ * bootctl will warn if it detects that boot entries are misconfigured
+ (for example if the kernel image was removed without purging the
+ bootloader entry).
+
+ * A new document has been added describing systemd's use and support
+ for the kernel's entropy pool subsystem:
+
+ https://systemd.io/RANDOM_SEEDS
+
+ * When the system is hibernated the swap device to write the
+ hibernation image to is now automatically picked from all available
+ swap devices, preferring the swap device with the highest configured
+ priority over all others, and picking the device with the most free
+ space if there are multiple devices with the highest priority.
+
+ * /etc/crypttab support has learnt a new keyfile-timeout= per-device
+ option that permits selecting the timeout how long to wait for a
+ device with an encryption key before asking for the password.
+
+ * IOWeight= has learnt to properly set the IO weight when using the
+ BFQ scheduler officially found in kernels 5.0+.
+
+ * A new mailing list has been created for reporting of security issues:
+ systemd-security@redhat.com. For mode details, see
+ https://systemd.io/CONTRIBUTING#security-vulnerability-reports.
+
+ Contributions from: Aaron Barany, Adrian Bunk, Alan Jenkins, Albrecht
+ Lohofener, Andrej Valek, Anita Zhang, Arian van Putten, Balint Reczey,
+ Bastien Nocera, Ben Boeckel, Benjamin Robin, camoz, Chen Qi, Chris
+ Chiu, Chris Down, Christian Göttsche, Christian Kellner, Clinton Roy,
+ Connor Reeder, Daniel Black, Daniel Lublin, Daniele Medri, Dan
+ Streetman, Dave Reisner, Dave Ross, David Art, David Tardon, Debarshi
+ Ray, Dimitri John Ledkov, Dominick Grift, Donald Buczek, Douglas
+ Christman, Eric DeVolder, EtherGraf, Evgeny Vereshchagin, Feldwor,
+ Felix Riemann, Florian Dollinger, Francesco Pennica, Franck Bui,
+ Frantisek Sumsal, Franz Pletz, frederik, Hans de Goede, Iago López
+ Galeiras, Insun Pyo, Ivan Shapovalov, Iwan Timmer, Jack, Jakob
+ Unterwurzacher, Jan Chren, Jan Klötzke, Jan Losinski, Jan Pokorný, Jan
+ Synacek, Jan-Michael Brummer, Jeka Pats, Jeremy Soller, Jérémy Rosen,
+ Jiri Pirko, Joe Lin, Joerg Behrmann, Joe Richey, Jóhann B. Guðmundsson,
+ Johannes Christ, Johannes Schmitz, Jonathan Rouleau, Jorge Niedbalski,
+ Jörg Thalheim, Kai Krakow, Kai Lüke, Karel Zak, Kashyap Chamarthy,
+ Krayushkin Konstantin, Lennart Poettering, Lubomir Rintel, Luca
+ Boccassi, Luís Ferreira, Marc-André Lureau, Markus Felten, Martin Pitt,
+ Matthew Leeds, Mattias Jernberg, Michael Biebl, Michael Olbrich,
+ Michael Prokop, Michael Stapelberg, Michael Zhivich, Michal Koutný,
+ Michal Sekletar, Mike Gilbert, Milan Broz, Miroslav Lichvar, mpe85,
+ Mr-Foo, Network Silence, Oliver Harley, pan93412, Paul Menzel, pEJipE,
+ Peter A. Bigot, Philip Withnall, Piotr Drąg, Rafael Fontenelle, Robert
+ Scheck, Roberto Santalla, Ronan Pigott, root, RussianNeuroMancer,
+ Sebastian Jennen, shinygold, Shreyas Behera, Simon Schricker, Susant
+ Sahani, Thadeu Lima de Souza Cascardo, Theo Ouzhinski, Thiebaud
+ Weksteen, Thomas Haller, Thomas Weißschuh, Tomas Mraz, Tommi Rantala,
+ Topi Miettinen, VD-Lycos, ven, Vladimir Yerilov, Wieland Hoffmann,
+ William A. Kennington III, William Wold, Xi Ruoyao, Yuri Chornoivan,
+ Yu Watanabe, Zach Smith, Zbigniew Jędrzejewski-Szmek, Zhang Xianwei
+
+ – Camerino, 2019-09-03
+
+CHANGES WITH 242:
+
+ * In .link files, MACAddressPolicy=persistent (the default) is changed
+ to cover more devices. For devices like bridges, tun, tap, bond, and
+ similar interfaces that do not have other identifying information,
+ the interface name is used as the basis for persistent seed for MAC
+ and IPv4LL addresses. The way that devices that were handled
+ previously is not changed, and this change is about covering more
+ devices then previously by the "persistent" policy.
+
+ MACAddressPolicy=random may be used to force randomized MACs and
+ IPv4LL addresses for a device if desired.
+
+ Hint: the log output from udev (at debug level) was enhanced to
+ clarify what policy is followed and which attributes are used.
+ `SYSTEMD_LOG_LEVEL=debug udevadm test-builtin net_setup_link /sys/class/net/<name>`
+ may be used to view this.
+
+ Hint: if a bridge interface is created without any slaves, and gains
+ a slave later, then now the bridge does not inherit slave's MAC.
+ To inherit slave's MAC, for example, create the following file:
+ ```
+ # /etc/systemd/network/98-bridge-inherit-mac.link
+ [Match]
+ Type=bridge
+
+ [Link]
+ MACAddressPolicy=none
+ ```
+
+ * The .device units generated by systemd-fstab-generator and other
+ generators do not automatically pull in the corresponding .mount unit
+ as a Wants= dependency. This means that simply plugging in the device
+ will not cause the mount unit to be started automatically. But please
+ note that the mount unit may be started for other reasons, in
+ particular if it is part of local-fs.target, and any unit which
+ (transitively) depends on local-fs.target is started.
+
+ * networkctl list/status/lldp now accept globbing wildcards for network
+ interface names to match against all existing interfaces.
+
+ * The $PIDFILE environment variable is set to point the absolute path
+ configured with PIDFile= for processes of that service.
+
+ * The fallback DNS server list was augmented with Cloudflare public DNS
+ servers. Use `-Ddns-servers=` to set a different fallback.
+
+ * A new special target usb-gadget.target will be started automatically
+ when a USB Device Controller is detected (which means that the system
+ is a USB peripheral).
+
+ * A new unit setting CPUQuotaPeriodSec= assigns the time period
+ relatively to which the CPU time quota specified by CPUQuota= is
+ measured.
+
+ * A new unit setting ProtectHostname= may be used to prevent services
+ from modifying hostname information (even if they otherwise would
+ have privileges to do so).
+
+ * A new unit setting NetworkNamespacePath= may be used to specify a
+ namespace for service or socket units through a path referring to a
+ Linux network namespace pseudo-file.
+
+ * The PrivateNetwork= setting and JoinsNamespaceOf= dependencies now
+ have an effect on .socket units: when used the listening socket is
+ created within the configured network namespace instead of the host
+ namespace.
+
+ * ExecStart= command lines in unit files may now be prefixed with ':'
+ in which case environment variable substitution is
+ disabled. (Supported for the other ExecXYZ= settings, too.)
+
+ * .timer units gained two new boolean settings OnClockChange= and
+ OnTimezoneChange= which may be used to also trigger a unit when the
+ system clock is changed or the local timezone is
+ modified. systemd-run has been updated to make these options easily
+ accessible from the command line for transient timers.
+
+ * Two new conditions for units have been added: ConditionMemory= may be
+ used to conditionalize a unit based on installed system
+ RAM. ConditionCPUs= may be used to conditionalize a unit based on
+ installed CPU cores.
+
+ * The @default system call filter group understood by SystemCallFilter=
+ has been updated to include the new rseq() system call introduced in
+ kernel 4.15.
+
+ * A new time-set.target has been added that indicates that the system
+ time has been set from a local source (possibly imprecise). The
+ existing time-sync.target is stronger and indicates that the time has
+ been synchronized with a precise external source. Services where
+ approximate time is sufficient should use the new target.
+
+ * "systemctl start" (and related commands) learnt a new
+ --show-transaction option. If specified brief information about all
+ jobs queued because of the requested operation is shown.
+
+ * systemd-networkd recognizes a new operation state 'enslaved', used
+ (instead of 'degraded' or 'carrier') for interfaces which form a
+ bridge, bond, or similar, and an new 'degraded-carrier' operational
+ state used for the bond or bridge master interface when one of the
+ enslaved devices is not operational.
+
+ * .network files learnt the new IgnoreCarrierLoss= option for leaving
+ networks configured even if the carrier is lost.
+
+ * The RequiredForOnline= setting in .network files may now specify a
+ minimum operational state required for the interface to be considered
+ "online" by systemd-networkd-wait-online. Related to this
+ systemd-networkd-wait-online gained a new option --operational-state=
+ to configure the same, and its --interface= option was updated to
+ optionally also take an operational state specific for an interface.
+
+ * systemd-networkd-wait-online gained a new setting --any for waiting
+ for only one of the requested interfaces instead of all of them.
+
+ * systemd-networkd now implements L2TP tunnels.
+
+ * Two new .network settings UseAutonomousPrefix= and UseOnLinkPrefix=
+ may be used to cause autonomous and onlink prefixes received in IPv6
+ Router Advertisements to be ignored.
+
+ * New MulticastFlood=, NeighborSuppression=, and Learning= .network
+ file settings may be used to tweak bridge behaviour.
+
+ * The new TripleSampling= option in .network files may be used to
+ configure CAN triple sampling.
+
+ * A new .netdev settings PrivateKeyFile= and PresharedKeyFile= may be
+ used to point to private or preshared key for a WireGuard interface.
+
+ * /etc/crypttab now supports the same-cpu-crypt and
+ submit-from-crypt-cpus options to tweak encryption work scheduling
+ details.
+
+ * systemd-tmpfiles will now take a BSD file lock before operating on a
+ contents of directory. This may be used to temporarily exclude
+ directories from aging by taking the same lock (useful for example
+ when extracting a tarball into /tmp or /var/tmp as a privileged user,
+ which might create files with really old timestamps, which
+ nevertheless should not be deleted). For further details, see:
+
+ https://systemd.io/TEMPORARY_DIRECTORIES
+
+ * systemd-tmpfiles' h line type gained support for the
+ FS_PROJINHERIT_FL ('P') file attribute (introduced in kernel 4.5),
+ controlling project quota inheritance.
+
+ * sd-boot and bootctl now implement support for an Extended Boot Loader
+ (XBOOTLDR) partition, that is intended to be mounted to /boot, in
+ addition to the ESP partition mounted to /efi or /boot/efi.
+ Configuration file fragments, kernels, initrds and other EFI images
+ to boot will be loaded from both the ESP and XBOOTLDR partitions.
+ The XBOOTLDR partition was previously described by the Boot Loader
+ Specification, but implementation was missing in sd-boot. Support for
+ this concept allows using the sd-boot boot loader in more
+ conservative scenarios where the boot loader itself is placed in the
+ ESP but the kernels to boot (and their metadata) in a separate
+ partition.
+
+ * A system may now be booted with systemd.volatile=overlay on the
+ kernel command line, which causes the root file system to be set up
+ an overlayfs mount combining the root-only root directory with a
+ writable tmpfs. In this setup, the underlying root device is not
+ modified, and any changes are lost at reboot.
+
+ * Similar, systemd-nspawn can now boot containers with a volatile
+ overlayfs root with the new --volatile=overlay switch.
+
+ * systemd-nspawn can now consume OCI runtime bundles using a new
+ --oci-bundle= option. This implementation is fully usable, with most
+ features in the specification implemented, but since this a lot of
+ new code and functionality, this feature should most likely not
+ be used in production yet.
+
+ * systemd-nspawn now supports various options described by the OCI
+ runtime specification on the command-line and in .nspawn files:
+ --inaccessible=/Inaccessible= may be used to mask parts of the file
+ system tree, --console=/--pipe may be used to configure how standard
+ input, output, and error are set up.
+
+ * busctl learned the `emit` verb to generate D-Bus signals.
+
+ * systemd-analyze cat-config may be used to gather and display
+ configuration spread over multiple files, for example system and user
+ presets, tmpfiles.d, sysusers.d, udev rules, etc.
+
+ * systemd-analyze calendar now takes an optional new parameter
+ --iterations= which may be used to show a maximum number of iterations
+ the specified expression will elapse next.
+
+ * The sd-bus C API gained support for naming method parameters in the
+ introspection data.
+
+ * systemd-logind gained D-Bus APIs to specify the "reboot parameter"
+ the reboot() system call expects.
+
+ * journalctl learnt a new --cursor-file= option that points to a file
+ from which a cursor should be loaded in the beginning and to which
+ the updated cursor should be stored at the end.
+
+ * ACRN hypervisor and Windows Subsystem for Linux (WSL) are now
+ detected by systemd-detect-virt (and may also be used in
+ ConditionVirtualization=).
+
+ * The behaviour of systemd-logind may now be modified with environment
+ variables $SYSTEMD_REBOOT_TO_FIRMWARE_SETUP,
+ $SYSTEMD_REBOOT_TO_BOOT_LOADER_MENU, and
+ $SYSTEMD_REBOOT_TO_BOOT_LOADER_ENTRY. They cause logind to either
+ skip the relevant operation completely (when set to false), or to
+ create a flag file in /run/systemd (when set to true), instead of
+ actually commencing the real operation when requested. The presence
+ of /run/systemd/reboot-to-firmware-setup,
+ /run/systemd/reboot-to-boot-loader-menu, and
+ /run/systemd/reboot-to-boot-loader-entry, may be used by alternative
+ boot loader implementations to replace some steps logind performs
+ during reboot with their own operations.
+
+ * systemctl can be used to request a reboot into the boot loader menu
+ or a specific boot loader entry with the new --boot-load-menu= and
+ --boot-loader-entry= options to a reboot command. (This requires a
+ boot loader that supports this, for example sd-boot.)
+
+ * kernel-install will no longer unconditionally create the output
+ directory (e.g. /efi/<machine-id>/<kernel-version>) for boot loader
+ snippets, but will do only if the machine-specific parent directory
+ (i.e. /efi/<machine-id>/) already exists. bootctl has been modified
+ to create this parent directory during sd-boot installation.
+
+ This makes it easier to use kernel-install with plugins which support
+ a different layout of the bootloader partitions (for example grub2).
+
+ * During package installation (with `ninja install`), we would create
+ symlinks for getty@tty1.service, systemd-networkd.service,
+ systemd-networkd.socket, systemd-resolved.service,
+ remote-cryptsetup.target, remote-fs.target,
+ systemd-networkd-wait-online.service, and systemd-timesyncd.service
+ in /etc, as if `systemctl enable` was called for those units, to make
+ the system usable immediately after installation. Now this is not
+ done anymore, and instead calling `systemctl preset-all` is
+ recommended after the first installation of systemd.
+
+ * A new boolean sandboxing option RestrictSUIDSGID= has been added that
+ is built on seccomp. When turned on creation of SUID/SGID files is
+ prohibited.
+
+ * The NoNewPrivileges= and the new RestrictSUIDSGID= options are now
+ implied if DynamicUser= is turned on for a service. This hardens
+ these services, so that they neither can benefit from nor create
+ SUID/SGID executables. This is a minor compatibility breakage, given
+ that when DynamicUser= was first introduced SUID/SGID behaviour was
+ unaffected. However, the security benefit of these two options is
+ substantial, and the setting is still relatively new, hence we opted
+ to make it mandatory for services with dynamic users.
+
+ Contributions from: Adam Jackson, Alexander Tsoy, Andrey Yashkin,
+ Andrzej Pietrasiewicz, Anita Zhang, Balint Reczey, Beniamino Galvani,
+ Ben Iofel, Benjamin Berg, Benjamin Dahlhoff, Chris, Chris Morin,
+ Christopher Wong, Claudius Ellsel, Clemens Gruber, dana, Daniel Black,
+ Davide Cavalca, David Michael, David Rheinsberg, emersion, Evgeny
+ Vereshchagin, Filipe Brandenburger, Franck Bui, Frantisek Sumsal,
+ Giacinto Cifelli, Hans de Goede, Hugo Kindel, Ignat Korchagin, Insun
+ Pyo, Jan Engelhardt, Jonas Dorel, Jonathan Lebon, Jonathon Kowalski,
+ Jörg Sommer, Jörg Thalheim, Jussi Pakkanen, Kai-Heng Feng, Lennart
+ Poettering, Lubomir Rintel, Luís Ferreira, Martin Pitt, Matthias
+ Klumpp, Michael Biebl, Michael Niewöhner, Michael Olbrich, Michal
+ Sekletar, Mike Lothian, Paul Menzel, Piotr Drąg, Riccardo Schirone,
+ Robin Elvedi, Roman Kulikov, Ronald Tschalär, Ross Burton, Ryan
+ Gonzalez, Sebastian Krzyszkowiak, Stephane Chazelas, StKob, Susant
+ Sahani, Sylvain Plantefève, Szabolcs Fruhwald, Taro Yamada, Theo
+ Ouzhinski, Thomas Haller, Tobias Jungel, Tom Yan, Tony Asleson, Topi
+ Miettinen, unixsysadmin, Van Laser, Vesa Jääskeläinen, Yu, Li-Yu,
+ Yu Watanabe, Zbigniew Jędrzejewski-Szmek
+
+ — Warsaw, 2019-04-11
+
+CHANGES WITH 241:
+
+ * The default locale can now be configured at compile time. Otherwise,
+ a suitable default will be selected automatically (one of C.UTF-8,
+ en_US.UTF-8, and C).
+
+ * The version string shown by systemd and other tools now includes the
+ git commit hash when built from git. An override may be specified
+ during compilation, which is intended to be used by distributions to
+ include the package release information.
+
+ * systemd-cat can now filter standard input and standard error streams
+ for different syslog priorities using the new --stderr-priority=
+ option.
+
+ * systemd-journald and systemd-journal-remote reject entries which
+ contain too many fields (CVE-2018-16865) and set limits on the
+ process' command line length (CVE-2018-16864).
+
+ * $DBUS_SESSION_BUS_ADDRESS environment variable is set by pam_systemd
+ again.
+
+ * A new network device NamePolicy "keep" is implemented for link files,
+ and used by default in 99-default.link (the fallback configuration
+ provided by systemd). With this policy, if the network device name
+ was already set by userspace, the device will not be renamed again.
+ This matches the naming scheme that was implemented before
+ systemd-240. If naming-scheme < 240 is specified, the "keep" policy
+ is also enabled by default, even if not specified. Effectively, this
+ means that if naming-scheme >= 240 is specified, network devices will
+ be renamed according to the configuration, even if they have been
+ renamed already, if "keep" is not specified as the naming policy in
+ the .link file. The 99-default.link file provided by systemd includes
+ "keep" for backwards compatibility, but it is recommended for user
+ installed .link files to *not* include it.
+
+ The "kernel" policy, which keeps kernel names declared to be
+ "persistent", now works again as documented.
+
+ * kernel-install script now optionally takes the paths to one or more
+ initrd files, and passes them to all plugins.
+
+ * The mincore() system call has been dropped from the @system-service
+ system call filter group, as it is pretty exotic and may potentially
+ used for side-channel attacks.
+
+ * -fPIE is dropped from compiler and linker options. Please specify
+ -Db_pie=true option to meson to build position-independent
+ executables. Note that the meson option is supported since meson-0.49.
+
+ * The fs.protected_regular and fs.protected_fifos sysctls, which were
+ added in Linux 4.19 to make some data spoofing attacks harder, are
+ now enabled by default. While this will hopefully improve the
+ security of most installations, it is technically a backwards
+ incompatible change; to disable these sysctls again, place the
+ following lines in /etc/sysctl.d/60-protected.conf or a similar file:
+
+ fs.protected_regular = 0
+ fs.protected_fifos = 0
+
+ Note that the similar hardlink and symlink protection has been
+ enabled since v199, and may be disabled likewise.
+
+ * The files read from the EnvironmentFile= setting in unit files now
+ parse backslashes inside quotes literally, matching the behaviour of
+ POSIX shells.
+
+ * udevadm trigger, udevadm control, udevadm settle and udevadm monitor
+ now automatically become NOPs when run in a chroot() environment.
+
+ * The tmpfiles.d/ "C" line type will now copy directory trees not only
+ when the destination is so far missing, but also if it already exists
+ as a directory and is empty. This is useful to cater for systems
+ where directory trees are put together from multiple separate mount
+ points but otherwise empty.
+
+ * A new function sd_bus_close_unref() (and the associated
+ sd_bus_close_unrefp()) has been added to libsystemd, that combines
+ sd_bus_close() and sd_bus_unref() in one.
+
+ * udevadm control learnt a new option for --ping for testing whether a
+ systemd-udevd instance is running and reacting.
+
+ * udevadm trigger learnt a new option for --wait-daemon for waiting
+ systemd-udevd daemon to be initialized.
+
+ Contributions from: Aaron Plattner, Alberts Muktupāvels, Alex Mayer,
+ Ayman Bagabas, Beniamino Galvani, Burt P, Chris Down, Chris Lamb, Chris
+ Morin, Christian Hesse, Claudius Ellsel, dana, Daniel Axtens, Daniele
+ Medri, Dave Reisner, David Santamaría Rogado, Diego Canuhe, Dimitri
+ John Ledkov, Evgeny Vereshchagin, Fabrice Fontaine, Filipe
+ Brandenburger, Franck Bui, Frantisek Sumsal, govwin, Hans de Goede,
+ James Hilliard, Jan Engelhardt, Jani Uusitalo, Jan Janssen, Jan
+ Synacek, Jonathan McDowell, Jonathan Roemer, Jonathon Kowalski, Joost
+ Heitbrink, Jörg Thalheim, Lance, Lennart Poettering, Louis Taylor,
+ Lucas Werkmeister, Mantas Mikulėnas, Marc-Antoine Perennou,
+ marvelousblack, Michael Biebl, Michael Sloan, Michal Sekletar, Mike
+ Auty, Mike Gilbert, Mikhail Kasimov, Neil Brown, Niklas Hambüchen,
+ Patrick Williams, Paul Seyfert, Peter Hutterer, Philip Withnall, Roger
+ James, Ronnie P. Thomas, Ryan Gonzalez, Sam Morris, Stephan Edel,
+ Stephan Gerhold, Susant Sahani, Taro Yamada, Thomas Haller, Topi
+ Miettinen, YiFei Zhu, YmrDtnJu, YunQiang Su, Yu Watanabe, Zbigniew
+ Jędrzejewski-Szmek, zsergeant77, Дамјан Георгиевски
+
+ — Berlin, 2019-02-14
+
+CHANGES WITH 240:
+
+ * NoNewPrivileges=yes has been set for all long-running services
+ implemented by systemd. Previously, this was problematic due to
+ SELinux (as this would also prohibit the transition from PID1's label
+ to the service's label). This restriction has since been lifted, but
+ an SELinux policy update is required.
+ (See e.g. https://github.com/fedora-selinux/selinux-policy/pull/234.)
+
+ * DynamicUser=yes is dropped from systemd-networkd.service,
+ systemd-resolved.service and systemd-timesyncd.service, which was
+ enabled in v239 for systemd-networkd.service and systemd-resolved.service,
+ and since v236 for systemd-timesyncd.service. The users and groups
+ systemd-network, systemd-resolve and systemd-timesync are created
+ by systemd-sysusers again. Distributors or system administrators
+ may need to create these users and groups if they not exist (or need
+ to re-enable DynamicUser= for those units) while upgrading systemd.
+ Also, the clock file for systemd-timesyncd may need to move from
+ /var/lib/private/systemd/timesync/clock to /var/lib/systemd/timesync/clock.
+
+ * When unit files are loaded from disk, previously systemd would
+ sometimes (depending on the unit loading order) load units from the
+ target path of symlinks in .wants/ or .requires/ directories of other
+ units. This meant that unit could be loaded from different paths
+ depending on whether the unit was requested explicitly or as a
+ dependency of another unit, not honouring the priority of directories
+ in search path. It also meant that it was possible to successfully
+ load and start units which are not found in the unit search path, as
+ long as they were requested as a dependency and linked to from
+ .wants/ or .requires/. The target paths of those symlinks are not
+ used for loading units anymore and the unit file must be found in
+ the search path.
+
+ * A new service type has been added: Type=exec. It's very similar to
+ Type=simple but ensures the service manager will wait for both fork()
+ and execve() of the main service binary to complete before proceeding
+ with follow-up units. This is primarily useful so that the manager
+ propagates any errors in the preparation phase of service execution
+ back to the job that requested the unit to be started. For example,
+ consider a service that has ExecStart= set to a file system binary
+ that doesn't exist. With Type=simple starting the unit would be
+ considered instantly successful, as only fork() has to complete
+ successfully and the manager does not wait for execve(), and hence
+ its failure is seen "too late". With the new Type=exec service type
+ starting the unit will fail, as the manager will wait for the
+ execve() and notice its failure, which is then propagated back to the
+ start job.
+
+ NOTE: with the next release 241 of systemd we intend to change the
+ systemd-run tool to default to Type=exec for transient services
+ started by it. This should be mostly safe, but in specific corner
+ cases might result in problems, as the systemd-run tool will then
+ block on NSS calls (such as user name look-ups due to User=) done
+ between the fork() and execve(), which under specific circumstances
+ might cause problems. It is recommended to specify "-p Type=simple"
+ explicitly in the few cases where this applies. For regular,
+ non-transient services (i.e. those defined with unit files on disk)
+ we will continue to default to Type=simple.
+
+ * The Linux kernel's current default RLIMIT_NOFILE resource limit for
+ userspace processes is set to 1024 (soft) and 4096
+ (hard). Previously, systemd passed this on unmodified to all
+ processes it forked off. With this systemd release the hard limit
+ systemd passes on is increased to 512K, overriding the kernel's
+ defaults and substantially increasing the number of simultaneous file
+ descriptors unprivileged userspace processes can allocate. Note that
+ the soft limit remains at 1024 for compatibility reasons: the
+ traditional UNIX select() call cannot deal with file descriptors >=
+ 1024 and increasing the soft limit globally might thus result in
+ programs unexpectedly allocating a high file descriptor and thus
+ failing abnormally when attempting to use it with select() (of
+ course, programs shouldn't use select() anymore, and prefer
+ poll()/epoll, but the call unfortunately remains undeservedly popular
+ at this time). This change reflects the fact that file descriptor
+ handling in the Linux kernel has been optimized in more recent
+ kernels and allocating large numbers of them should be much cheaper
+ both in memory and in performance than it used to be. Programs that
+ want to take benefit of the increased limit have to "opt-in" into
+ high file descriptors explicitly by raising their soft limit. Of
+ course, when they do that they must acknowledge that they cannot use
+ select() anymore (and neither can any shared library they use — or
+ any shared library used by any shared library they use and so on).
+ Which default hard limit is most appropriate is of course hard to
+ decide. However, given reports that ~300K file descriptors are used
+ in real-life applications we believe 512K is sufficiently high as new
+ default for now. Note that there are also reports that using very
+ high hard limits (e.g. 1G) is problematic: some software allocates
+ large arrays with one element for each potential file descriptor
+ (Java, …) — a high hard limit thus triggers excessively large memory
+ allocations in these applications. Hopefully, the new default of 512K
+ is a good middle ground: higher than what real-life applications
+ currently need, and low enough for avoid triggering excessively large
+ allocations in problematic software. (And yes, somebody should fix
+ Java.)
+
+ * The fs.nr_open and fs.file-max sysctls are now automatically bumped
+ to the highest possible values, as separate accounting of file
+ descriptors is no longer necessary, as memcg tracks them correctly as
+ part of the memory accounting anyway. Thus, from the four limits on
+ file descriptors currently enforced (fs.file-max, fs.nr_open,
+ RLIMIT_NOFILE hard, RLIMIT_NOFILE soft) we turn off the first two,
+ and keep only the latter two. A set of build-time options
+ (-Dbump-proc-sys-fs-file-max=false and -Dbump-proc-sys-fs-nr-open=false)
+ has been added to revert this change in behaviour, which might be
+ an option for systems that turn off memcg in the kernel.
+
+ * When no /etc/locale.conf file exists (and hence no locale settings
+ are in place), systemd will now use the "C.UTF-8" locale by default,
+ and set LANG= to it. This locale is supported by various
+ distributions including Fedora, with clear indications that upstream
+ glibc is going to make it available too. This locale enables UTF-8
+ mode by default, which appears appropriate for 2018.
+
+ * The "net.ipv4.conf.all.rp_filter" sysctl will now be set to 2 by
+ default. This effectively switches the RFC3704 Reverse Path filtering
+ from Strict mode to Loose mode. This is more appropriate for hosts
+ that have multiple links with routes to the same networks (e.g.
+ a client with a Wi-Fi and Ethernet both connected to the internet).
+
+ Consult the kernel documentation for details on this sysctl:
+ https://docs.kernel.org/networking/ip-sysctl.html
+
+ * The v239 change to turn on "net.ipv4.tcp_ecn" by default has been
+ reverted.
+
+ * CPUAccounting=yes no longer enables the CPU controller when using
+ kernel 4.15+ and the unified cgroup hierarchy, as required accounting
+ statistics are now provided independently from the CPU controller.
+
+ * Support for disabling a particular cgroup controller within a sub-tree
+ has been added through the DisableControllers= directive.
+
+ * cgroup_no_v1=all on the kernel command line now also implies
+ using the unified cgroup hierarchy, unless one explicitly passes
+ systemd.unified_cgroup_hierarchy=0 on the kernel command line.
+
+ * The new "MemoryMin=" unit file property may now be used to set the
+ memory usage protection limit of processes invoked by the unit. This
+ controls the cgroup v2 memory.min attribute. Similarly, the new
+ "IODeviceLatencyTargetSec=" property has been added, wrapping the new
+ cgroup v2 io.latency cgroup property for configuring per-service I/O
+ latency.
+
+ * systemd now supports the cgroup v2 devices BPF logic, as counterpart
+ to the cgroup v1 "devices" cgroup controller.
+
+ * systemd-escape now is able to combine --unescape with --template. It
+ also learnt a new option --instance for extracting and unescaping the
+ instance part of a unit name.
+
+ * sd-bus now provides the sd_bus_message_readv() which is similar to
+ sd_bus_message_read() but takes a va_list object. The pair
+ sd_bus_set_method_call_timeout() and sd_bus_get_method_call_timeout()
+ has been added for configuring the default method call timeout to
+ use. sd_bus_error_move() may be used to efficiently move the contents
+ from one sd_bus_error structure to another, invalidating the
+ source. sd_bus_set_close_on_exit() and sd_bus_get_close_on_exit() may
+ be used to control whether a bus connection object is automatically
+ flushed when an sd-event loop is exited.
+
+ * When processing classic BSD syslog log messages, journald will now
+ save the original time-stamp string supplied in the new
+ SYSLOG_TIMESTAMP= journal field. This permits consumers to
+ reconstruct the original BSD syslog message more correctly.
+
+ * StandardOutput=/StandardError= in service files gained support for
+ new "append:…" parameters, for connecting STDOUT/STDERR of a service
+ to a file, and appending to it.
+
+ * The signal to use as last step of killing of unit processes is now
+ configurable. Previously it was hard-coded to SIGKILL, which may now
+ be overridden with the new KillSignal= setting. Note that this is the
+ signal used when regular termination (i.e. SIGTERM) does not suffice.
+ Similarly, the signal used when aborting a program in case of a
+ watchdog timeout may now be configured too (WatchdogSignal=).
+
+ * The XDG_SESSION_DESKTOP environment variable may now be configured in
+ the pam_systemd argument line, using the new desktop= switch. This is
+ useful to initialize it properly from a display manager without
+ having to touch C code.
+
+ * Most configuration options that previously accepted percentage values
+ now also accept permille values with the '‰' suffix (instead of '%').
+
+ * systemd-resolved may now optionally use OpenSSL instead of GnuTLS for
+ DNS-over-TLS.
+
+ * systemd-resolved's configuration file resolved.conf gained a new
+ option ReadEtcHosts= which may be used to turn off processing and
+ honoring /etc/hosts entries.
+
+ * The "--wait" switch may now be passed to "systemctl
+ is-system-running", in which case the tool will synchronously wait
+ until the system finished start-up.
+
+ * hostnamed gained a new bus call to determine the DMI product UUID.
+
+ * On x86-64 systemd will now prefer using the RDRAND processor
+ instruction over /dev/urandom whenever it requires randomness that
+ neither has to be crypto-grade nor should be reproducible. This
+ should substantially reduce the amount of entropy systemd requests
+ from the kernel during initialization on such systems, though not
+ reduce it to zero. (Why not zero? systemd still needs to allocate
+ UUIDs and such uniquely, which require high-quality randomness.)
+
+ * networkd gained support for Foo-Over-UDP, ERSPAN and ISATAP
+ tunnels. It also gained a new option ForceDHCPv6PDOtherInformation=
+ for forcing the "Other Information" bit in IPv6 RA messages. The
+ bonding logic gained four new options AdActorSystemPriority=,
+ AdUserPortKey=, AdActorSystem= for configuring various 802.3ad
+ aspects, and DynamicTransmitLoadBalancing= for enabling dynamic
+ shuffling of flows. The tunnel logic gained a new
+ IPv6RapidDeploymentPrefix= option for configuring IPv6 Rapid
+ Deployment. The policy rule logic gained four new options IPProtocol=,
+ SourcePort= and DestinationPort=, InvertRule=. The bridge logic gained
+ support for the MulticastToUnicast= option. networkd also gained
+ support for configuring static IPv4 ARP or IPv6 neighbor entries.
+
+ * .preset files (as read by 'systemctl preset') may now be used to
+ instantiate services.
+
+ * /etc/crypttab now understands the sector-size= option to configure
+ the sector size for an encrypted partition.
+
+ * Key material for encrypted disks may now be placed on a formatted
+ medium, and referenced from /etc/crypttab by the UUID of the file
+ system, followed by "=" suffixed by the path to the key file.
+
+ * The "collect" udev component has been removed without replacement, as
+ it is neither used nor maintained.
+
+ * When the RuntimeDirectory=, StateDirectory=, CacheDirectory=,
+ LogsDirectory=, ConfigurationDirectory= settings are used in a
+ service the executed processes will now receive a set of environment
+ variables containing the full paths of these directories.
+ Specifically, RUNTIME_DIRECTORY=, STATE_DIRECTORY, CACHE_DIRECTORY,
+ LOGS_DIRECTORY, CONFIGURATION_DIRECTORY are now set if these options
+ are used. Note that these options may be used multiple times per
+ service in which case the resulting paths will be concatenated and
+ separated by colons.
+
+ * Predictable interface naming has been extended to cover InfiniBand
+ NICs. They will be exposed with an "ib" prefix.
+
+ * tmpfiles.d/ line types may now be suffixed with a '-' character, in
+ which case the respective line failing is ignored.
+
+ * .link files may now be used to configure the equivalent to the
+ "ethtool advertise" commands.
+
+ * The sd-device.h and sd-hwdb.h APIs are now exported, as an
+ alternative to libudev.h. Previously, the latter was just an internal
+ wrapper around the former, but now these two APIs are exposed
+ directly.
+
+ * sd-id128.h gained a new function sd_id128_get_boot_app_specific()
+ which calculates an app-specific boot ID similar to how
+ sd_id128_get_machine_app_specific() generates an app-specific machine
+ ID.
+
+ * A new tool systemd-id128 has been added that can be used to determine
+ and generate various 128-bit IDs.
+
+ * /etc/os-release gained two new standardized fields DOCUMENTATION_URL=
+ and LOGO=.
+
+ * systemd-hibernate-resume-generator will now honor the "noresume"
+ kernel command line option, in which case it will bypass resuming
+ from any hibernated image.
+
+ * The systemd-sleep.conf configuration file gained new options
+ AllowSuspend=, AllowHibernation=, AllowSuspendThenHibernate=,
+ AllowHybridSleep= for prohibiting specific sleep modes even if the
+ kernel exports them.
+
+ * portablectl is now officially supported and has thus moved to
+ /usr/bin/.
+
+ * bootctl learnt the two new commands "set-default" and "set-oneshot"
+ for setting the default boot loader item to boot to (either
+ persistently or only for the next boot). This is currently only
+ compatible with sd-boot, but may be implemented on other boot loaders
+ too, that follow the boot loader interface. The updated interface is
+ now documented here:
+
+ https://systemd.io/BOOT_LOADER_INTERFACE
+
+ * A new kernel command line option systemd.early_core_pattern= is now
+ understood which may be used to influence the core_pattern PID 1
+ installs during early boot.
+
+ * busctl learnt two new options -j and --json= for outputting method
+ call replies, properties and monitoring output in JSON.
+
+ * journalctl's JSON output now supports simple ANSI coloring as well as
+ a new "json-seq" mode for generating RFC7464 output.
+
+ * Unit files now support the %g/%G specifiers that resolve to the UNIX
+ group/GID of the service manager runs as, similar to the existing
+ %u/%U specifiers that resolve to the UNIX user/UID.
+
+ * systemd-logind learnt a new global configuration option
+ UserStopDelaySec= that may be set in logind.conf. It specifies how
+ long the systemd --user instance shall remain started after a user
+ logs out. This is useful to speed up repetitive re-connections of the
+ same user, as it means the user's service manager doesn't have to be
+ stopped/restarted on each iteration, but can be reused between
+ subsequent options. This setting defaults to 10s. systemd-logind also
+ exports two new properties on its Manager D-Bus objects indicating
+ whether the system's lid is currently closed, and whether the system
+ is on AC power.
+
+ * systemd gained support for a generic boot counting logic, which
+ generically permits automatic reverting to older boot loader entries
+ if newer updated ones don't work. The boot loader side is implemented
+ in sd-boot, but is kept open for other boot loaders too. For details
+ see:
+
+ https://systemd.io/AUTOMATIC_BOOT_ASSESSMENT
+
+ * The SuccessAction=/FailureAction= unit file settings now learnt two
+ new parameters: "exit" and "exit-force", which result in immediate
+ exiting of the service manager, and are only useful in systemd --user
+ and container environments.
+
+ * Unit files gained support for a pair of options
+ FailureActionExitStatus=/SuccessActionExitStatus= for configuring the
+ exit status to use as service manager exit status when
+ SuccessAction=/FailureAction= is set to exit or exit-force.
+
+ * A pair of LogRateLimitIntervalSec=/LogRateLimitBurst= per-service
+ options may now be used to configure the log rate limiting applied by
+ journald per-service.
+
+ * systemd-analyze gained a new verb "timespan" for parsing and
+ normalizing time span values (i.e. strings like "5min 7s 8us").
+
+ * systemd-analyze also gained a new verb "security" for analyzing the
+ security and sand-boxing settings of services in order to determine an
+ "exposure level" for them, indicating whether a service would benefit
+ from more sand-boxing options turned on for them.
+
+ * "systemd-analyze syscall-filter" will now also show system calls
+ supported by the local kernel but not included in any of the defined
+ groups.
+
+ * .nspawn files now understand the Ephemeral= setting, matching the
+ --ephemeral command line switch.
+
+ * sd-event gained the new APIs sd_event_source_get_floating() and
+ sd_event_source_set_floating() for controlling whether a specific
+ event source is "floating", i.e. destroyed along with the even loop
+ object itself.
+
+ * Unit objects on D-Bus gained a new "Refs" property that lists all
+ clients that currently have a reference on the unit (to ensure it is
+ not unloaded).
+
+ * The JoinControllers= option in system.conf is no longer supported, as
+ it didn't work correctly, is hard to support properly, is legacy (as
+ the concept only exists on cgroup v1) and apparently wasn't used.
+
+ * Journal messages that are generated whenever a unit enters the failed
+ state are now tagged with a unique MESSAGE_ID. Similarly, messages
+ generated whenever a service process exits are now made recognizable,
+ too. A tagged message is also emitted whenever a unit enters the
+ "dead" state on success.
+
+ * systemd-run gained a new switch --working-directory= for configuring
+ the working directory of the service to start. A shortcut -d is
+ equivalent, setting the working directory of the service to the
+ current working directory of the invoking program. The new --shell
+ (or just -S) option has been added for invoking the $SHELL of the
+ caller as a service, and implies --pty --same-dir --wait --collect
+ --service-type=exec. Or in other words, "systemd-run -S" is now the
+ quickest way to quickly get an interactive in a fully clean and
+ well-defined system service context.
+
+ * machinectl gained a new verb "import-fs" for importing an OS tree
+ from a directory. Moreover, when a directory or tarball is imported
+ and single top-level directory found with the OS itself below the OS
+ tree is automatically mangled and moved one level up.
+
+ * systemd-importd will no longer set up an implicit btrfs loop-back
+ file system on /var/lib/machines. If one is already set up, it will
+ continue to be used.
+
+ * A new generator "systemd-run-generator" has been added. It will
+ synthesize a unit from one or more program command lines included in
+ the kernel command line. This is very useful in container managers
+ for example:
+
+ # systemd-nspawn -i someimage.raw -b systemd.run='"some command line"'
+
+ This will run "systemd-nspawn" on an image, invoke the specified
+ command line and immediately shut down the container again, returning
+ the command line's exit code.
+
+ * The block device locking logic is now documented:
+
+ https://systemd.io/BLOCK_DEVICE_LOCKING
+
+ * loginctl and machinectl now optionally output the various tables in
+ JSON using the --output= switch. It is our intention to add similar
+ support to systemctl and all other commands.
+
+ * udevadm's query and trigger verb now optionally take a .device unit
+ name as argument.
+
+ * systemd-udevd's network naming logic now understands a new
+ net.naming-scheme= kernel command line switch, which may be used to
+ pick a specific version of the naming scheme. This helps stabilizing
+ interface names even as systemd/udev are updated and the naming logic
+ is improved.
+
+ * sd-id128.h learnt two new auxiliary helpers: sd_id128_is_allf() and
+ SD_ID128_ALLF to test if a 128-bit ID is set to all 0xFF bytes, and to
+ initialize one to all 0xFF.
+
+ * After loading the SELinux policy systemd will now recursively relabel
+ all files and directories listed in
+ /run/systemd/relabel-extra.d/*.relabel (which should be simple
+ newline separated lists of paths) in addition to the ones it already
+ implicitly relabels in /run, /dev and /sys. After the relabelling is
+ completed the *.relabel files (and /run/systemd/relabel-extra.d/) are
+ removed. This is useful to permit initrds (i.e. code running before
+ the SELinux policy is in effect) to generate files in the host
+ filesystem safely and ensure that the correct label is applied during
+ the transition to the host OS.
+
+ * KERNEL API BREAKAGE: Linux kernel 4.18 changed behaviour regarding
+ mknod() handling in user namespaces. Previously mknod() would always
+ fail with EPERM in user namespaces. Since 4.18 mknod() will succeed
+ but device nodes generated that way cannot be opened, and attempts to
+ open them result in EPERM. This breaks the "graceful fallback" logic
+ in systemd's PrivateDevices= sand-boxing option. This option is
+ implemented defensively, so that when systemd detects it runs in a
+ restricted environment (such as a user namespace, or an environment
+ where mknod() is blocked through seccomp or absence of CAP_SYS_MKNOD)
+ where device nodes cannot be created the effect of PrivateDevices= is
+ bypassed (following the logic that 2nd-level sand-boxing is not
+ essential if the system systemd runs in is itself already sand-boxed
+ as a whole). This logic breaks with 4.18 in container managers where
+ user namespacing is used: suddenly PrivateDevices= succeeds setting
+ up a private /dev/ file system containing devices nodes — but when
+ these are opened they don't work.
+
+ At this point it is recommended that container managers utilizing
+ user namespaces that intend to run systemd in the payload explicitly
+ block mknod() with seccomp or similar, so that the graceful fallback
+ logic works again.
+
+ We are very sorry for the breakage and the requirement to change
+ container configurations for newer kernels. It's purely caused by an
+ incompatible kernel change. The relevant kernel developers have been
+ notified about this userspace breakage quickly, but they chose to
+ ignore it.
+
+ * PermissionsStartOnly= setting is deprecated (but is still supported
+ for backwards compatibility). The same functionality is provided by
+ the more flexible "+", "!", and "!!" prefixes to ExecStart= and other
+ commands.
+
+ * $DBUS_SESSION_BUS_ADDRESS environment variable is not set by
+ pam_systemd anymore.
+
+ * The naming scheme for network devices was changed to always rename
+ devices, even if they were already renamed by userspace. The "kernel"
+ policy was changed to only apply as a fallback, if no other naming
+ policy took effect.
+
+ * The requirements to build systemd is bumped to meson-0.46 and
+ python-3.5.
+
+ Contributions from: afg, Alan Jenkins, Aleksei Timofeyev, Alexander
+ Filippov, Alexander Kurtz, Alexey Bogdanenko, Andreas Henriksson,
+ Andrew Jorgensen, Anita Zhang, apnix-uk, Arkan49, Arseny Maslennikov,
+ asavah, Asbjørn Apeland, aszlig, Bastien Nocera, Ben Boeckel, Benedikt
+ Morbach, Benjamin Berg, Bruce Zhang, Carlo Caione, Cedric Viou, Chen
+ Qi, Chris Chiu, Chris Down, Chris Morin, Christian Rebischke, Claudius
+ Ellsel, Colin Guthrie, dana, Daniel, Daniele Medri, Daniel Kahn
+ Gillmor, Daniel Rusek, Daniel van Vugt, Dariusz Gadomski, Dave Reisner,
+ David Anderson, Davide Cavalca, David Leeds, David Malcolm, David
+ Strauss, David Tardon, Dimitri John Ledkov, Dmitry Torokhov, dj-kaktus,
+ Dongsu Park, Elias Probst, Emil Soleyman, Erik Kooistra, Ervin Peters,
+ Evgeni Golov, Evgeny Vereshchagin, Fabrice Fontaine, Faheel Ahmad,
+ Faizal Luthfi, Felix Yan, Filipe Brandenburger, Franck Bui, Frank
+ Schaefer, Frantisek Sumsal, Gautier Husson, Gianluca Boiano, Giuseppe
+ Scrivano, glitsj16, Hans de Goede, Harald Hoyer, Harry Mallon, Harshit
+ Jain, Helmut Grohne, Henry Tung, Hui Yiqun, imayoda, Insun Pyo, Iwan
+ Timmer, Jan Janssen, Jan Pokorný, Jan Synacek, Jason A. Donenfeld,
+ javitoom, Jérémy Nouhaud, Jeremy Su, Jiuyang Liu, João Paulo Rechi
+ Vita, Joe Hershberger, Joe Rayhawk, Joerg Behrmann, Joerg Steffens,
+ Jonas Dorel, Jon Ringle, Josh Soref, Julian Andres Klode, Jun Bo Bi,
+ Jürg Billeter, Keith Busch, Khem Raj, Kirill Marinushkin, Larry
+ Bernstone, Lennart Poettering, Lion Yang, Li Song, Lorenz
+ Hübschle-Schneider, Lubomir Rintel, Lucas Werkmeister, Ludwin Janvier,
+ Lukáš Nykrýn, Luke Shumaker, mal, Marc-Antoine Perennou, Marcin
+ Skarbek, Marco Trevisan (Treviño), Marian Cepok, Mario Hros, Marko
+ Myllynen, Markus Grimm, Martin Pitt, Martin Sobotka, Martin Wilck,
+ Mathieu Trudel-Lapierre, Matthew Leeds, Michael Biebl, Michael Olbrich,
+ Michael 'pbone' Pobega, Michael Scherer, Michal Koutný, Michal
+ Sekletar, Michal Soltys, Mike Gilbert, Mike Palmer, Muhammet Kara, Neal
+ Gompa, Neil Brown, Network Silence, Niklas Tibbling, Nikolas Nyby,
+ Nogisaka Sadata, Oliver Smith, Patrik Flykt, Pavel Hrdina, Paweł
+ Szewczyk, Peter Hutterer, Piotr Drąg, Ray Strode, Reinhold Mueller,
+ Renaud Métrich, Roman Gushchin, Ronny Chevalier, Rubén Suárez Alvarez,
+ Ruixin Bao, RussianNeuroMancer, Ryutaroh Matsumoto, Saleem Rashid, Sam
+ Morris, Samuel Morris, Sandy Carter, scootergrisen, Sébastien Bacher,
+ Sergey Ptashnick, Shawn Landden, Shengyao Xue, Shih-Yuan Lee
+ (FourDollars), Silvio Knizek, Sjoerd Simons, Stasiek Michalski, Stephen
+ Gallagher, Steven Allen, Steve Ramage, Susant Sahani, Sven Joachim,
+ Sylvain Plantefève, Tanu Kaskinen, Tejun Heo, Thiago Macieira, Thomas
+ Blume, Thomas Haller, Thomas H. P. Andersen, Tim Ruffing, TJ, Tobias
+ Jungel, Todd Walton, Tommi Rantala, Tomsod M, Tony Novak, Tore
+ Anderson, Trevonn, Victor Laskurain, Victor Tapia, Violet Halo, Vojtech
+ Trefny, welaq, William A. Kennington III, William Douglas, Wyatt Ward,
+ Xiang Fan, Xi Ruoyao, Xuanwo, Yann E. Morin, YmrDtnJu, Yu Watanabe,
+ Zbigniew Jędrzejewski-Szmek, Zhang Xianwei, Zsolt Dollenstein
+
+ — Warsaw, 2018-12-21
+
+CHANGES WITH 239:
+
+ * NETWORK INTERFACE DEVICE NAMING CHANGES: systemd-udevd's "net_id"
+ builtin will name network interfaces differently than in previous
+ versions for virtual network interfaces created with SR-IOV and NPAR
+ and for devices where the PCI network controller device does not have
+ a slot number associated.
+
+ SR-IOV virtual devices are now named based on the name of the parent
+ interface, with a suffix of "v<N>", where <N> is the virtual device
+ number. Previously those virtual devices were named as if completely
+ independent.
+
+ The ninth and later NPAR virtual devices will be named following the
+ scheme used for the first eight NPAR partitions. Previously those
+ devices were not renamed and the kernel default (eth<n>) was used.
+
+ "net_id" will also generate names for PCI devices where the PCI
+ network controller device does not have an associated slot number
+ itself, but one of its parents does. Previously those devices were
+ not renamed and the kernel default (eth<n>) was used.
+
+ * AF_INET and AF_INET6 are dropped from RestrictAddressFamilies= in
+ systemd-logind.service. Since v235, IPAddressDeny=any has been set to
+ the unit. So, it is expected that the default behavior of
+ systemd-logind is not changed. However, if distribution packagers or
+ administrators disabled or modified IPAddressDeny= setting by a
+ drop-in config file, then it may be necessary to update the file to
+ re-enable AF_INET and AF_INET6 to support network user name services,
+ e.g. NIS.
+
+ * When the RestrictNamespaces= unit property is specified multiple
+ times, then the specified types are merged now. Previously, only the
+ last assignment was used. So, if distribution packagers or
+ administrators modified the setting by a drop-in config file, then it
+ may be necessary to update the file.
+
+ * When OnFailure= is used in combination with Restart= on a service
+ unit, then the specified units will no longer be triggered on
+ failures that result in restarting. Previously, the specified units
+ would be activated each time the unit failed, even when the unit was
+ going to be restarted automatically. This behaviour contradicted the
+ documentation. With this release the code is adjusted to match the
+ documentation.
+
+ * systemd-tmpfiles will now print a notice whenever it encounters
+ tmpfiles.d/ lines referencing the /var/run/ directory. It will
+ recommend reworking them to use the /run/ directory instead (for
+ which /var/run/ is simply a symlinked compatibility alias). This way
+ systemd-tmpfiles can properly detect line conflicts and merge lines
+ referencing the same file by two paths, without having to access
+ them.
+
+ * systemctl disable/unmask/preset/preset-all cannot be used with
+ --runtime. Previously this was allowed, but resulted in unintuitive
+ behaviour that wasn't useful. systemctl disable/unmask will now undo
+ both runtime and persistent enablement/masking, i.e. it will remove
+ any relevant symlinks both in /run and /etc.
+
+ * Note that all long-running system services shipped with systemd will
+ now default to a system call allow list (rather than a deny list, as
+ before). In particular, systemd-udevd will now enforce one too. For
+ most cases this should be safe, however downstream distributions
+ which disabled sandboxing of systemd-udevd (specifically the
+ MountFlags= setting), might want to disable this security feature
+ too, as the default allow-listing will prohibit all mount, swap,
+ reboot and clock changing operations from udev rules.
+
+ * sd-boot acquired new loader configuration settings to optionally turn
+ off Windows and MacOS boot partition discovery as well as
+ reboot-into-firmware menu items. It is also able to pick a better
+ screen resolution for HiDPI systems, and now provides loader
+ configuration settings to change the resolution explicitly.
+
+ * systemd-resolved now supports DNS-over-TLS. It's still
+ turned off by default, use DNSOverTLS=opportunistic to turn it on in
+ resolved.conf. We intend to make this the default as soon as couple
+ of additional techniques for optimizing the initial latency caused by
+ establishing a TLS/TCP connection are implemented.
+
+ * systemd-resolved.service and systemd-networkd.service now set
+ DynamicUser=yes. The users systemd-resolve and systemd-network are
+ not created by systemd-sysusers anymore.
+
+ NOTE: This has a chance of breaking nss-ldap and similar NSS modules
+ that embed a network facing module into any process using getpwuid()
+ or related call: the dynamic allocation of the user ID for
+ systemd-resolved.service means the service manager has to check NSS
+ if the user name is already taken when forking off the service. Since
+ the user in the common case won't be defined in /etc/passwd the
+ lookup is likely to trigger nss-ldap which in turn might use NSS to
+ ask systemd-resolved for hostname lookups. This will hence result in
+ a deadlock: a user name lookup in order to start
+ systemd-resolved.service will result in a hostname lookup for which
+ systemd-resolved.service needs to be started already. There are
+ multiple ways to work around this problem: pre-allocate the
+ "systemd-resolve" user on such systems, so that nss-ldap won't be
+ triggered; or use a different NSS package that doesn't do networking
+ in-process but provides a local asynchronous name cache; or configure
+ the NSS package to avoid lookups for UIDs in the range `pkg-config
+ systemd --variable=dynamicuidmin` … `pkg-config systemd
+ --variable=dynamicuidmax`, so that it does not consider itself
+ authoritative for the same UID range systemd allocates dynamic users
+ from.
+
+ * The systemd-resolve tool has been renamed to resolvectl (it also
+ remains available under the old name, for compatibility), and its
+ interface is now verb-based, similar in style to the other <xyz>ctl
+ tools, such as systemctl or loginctl.
+
+ * The resolvectl/systemd-resolve tool also provides 'resolvconf'
+ compatibility. It may be symlinked under the 'resolvconf' name, in
+ which case it will take arguments and input compatible with the
+ Debian and FreeBSD resolvconf tool.
+
+ * Support for suspend-then-hibernate has been added, i.e. a sleep mode
+ where the system initially suspends, and after a timeout resumes and
+ hibernates again.
+
+ * networkd's ClientIdentifier= now accepts a new option "duid-only". If
+ set the client will only send a DUID as client identifier. (EDIT: the
+ option was broken, and was dropped in v255.)
+
+ * The nss-systemd glibc NSS module will now enumerate dynamic users and
+ groups in effect. Previously, it could resolve UIDs/GIDs to user
+ names/groups and vice versa, but did not support enumeration.
+
+ * journald's Compress= configuration setting now optionally accepts a
+ byte threshold value. All journal objects larger than this threshold
+ will be compressed, smaller ones will not. Previously this threshold
+ was not configurable and set to 512.
+
+ * A new system.conf setting NoNewPrivileges= is now available which may
+ be used to turn off acquisition of new privileges system-wide
+ (i.e. set Linux' PR_SET_NO_NEW_PRIVS for PID 1 itself, and thus also
+ for all its children). Note that turning this option on means setuid
+ binaries and file system capabilities lose their special powers.
+ While turning on this option is a big step towards a more secure
+ system, doing so is likely to break numerous pre-existing UNIX tools,
+ in particular su and sudo.
+
+ * A new service systemd-time-sync-wait.service has been added. If
+ enabled it will delay the time-sync.target unit at boot until time
+ synchronization has been received from the network. This
+ functionality is useful on systems lacking a local RTC or where it is
+ acceptable that the boot process shall be delayed by external network
+ services.
+
+ * When hibernating, systemd will now inform the kernel of the image
+ write offset, on kernels new enough to support this. This means swap
+ files should work for hibernation now.
+
+ * When loading unit files, systemd will now look for drop-in unit files
+ extensions in additional places. Previously, for a unit file name
+ "foo-bar-baz.service" it would look for dropin files in
+ "foo-bar-baz.service.d/*.conf". Now, it will also look in
+ "foo-bar-.service.d/*.conf" and "foo-.service.d/", i.e. at the
+ service name truncated after all inner dashes. This scheme allows
+ writing drop-ins easily that apply to a whole set of unit files at
+ once. It's particularly useful for mount and slice units (as their
+ naming is prefix based), but is also useful for service and other
+ units, for packages that install multiple unit files at once,
+ following a strict naming regime of beginning the unit file name with
+ the package's name. Two new specifiers are now supported in unit
+ files to match this: %j and %J are replaced by the part of the unit
+ name following the last dash.
+
+ * Unit files and other configuration files that support specifier
+ expansion now understand another three new specifiers: %T and %V will
+ resolve to /tmp and /var/tmp respectively, or whatever temporary
+ directory has been set for the calling user. %E will expand to either
+ /etc (for system units) or $XDG_CONFIG_HOME (for user units).
+
+ * The ExecStart= lines of unit files are no longer required to
+ reference absolute paths. If non-absolute paths are specified the
+ specified binary name is searched within the service manager's
+ built-in $PATH, which may be queried with 'systemd-path
+ search-binaries-default'. It's generally recommended to continue to
+ use absolute paths for all binaries specified in unit files.
+
+ * Units gained a new load state "bad-setting", which is used when a
+ unit file was loaded, but contained fatal errors which prevent it
+ from being started (for example, a service unit has been defined
+ lacking both ExecStart= and ExecStop= lines).
+
+ * coredumpctl's "gdb" verb has been renamed to "debug", in order to
+ support alternative debuggers, for example lldb. The old name
+ continues to be available however, for compatibility reasons. Use the
+ new --debugger= switch or the $SYSTEMD_DEBUGGER environment variable
+ to pick an alternative debugger instead of the default gdb.
+
+ * systemctl and the other tools will now output escape sequences that
+ generate proper clickable hyperlinks in various terminal emulators
+ where useful (for example, in the "systemctl status" output you can
+ now click on the unit file name to quickly open it in the
+ editor/viewer of your choice). Note that not all terminal emulators
+ support this functionality yet, but many do. Unfortunately, the
+ "less" pager doesn't support this yet, hence this functionality is
+ currently automatically turned off when a pager is started (which
+ happens quite often due to auto-paging). We hope to remove this
+ limitation as soon as "less" learns these escape sequences. This new
+ behaviour may also be turned off explicitly with the $SYSTEMD_URLIFY
+ environment variable. For details on these escape sequences see:
+ https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda
+
+ * networkd's .network files now support a new IPv6MTUBytes= option for
+ setting the MTU used by IPv6 explicitly as well as a new MTUBytes=
+ option in the [Route] section to configure the MTU to use for
+ specific routes. It also gained support for configuration of the DHCP
+ "UserClass" option through the new UserClass= setting. It gained
+ three new options in the new [CAN] section for configuring CAN
+ networks. The MULTICAST and ALLMULTI interface flags may now be
+ controlled explicitly with the new Multicast= and AllMulticast=
+ settings.
+
+ * networkd will now automatically make use of the kernel's route
+ expiration feature, if it is available.
+
+ * udevd's .link files now support setting the number of receive and
+ transmit channels, using the RxChannels=, TxChannels=,
+ OtherChannels=, CombinedChannels= settings.
+
+ * Support for UDPSegmentationOffload= has been removed, given its
+ limited support in hardware, and waning software support.
+
+ * networkd's .netdev files now support creating "netdevsim" interfaces.
+
+ * PID 1 learnt a new bus call GetUnitByControlGroup() which may be used
+ to query the unit belonging to a specific kernel control group.
+
+ * systemd-analyze gained a new verb "cat-config", which may be used to
+ dump the contents of any configuration file, with all its matching
+ drop-in files added in, and honouring the usual search and masking
+ logic applied to systemd configuration files. For example use
+ "systemd-analyze cat-config systemd/system.conf" to get the complete
+ system configuration file of systemd how it would be loaded by PID 1
+ itself. Similar to this, various tools such as systemd-tmpfiles or
+ systemd-sysusers, gained a new option "--cat-config", which does the
+ corresponding operation for their own configuration settings. For
+ example, "systemd-tmpfiles --cat-config" will now output the full
+ list of tmpfiles.d/ lines in place.
+
+ * timedatectl gained three new verbs: "show" shows bus properties of
+ systemd-timedated, "timesync-status" shows the current NTP
+ synchronization state of systemd-timesyncd, and "show-timesync"
+ shows bus properties of systemd-timesyncd.
+
+ * systemd-timesyncd gained a bus interface on which it exposes details
+ about its state.
+
+ * A new environment variable $SYSTEMD_TIMEDATED_NTP_SERVICES is now
+ understood by systemd-timedated. It takes a colon-separated list of
+ unit names of NTP client services. The list is used by
+ "timedatectl set-ntp".
+
+ * systemd-nspawn gained a new --rlimit= switch for setting initial
+ resource limits for the container payload. There's a new switch
+ --hostname= to explicitly override the container's hostname. A new
+ --no-new-privileges= switch may be used to control the
+ PR_SET_NO_NEW_PRIVS flag for the container payload. A new
+ --oom-score-adjust= switch controls the OOM scoring adjustment value
+ for the payload. The new --cpu-affinity= switch controls the CPU
+ affinity of the container payload. The new --resolv-conf= switch
+ allows more detailed control of /etc/resolv.conf handling of the
+ container. Similarly, the new --timezone= switch allows more detailed
+ control of /etc/localtime handling of the container.
+
+ * systemd-detect-virt gained a new --list switch, which will print a
+ list of all currently known VM and container environments.
+
+ * Support for "Portable Services" has been added, see
+ doc/PORTABLE_SERVICES.md for details. Currently, the support is still
+ experimental, but this is expected to change soon. Reflecting this
+ experimental state, the "portablectl" binary is not installed into
+ /usr/bin yet. The binary has to be called with the full path
+ /usr/lib/systemd/portablectl instead.
+
+ * journalctl's and systemctl's -o switch now knows a new log output
+ mode "with-unit". The output it generates is very similar to the
+ regular "short" mode, but displays the unit name instead of the
+ syslog tag for each log line. Also, the date is shown with timezone
+ information. This mode is probably more useful than the classic
+ "short" output mode for most purposes, except where pixel-perfect
+ compatibility with classic /var/log/messages formatting is required.
+
+ * A new --dump-bus-properties switch has been added to the systemd
+ binary, which may be used to dump all supported D-Bus properties.
+ (Options which are still supported, but are deprecated, are *not*
+ shown.)
+
+ * sd-bus gained a set of new calls:
+ sd_bus_slot_set_floating()/sd_bus_slot_get_floating() may be used to
+ enable/disable the "floating" state of a bus slot object,
+ i.e. whether the slot object pins the bus it is allocated for into
+ memory or if the bus slot object gets disconnected when the bus goes
+ away. sd_bus_open_with_description(),
+ sd_bus_open_user_with_description(),
+ sd_bus_open_system_with_description() may be used to allocate bus
+ objects and set their description string already during allocation.
+
+ * sd-event gained support for watching inotify events from the event
+ loop, in an efficient way, sharing inotify handles between multiple
+ users. For this a new function sd_event_add_inotify() has been added.
+
+ * sd-event and sd-bus gained support for calling special user-supplied
+ destructor functions for userdata pointers associated with
+ sd_event_source, sd_bus_slot, and sd_bus_track objects. For this new
+ functions sd_bus_slot_set_destroy_callback,
+ sd_bus_slot_get_destroy_callback, sd_bus_track_set_destroy_callback,
+ sd_bus_track_get_destroy_callback,
+ sd_event_source_set_destroy_callback,
+ sd_event_source_get_destroy_callback have been added.
+
+ * The "net.ipv4.tcp_ecn" sysctl will now be turned on by default.
+
+ * PID 1 will now automatically reschedule .timer units whenever the
+ local timezone changes. (They previously got rescheduled
+ automatically when the system clock changed.)
+
+ * New documentation has been added to document cgroups delegation,
+ portable services and the various code quality tools we have set up:
+
+ https://github.com/systemd/systemd/blob/master/docs/CGROUP_DELEGATION.md
+ https://github.com/systemd/systemd/blob/master/docs/PORTABLE_SERVICES.md
+ https://github.com/systemd/systemd/blob/master/docs/CODE_QUALITY.md
+
+ * The Boot Loader Specification has been added to the source tree.
+
+ https://github.com/systemd/systemd/blob/master/docs/BOOT_LOADER_SPECIFICATION.md
+
+ While moving it into our source tree we have updated it and further
+ changes are now accepted through the usual github PR workflow.
+
+ * pam_systemd will now look for PAM userdata fields systemd.memory_max,
+ systemd.tasks_max, systemd.cpu_weight, systemd.io_weight set by
+ earlier PAM modules. The data in these fields is used to initialize
+ the session scope's resource properties. Thus external PAM modules
+ may now configure per-session limits, for example sourced from
+ external user databases.
+
+ * socket units with Accept=yes will now maintain a "refused" counter in
+ addition to the existing "accepted" counter, counting connections
+ refused due to the enforced limits.
+
+ * The "systemd-path search-binaries-default" command may now be use to
+ query the default, built-in $PATH PID 1 will pass to the services it
+ manages.
+
+ * A new unit file setting PrivateMounts= has been added. It's a boolean
+ option. If enabled the unit's processes are invoked in their own file
+ system namespace. Note that this behaviour is also implied if any
+ other file system namespacing options (such as PrivateTmp=,
+ PrivateDevices=, ProtectSystem=, …) are used. This option is hence
+ primarily useful for services that do not use any of the other file
+ system namespacing options. One such service is systemd-udevd.service
+ where this is now used by default.
+
+ * ConditionSecurity= gained a new value "uefi-secureboot" that is true
+ when the system is booted in UEFI "secure mode".
+
+ * A new unit "system-update-pre.target" is added, which defines an
+ optional synchronization point for offline system updates, as
+ implemented by the pre-existing "system-update.target" unit. It
+ allows ordering services before the service that executes the actual
+ update process in a generic way.
+
+ * Systemd now emits warnings whenever .include syntax is used.
+
+ Contributions from: Adam Duskett, Alan Jenkins, Alessandro Casale,
+ Alexander Kurtz, Alex Gartrell, Anssi Hannula, Arnaud Rebillout, Brian
+ J. Murrell, Bruno Vernay, Chris Lamb, Chris Lesiak, Christian Brauner,
+ Christian Hesse, Christian Rebischke, Colin Guthrie, Daniel Dao, Daniel
+ Lin, Danylo Korostil, Davide Cavalca, David Tardon, Dimitri John
+ Ledkov, Dmitriy Geels, Douglas Christman, Elia Geretto, emelenas, Emil
+ Velikov, Evgeny Vereshchagin, Felipe Sateler, Feng Sun, Filipe
+ Brandenburger, Franck Bui, futpib, Giuseppe Scrivano, Guillem Jover,
+ guixxx, Hannes Reinecke, Hans de Goede, Harald Hoyer, Henrique Dante de
+ Almeida, Hiram van Paassen, Ian Miell, Igor Gnatenko, Ivan Shapovalov,
+ Iwan Timmer, James Cowgill, Jan Janssen, Jan Synacek, Jared Kazimir,
+ Jérémy Rosen, João Paulo Rechi Vita, Joost Heitbrink, Jui-Chi Ricky
+ Liang, Jürg Billeter, Kai-Heng Feng, Karol Augustin, Kay Sievers,
+ Krzysztof Nowicki, Lauri Tirkkonen, Lennart Poettering, Leonard König,
+ Long Li, Luca Boccassi, Lucas Werkmeister, Marcel Hoppe, Marc
+ Kleine-Budde, Mario Limonciello, Martin Jansa, Martin Wilck, Mathieu
+ Malaterre, Matteo F. Vescovi, Matthew McGinn, Matthias-Christian Ott,
+ Michael Biebl, Michael Olbrich, Michael Prokop, Michal Koutný, Michal
+ Sekletar, Mike Gilbert, Mikhail Kasimov, Milan Broz, Milan Pässler,
+ Mladen Pejaković, Muhammet Kara, Nicolas Boichat, Omer Katz, Paride
+ Legovini, Paul Menzel, Paul Milliken, Pavel Hrdina, Peter A. Bigot,
+ Peter D'Hoye, Peter Hutterer, Peter Jones, Philip Sequeira, Philip
+ Withnall, Piotr Drąg, Radostin Stoyanov, Ricardo Salveti de Araujo,
+ Ronny Chevalier, Rosen Penev, Rubén Suárez Alvarez, Ryan Gonzalez,
+ Salvo Tomaselli, Sebastian Reichel, Sergey Ptashnick, Sergio Lindo
+ Mansilla, Stefan Schweter, Stephen Hemminger, Stuart Hayes, Susant
+ Sahani, Sylvain Plantefève, Thomas H. P. Andersen, Tobias Jungel,
+ Tomasz Torcz, Vito Caputo, Will Dietz, Will Thompson, Wim van Mourik,
+ Yu Watanabe, Zbigniew Jędrzejewski-Szmek
+
+ — Berlin, 2018-06-22
+
+CHANGES WITH 238:
+
+ * The MemoryAccounting= unit property now defaults to on. After
+ discussions with the upstream control group maintainers we learnt
+ that the negative impact of cgroup memory accounting on current
+ kernels is finally relatively minimal, so that it should be safe to
+ enable this by default without affecting system performance. Besides
+ memory accounting only task accounting is turned on by default, all
+ other forms of resource accounting (CPU, IO, IP) remain off for now,
+ because it's not clear yet that their impact is small enough to move
+ from opt-in to opt-out. We recommend downstreams to leave memory
+ accounting on by default if kernel 4.14 or higher is primarily
+ used. On very resource constrained systems or when support for old
+ kernels is a necessity, -Dmemory-accounting-default=false can be used
+ to revert this change.
+
+ * rpm scriptlets to update the udev hwdb and rules (%udev_hwdb_update,
+ %udev_rules_update) and the journal catalog (%journal_catalog_update)
+ from the upgrade scriptlets of individual packages now do nothing.
+ Transfiletriggers have been added which will perform those updates
+ once at the end of the transaction.
+
+ Similar transfiletriggers have been added to execute any sysctl.d
+ and binfmt.d rules. Thus, it should be unnecessary to provide any
+ scriptlets to execute this configuration from package installation
+ scripts.
+
+ * systemd-sysusers gained a mode where the configuration to execute is
+ specified on the command line, but this configuration is not executed
+ directly, but instead it is merged with the configuration on disk,
+ and the result is executed. This is useful for package installation
+ scripts which want to create the user before installing any files on
+ disk (in case some of those files are owned by that user), while
+ still allowing local admin overrides.
+
+ This functionality is exposed to rpm scriptlets through a new
+ %sysusers_create_package macro. Old %sysusers_create and
+ %sysusers_create_inline macros are deprecated.
+
+ A transfiletrigger for sysusers.d configuration is now installed,
+ which means that it should be unnecessary to call systemd-sysusers from
+ package installation scripts, unless the package installs any files
+ owned by those newly-created users, in which case
+ %sysusers_create_package should be used.
+
+ * Analogous change has been done for systemd-tmpfiles: it gained a mode
+ where the command-line configuration is merged with the configuration
+ on disk. This is exposed as the new %tmpfiles_create_package macro,
+ and %tmpfiles_create is deprecated. A transfiletrigger is installed
+ for tmpfiles.d, hence it should be unnecessary to call systemd-tmpfiles
+ from package installation scripts.
+
+ * sysusers.d configuration for a user may now also specify the group
+ number, in addition to the user number ("u username 123:456"), or
+ without the user number ("u username -:456").
+
+ * Configution items for systemd-sysusers can now be specified as
+ positional arguments when the new --inline switch is used.
+
+ * The login shell of users created through sysusers.d may now be
+ specified (previously, it was always /bin/sh for root and
+ /sbin/nologin for other users).
+
+ * systemd-analyze gained a new --global switch to look at global user
+ configuration. It also gained a unit-paths verb to list the unit load
+ paths that are compiled into systemd (which can be used with
+ --systemd, --user, or --global).
+
+ * udevadm trigger gained a new --settle/-w option to wait for any
+ triggered events to finish (but just those, and not any other events
+ which are triggered meanwhile).
+
+ * The action that systemd-logind takes when the lid is closed and the
+ machine is connected to external power can now be configured using
+ HandleLidSwitchExternalPower= in logind.conf. Previously, this action
+ was determined by HandleLidSwitch=, and, for backwards compatibility,
+ is still is, if HandleLidSwitchExternalPower= is not explicitly set.
+
+ * journalctl will periodically call sd_journal_process() to make it
+ resilient against inotify queue overruns when journal files are
+ rotated very quickly.
+
+ * Two new functions in libsystemd — sd_bus_get_n_queued_read and
+ sd_bus_get_n_queued_write — may be used to check the number of
+ pending bus messages.
+
+ * systemd gained a new
+ org.freedesktop.systemd1.Manager.AttachProcessesToUnit dbus call
+ which can be used to migrate foreign processes to scope and service
+ units. The primary user for this new API is systemd itself: the
+ systemd --user instance uses this call of the systemd --system
+ instance to migrate processes if it itself gets the request to
+ migrate processes and the kernel refuses this due to access
+ restrictions. Thanks to this "systemd-run --scope --user …" works
+ again in pure cgroup v2 environments when invoked from the user
+ session scope.
+
+ * A new TemporaryFileSystem= setting can be used to mask out part of
+ the real file system tree with tmpfs mounts. This may be combined
+ with BindPaths= and BindReadOnlyPaths= to hide files or directories
+ not relevant to the unit, while still allowing some paths lower in
+ the tree to be accessed.
+
+ ProtectHome=tmpfs may now be used to hide user home and runtime
+ directories from units, in a way that is mostly equivalent to
+ "TemporaryFileSystem=/home /run/user /root".
+
+ * Non-service units are now started with KeyringMode=shared by default.
+ This means that mount and swapon and other mount tools have access
+ to keys in the main keyring.
+
+ * /sys/fs/bpf is now mounted automatically.
+
+ * QNX virtualization is now detected by systemd-detect-virt and may
+ be used in ConditionVirtualization=.
+
+ * IPAccounting= may now be enabled also for slice units.
+
+ * A new -Dsplit-bin= build configuration switch may be used to specify
+ whether bin and sbin directories are merged, or if they should be
+ included separately in $PATH and various listings of executable
+ directories. The build configuration scripts will try to autodetect
+ the proper values of -Dsplit-usr= and -Dsplit-bin= based on build
+ system, but distributions are encouraged to configure this
+ explicitly.
+
+ * A new -Dok-color= build configuration switch may be used to change
+ the colour of "OK" status messages.
+
+ * UPGRADE ISSUE: serialization of units using JoinsNamespaceOf= with
+ PrivateNetwork=yes was buggy in previous versions of systemd. This
+ means that after the upgrade and daemon-reexec, any such units must
+ be restarted.
+
+ * INCOMPATIBILITY: as announced in the NEWS for 237, systemd-tmpfiles
+ will not exclude read-only files owned by root from cleanup.
+
+ Contributions from: Alan Jenkins, Alexander F Rødseth, Alexis Jeandet,
+ Andika Triwidada, Andrei Gherzan, Ansgar Burchardt, antizealot1337,
+ Batuhan Osman Taşkaya, Beniamino Galvani, Bill Yodlowsky, Caio Marcelo
+ de Oliveira Filho, CuBiC, Daniele Medri, Daniel Mouritzen, Daniel
+ Rusek, Davide Cavalca, Dimitri John Ledkov, Douglas Christman, Evgeny
+ Vereshchagin, Faalagorn, Filipe Brandenburger, Franck Bui, futpib,
+ Giacomo Longo, Gunnar Hjalmarsson, Hans de Goede, Hermann Gausterer,
+ Iago López Galeiras, Jakub Filak, Jan Synacek, Jason A. Donenfeld,
+ Javier Martinez Canillas, Jérémy Rosen, Lennart Poettering, Lucas
+ Werkmeister, Mao Huang, Marco Gulino, Michael Biebl, Michael Vogt,
+ MilhouseVH, Neal Gompa (ニール・ゴンパ), Oleander Reis, Olof Mogren,
+ Patrick Uiterwijk, Peter Hutterer, Peter Portante, Piotr Drąg, Robert
+ Antoni Buj Gelonch, Sergey Ptashnick, Shawn Landden, Shuang Liu, Simon
+ Fowler, SjonHortensius, snorreflorre, Susant Sahani, Sylvain
+ Plantefève, Thomas Blume, Thomas Haller, Vito Caputo, Yu Watanabe,
+ Zbigniew Jędrzejewski-Szmek, Марко М. Костић (Marko M. Kostić)
+
+ — Warsaw, 2018-03-05
+
+CHANGES WITH 237:
+
+ * Some keyboards come with a zoom see-saw or rocker which until now got
+ mapped to the Linux "zoomin/out" keys in hwdb. However, these
+ keycodes are not recognized by any major desktop. They now produce
+ Up/Down key events so that they can be used for scrolling.
+
+ * INCOMPATIBILITY: systemd-tmpfiles' "f" lines changed behaviour
+ slightly: previously, if an argument was specified for lines of this
+ type (i.e. the right-most column was set) this string was appended to
+ existing files each time systemd-tmpfiles was run. This behaviour was
+ different from what the documentation said, and not particularly
+ useful, as repeated systemd-tmpfiles invocations would not be
+ idempotent and grow such files without bounds. With this release
+ behaviour has been altered to match what the documentation says:
+ lines of this type only have an effect if the indicated files don't
+ exist yet, and only then the argument string is written to the file.
+
+ * FUTURE INCOMPATIBILITY: In systemd v238 we intend to slightly change
+ systemd-tmpfiles behaviour: previously, read-only files owned by root
+ were always excluded from the file "aging" algorithm (i.e. the
+ automatic clean-up of directories like /tmp based on
+ atime/mtime/ctime). We intend to drop this restriction, and age files
+ by default even when owned by root and read-only. This behaviour was
+ inherited from older tools, but there have been requests to remove
+ it, and it's not obvious why this restriction was made in the first
+ place. Please speak up now, if you are aware of software that requires
+ this behaviour, otherwise we'll remove the restriction in v238.
+
+ * A new environment variable $SYSTEMD_OFFLINE is now understood by
+ systemctl. It takes a boolean argument. If on, systemctl assumes it
+ operates on an "offline" OS tree, and will not attempt to talk to the
+ service manager. Previously, this mode was implicitly enabled if a
+ chroot() environment was detected, and this new environment variable
+ now provides explicit control.
+
+ * .path and .socket units may now be created transiently, too.
+ Previously only service, mount, automount and timer units were
+ supported as transient units. The systemd-run tool has been updated
+ to expose this new functionality, you may hence use it now to bind
+ arbitrary commands to path or socket activation on-the-fly from the
+ command line. Moreover, almost all properties are now exposed for the
+ unit types that already supported transient operation.
+
+ * The systemd-mount command gained support for a new --owner= parameter
+ which takes a user name, which is then resolved and included in uid=
+ and gid= mount options string of the file system to mount.
+
+ * A new unit condition ConditionControlGroupController= has been added
+ that checks whether a specific cgroup controller is available.
+
+ * Unit files, udev's .link files, and systemd-networkd's .netdev and
+ .network files all gained support for a new condition
+ ConditionKernelVersion= for checking against specific kernel
+ versions.
+
+ * In systemd-networkd, the [IPVLAN] section in .netdev files gained
+ support for configuring device flags in the Flags= setting. In the
+ same files, the [Tunnel] section gained support for configuring
+ AllowLocalRemote=. The [Route] section in .network files gained
+ support for configuring InitialCongestionWindow=,
+ InitialAdvertisedReceiveWindow= and QuickAck=. The [DHCP] section now
+ understands RapidCommit=.
+
+ * systemd-networkd's DHCPv6 support gained support for Prefix
+ Delegation.
+
+ * sd-bus gained support for a new "watch-bind" feature. When this
+ feature is enabled, an sd_bus connection may be set up to connect to
+ an AF_UNIX socket in the file system as soon as it is created. This
+ functionality is useful for writing early-boot services that
+ automatically connect to the system bus as soon as it is started,
+ without ugly time-based polling. systemd-networkd and
+ systemd-resolved have been updated to make use of this
+ functionality. busctl exposes this functionality in a new
+ --watch-bind= command line switch.
+
+ * sd-bus will now optionally synthesize a local "Connected" signal as
+ soon as a D-Bus connection is set up fully. This message mirrors the
+ already existing "Disconnected" signal which is synthesized when the
+ connection is terminated. This signal is generally useful but
+ particularly handy in combination with the "watch-bind" feature
+ described above. Synthesizing of this message has to be requested
+ explicitly through the new API call sd_bus_set_connected_signal(). In
+ addition a new call sd_bus_is_ready() has been added that checks
+ whether a connection is fully set up (i.e. between the "Connected" and
+ "Disconnected" signals).
+
+ * sd-bus gained two new calls sd_bus_request_name_async() and
+ sd_bus_release_name_async() for asynchronously registering bus
+ names. Similar, there is now sd_bus_add_match_async() for installing
+ a signal match asynchronously. All of systemd's own services have
+ been updated to make use of these calls. Doing these operations
+ asynchronously has two benefits: it reduces the risk of deadlocks in
+ case of cyclic dependencies between bus services, and it speeds up
+ service initialization since synchronization points for bus
+ round-trips are removed.
+
+ * sd-bus gained two new calls sd_bus_match_signal() and
+ sd_bus_match_signal_async(), which are similar to sd_bus_add_match()
+ and sd_bus_add_match_async() but instead of taking a D-Bus match
+ string take match fields as normal function parameters.
+
+ * sd-bus gained two new calls sd_bus_set_sender() and
+ sd_bus_message_set_sender() for setting the sender name of outgoing
+ messages (either for all outgoing messages or for just one specific
+ one). These calls are only useful in direct connections as on
+ brokered connections the broker fills in the sender anyway,
+ overwriting whatever the client filled in.
+
+ * sd-event gained a new pseudo-handle that may be specified on all API
+ calls where an "sd_event*" object is expected: SD_EVENT_DEFAULT. When
+ used this refers to the default event loop object of the calling
+ thread. Note however that this does not implicitly allocate one —
+ which has to be done prior by using sd_event_default(). Similarly
+ sd-bus gained three new pseudo-handles SD_BUS_DEFAULT,
+ SD_BUS_DEFAULT_USER, SD_BUS_DEFAULT_SYSTEM that may be used to refer
+ to the default bus of the specified type of the calling thread. Here
+ too this does not implicitly allocate bus connection objects, this
+ has to be done prior with sd_bus_default() and friends.
+
+ * sd-event gained a new call pair
+ sd_event_source_{get|set}_io_fd_own(). This may be used to request
+ automatic closure of the file descriptor an IO event source watches
+ when the event source is destroyed.
+
+ * systemd-networkd gained support for natively configuring WireGuard
+ connections.
+
+ * In previous versions systemd synthesized user records both for the
+ "nobody" (UID 65534) and "root" (UID 0) users in nss-systemd and
+ internally. In order to simplify distribution-wide renames of the
+ "nobody" user (like it is planned in Fedora: nfsnobody → nobody), a
+ new transitional flag file has been added: if
+ /etc/systemd/dont-synthesize-nobody exists synthesizing of the 65534
+ user and group record within the systemd codebase is disabled.
+
+ * systemd-notify gained a new --uid= option for selecting the source
+ user/UID to use for notification messages sent to the service
+ manager.
+
+ * journalctl gained a new --grep= option to list only entries in which
+ the message matches a certain pattern. By default matching is case
+ insensitive if the pattern is lowercase, and case sensitive
+ otherwise. Option --case-sensitive=yes|no can be used to override
+ this an specify case sensitivity or case insensitivity.
+
+ * There's now a "systemd-analyze service-watchdogs" command for printing
+ the current state of the service runtime watchdog, and optionally
+ enabling or disabling the per-service watchdogs system-wide if given a
+ boolean argument (i.e. the concept you configure in WatchdogSec=), for
+ debugging purposes. There's also a kernel command line option
+ systemd.service_watchdogs= for controlling the same.
+
+ * Two new "log-level" and "log-target" options for systemd-analyze were
+ added that merge the now deprecated get-log-level, set-log-level and
+ get-log-target, set-log-target pairs. The deprecated options are still
+ understood for backwards compatibility. The two new options print the
+ current value when no arguments are given, and set them when a
+ level/target is given as an argument.
+
+ * sysusers.d's "u" lines now optionally accept both a UID and a GID
+ specification, separated by a ":" character, in order to create users
+ where UID and GID do not match.
+
+ Contributions from: Adam Duskett, Alan Jenkins, Alexander Kuleshov,
+ Alexis Deruelle, Andrew Jeddeloh, Armin Widegreen, Batuhan Osman
+ Taşkaya, Björn Esser, bleep_blop, Bruce A. Johnson, Chris Down, Clinton
+ Roy, Colin Walters, Daniel Rusek, Dimitri John Ledkov, Dmitry Rozhkov,
+ Evgeny Vereshchagin, Ewout van Mansom, Felipe Sateler, Franck Bui,
+ Frantisek Sumsal, George Gaydarov, Gianluca Boiano, Hans-Christian
+ Noren Egtvedt, Hans de Goede, Henrik Grindal Bakken, Jan Alexander
+ Steffens, Jan Klötzke, Jason A. Donenfeld, jdkbx, Jérémy Rosen,
+ Jerónimo Borque, John Lin, John Paul Herold, Jonathan Rudenberg, Jörg
+ Thalheim, Ken (Bitsko) MacLeod, Larry Bernstone, Lennart Poettering,
+ Lucas Werkmeister, Maciej S. Szmigiero, Marek Čermák, Martin Pitt,
+ Mathieu Malaterre, Matthew Thode, Matthias-Christian Ott, Max Harmathy,
+ Michael Biebl, Michael Vogt, Michal Koutný, Michal Sekletar, Michał
+ Szczepański, Mike Gilbert, Nathaniel McCallum, Nicolas Chauvet, Olaf
+ Hering, Olivier Schwander, Patrik Flykt, Paul Cercueil, Peter Hutterer,
+ Piotr Drąg, Raphael Vogelgsang, Reverend Homer, Robert Kolchmeyer,
+ Samuel Dionne-Riel, Sergey Ptashnick, Shawn Landden, Susant Sahani,
+ Sylvain Plantefève, Thomas H. P. Andersen, Thomas Huth, Tomasz
+ Bachorski, Vladislav Vishnyakov, Wieland Hoffmann, Yu Watanabe, Zachary
+ Winnerman, Zbigniew Jędrzejewski-Szmek, Дамјан Георгиевски, Дилян
+ Палаузов
+
+ — Brno, 2018-01-28
+
+CHANGES WITH 236:
+
+ * The modprobe.d/ drop-in for the bonding.ko kernel module introduced
+ in v235 has been extended to also set the dummy.ko module option
+ numdummies=0, preventing the kernel from automatically creating
+ dummy0. All dummy interfaces must now be explicitly created.
+
+ * Unknown '%' specifiers in configuration files are now rejected. This
+ applies to units and tmpfiles.d configuration. Any percent characters
+ that are followed by a letter or digit that are not supposed to be
+ interpreted as the beginning of a specifier should be escaped by
+ doubling ("%%"). (So "size=5%" is still accepted, as well as
+ "size=5%,foo=bar", but not "LABEL=x%y%z" since %y and %z are not
+ valid specifiers today.)
+
+ * systemd-resolved now maintains a new dynamic
+ /run/systemd/resolve/stub-resolv.conf compatibility file. It is
+ recommended to make /etc/resolv.conf a symlink to it. This file
+ points at the systemd-resolved stub DNS 127.0.0.53 resolver and
+ includes dynamically acquired search domains, achieving more correct
+ DNS resolution by software that bypasses local DNS APIs such as NSS.
+
+ * The "uaccess" udev tag has been dropped from /dev/kvm and
+ /dev/dri/renderD*. These devices now have the 0666 permissions by
+ default (but this may be changed at build-time). /dev/dri/renderD*
+ will now be owned by the "render" group along with /dev/kfd.
+
+ * "DynamicUser=yes" has been enabled for systemd-timesyncd.service,
+ systemd-journal-gatewayd.service and
+ systemd-journal-upload.service. This means "nss-systemd" must be
+ enabled in /etc/nsswitch.conf to ensure the UIDs assigned to these
+ services are resolved properly.
+
+ * In /etc/fstab two new mount options are now understood:
+ x-systemd.makefs and x-systemd.growfs. The former has the effect that
+ the configured file system is formatted before it is mounted, the
+ latter that the file system is resized to the full block device size
+ after it is mounted (i.e. if the file system is smaller than the
+ partition it resides on, it's grown). This is similar to the fsck
+ logic in /etc/fstab, and pulls in systemd-makefs@.service and
+ systemd-growfs@.service as necessary, similar to
+ systemd-fsck@.service. Resizing is currently only supported on ext4
+ and btrfs.
+
+ * In systemd-networkd, the IPv6 RA logic now optionally may announce
+ DNS server and domain information.
+
+ * Support for the LUKS2 on-disk format for encrypted partitions has
+ been added. This requires libcryptsetup2 during compilation and
+ runtime.
+
+ * The systemd --user instance will now signal "readiness" when its
+ basic.target unit has been reached, instead of when the run queue ran
+ empty for the first time.
+
+ * Tmpfiles.d with user configuration are now also supported.
+ systemd-tmpfiles gained a new --user switch, and snippets placed in
+ ~/.config/user-tmpfiles.d/ and corresponding directories will be
+ executed by systemd-tmpfiles --user running in the new
+ systemd-tmpfiles-setup.service and systemd-tmpfiles-clean.service
+ running in the user session.
+
+ * Unit files and tmpfiles.d snippets learnt three new % specifiers:
+ %S resolves to the top-level state directory (/var/lib for the system
+ instance, $XDG_CONFIG_HOME for the user instance), %C resolves to the
+ top-level cache directory (/var/cache for the system instance,
+ $XDG_CACHE_HOME for the user instance), %L resolves to the top-level
+ logs directory (/var/log for the system instance,
+ $XDG_CONFIG_HOME/log/ for the user instance). This matches the
+ existing %t specifier, that resolves to the top-level runtime
+ directory (/run for the system instance, and $XDG_RUNTIME_DIR for the
+ user instance).
+
+ * journalctl learnt a new parameter --output-fields= for limiting the
+ set of journal fields to output in verbose and JSON output modes.
+
+ * systemd-timesyncd's configuration file gained a new option
+ RootDistanceMaxSec= for setting the maximum root distance of servers
+ it'll use, as well as the new options PollIntervalMinSec= and
+ PollIntervalMaxSec= to tweak the minimum and maximum poll interval.
+
+ * bootctl gained a new command "list" for listing all available boot
+ menu items on systems that follow the boot loader specification.
+
+ * systemctl gained a new --dry-run switch that shows what would be done
+ instead of doing it, and is currently supported by the shutdown and
+ sleep verbs.
+
+ * ConditionSecurity= can now detect the TOMOYO security module.
+
+ * Unit file [Install] sections are now also respected in unit drop-in
+ files. This is intended to be used by drop-ins under /usr/lib/.
+
+ * systemd-firstboot may now also set the initial keyboard mapping.
+
+ * Udev "changed" events for devices which are exposed as systemd
+ .device units are now propagated to units specified in
+ ReloadPropagatedFrom= as reload requests.
+
+ * If a udev device has a SYSTEMD_WANTS= property containing a systemd
+ unit template name (i.e. a name in the form of 'foobar@.service',
+ without the instance component between the '@' and - the '.'), then
+ the escaped sysfs path of the device is automatically used as the
+ instance.
+
+ * SystemCallFilter= in unit files has been extended so that an "errno"
+ can be specified individually for each system call. Example:
+ SystemCallFilter=~uname:EILSEQ.
+
+ * The cgroup delegation logic has been substantially updated. Delegate=
+ now optionally takes a list of controllers (instead of a boolean, as
+ before), which lists the controllers to delegate at least.
+
+ * The networkd DHCPv6 client now implements the FQDN option (RFC 4704).
+
+ * A new LogLevelMax= setting configures the maximum log level any
+ process of the service may log at (i.e. anything with a lesser
+ priority than what is specified is automatically dropped). A new
+ LogExtraFields= setting allows configuration of additional journal
+ fields to attach to all log records generated by any of the unit's
+ processes.
+
+ * New StandardInputData= and StandardInputText= settings along with the
+ new option StandardInput=data may be used to configure textual or
+ binary data that shall be passed to the executed service process via
+ standard input, encoded in-line in the unit file.
+
+ * StandardInput=, StandardOutput= and StandardError= may now be used to
+ connect stdin/stdout/stderr of executed processes directly with a
+ file or AF_UNIX socket in the file system, using the new "file:" option.
+
+ * A new unit file option CollectMode= has been added, that allows
+ tweaking the garbage collection logic for units. It may be used to
+ tell systemd to garbage collect units that have failed automatically
+ (normally it only GCs units that exited successfully). systemd-run
+ and systemd-mount expose this new functionality with a new -G option.
+
+ * "machinectl bind" may now be used to bind mount non-directories
+ (i.e. regularfiles, devices, fifos, sockets).
+
+ * systemd-analyze gained a new verb "calendar" for validating and
+ testing calendar time specifications to use for OnCalendar= in timer
+ units. Besides validating the expression it will calculate the next
+ time the specified expression would elapse.
+
+ * In addition to the pre-existing FailureAction= unit file setting
+ there's now SuccessAction=, for configuring a shutdown action to
+ execute when a unit completes successfully. This is useful in
+ particular inside containers that shall terminate after some workload
+ has been completed. Also, both options are now supported for all unit
+ types, not just services.
+
+ * networkds's IP rule support gained two new options
+ IncomingInterface= and OutgoingInterface= for configuring the incoming
+ and outgoing interfaces of configured rules. systemd-networkd also
+ gained support for "vxcan" network devices.
+
+ * networkd gained a new setting RequiredForOnline=, taking a
+ boolean. If set, systemd-wait-online will take it into consideration
+ when determining that the system is up, otherwise it will ignore the
+ interface for this purpose.
+
+ * The sd_notify() protocol gained support for a new operation: with
+ FDSTOREREMOVE=1 file descriptors may be removed from the per-service
+ store again, ahead of POLLHUP or POLLERR when they are removed
+ anyway.
+
+ * A new document doc/UIDS-GIDS.md has been added to the source tree,
+ that documents the UID/GID range and assignment assumptions and
+ requirements of systemd.
+
+ * The watchdog device PID 1 will ping may now be configured through the
+ WatchdogDevice= configuration file setting, or by setting the
+ systemd.watchdog_service= kernel command line option.
+
+ * systemd-resolved's gained support for registering DNS-SD services on
+ the local network using MulticastDNS. Services may either be
+ registered by dropping in a .dnssd file in /etc/systemd/dnssd/ (or
+ the same dir below /run, /usr/lib), or through its D-Bus API.
+
+ * The sd_notify() protocol can now with EXTEND_TIMEOUT_USEC=microsecond
+ extend the effective start, runtime, and stop time. The service must
+ continue to send EXTEND_TIMEOUT_USEC within the period specified to
+ prevent the service manager from making the service as timedout.
+
+ * systemd-resolved's DNSSEC support gained support for RFC 8080
+ (Ed25519 keys and signatures).
+
+ * The systemd-resolve command line tool gained a new set of options
+ --set-dns=, --set-domain=, --set-llmnr=, --set-mdns=, --set-dnssec=,
+ --set-nta= and --revert to configure per-interface DNS configuration
+ dynamically during runtime. It's useful for pushing DNS information
+ into systemd-resolved from DNS hook scripts that various interface
+ managing software supports (such as pppd).
+
+ * systemd-nspawn gained a new --network-namespace-path= command line
+ option, which may be used to make a container join an existing
+ network namespace, by specifying a path to a "netns" file.
+
+ Contributions from: Alan Jenkins, Alan Robertson, Alessandro Ghedini,
+ Andrew Jeddeloh, Antonio Rojas, Ari, asavah, bleep_blop, Carsten
+ Strotmann, Christian Brauner, Christian Hesse, Clinton Roy, Collin
+ Eggert, Cong Wang, Daniel Black, Daniel Lockyer, Daniel Rusek, Dimitri
+ John Ledkov, Dmitry Rozhkov, Dongsu Park, Edward A. James, Evgeny
+ Vereshchagin, Florian Klink, Franck Bui, Gwendal Grignou, Hans de
+ Goede, Harald Hoyer, Hristo Venev, Iago López Galeiras, Ikey Doherty,
+ Jakub Wilk, Jérémy Rosen, Jiahui Xie, John Lin, José Bollo, Josef
+ Andersson, juga0, Krzysztof Nowicki, Kyle Walker, Lars Karlitski, Lars
+ Kellogg-Stedman, Lauri Tirkkonen, Lennart Poettering, Lubomir Rintel,
+ Luca Bruno, Lucas Werkmeister, Lukáš Nykrýn, Lukáš Říha, Lukasz
+ Rubaszewski, Maciej S. Szmigiero, Mantas Mikulėnas, Marcus Folkesson,
+ Martin Steuer, Mathieu Trudel-Lapierre, Matija Skala,
+ Matthias-Christian Ott, Max Resch, Michael Biebl, Michael Vogt, Michal
+ Koutný, Michal Sekletar, Mike Gilbert, Muhammet Kara, Neil Brown, Olaf
+ Hering, Ondrej Kozina, Patrik Flykt, Patryk Kocielnik, Peter Hutterer,
+ Piotr Drąg, Razvan Cojocaru, Robin McCorkell, Roland Hieber, Saran
+ Tunyasuvunakool, Sergey Ptashnick, Shawn Landden, Shuang Liu, Simon
+ Arlott, Simon Peeters, Stanislav Angelovič, Stefan Agner, Susant
+ Sahani, Sylvain Plantefève, Thomas Blume, Thomas Haller, Tiago Salem
+ Herrmann, Tinu Weber, Tom Stellard, Topi Miettinen, Torsten Hilbrich,
+ Vito Caputo, Vladislav Vishnyakov, WaLyong Cho, Yu Watanabe, Zbigniew
+ Jędrzejewski-Szmek, Zeal Jagannatha
+
+ — Berlin, 2017-12-14
+
+CHANGES WITH 235:
+
+ * INCOMPATIBILITY: systemd-logind.service and other long-running
+ services now run inside an IPv4/IPv6 sandbox, prohibiting them any IP
+ communication with the outside. This generally improves security of
+ the system, and is in almost all cases a safe and good choice, as
+ these services do not and should not provide any network-facing
+ functionality. However, systemd-logind uses the glibc NSS API to
+ query the user database. This creates problems on systems where NSS
+ is set up to directly consult network services for user database
+ lookups. In particular, this creates incompatibilities with the
+ "nss-nis" module, which attempts to directly contact the NIS/YP
+ network servers it is configured for, and will now consistently
+ fail. In such cases, it is possible to turn off IP sandboxing for
+ systemd-logind.service (set IPAddressDeny= in its [Service] section
+ to the empty string, via a .d/ unit file drop-in). Downstream
+ distributions might want to update their nss-nis packaging to include
+ such a drop-in snippet, accordingly, to hide this incompatibility
+ from the user. Another option is to make use of glibc's nscd service
+ to proxy such network requests through a privilege-separated, minimal
+ local caching daemon, or to switch to more modern technologies such
+ sssd, whose NSS hook-ups generally do not involve direct network
+ access. In general, we think it's definitely time to question the
+ implementation choices of nss-nis, i.e. whether it's a good idea
+ today to embed a network-facing loadable module into all local
+ processes that need to query the user database, including the most
+ trivial and benign ones, such as "ls". For more details about
+ IPAddressDeny= see below.
+
+ * A new modprobe.d drop-in is now shipped by default that sets the
+ bonding module option max_bonds=0. This overrides the kernel default,
+ to avoid conflicts and ambiguity as to whether or not bond0 should be
+ managed by systemd-networkd or not. This resolves multiple issues
+ with bond0 properties not being applied, when bond0 is configured
+ with systemd-networkd. Distributors may choose to not package this,
+ however in that case users will be prevented from correctly managing
+ bond0 interface using systemd-networkd.
+
+ * systemd-analyze gained new verbs "get-log-level" and "get-log-target"
+ which print the logging level and target of the system manager. They
+ complement the existing "set-log-level" and "set-log-target" verbs
+ used to change those values.
+
+ * journald.conf gained a new boolean setting ReadKMsg= which defaults
+ to on. If turned off kernel log messages will not be read by
+ systemd-journald or included in the logs. It also gained a new
+ setting LineMax= for configuring the maximum line length in
+ STDOUT/STDERR log streams. The new default for this value is 48K, up
+ from the previous hardcoded 2048.
+
+ * A new unit setting RuntimeDirectoryPreserve= has been added, which
+ allows more detailed control of what to do with a runtime directory
+ configured with RuntimeDirectory= (i.e. a directory below /run or
+ $XDG_RUNTIME_DIR) after a unit is stopped.
+
+ * The RuntimeDirectory= setting for units gained support for creating
+ deeper subdirectories below /run or $XDG_RUNTIME_DIR, instead of just
+ one top-level directory.
+
+ * Units gained new options StateDirectory=, CacheDirectory=,
+ LogsDirectory= and ConfigurationDirectory= which are closely related
+ to RuntimeDirectory= but manage per-service directories below
+ /var/lib, /var/cache, /var/log and /etc. By making use of them it is
+ possible to write unit files which when activated automatically gain
+ properly owned service specific directories in these locations, thus
+ making unit files self-contained and increasing compatibility with
+ stateless systems and factory reset where /etc or /var are
+ unpopulated at boot. Matching these new settings there's also
+ StateDirectoryMode=, CacheDirectoryMode=, LogsDirectoryMode=,
+ ConfigurationDirectoryMode= for configuring the access mode of these
+ directories. These settings are particularly useful in combination
+ with DynamicUser=yes as they provide secure, properly-owned,
+ writable, and stateful locations for storage, excluded from the
+ sandbox that such services live in otherwise.
+
+ * Automake support has been removed from this release. systemd is now
+ Meson-only.
+
+ * systemd-journald will now aggressively cache client metadata during
+ runtime, speeding up log write performance under pressure. This comes
+ at a small price though: as much of the metadata is read
+ asynchronously from /proc/ (and isn't implicitly attached to log
+ datagrams by the kernel, like UID/GID/PID/SELinux are) this means the
+ metadata stored alongside a log entry might be slightly
+ out-of-date. Previously it could only be slightly newer than the log
+ message. The time window is small however, and given that the kernel
+ is unlikely to be improved anytime soon in this regard, this appears
+ acceptable to us.
+
+ * nss-myhostname/systemd-resolved will now by default synthesize an
+ A/AAAA resource record for the "_gateway" hostname, pointing to the
+ current default IP gateway. Previously it did that for the "gateway"
+ name, hampering adoption, as some distributions wanted to leave that
+ hostname open for local use. The old behaviour may still be
+ requested at build time.
+
+ * systemd-networkd's [Address] section in .network files gained a new
+ Scope= setting for configuring the IP address scope. The [Network]
+ section gained a new boolean setting ConfigureWithoutCarrier= that
+ tells systemd-networkd to ignore link sensing when configuring the
+ device. The [DHCP] section gained a new Anonymize= boolean option for
+ turning on a number of options suggested in RFC 7844. A new
+ [RoutingPolicyRule] section has been added for configuring the IP
+ routing policy. The [Route] section has gained support for a new
+ Type= setting which permits configuring
+ blackhole/unreachable/prohibit routes.
+
+ * The [VRF] section in .netdev files gained a new Table= setting for
+ configuring the routing table to use. The [Tunnel] section gained a
+ new Independent= boolean field for configuring tunnels independent of
+ an underlying network interface. The [Bridge] section gained a new
+ GroupForwardMask= option for configuration of propagation of link
+ local frames between bridge ports.
+
+ * The WakeOnLan= setting in .link files gained support for a number of
+ new modes. A new TCP6SegmentationOffload= setting has been added for
+ configuring TCP/IPv6 hardware segmentation offload.
+
+ * The IPv6 RA sender implementation may now optionally send out RDNSS
+ and RDNSSL records to supply DNS configuration to peers.
+
+ * systemd-nspawn gained support for a new --system-call-filter= command
+ line option for adding and removing entries in the default system
+ call filter it applies. Moreover systemd-nspawn has been changed to
+ implement a system call allow list instead of a deny list.
+
+ * systemd-run gained support for a new --pipe command line option. If
+ used the STDIN/STDOUT/STDERR file descriptors passed to systemd-run
+ are directly passed on to the activated transient service
+ executable. This allows invoking arbitrary processes as systemd
+ services (for example to take benefit of dependency management,
+ accounting management, resource management or log management that is
+ done automatically for services) — while still allowing them to be
+ integrated in a classic UNIX shell pipeline.
+
+ * When a service sends RELOAD=1 via sd_notify() and reload propagation
+ using ReloadPropagationTo= is configured, a reload is now propagated
+ to configured units. (Previously this was only done on explicitly
+ requested reloads, using "systemctl reload" or an equivalent
+ command.)
+
+ * For each service unit a restart counter is now kept: it is increased
+ each time the service is restarted due to Restart=, and may be
+ queried using "systemctl show -p NRestarts …".
+
+ * New system call filter groups @aio, @sync, @chown, @setuid, @memlock,
+ @signal and @timer have been added, for usage with SystemCallFilter=
+ in unit files and the new --system-call-filter= command line option
+ of systemd-nspawn (see above).
+
+ * ExecStart= lines in unit files gained two new modifiers: when a
+ command line is prefixed with "!" the command will be executed as
+ configured, except for the credentials applied by
+ setuid()/setgid()/setgroups(). It is very similar to the pre-existing
+ "+", but does still apply namespacing options unlike "+". There's
+ also "!!" now, which is mostly identical, but becomes a NOP on
+ systems that support ambient capabilities. This is useful to write
+ unit files that work with ambient capabilities where possible but
+ automatically fall back to traditional privilege dropping mechanisms
+ on systems where this is not supported.
+
+ * ListenNetlink= settings in socket units now support RDMA netlink
+ sockets.
+
+ * A new unit file setting LockPersonality= has been added which permits
+ locking down the chosen execution domain ("personality") of a service
+ during runtime.
+
+ * A new special target "getty-pre.target" has been added, which is
+ ordered before all text logins, and may be used to order services
+ before textual logins acquire access to the console.
+
+ * systemd will now attempt to load the virtio-rng.ko kernel module very
+ early on if a VM environment supporting this is detected. This should
+ improve entropy during early boot in virtualized environments.
+
+ * A _netdev option is now supported in /etc/crypttab that operates in a
+ similar way as the same option in /etc/fstab: it permits configuring
+ encrypted devices that need to be ordered after the network is up.
+ Following this logic, two new special targets
+ remote-cryptsetup-pre.target and remote-cryptsetup.target have been
+ added that are to cryptsetup.target what remote-fs.target and
+ remote-fs-pre.target are to local-fs.target.
+
+ * Service units gained a new UnsetEnvironment= setting which permits
+ unsetting specific environment variables for services that are
+ normally passed to it (for example in order to mask out locale
+ settings for specific services that can't deal with it).
+
+ * Units acquired a new boolean option IPAccounting=. When turned on, IP
+ traffic accounting (packet count as well as byte count) is done for
+ the service, and shown as part of "systemctl status" or "systemd-run
+ --wait".
+
+ * Service units acquired two new options IPAddressAllow= and
+ IPAddressDeny=, taking a list of IPv4 or IPv6 addresses and masks,
+ for configuring a simple IP access control list for all sockets of
+ the unit. These options are available also on .slice and .socket
+ units, permitting flexible access list configuration for individual
+ services as well as groups of services (as defined by a slice unit),
+ including system-wide. Note that IP ACLs configured this way are
+ enforced on every single IPv4 and IPv6 socket created by any process
+ of the service unit, and apply to ingress as well as egress traffic.
+
+ * If CPUAccounting= or IPAccounting= is turned on for a unit a new
+ structured log message is generated each time the unit is stopped,
+ containing information about the consumed resources of this
+ invocation.
+
+ * A new setting KeyringMode= has been added to unit files, which may be
+ used to control how the kernel keyring is set up for executed
+ processes.
+
+ * "systemctl poweroff", "systemctl reboot", "systemctl halt",
+ "systemctl kexec" and "systemctl exit" are now always asynchronous in
+ behaviour (that is: these commands return immediately after the
+ operation was enqueued instead of waiting for the operation to
+ complete). Previously, "systemctl poweroff" and "systemctl reboot"
+ were asynchronous on systems using systemd-logind (i.e. almost
+ always, and like they were on sysvinit), and the other three commands
+ were unconditionally synchronous. With this release this is cleaned
+ up, and callers will see the same asynchronous behaviour on all
+ systems for all five operations.
+
+ * systemd-logind gained new Halt() and CanHalt() bus calls for halting
+ the system.
+
+ * .timer units now accept calendar specifications in other timezones
+ than UTC or the local timezone.
+
+ * The tmpfiles snippet var.conf has been changed to create
+ /var/log/btmp with access mode 0660 instead of 0600. It was owned by
+ the "utmp" group already, and it appears to be generally understood
+ that members of "utmp" can modify/flush the utmp/wtmp/lastlog/btmp
+ databases. Previously this was implemented correctly for all these
+ databases excepts btmp, which has been opened up like this now
+ too. Note that while the other databases are world-readable
+ (i.e. 0644), btmp is not and remains more restrictive.
+
+ * The systemd-resolve tool gained a new --reset-server-features
+ switch. When invoked like this systemd-resolved will forget
+ everything it learnt about the features supported by the configured
+ upstream DNS servers, and restarts the feature probing logic on the
+ next resolver look-up for them at the highest feature level
+ again.
+
+ * The status dump systemd-resolved sends to the logs upon receiving
+ SIGUSR1 now also includes information about all DNS servers it is
+ configured to use, and the features levels it probed for them.
+
+ Contributions from: Abdó Roig-Maranges, Alan Jenkins, Alexander
+ Kuleshov, Andreas Rammhold, Andrew Jeddeloh, Andrew Soutar, Ansgar
+ Burchardt, Beniamino Galvani, Benjamin Berg, Benjamin Robin, Charles
+ Huber, Christian Hesse, Daniel Berrange, Daniel Kahn Gillmor, Daniel
+ Mack, Daniel Rusek, Daniel Șerbănescu, Davide Cavalca, Dimitri John
+ Ledkov, Diogo Pereira, Djalal Harouni, Dmitriy Geels, Dmitry Torokhov,
+ ettavolt, Evgeny Vereshchagin, Fabio Kung, Felipe Sateler, Franck Bui,
+ Hans de Goede, Harald Hoyer, Insun Pyo, Ivan Kurnosov, Ivan Shapovalov,
+ Jakub Wilk, Jan Synacek, Jason Gunthorpe, Jeremy Bicha, Jérémy Rosen,
+ John Lin, jonasBoss, Jonathan Lebon, Jonathan Teh, Jon Ringle, Jörg
+ Thalheim, Jouke Witteveen, juga0, Justin Capella, Justin Michaud,
+ Kai-Heng Feng, Lennart Poettering, Lion Yang, Luca Bruno, Lucas
+ Werkmeister, Lukáš Nykrýn, Marcel Hollerbach, Marcus Lundblad, Martin
+ Pitt, Michael Biebl, Michael Grzeschik, Michal Sekletar, Mike Gilbert,
+ Neil Brown, Nicolas Iooss, Patrik Flykt, pEJipE, Piotr Drąg, Russell
+ Stuart, S. Fan, Shengyao Xue, Stefan Pietsch, Susant Sahani, Tejun Heo,
+ Thomas Miller, Thomas Sailer, Tobias Hunger, Tomasz Pala, Tom
+ Gundersen, Tommi Rantala, Topi Miettinen, Torstein Husebø, userwithuid,
+ Vasilis Liaskovitis, Vito Caputo, WaLyong Cho, William Douglas, Xiang
+ Fan, Yu Watanabe, Zbigniew Jędrzejewski-Szmek
+
+ — Berlin, 2017-10-06
+
+CHANGES WITH 234:
+
+ * Meson is now supported as build system in addition to Automake. It is
+ our plan to remove Automake in one of our next releases, so that
+ Meson becomes our exclusive build system. Hence, please start using
+ the Meson build system in your downstream packaging. There's plenty
+ of documentation around how to use Meson, the extremely brief
+ summary:
+
+ ./autogen.sh && ./configure && make && sudo make install
+
+ becomes:
+
+ meson build && ninja -C build && sudo ninja -C build install
+
+ * Unit files gained support for a new JobRunningTimeoutUSec= setting,
+ which permits configuring a timeout on the time a job is
+ running. This is particularly useful for setting timeouts on jobs for
+ .device units.
+
+ * Unit files gained two new options ConditionUser= and ConditionGroup=
+ for conditionalizing units based on the identity of the user/group
+ running a systemd user instance.
+
+ * systemd-networkd now understands a new FlowLabel= setting in the
+ [VXLAN] section of .network files, as well as a Priority= in
+ [Bridge], GVRP= + MVRP= + LooseBinding= + ReorderHeader= in [VLAN]
+ and GatewayOnlink= + IPv6Preference= + Protocol= in [Route]. It also
+ gained support for configuration of GENEVE links, and IPv6 address
+ labels. The [Network] section gained the new IPv6ProxyNDP= setting.
+
+ * .link files now understand a new Port= setting.
+
+ * systemd-networkd's DHCP support gained support for DHCP option 119
+ (domain search list).
+
+ * systemd-networkd gained support for serving IPv6 address ranges using
+ the Router Advertisement protocol. The new .network configuration
+ section [IPv6Prefix] may be used to configure the ranges to
+ serve. This is implemented based on a new, minimal, native server
+ implementation of RA.
+
+ * journalctl's --output= switch gained support for a new parameter
+ "short-iso-precise" for a mode where timestamps are shown as precise
+ ISO date values.
+
+ * systemd-udevd's "net_id" builtin may now generate stable network
+ interface names from IBM PowerVM VIO devices as well as ACPI platform
+ devices.
+
+ * MulticastDNS support in systemd-resolved may now be explicitly
+ enabled/disabled using the new MulticastDNS= configuration file
+ option.
+
+ * systemd-resolved may now optionally use libidn2 instead of the libidn
+ for processing internationalized domain names. Support for libidn2
+ should be considered experimental and should not be enabled by
+ default yet.
+
+ * "machinectl pull-tar" and related call may now do verification of
+ downloaded images using SUSE-style .sha256 checksum files in addition
+ to the already existing support for validating using Ubuntu-style
+ SHA256SUMS files.
+
+ * sd-bus gained support for a new sd_bus_message_appendv() call which
+ is va_list equivalent of sd_bus_message_append().
+
+ * sd-boot gained support for validating images using SHIM/MOK.
+
+ * The SMACK code learnt support for "onlycap".
+
+ * systemd-mount --umount is now much smarter in figuring out how to
+ properly unmount a device given its mount or device path.
+
+ * The code to call libnss_dns as a fallback from libnss_resolve when
+ the communication with systemd-resolved fails was removed. This
+ fallback was redundant and interfered with the [!UNAVAIL=return]
+ suffix. See nss-resolve(8) for the recommended configuration.
+
+ * systemd-logind may now be restarted without losing state. It stores
+ the file descriptors for devices it manages in the system manager
+ using the FDSTORE= mechanism. Please note that further changes in
+ other components may be required to make use of this (for example
+ Xorg has code to listen for stops of systemd-logind and terminate
+ itself when logind is stopped or restarted, in order to avoid using
+ stale file descriptors for graphical devices, which is now
+ counterproductive and must be reverted in order for restarts of
+ systemd-logind to be safe. See
+ https://cgit.freedesktop.org/xorg/xserver/commit/?id=dc48bd653c7e101.)
+
+ * All kernel-install plugins are called with the environment variable
+ KERNEL_INSTALL_MACHINE_ID which is set to the machine ID given by
+ /etc/machine-id. If the machine ID could not be determined,
+ $KERNEL_INSTALL_MACHINE_ID will be empty. Plugins should not put
+ anything in the entry directory (passed as the second argument) if
+ $KERNEL_INSTALL_MACHINE_ID is empty. For backwards compatibility, a
+ temporary directory is passed as the entry directory and removed
+ after all the plugins exit.
+
+ * If KERNEL_INSTALL_MACHINE_ID is set in /etc/machine-info, kernel-install
+ will now use its value as the machine ID instead of the machine ID
+ from /etc/machine-id. If KERNEL_INSTALL_MACHINE_ID isn't set in
+ /etc/machine-info and no machine ID is set in /etc/machine-id,
+ kernel-install will try to store the current machine ID there as
+ KERNEL_INSTALL_MACHINE_ID. If there is no machine ID, kernel-install
+ will generate a new UUID, store it in /etc/machine-info as
+ KERNEL_INSTALL_MACHINE_ID and use it as the machine ID.
+
+ Contributions from: Adrian Heine né Lang, Aggelos Avgerinos, Alexander
+ Kurtz, Alexandros Frantzis, Alexey Brodkin, Alex Lu, Amir Pakdel, Amir
+ Yalon, Anchor Cat, Anthony Parsons, Bastien Nocera, Benjamin Gilbert,
+ Benjamin Robin, Boucman, Charles Plessy, Chris Chiu, Chris Lamb,
+ Christian Brauner, Christian Hesse, Colin Walters, Daniel Drake,
+ Danielle Church, Daniel Molkentin, Daniel Rusek, Daniel Wang, Davide
+ Cavalca, David Herrmann, David Michael, Dax Kelson, Dimitri John
+ Ledkov, Djalal Harouni, Dušan Kazik, Elias Probst, Evgeny Vereshchagin,
+ Federico Di Pierro, Felipe Sateler, Felix Zhang, Franck Bui, Gary
+ Tierney, George McCollister, Giedrius Statkevičius, Hans de Goede,
+ hecke, Hendrik Westerberg, Hristo Venev, Ian Wienand, Insun Pyo, Ivan
+ Shapovalov, James Cowgill, James Hemsing, Janne Heß, Jan Synacek, Jason
+ Reeder, João Paulo Rechi Vita, John Paul Adrian Glaubitz, Jörg
+ Thalheim, Josef Andersson, Josef Gajdusek, Julian Mehne, Kai Krakow,
+ Krzysztof Jackiewicz, Lars Karlitski, Lennart Poettering, Lluís Gili,
+ Lucas Werkmeister, Lukáš Nykrýn, Łukasz Stelmach, Mantas Mikulėnas,
+ Marcin Bachry, Marcus Cooper, Mark Stosberg, Martin Pitt, Matija Skala,
+ Matt Clarkson, Matthew Garrett, Matthias Greiner, Matthijs van Duin,
+ Max Resch, Michael Biebl, Michal Koutný, Michal Sekletar, Michal
+ Soltys, Michal Suchanek, Mike Gilbert, Nate Clark, Nathaniel R. Lewis,
+ Neil Brown, Nikolai Kondrashov, Pascal S. de Kloe, Pat Riehecky, Patrik
+ Flykt, Paul Kocialkowski, Peter Hutterer, Philip Withnall, Piotr
+ Szydełko, Rafael Fontenelle, Ray Strode, Richard Maw, Roelf Wichertjes,
+ Ronny Chevalier, Sarang S. Dalal, Sjoerd Simons, slodki, Stefan
+ Schweter, Susant Sahani, Ted Wood, Thomas Blume, Thomas Haller, Thomas
+ H. P. Andersen, Timothée Ravier, Tobias Jungel, Tobias Stoeckmann, Tom
+ Gundersen, Tom Yan, Torstein Husebø, Umut Tezduyar Lindskog,
+ userwithuid, Vito Caputo, Waldemar Brodkorb, WaLyong Cho, Yu, Li-Yu,
+ Yusuke Nojima, Yu Watanabe, Zbigniew Jędrzejewski-Szmek, Дамјан
+ Георгиевски
+
+ — Berlin, 2017-07-12
+
+CHANGES WITH 233:
+
+ * The "hybrid" control group mode has been modified to improve
+ compatibility with "legacy" cgroups-v1 setups. Specifically, the
+ "hybrid" setup of /sys/fs/cgroup is now pretty much identical to
+ "legacy" (including /sys/fs/cgroup/systemd as "name=systemd" named
+ cgroups-v1 hierarchy), the only externally visible change being that
+ the cgroups-v2 hierarchy is also mounted, to
+ /sys/fs/cgroup/unified. This should provide a large degree of
+ compatibility with "legacy" cgroups-v1, while taking benefit of the
+ better management capabilities of cgroups-v2.
+
+ * The default control group setup mode may be selected both a boot-time
+ via a set of kernel command line parameters (specifically:
+ systemd.unified_cgroup_hierarchy= and
+ systemd.legacy_systemd_cgroup_controller=), as well as a compile-time
+ default selected on the configure command line
+ (--with-default-hierarchy=). The upstream default is "hybrid"
+ (i.e. the cgroups-v1 + cgroups-v2 mixture discussed above) now, but
+ this will change in a future systemd version to be "unified" (pure
+ cgroups-v2 mode). The third option for the compile time option is
+ "legacy", to enter pure cgroups-v1 mode. We recommend downstream
+ distributions to default to "hybrid" mode for release distributions,
+ starting with v233. We recommend "unified" for development
+ distributions (specifically: distributions such as Fedora's rawhide)
+ as that's where things are headed in the long run. Use "legacy" for
+ greatest stability and compatibility only.
+
+ * Note one current limitation of "unified" and "hybrid" control group
+ setup modes: the kernel currently does not permit the systemd --user
+ instance (i.e. unprivileged code) to migrate processes between two
+ disconnected cgroup subtrees, even if both are managed and owned by
+ the user. This effectively means "systemd-run --user --scope" doesn't
+ work when invoked from outside of any "systemd --user" service or
+ scope. Specifically, it is not supported from session scopes. We are
+ working on fixing this in a future systemd version. (See #3388 for
+ further details about this.)
+
+ * DBus policy files are now installed into /usr rather than /etc. Make
+ sure your system has dbus >= 1.9.18 running before upgrading to this
+ version, or override the install path with --with-dbuspolicydir= .
+
+ * All python scripts shipped with systemd (specifically: the various
+ tests written in Python) now require Python 3.
+
+ * systemd unit tests can now run standalone (without the source or
+ build directories), and can be installed into /usr/lib/systemd/tests/
+ with 'make install-tests'.
+
+ * Note that from this version on, CONFIG_CRYPTO_USER_API_HASH,
+ CONFIG_CRYPTO_HMAC and CONFIG_CRYPTO_SHA256 need to be enabled in the
+ kernel.
+
+ * Support for the %c, %r, %R specifiers in unit files has been
+ removed. Specifiers are not supposed to be dependent on configuration
+ in the unit file itself (so that they resolve the same regardless
+ where used in the unit files), but these specifiers were influenced
+ by the Slice= option.
+
+ * The shell invoked by debug-shell.service now defaults to /bin/sh in
+ all cases. If distributions want to use a different shell for this
+ purpose (for example Fedora's /sbin/sushell) they need to specify
+ this explicitly at configure time using --with-debug-shell=.
+
+ * The confirmation spawn prompt has been reworked to offer the
+ following choices:
+
+ (c)ontinue, proceed without asking anymore
+ (D)ump, show the state of the unit
+ (f)ail, don't execute the command and pretend it failed
+ (h)elp
+ (i)nfo, show a short summary of the unit
+ (j)obs, show jobs that are in progress
+ (s)kip, don't execute the command and pretend it succeeded
+ (y)es, execute the command
+
+ The 'n' choice for the confirmation spawn prompt has been removed,
+ because its meaning was confusing.
+
+ The prompt may now also be redirected to an alternative console by
+ specifying the console as parameter to systemd.confirm_spawn=.
+
+ * Services of Type=notify require a READY=1 notification to be sent
+ during startup. If no such message is sent, the service now fails,
+ even if the main process exited with a successful exit code.
+
+ * Services that fail to start up correctly now always have their
+ ExecStopPost= commands executed. Previously, they'd enter "failed"
+ state directly, without executing these commands.
+
+ * The option MulticastDNS= of network configuration files has acquired
+ an actual implementation. With MulticastDNS=yes a host can resolve
+ names of remote hosts and reply to mDNS A and AAAA requests.
+
+ * When units are about to be started an additional check is now done to
+ ensure that all dependencies of type BindsTo= (when used in
+ combination with After=) have been started.
+
+ * systemd-analyze gained a new verb "syscall-filter" which shows which
+ system call groups are defined for the SystemCallFilter= unit file
+ setting, and which system calls they contain.
+
+ * A new system call filter group "@filesystem" has been added,
+ consisting of various file system related system calls. Group
+ "@reboot" has been added, covering reboot, kexec and shutdown related
+ calls. Finally, group "@swap" has been added covering swap
+ configuration related calls.
+
+ * A new unit file option RestrictNamespaces= has been added that may be
+ used to restrict access to the various process namespace types the
+ Linux kernel provides. Specifically, it may be used to take away the
+ right for a service unit to create additional file system, network,
+ user, and other namespaces. This sandboxing option is particularly
+ relevant due to the high amount of recently discovered namespacing
+ related vulnerabilities in the kernel.
+
+ * systemd-udev's .link files gained support for a new AutoNegotiation=
+ setting for configuring Ethernet auto-negotiation.
+
+ * systemd-networkd's .network files gained support for a new
+ ListenPort= setting in the [DHCP] section to explicitly configure the
+ UDP client port the DHCP client shall listen on.
+
+ * .network files gained a new Unmanaged= boolean setting for explicitly
+ excluding one or more interfaces from management by systemd-networkd.
+
+ * The systemd-networkd ProxyARP= option has been renamed to
+ IPV4ProxyARP=. Similarly, VXLAN-specific option ARPProxy= has been
+ renamed to ReduceARPProxy=. The old names continue to be available
+ for compatibility.
+
+ * systemd-networkd gained support for configuring IPv6 Proxy NDP
+ addresses via the new IPv6ProxyNDPAddress= .network file setting.
+
+ * systemd-networkd's bonding device support gained support for two new
+ configuration options ActiveSlave= and PrimarySlave=.
+
+ * The various options in the [Match] section of .network files gained
+ support for negative matching.
+
+ * New systemd-specific mount options are now understood in /etc/fstab:
+
+ x-systemd.mount-timeout= may be used to configure the maximum
+ permitted runtime of the mount command.
+
+ x-systemd.device-bound may be set to bind a mount point to its
+ backing device unit, in order to automatically remove a mount point
+ if its backing device is unplugged. This option may also be
+ configured through the new SYSTEMD_MOUNT_DEVICE_BOUND udev property
+ on the block device, which is now automatically set for all CDROM
+ drives, so that mounted CDs are automatically unmounted when they are
+ removed from the drive.
+
+ x-systemd.after= and x-systemd.before= may be used to explicitly
+ order a mount after or before another unit or mount point.
+
+ * Enqueued start jobs for device units are now automatically garbage
+ collected if there are no jobs waiting for them anymore.
+
+ * systemctl list-jobs gained two new switches: with --after, for every
+ queued job the jobs it's waiting for are shown; with --before the
+ jobs which it's blocking are shown.
+
+ * systemd-nspawn gained support for ephemeral boots from disk images
+ (or in other words: --ephemeral and --image= may now be
+ combined). Moreover, ephemeral boots are now supported for normal
+ directories, even if the backing file system is not btrfs. Of course,
+ if the file system does not support file system snapshots or
+ reflinks, the initial copy operation will be relatively expensive, but
+ this should still be suitable for many use cases.
+
+ * Calendar time specifications in .timer units now support
+ specifications relative to the end of a month by using "~" instead of
+ "-" as separator between month and day. For example, "*-02~03" means
+ "the third last day in February". In addition a new syntax for
+ repeated events has been added using the "/" character. For example,
+ "9..17/2:00" means "every two hours from 9am to 5pm".
+
+ * systemd-socket-proxyd gained a new parameter --connections-max= for
+ configuring the maximum number of concurrent connections.
+
+ * sd-id128 gained a new API for generating unique IDs for the host in a
+ way that does not leak the machine ID. Specifically,
+ sd_id128_get_machine_app_specific() derives an ID based on the
+ machine ID in a well-defined, non-reversible, stable way. This is
+ useful whenever an identifier for the host is needed but where the
+ identifier shall not be useful to identify the system beyond the
+ scope of the application itself. (Internally this uses HMAC-SHA256 as
+ keyed hash function using the machine ID as input.)
+
+ * NotifyAccess= gained a new supported value "exec". When set
+ notifications are accepted from all processes systemd itself invoked,
+ including all control processes.
+
+ * .nspawn files gained support for defining overlay mounts using the
+ Overlay= and OverlayReadOnly= options. Previously this functionality
+ was only available on the systemd-nspawn command line.
+
+ * systemd-nspawn's --bind= and --overlay= options gained support for
+ bind/overlay mounts whose source lies within the container tree by
+ prefixing the source path with "+".
+
+ * systemd-nspawn's --bind= and --overlay= options gained support for
+ automatically allocating a temporary source directory in /var/tmp
+ that is removed when the container dies. Specifically, if the source
+ directory is specified as empty string this mechanism is selected. An
+ example usage is --overlay=+/var::/var, which creates an overlay
+ mount based on the original /var contained in the image, overlaid
+ with a temporary directory in the host's /var/tmp. This way changes
+ to /var are automatically flushed when the container shuts down.
+
+ * systemd-nspawn --image= option does now permit raw file system block
+ devices (in addition to images containing partition tables, as
+ before).
+
+ * The disk image dissection logic in systemd-nspawn gained support for
+ automatically setting up LUKS encrypted as well as Verity protected
+ partitions. When a container is booted from an encrypted image the
+ passphrase is queried at start-up time. When a container with Verity
+ data is started, the root hash is search in a ".roothash" file
+ accompanying the disk image (alternatively, pass the root hash via
+ the new --root-hash= command line option).
+
+ * A new tool /usr/lib/systemd/systemd-dissect has been added that may
+ be used to dissect disk images the same way as systemd-nspawn does
+ it, following the Bootable Partition Specification. It may even be
+ used to mount disk images with complex partition setups (including
+ LUKS and Verity partitions) to a local host directory, in order to
+ inspect them. This tool is not considered public API (yet), and is
+ thus not installed into /usr/bin. Please do not rely on its
+ existence, since it might go away or be changed in later systemd
+ versions.
+
+ * A new generator "systemd-verity-generator" has been added, similar in
+ style to "systemd-cryptsetup-generator", permitting automatic setup of
+ Verity root partitions when systemd boots up. In order to make use of
+ this your partition setup should follow the Discoverable Partitions
+ Specification, and the GPT partition ID of the root file system
+ partition should be identical to the upper 128-bit of the Verity root
+ hash. The GPT partition ID of the Verity partition protecting it
+ should be the lower 128-bit of the Verity root hash. If the partition
+ image follows this model it is sufficient to specify a single
+ "roothash=" kernel command line argument to both configure which root
+ image and verity partition to use as well as the root hash for
+ it. Note that systemd-nspawn's Verity support follows the same
+ semantics, meaning that disk images with proper Verity data in place
+ may be booted in containers with systemd-nspawn as well as on
+ physical systems via the verity generator. Also note that the "mkosi"
+ tool available at https://github.com/systemd/mkosi has been updated
+ to generate Verity protected disk images following this scheme. In
+ fact, it has been updated to generate disk images that optionally
+ implement a complete UEFI SecureBoot trust chain, involving a signed
+ kernel and initrd image that incorporates such a root hash as well as
+ a Verity-enabled root partition.
+
+ * The hardware database (hwdb) udev supports has been updated to carry
+ accelerometer quirks.
+
+ * All system services are now run with a fresh kernel keyring set up
+ for them. The invocation ID is stored by default in it, thus
+ providing a safe, non-overridable way to determine the invocation
+ ID of each service.
+
+ * Service unit files gained new BindPaths= and BindReadOnlyPaths=
+ options for bind mounting arbitrary paths in a service-specific
+ way. When these options are used, arbitrary host or service files and
+ directories may be mounted to arbitrary locations in the service's
+ view.
+
+ * Documentation has been added that lists all of systemd's low-level
+ environment variables:
+
+ https://github.com/systemd/systemd/blob/master/docs/ENVIRONMENT.md
+
+ * sd-daemon gained a new API sd_is_socket_sockaddr() for determining
+ whether a specific socket file descriptor matches a specified socket
+ address.
+
+ * systemd-firstboot has been updated to check for the
+ systemd.firstboot= kernel command line option. It accepts a boolean
+ and when set to false the first boot questions are skipped.
+
+ * systemd-fstab-generator has been updated to check for the
+ systemd.volatile= kernel command line option, which either takes an
+ optional boolean parameter or the special value "state". If used the
+ system may be booted in a "volatile" boot mode. Specifically,
+ "systemd.volatile" is used, the root directory will be mounted as
+ tmpfs, and only /usr is mounted from the actual root file system. If
+ "systemd.volatile=state" is used, the root directory will be mounted
+ as usual, but /var is mounted as tmpfs. This concept provides similar
+ functionality as systemd-nspawn's --volatile= option, but provides it
+ on physical boots. Use this option for implementing stateless
+ systems, or testing systems with all state and/or configuration reset
+ to the defaults. (Note though that many distributions are not
+ prepared to boot up without a populated /etc or /var, though.)
+
+ * systemd-gpt-auto-generator gained support for LUKS encrypted root
+ partitions. Previously it only supported LUKS encrypted partitions
+ for all other uses, except for the root partition itself.
+
+ * Socket units gained support for listening on AF_VSOCK sockets for
+ communication in virtualized QEMU environments.
+
+ * The "configure" script gained a new option --with-fallback-hostname=
+ for specifying the fallback hostname to use if none is configured in
+ /etc/hostname. For example, by specifying
+ --with-fallback-hostname=fedora it is possible to default to a
+ hostname of "fedora" on pristine installations.
+
+ * systemd-cgls gained support for a new --unit= switch for listing only
+ the control groups of a specific unit. Similar --user-unit= has been
+ added for listing only the control groups of a specific user unit.
+
+ * systemd-mount gained a new --umount switch for unmounting a mount or
+ automount point (and all mount/automount points below it).
+
+ * systemd will now refuse full configuration reloads (via systemctl
+ daemon-reload and related calls) unless at least 16MiB of free space
+ are available in /run. This is a safety precaution in order to ensure
+ that generators can safely operate after the reload completed.
+
+ * A new unit file option RootImage= has been added, which has a similar
+ effect as RootDirectory= but mounts the service's root directory from
+ a disk image instead of plain directory. This logic reuses the same
+ image dissection and mount logic that systemd-nspawn already uses,
+ and hence supports any disk images systemd-nspawn supports, including
+ those following the Discoverable Partition Specification, as well as
+ Verity enabled images. This option enables systemd to run system
+ services directly off disk images acting as resource bundles,
+ possibly even including full integrity data.
+
+ * A new MountAPIVFS= unit file option has been added, taking a boolean
+ argument. If enabled /proc, /sys and /dev (collectively called the
+ "API VFS") will be mounted for the service. This is only relevant if
+ RootDirectory= or RootImage= is used for the service, as these mounts
+ are of course in place in the host mount namespace anyway.
+
+ * systemd-nspawn gained support for a new --pivot-root= switch. If
+ specified the root directory within the container image is pivoted to
+ the specified mount point, while the original root disk is moved to a
+ different place. This option enables booting of ostree images
+ directly with systemd-nspawn.
+
+ * The systemd build scripts will no longer complain if the NTP server
+ addresses are not changed from the defaults. Google now supports
+ these NTP servers officially. We still recommend downstreams to
+ properly register an NTP pool with the NTP pool project though.
+
+ * coredumpctl gained a new "--reverse" option for printing the list
+ of coredumps in reverse order.
+
+ * coredumpctl will now show additional information about truncated and
+ inaccessible coredumps, as well as coredumps that are still being
+ processed. It also gained a new --quiet switch for suppressing
+ additional informational message in its output.
+
+ * coredumpctl gained support for only showing coredumps newer and/or
+ older than specific timestamps, using the new --since= and --until=
+ options, reminiscent of journalctl's options by the same name.
+
+ * The systemd-coredump logic has been improved so that it may be reused
+ to collect backtraces in non-compiled languages, for example in
+ scripting languages such as Python.
+
+ * machinectl will now show the UID shift of local containers, if user
+ namespacing is enabled for them.
+
+ * systemd will now optionally run "environment generator" binaries at
+ configuration load time. They may be used to add environment
+ variables to the environment block passed to services invoked. One
+ user environment generator is shipped by default that sets up
+ environment variables based on files dropped into /etc/environment.d
+ and ~/.config/environment.d/.
+
+ * systemd-resolved now includes the new, recently published 2017 DNSSEC
+ root key (KSK).
+
+ * hostnamed has been updated to report a new chassis type of
+ "convertible" to cover "foldable" laptops that can both act as a
+ tablet and as a laptop, such as various Lenovo Yoga devices.
+
+ Contributions from: Adrián López, Alexander Galanin, Alexander
+ Kochetkov, Alexandros Frantzis, Andrey Ulanov, Antoine Eiche, Baruch
+ Siach, Bastien Nocera, Benjamin Robin, Björn, Brandon Philips, Cédric
+ Schieli, Charles (Chas) Williams, Christian Hesse, Daniele Medri,
+ Daniel Drake, Daniel Rusek, Daniel Wagner, Dan Streetman, Dave Reisner,
+ David Glasser, David Herrmann, David Michael, Djalal Harouni, Dmitry
+ Khlebnikov, Dmitry Rozhkov, Dongsu Park, Douglas Christman, Earnestly,
+ Emil Soleyman, Eric Cook, Evgeny Vereshchagin, Felipe Sateler, Fionn
+ Cleary, Florian Klink, Francesco Brozzu, Franck Bui, Gabriel Rauter,
+ Gianluca Boiano, Giedrius Statkevičius, Graeme Lawes, Hans de Goede,
+ Harald Hoyer, Ian Kelling, Ivan Shapovalov, Jakub Wilk, Janne Heß, Jan
+ Synacek, Jason Reeder, Jonathan Boulle, Jörg Thalheim, Jouke Witteveen,
+ Karl Kraus, Kees Cook, Keith Busch, Kieran Colford, kilian-k, Lennart
+ Poettering, Lubomir Rintel, Lucas Werkmeister, Lukas Rusak, Maarten de
+ Vries, Maks Naumov, Mantas Mikulėnas, Marc-Andre Lureau, Marcin Bachry,
+ Mark Stosberg, Martin Ejdestig, Martin Pitt, Mauricio Faria de
+ Oliveira, micah, Michael Biebl, Michael Shields, Michal Schmidt, Michal
+ Sekletar, Michel Kraus, Mike Gilbert, Mikko Ylinen, Mirza Krak,
+ Namhyung Kim, nikolaof, peoronoob, Peter Hutterer, Peter Körner, Philip
+ Withnall, Piotr Drąg, Ray Strode, Reverend Homer, Rike-Benjamin
+ Schuppner, Robert Kreuzer, Ronny Chevalier, Ruslan Bilovol, sammynx,
+ Sergey Ptashnick, Sergiusz Urbaniak, Stefan Berger, Stefan Hajnoczi,
+ Stefan Schweter, Stuart McLaren, Susant Sahani, Sylvain Plantefève,
+ Taylor Smock, Tejun Heo, Thomas Blume, Thomas H. P. Andersen, Tibor
+ Nagy, Tobias Stoeckmann, Tom Gundersen, Torstein Husebø, Viktar
+ Vaŭčkievič, Viktor Mihajlovski, Vitaly Sulimov, Waldemar Brodkorb,
+ Walter Garcia-Fontes, Wim de With, Yassine Imounachen, Yi EungJun,
+ YunQiang Su, Yu Watanabe, Zbigniew Jędrzejewski-Szmek, Александр
+ Тихонов
+
+ — Berlin, 2017-03-01
+
+CHANGES WITH 232:
+
+ * udev now runs with MemoryDenyWriteExecute=, RestrictRealtime= and
+ RestrictAddressFamilies= enabled. These sandboxing options should
+ generally be compatible with the various external udev call-out
+ binaries we are aware of, however there may be exceptions, in
+ particular when exotic languages for these call-outs are used. In
+ this case, consider turning off these settings locally.
+
+ * The new RemoveIPC= option can be used to remove IPC objects owned by
+ the user or group of a service when that service exits.
+
+ * The new ProtectKernelModules= option can be used to disable explicit
+ load and unload operations of kernel modules by a service. In
+ addition access to /usr/lib/modules is removed if this option is set.
+
+ * ProtectSystem= option gained a new value "strict", which causes the
+ whole file system tree with the exception of /dev, /proc, and /sys,
+ to be remounted read-only for a service.
+
+ * The new ProtectKernelTunables= option can be used to disable
+ modification of configuration files in /sys and /proc by a service.
+ Various directories and files are remounted read-only, so access is
+ restricted even if the file permissions would allow it.
+
+ * The new ProtectControlGroups= option can be used to disable write
+ access by a service to /sys/fs/cgroup.
+
+ * Various systemd services have been hardened with
+ ProtectKernelTunables=yes, ProtectControlGroups=yes,
+ RestrictAddressFamilies=.
+
+ * Support for dynamically creating users for the lifetime of a service
+ has been added. If DynamicUser=yes is specified, user and group IDs
+ will be allocated from the range 61184…65519 for the lifetime of the
+ service. They can be resolved using the new nss-systemd.so NSS
+ module. The module must be enabled in /etc/nsswitch.conf. Services
+ started in this way have PrivateTmp= and RemoveIPC= enabled, so that
+ any resources allocated by the service will be cleaned up when the
+ service exits. They also have ProtectHome=read-only and
+ ProtectSystem=strict enabled, so they are not able to make any
+ permanent modifications to the system.
+
+ * The nss-systemd module also always resolves root and nobody, making
+ it possible to have no /etc/passwd or /etc/group files in minimal
+ container or chroot environments.
+
+ * Services may be started with their own user namespace using the new
+ boolean PrivateUsers= option. Only root, nobody, and the uid/gid
+ under which the service is running are mapped. All other users are
+ mapped to nobody.
+
+ * Support for the cgroup namespace has been added to systemd-nspawn. If
+ supported by kernel, the container system started by systemd-nspawn
+ will have its own view of the cgroup hierarchy. This new behaviour
+ can be disabled using $SYSTEMD_NSPAWN_USE_CGNS environment variable.
+
+ * The new MemorySwapMax= option can be used to limit the maximum swap
+ usage under the unified cgroup hierarchy.
+
+ * Support for the CPU controller in the unified cgroup hierarchy has
+ been added, via the CPUWeight=, CPUStartupWeight=, CPUAccounting=
+ options. This controller requires out-of-tree patches for the kernel
+ and the support is provisional.
+
+ * Mount and automount units may now be created transiently
+ (i.e. dynamically at runtime via the bus API, instead of requiring
+ unit files in the file system).
+
+ * systemd-mount is a new tool which may mount file systems – much like
+ mount(8), optionally pulling in additional dependencies through
+ transient .mount and .automount units. For example, this tool
+ automatically runs fsck on a backing block device before mounting,
+ and allows the automount logic to be used dynamically from the
+ command line for establishing mount points. This tool is particularly
+ useful when dealing with removable media, as it will ensure fsck is
+ run – if necessary – before the first access and that the file system
+ is quickly unmounted after each access by utilizing the automount
+ logic. This maximizes the chance that the file system on the
+ removable media stays in a clean state, and if it isn't in a clean
+ state is fixed automatically.
+
+ * LazyUnmount=yes option for mount units has been added to expose the
+ umount --lazy option. Similarly, ForceUnmount=yes exposes the --force
+ option.
+
+ * /efi will be used as the mount point of the EFI boot partition, if
+ the directory is present, and the mount point was not configured
+ through other means (e.g. fstab). If /efi directory does not exist,
+ /boot will be used as before. This makes it easier to automatically
+ mount the EFI partition on systems where /boot is used for something
+ else.
+
+ * When operating on GPT disk images for containers, systemd-nspawn will
+ now mount the ESP to /boot or /efi according to the same rules as PID
+ 1 running on a host. This allows tools like "bootctl" to operate
+ correctly within such containers, in order to make container images
+ bootable on physical systems.
+
+ * disk/by-id and disk/by-path symlinks are now created for NVMe drives.
+
+ * Two new user session targets have been added to support running
+ graphical sessions under the systemd --user instance:
+ graphical-session.target and graphical-session-pre.target. See
+ systemd.special(7) for a description of how those targets should be
+ used.
+
+ * The vconsole initialization code has been significantly reworked to
+ use KD_FONT_OP_GET/SET ioctls instead of KD_FONT_OP_COPY and better
+ support unicode keymaps. Font and keymap configuration will now be
+ copied to all allocated virtual consoles.
+
+ * FreeBSD's bhyve virtualization is now detected.
+
+ * Information recorded in the journal for core dumps now includes the
+ contents of /proc/mountinfo and the command line of the process at
+ the top of the process hierarchy (which is usually the init process
+ of the container).
+
+ * systemd-journal-gatewayd learned the --directory= option to serve
+ files from the specified location.
+
+ * journalctl --root=… can be used to peruse the journal in the
+ /var/log/ directories inside of a container tree. This is similar to
+ the existing --machine= option, but does not require the container to
+ be active.
+
+ * The hardware database has been extended to support
+ ID_INPUT_TRACKBALL, used in addition to ID_INPUT_MOUSE to identify
+ trackball devices.
+
+ MOUSE_WHEEL_CLICK_ANGLE_HORIZONTAL hwdb property has been added to
+ specify the click rate for mice which include a horizontal wheel with
+ a click rate that is different than the one for the vertical wheel.
+
+ * systemd-run gained a new --wait option that makes service execution
+ synchronous. (Specifically, the command will not return until the
+ specified service binary exited.)
+
+ * systemctl gained a new --wait option that causes the start command to
+ wait until the units being started have terminated again.
+
+ * A new journal output mode "short-full" has been added which displays
+ timestamps with abbreviated English day names and adds a timezone
+ suffix. Those timestamps include more information than the default
+ "short" output mode, and can be passed directly to journalctl's
+ --since= and --until= options.
+
+ * /etc/resolv.conf will be bind-mounted into containers started by
+ systemd-nspawn, if possible, so any changes to resolv.conf contents
+ are automatically propagated to the container.
+
+ * The number of instances for socket-activated services originating
+ from a single IP address can be limited with
+ MaxConnectionsPerSource=, extending the existing setting of
+ MaxConnections=.
+
+ * systemd-networkd gained support for vcan ("Virtual CAN") interface
+ configuration.
+
+ * .netdev and .network configuration can now be extended through
+ drop-ins.
+
+ * UDP Segmentation Offload, TCP Segmentation Offload, Generic
+ Segmentation Offload, Generic Receive Offload, Large Receive Offload
+ can be enabled and disabled using the new UDPSegmentationOffload=,
+ TCPSegmentationOffload=, GenericSegmentationOffload=,
+ GenericReceiveOffload=, LargeReceiveOffload= options in the
+ [Link] section of .link files.
+
+ * The Spanning Tree Protocol, Priority, Aging Time, and the Default
+ Port VLAN ID can be configured for bridge devices using the new STP=,
+ Priority=, AgeingTimeSec=, and DefaultPVID= settings in the [Bridge]
+ section of .netdev files.
+
+ * The route table to which routes received over DHCP or RA should be
+ added can be configured with the new RouteTable= option in the [DHCP]
+ and [IPv6AcceptRA] sections of .network files.
+
+ * The Address Resolution Protocol can be disabled on links managed by
+ systemd-networkd using the ARP=no setting in the [Link] section of
+ .network files.
+
+ * New environment variables $SERVICE_RESULT, $EXIT_CODE and
+ $EXIT_STATUS are set for ExecStop= and ExecStopPost= commands, and
+ encode information about the result and exit codes of the current
+ service runtime cycle.
+
+ * systemd-sysctl will now configure kernel parameters in the order
+ they occur in the configuration files. This matches what sysctl
+ has been traditionally doing.
+
+ * kernel-install "plugins" that are executed to perform various
+ tasks after a new kernel is added and before an old one is removed
+ can now return a special value to terminate the procedure and
+ prevent any later plugins from running.
+
+ * Journald's SplitMode=login setting has been deprecated. It has been
+ removed from documentation, and its use is discouraged. In a future
+ release it will be completely removed, and made equivalent to current
+ default of SplitMode=uid.
+
+ * Storage=both option setting in /etc/systemd/coredump.conf has been
+ removed. With fast LZ4 compression storing the core dump twice is not
+ useful.
+
+ * The --share-system systemd-nspawn option has been replaced with an
+ (undocumented) variable $SYSTEMD_NSPAWN_SHARE_SYSTEM, but the use of
+ this functionality is discouraged. In addition the variables
+ $SYSTEMD_NSPAWN_SHARE_NS_IPC, $SYSTEMD_NSPAWN_SHARE_NS_PID,
+ $SYSTEMD_NSPAWN_SHARE_NS_UTS may be used to control the unsharing of
+ individual namespaces.
+
+ * "machinectl list" now shows the IP address of running containers in
+ the output, as well as OS release information.
+
+ * "loginctl list" now shows the TTY of each session in the output.
+
+ * sd-bus gained new API calls sd_bus_track_set_recursive(),
+ sd_bus_track_get_recursive(), sd_bus_track_count_name(),
+ sd_bus_track_count_sender(). They permit usage of sd_bus_track peer
+ tracking objects in a "recursive" mode, where a single client can be
+ counted multiple times, if it takes multiple references.
+
+ * sd-bus gained new API calls sd_bus_set_exit_on_disconnect() and
+ sd_bus_get_exit_on_disconnect(). They may be used to make a
+ process using sd-bus automatically exit if the bus connection is
+ severed.
+
+ * Bus clients of the service manager may now "pin" loaded units into
+ memory, by taking an explicit reference on them. This is useful to
+ ensure the client can retrieve runtime data about the service even
+ after the service completed execution. Taking such a reference is
+ available only for privileged clients and should be helpful to watch
+ running services in a race-free manner, and in particular collect
+ information about exit statuses and results.
+
+ * The nss-resolve module has been changed to strictly return UNAVAIL
+ when communication via D-Bus with resolved failed, and NOTFOUND when
+ a lookup completed but was negative. This means it is now possible to
+ neatly configure fallbacks using nsswitch.conf result checking
+ expressions. Taking benefit of this, the new recommended
+ configuration line for the "hosts" entry in /etc/nsswitch.conf is:
+
+ hosts: files mymachines resolve [!UNAVAIL=return] dns myhostname
+
+ * A new setting CtrlAltDelBurstAction= has been added to
+ /etc/systemd/system.conf which may be used to configure the precise
+ behaviour if the user on the console presses Ctrl-Alt-Del more often
+ than 7 times in 2s. Previously this would unconditionally result in
+ an expedited, immediate reboot. With this new setting the precise
+ operation may be configured in more detail, and also turned off
+ entirely.
+
+ * In .netdev files two new settings RemoteChecksumTx= and
+ RemoteChecksumRx= are now understood that permit configuring the
+ remote checksumming logic for VXLAN networks.
+
+ * The service manager learnt a new "invocation ID" concept for invoked
+ services. Each runtime cycle of a service will get a new invocation
+ ID (a 128-bit random UUID) assigned that identifies the current
+ run of the service uniquely and globally. A new invocation ID
+ is generated each time a service starts up. The journal will store
+ the invocation ID of a service along with any logged messages, thus
+ making the invocation ID useful for matching the online runtime of a
+ service with the offline log data it generated in a safe way without
+ relying on synchronized timestamps. In many ways this new service
+ invocation ID concept is similar to the kernel's boot ID concept that
+ uniquely and globally identifies the runtime of each boot. The
+ invocation ID of a service is passed to the service itself via an
+ environment variable ($INVOCATION_ID). A new bus call
+ GetUnitByInvocationID() has been added that is similar to GetUnit()
+ but instead of retrieving the bus path for a unit by its name
+ retrieves it by its invocation ID. The returned path is valid only as
+ long as the passed invocation ID is current.
+
+ * systemd-resolved gained a new "DNSStubListener" setting in
+ resolved.conf. It either takes a boolean value or the special values
+ "udp" and "tcp", and configures whether to enable the stub DNS
+ listener on 127.0.0.53:53.
+
+ * IP addresses configured via networkd may now carry additional
+ configuration settings supported by the kernel. New options include:
+ HomeAddress=, DuplicateAddressDetection=, ManageTemporaryAddress=,
+ PrefixRoute=, AutoJoin=.
+
+ * The PAM configuration fragment file for "user@.service" shipped with
+ systemd (i.e. the --user instance of systemd) has been stripped to
+ the minimum necessary to make the system boot. Previously, it
+ contained Fedora-specific stanzas that did not apply to other
+ distributions. It is expected that downstream distributions add
+ additional configuration lines, matching their needs to this file,
+ using it only as rough template of what systemd itself needs. Note
+ that this reduced fragment does not even include an invocation of
+ pam_limits which most distributions probably want to add, even though
+ systemd itself does not need it. (There's also the new build time
+ option --with-pamconfdir=no to disable installation of the PAM
+ fragment entirely.)
+
+ * If PrivateDevices=yes is set for a service the CAP_SYS_RAWIO
+ capability is now also dropped from its set (in addition to
+ CAP_SYS_MKNOD as before).
+
+ * In service unit files it is now possible to connect a specific named
+ file descriptor with stdin/stdout/stdout of an executed service. The
+ name may be specified in matching .socket units using the
+ FileDescriptorName= setting.
+
+ * A number of journal settings may now be configured on the kernel
+ command line. Specifically, the following options are now understood:
+ systemd.journald.max_level_console=,
+ systemd.journald.max_level_store=,
+ systemd.journald.max_level_syslog=, systemd.journald.max_level_kmsg=,
+ systemd.journald.max_level_wall=.
+
+ * "systemctl is-enabled --full" will now show by which symlinks a unit
+ file is enabled in the unit dependency tree.
+
+ * Support for VeraCrypt encrypted partitions has been added to the
+ "cryptsetup" logic and /etc/crypttab.
+
+ * systemd-detect-virt gained support for a new --private-users switch
+ that checks whether the invoking processes are running inside a user
+ namespace. Similar, a new special value "private-users" for the
+ existing ConditionVirtualization= setting has been added, permitting
+ skipping of specific units in user namespace environments.
+
+ Contributions from: Alban Crequy, Alexander Kuleshov, Alfie John,
+ Andreas Henriksson, Andrew Jeddeloh, Balázs Úr, Bart Rulon, Benjamin
+ Richter, Ben Gamari, Ben Harris, Brian J. Murrell, Christian Brauner,
+ Christian Rebischke, Clinton Roy, Colin Walters, Cristian Rodríguez,
+ Daniel Hahler, Daniel Mack, Daniel Maixner, Daniel Rusek, Dan Dedrick,
+ Davide Cavalca, David Herrmann, David Michael, Dennis Wassenberg,
+ Djalal Harouni, Dongsu Park, Douglas Christman, Elias Probst, Eric
+ Cook, Erik Karlsson, Evgeny Vereshchagin, Felipe Sateler, Felix Zhang,
+ Franck Bui, George Hilliard, Giuseppe Scrivano, HATAYAMA Daisuke,
+ Heikki Kemppainen, Hendrik Brueckner, hi117, Ismo Puustinen, Ivan
+ Shapovalov, Jakub Filak, Jakub Wilk, Jan Synacek, Jason Kölker,
+ Jean-Sébastien Bour, Jiří Pírko, Jonathan Boulle, Jorge Niedbalski,
+ Keith Busch, kristbaum, Kyle Russell, Lans Zhang, Lennart Poettering,
+ Leonardo Brondani Schenkel, Lucas Werkmeister, Luca Bruno, Lukáš
+ Nykrýn, Maciek Borzecki, Mantas Mikulėnas, Marc-Antoine Perennou,
+ Marcel Holtmann, Marcos Mello, Martin Ejdestig, Martin Pitt, Matej
+ Habrnal, Maxime de Roucy, Michael Biebl, Michael Chapman, Michael Hoy,
+ Michael Olbrich, Michael Pope, Michal Sekletar, Michal Soltys, Mike
+ Gilbert, Nick Owens, Patrik Flykt, Paweł Szewczyk, Peter Hutterer,
+ Piotr Drąg, Reid Price, Richard W.M. Jones, Roman Stingler, Ronny
+ Chevalier, Seraphime Kirkovski, Stefan Schweter, Steve Muir, Susant
+ Sahani, Tejun Heo, Thomas Blume, Thomas H. P. Andersen, Tiago Levit,
+ Tobias Jungel, Tomáš Janoušek, Topi Miettinen, Torstein Husebø, Umut
+ Tezduyar Lindskog, Vito Caputo, WaLyong Cho, Wilhelm Schuster, Yann
+ E. MORIN, Yi EungJun, Yuki Inoguchi, Yu Watanabe, Zbigniew
+ Jędrzejewski-Szmek, Zeal Jagannatha
+
+ — Santa Fe, 2016-11-03
+
+CHANGES WITH 231:
+
+ * In service units the various ExecXYZ= settings have been extended
+ with an additional special character as first argument of the
+ assigned value: if the character '+' is used the specified command
+ line it will be run with full privileges, regardless of User=,
+ Group=, CapabilityBoundingSet= and similar options. The effect is
+ similar to the existing PermissionsStartOnly= option, but allows
+ configuration of this concept for each executed command line
+ independently.
+
+ * Services may now alter the service watchdog timeout at runtime by
+ sending a WATCHDOG_USEC= message via sd_notify().
+
+ * MemoryLimit= and related unit settings now optionally take percentage
+ specifications. The percentage is taken relative to the amount of
+ physical memory in the system (or in case of containers, the assigned
+ amount of memory). This allows scaling service resources neatly with
+ the amount of RAM available on the system. Similarly, systemd-logind's
+ RuntimeDirectorySize= option now also optionally takes percentage
+ values.
+
+ * In similar fashion TasksMax= takes percentage values now, too. The
+ value is taken relative to the configured maximum number of processes
+ on the system. The per-service task maximum has been changed to 15%
+ using this functionality. (Effectively this is an increase of 512 →
+ 4915 for service units, given the kernel's default pid_max setting.)
+
+ * Calendar time specifications in .timer units now understand a ".."
+ syntax for time ranges. Example: "4..7:10" may now be used for
+ defining a timer that is triggered at 4:10am, 5:10am, 6:10am and
+ 7:10am every day.
+
+ * The InaccessableDirectories=, ReadOnlyDirectories= and
+ ReadWriteDirectories= unit file settings have been renamed to
+ InaccessablePaths=, ReadOnlyPaths= and ReadWritePaths= and may now be
+ applied to all kinds of file nodes, and not just directories, with
+ the exception of symlinks. Specifically these settings may now be
+ used on block and character device nodes, UNIX sockets and FIFOS as
+ well as regular files. The old names of these settings remain
+ available for compatibility.
+
+ * systemd will now log about all service processes it kills forcibly
+ (using SIGKILL) because they remained after the clean shutdown phase
+ of the service completed. This should help identifying services that
+ shut down uncleanly. Moreover if KillUserProcesses= is enabled in
+ systemd-logind's configuration a similar log message is generated for
+ processes killed at the end of each session due to this setting.
+
+ * systemd will now set the $JOURNAL_STREAM environment variable for all
+ services whose stdout/stderr are connected to the Journal (which
+ effectively means by default: all services). The variable contains
+ the device and inode number of the file descriptor used for
+ stdout/stderr. This may be used by invoked programs to detect whether
+ their stdout/stderr is connected to the Journal, in which case they
+ can switch over to direct Journal communication, thus being able to
+ pass extended, structured metadata along with their log messages. As
+ one example, this is now used by glib's logging primitives.
+
+ * When using systemd's default tmp.mount unit for /tmp, the mount point
+ will now be established with the "nosuid" and "nodev" options. This
+ avoids privilege escalation attacks that put traps and exploits into
+ /tmp. However, this might cause problems if you e.g. put container
+ images or overlays into /tmp; if you need this, override tmp.mount's
+ "Options=" with a drop-in, or mount /tmp from /etc/fstab with your
+ desired options.
+
+ * systemd now supports the "memory" cgroup controller also on
+ cgroup v2.
+
+ * The systemd-cgtop tool now optionally takes a control group path as
+ command line argument. If specified, the control group list shown is
+ limited to subgroups of that group.
+
+ * The SystemCallFilter= unit file setting gained support for
+ pre-defined, named system call filter sets. For example
+ SystemCallFilter=@clock is now an effective way to make all clock
+ changing-related system calls unavailable to a service. A number of
+ similar pre-defined groups are defined. Writing system call filters
+ for system services is simplified substantially with this new
+ concept. Accordingly, all of systemd's own, long-running services now
+ enable system call filtering based on this, by default.
+
+ * A new service setting MemoryDenyWriteExecute= has been added, taking
+ a boolean value. If turned on, a service may no longer create memory
+ mappings that are writable and executable at the same time. This
+ enhances security for services where this is enabled as it becomes
+ harder to dynamically write and then execute memory in exploited
+ service processes. This option has been enabled for all of systemd's
+ own long-running services.
+
+ * A new RestrictRealtime= service setting has been added, taking a
+ boolean argument. If set the service's processes may no longer
+ acquire realtime scheduling. This improves security as realtime
+ scheduling may otherwise be used to easily freeze the system.
+
+ * systemd-nspawn gained a new switch --notify-ready= taking a boolean
+ value. This may be used for requesting that the system manager inside
+ of the container reports start-up completion to nspawn which then
+ propagates this notification further to the service manager
+ supervising nspawn itself. A related option NotifyReady= in .nspawn
+ files has been added too. This functionality allows ordering of the
+ start-up of multiple containers using the usual systemd ordering
+ primitives.
+
+ * machinectl gained a new command "stop" that is an alias for
+ "terminate".
+
+ * systemd-resolved gained support for contacting DNS servers on
+ link-local IPv6 addresses.
+
+ * If systemd-resolved receives the SIGUSR2 signal it will now flush all
+ its caches. A method call for requesting the same operation has been
+ added to the bus API too, and is made available via "systemd-resolve
+ --flush-caches".
+
+ * systemd-resolve gained a new --status switch. If passed a brief
+ summary of the used DNS configuration with per-interface information
+ is shown.
+
+ * resolved.conf gained a new Cache= boolean option, defaulting to
+ on. If turned off local DNS caching is disabled. This comes with a
+ performance penalty in particular when DNSSEC is enabled. Note that
+ resolved disables its internal caching implicitly anyway, when the
+ configured DNS server is on a host-local IP address such as ::1 or
+ 127.0.0.1, thus automatically avoiding double local caching.
+
+ * systemd-resolved now listens on the local IP address 127.0.0.53:53
+ for DNS requests. This improves compatibility with local programs
+ that do not use the libc NSS or systemd-resolved's bus APIs for name
+ resolution. This minimal DNS service is only available to local
+ programs and does not implement the full DNS protocol, but enough to
+ cover local DNS clients. A new, static resolv.conf file, listing just
+ this DNS server is now shipped in /usr/lib/systemd/resolv.conf. It is
+ now recommended to make /etc/resolv.conf a symlink to this file in
+ order to route all DNS lookups to systemd-resolved, regardless if
+ done via NSS, the bus API or raw DNS packets. Note that this local
+ DNS service is not as fully featured as the libc NSS or
+ systemd-resolved's bus APIs. For example, as unicast DNS cannot be
+ used to deliver link-local address information (as this implies
+ sending a local interface index along), LLMNR/mDNS support via this
+ interface is severely restricted. It is thus strongly recommended for
+ all applications to use the libc NSS API or native systemd-resolved
+ bus API instead.
+
+ * systemd-networkd's bridge support learned a new setting
+ VLANFiltering= for controlling VLAN filtering. Moreover a new section
+ in .network files has been added for configuring VLAN bridging in
+ more detail: VLAN=, EgressUntagged=, PVID= in [BridgeVLAN].
+
+ * systemd-networkd's IPv6 Router Advertisement code now makes use of
+ the DNSSL and RDNSS options. This means IPv6 DNS configuration may
+ now be acquired without relying on DHCPv6. Two new options
+ UseDomains= and UseDNS= have been added to configure this behaviour.
+
+ * systemd-networkd's IPv6AcceptRouterAdvertisements= option has been
+ renamed IPv6AcceptRA=, without altering its behaviour. The old
+ setting name remains available for compatibility reasons.
+
+ * The systemd-networkd VTI/VTI6 tunneling support gained new options
+ Key=, InputKey= and OutputKey=.
+
+ * systemd-networkd gained support for VRF ("Virtual Routing Function")
+ interface configuration.
+
+ * "systemctl edit" may now be used to create new unit files by
+ specifying the --force switch.
+
+ * sd-event gained a new function sd_event_get_iteration() for
+ requesting the current iteration counter of the event loop. It starts
+ at zero and is increased by one with each event loop iteration.
+
+ * A new rpm macro %systemd_ordering is provided by the macros.systemd
+ file. It can be used in lieu of %systemd_requires in packages which
+ don't use any systemd functionality and are intended to be installed
+ in minimal containers without systemd present. This macro provides
+ ordering dependencies to ensure that if the package is installed in
+ the same rpm transaction as systemd, systemd will be installed before
+ the scriptlets for the package are executed, allowing unit presets
+ to be handled.
+
+ New macros %_systemdgeneratordir and %_systemdusergeneratordir have
+ been added to simplify packaging of generators.
+
+ * The os-release file gained VERSION_CODENAME field for the
+ distribution nickname (e.g. VERSION_CODENAME=woody).
+
+ * New udev property UDEV_DISABLE_PERSISTENT_STORAGE_RULES_FLAG=1
+ can be set to disable parsing of metadata and the creation
+ of persistent symlinks for that device.
+
+ * The v230 change to tag framebuffer devices (/dev/fb*) with "uaccess"
+ to make them available to logged-in users has been reverted.
+
+ * Much of the common code of the various systemd components is now
+ built into an internal shared library libsystemd-shared-231.so
+ (incorporating the systemd version number in the name, to be updated
+ with future releases) that the components link to. This should
+ decrease systemd footprint both in memory during runtime and on
+ disk. Note that the shared library is not for public use, and is
+ neither API nor ABI stable, but is likely to change with every new
+ released update. Packagers need to make sure that binaries
+ linking to libsystemd-shared.so are updated in step with the
+ library.
+
+ * Configuration for "mkosi" is now part of the systemd
+ repository. mkosi is a tool to easily build legacy-free OS images,
+ and is available on github: https://github.com/systemd/mkosi. If
+ "mkosi" is invoked in the build tree a new raw OS image is generated
+ incorporating the systemd sources currently being worked on and a
+ clean, fresh distribution installation. The generated OS image may be
+ booted up with "systemd-nspawn -b -i", qemu-kvm or on any physical
+ UEFI PC. This functionality is particularly useful to easily test
+ local changes made to systemd in a pristine, defined environment. See
+ doc/HACKING for details.
+
+ * configure learned the --with-support-url= option to specify the
+ distribution's bugtracker.
+
+ Contributions from: Alban Crequy, Alessandro Puccetti, Alessio Igor
+ Bogani, Alexander Kuleshov, Alexander Kurtz, Alex Gaynor, Andika
+ Triwidada, Andreas Pokorny, Andreas Rammhold, Andrew Jeddeloh, Ansgar
+ Burchardt, Atrotors, Benjamin Drung, Brian Boylston, Christian Hesse,
+ Christian Rebischke, Daniele Medri, Daniel Mack, Dave Reisner, David
+ Herrmann, David Michael, Djalal Harouni, Douglas Christman, Elias
+ Probst, Evgeny Vereshchagin, Federico Mena Quintero, Felipe Sateler,
+ Franck Bui, Harald Hoyer, Ian Lee, Ivan Shapovalov, Jakub Wilk, Jan
+ Janssen, Jean-Sébastien Bour, John Paul Adrian Glaubitz, Jouke
+ Witteveen, Kai Ruhnau, kpengboy, Kyle Walker, Lénaïc Huard, Lennart
+ Poettering, Luca Bruno, Lukas Lösche, Lukáš Nykrýn, mahkoh, Marcel
+ Holtmann, Martin Pitt, Marty Plummer, Matthieu Codron, Max Prokhorov,
+ Michael Biebl, Michael Karcher, Michael Olbrich, Michał Bartoszkiewicz,
+ Michal Sekletar, Michal Soltys, Minkyung, Muhammet Kara, mulkieran,
+ Otto Wallenius, Pablo Lezaeta Reyes, Peter Hutterer, Ronny Chevalier,
+ Rusty Bird, Stef Walter, Susant Sahani, Tejun Heo, Thomas Blume, Thomas
+ Haller, Thomas H. P. Andersen, Tobias Jungel, Tom Gundersen, Tom Yan,
+ Topi Miettinen, Torstein Husebø, Valentin Vidić, Viktar Vaŭčkievič,
+ WaLyong Cho, Weng Xuetian, Werner Fink, Zbigniew Jędrzejewski-Szmek
+
+ — Berlin, 2016-07-25
+
+CHANGES WITH 230:
+
+ * DNSSEC is now turned on by default in systemd-resolved (in
+ "allow-downgrade" mode), but may be turned off during compile time by
+ passing "--with-default-dnssec=no" to "configure" (and of course,
+ during runtime with DNSSEC= in resolved.conf). We recommend
+ downstreams to leave this on at least during development cycles and
+ report any issues with the DNSSEC logic upstream. We are very
+ interested in collecting feedback about the DNSSEC validator and its
+ limitations in the wild. Note however, that DNSSEC support is
+ probably nothing downstreams should turn on in stable distros just
+ yet, as it might create incompatibilities with a few DNS servers and
+ networks. We tried hard to make sure we downgrade to non-DNSSEC mode
+ automatically whenever we detect such incompatible setups, but there
+ might be systems we do not cover yet. Hence: please help us testing
+ the DNSSEC code, leave this on where you can, report back, but then
+ again don't consider turning this on in your stable, LTS or
+ production release just yet. (Note that you have to enable
+ nss-resolve in /etc/nsswitch.conf, to actually use systemd-resolved
+ and its DNSSEC mode for hostname resolution from local
+ applications.)
+
+ * systemd-resolve conveniently resolves DANE records with the --tlsa
+ option and OPENPGPKEY records with the --openpgp option. It also
+ supports dumping raw DNS record data via the new --raw= switch.
+
+ * systemd-logind will now by default terminate user processes that are
+ part of the user session scope unit (session-XX.scope) when the user
+ logs out. This behavior is controlled by the KillUserProcesses=
+ setting in logind.conf, and the previous default of "no" is now
+ changed to "yes". This means that user sessions will be properly
+ cleaned up after, but additional steps are necessary to allow
+ intentionally long-running processes to survive logout.
+
+ While the user is logged in at least once, user@.service is running,
+ and any service that should survive the end of any individual login
+ session can be started at a user service or scope using systemd-run.
+ systemd-run(1) man page has been extended with an example which shows
+ how to run screen in a scope unit underneath user@.service. The same
+ command works for tmux.
+
+ After the user logs out of all sessions, user@.service will be
+ terminated too, by default, unless the user has "lingering" enabled.
+ To effectively allow users to run long-term tasks even if they are
+ logged out, lingering must be enabled for them. See loginctl(1) for
+ details. The default polkit policy was modified to allow users to
+ set lingering for themselves without authentication.
+
+ Previous defaults can be restored at compile time by the
+ --without-kill-user-processes option to "configure".
+
+ * systemd-logind gained new configuration settings SessionsMax= and
+ InhibitorsMax=, both with a default of 8192. It will not register new
+ user sessions or inhibitors above this limit.
+
+ * systemd-logind will now reload configuration on SIGHUP.
+
+ * The unified cgroup hierarchy added in Linux 4.5 is now supported.
+ Use systemd.unified_cgroup_hierarchy=1 on the kernel command line to
+ enable. Also, support for the "io" cgroup controller in the unified
+ hierarchy has been added, so that the "memory", "pids" and "io" are
+ now the controllers that are supported on the unified hierarchy.
+
+ WARNING: it is not possible to use previous systemd versions with
+ systemd.unified_cgroup_hierarchy=1 and the new kernel. Therefore it
+ is necessary to also update systemd in the initramfs if using the
+ unified hierarchy. An updated SELinux policy is also required.
+
+ * LLDP support has been extended, and both passive (receive-only) and
+ active (sender) modes are supported. Passive mode ("routers-only") is
+ enabled by default in systemd-networkd. Active LLDP mode is enabled
+ by default for containers on the internal network. The "networkctl
+ lldp" command may be used to list information gathered. "networkctl
+ status" will also show basic LLDP information on connected peers now.
+
+ * The IAID and DUID unique identifier sent in DHCP requests may now be
+ configured for the system and each .network file managed by
+ systemd-networkd using the DUIDType=, DUIDRawData=, IAID= options.
+
+ * systemd-networkd gained support for configuring proxy ARP support for
+ each interface, via the ProxyArp= setting in .network files. It also
+ gained support for configuring the multicast querier feature of
+ bridge devices, via the new MulticastQuerier= setting in .netdev
+ files. Similarly, snooping on the IGMP traffic can be controlled
+ via the new setting MulticastSnooping=.
+
+ A new setting PreferredLifetime= has been added for addresses
+ configured in .network file to configure the lifetime intended for an
+ address.
+
+ The systemd-networkd DHCP server gained the option EmitRouter=, which
+ defaults to yes, to configure whether the DHCP Option 3 (Router)
+ should be emitted.
+
+ * The testing tool /usr/lib/systemd/systemd-activate is renamed to
+ systemd-socket-activate and installed into /usr/bin. It is now fully
+ supported.
+
+ * systemd-journald now uses separate threads to flush changes to disk
+ when closing journal files, thus reducing impact of slow disk I/O on
+ logging performance.
+
+ * The sd-journal API gained two new calls
+ sd_journal_open_directory_fd() and sd_journal_open_files_fd() which
+ can be used to open journal files using file descriptors instead of
+ file or directory paths. sd_journal_open_container() has been
+ deprecated, sd_journal_open_directory_fd() should be used instead
+ with the flag SD_JOURNAL_OS_ROOT.
+
+ * journalctl learned a new output mode "-o short-unix" that outputs log
+ lines prefixed by their UNIX time (i.e. seconds since Jan 1st, 1970
+ UTC). It also gained support for a new --no-hostname setting to
+ suppress the hostname column in the family of "short" output modes.
+
+ * systemd-ask-password now optionally skips printing of the password to
+ stdout with --no-output which can be useful in scripts.
+
+ * Framebuffer devices (/dev/fb*) and 3D printers and scanners
+ (devices tagged with ID_MAKER_TOOL) are now tagged with
+ "uaccess" and are available to logged in users.
+
+ * The DeviceAllow= unit setting now supports specifiers (with "%").
+
+ * "systemctl show" gained a new --value switch, which allows print a
+ only the contents of a specific unit property, without also printing
+ the property's name. Similar support was added to "show*" verbs
+ of loginctl and machinectl that output "key=value" lists.
+
+ * A new unit type "generated" was added for files dynamically generated
+ by generator tools. Similarly, a new unit type "transient" is used
+ for unit files created using the runtime API. "systemctl enable" will
+ refuse to operate on such files.
+
+ * A new command "systemctl revert" has been added that may be used to
+ revert to the vendor version of a unit file, in case local changes
+ have been made by adding drop-ins or overriding the unit file.
+
+ * "machinectl clean" gained a new verb to automatically remove all or
+ just hidden container images.
+
+ * systemd-tmpfiles gained support for a new line type "e" for emptying
+ directories, if they exist, without creating them if they don't.
+
+ * systemd-nspawn gained support for automatically patching the UID/GIDs
+ of the owners and the ACLs of all files and directories in a
+ container tree to match the UID/GID user namespacing range selected
+ for the container invocation. This mode is enabled via the new
+ --private-users-chown switch. It also gained support for
+ automatically choosing a free, previously unused UID/GID range when
+ starting a container, via the new --private-users=pick setting (which
+ implies --private-users-chown). Together, these options for the first
+ time make user namespacing for nspawn containers fully automatic and
+ thus deployable. The systemd-nspawn@.service template unit file has
+ been changed to use this functionality by default.
+
+ * systemd-nspawn gained a new --network-zone= switch, that allows
+ creating ad-hoc virtual Ethernet links between multiple containers,
+ that only exist as long as at least one container referencing them is
+ running. This allows easy connecting of multiple containers with a
+ common link that implements an Ethernet broadcast domain. Each of
+ these network "zones" may be named relatively freely by the user, and
+ may be referenced by any number of containers, but each container may
+ only reference one of these "zones". On the lower level, this is
+ implemented by an automatically managed bridge network interface for
+ each zone, that is created when the first container referencing its
+ zone is created and removed when the last one referencing its zone
+ terminates.
+
+ * The default start timeout may now be configured on the kernel command
+ line via systemd.default_timeout_start_sec=. It was already
+ configurable via the DefaultTimeoutStartSec= option in
+ /etc/systemd/system.conf.
+
+ * Socket units gained a new TriggerLimitIntervalSec= and
+ TriggerLimitBurst= setting to configure a limit on the activation
+ rate of the socket unit.
+
+ * The LimitNICE= setting now optionally takes normal UNIX nice values
+ in addition to the raw integer limit value. If the specified
+ parameter is prefixed with "+" or "-" and is in the range -20…19 the
+ value is understood as UNIX nice value. If not prefixed like this it
+ is understood as raw RLIMIT_NICE limit.
+
+ * Note that the effect of the PrivateDevices= unit file setting changed
+ slightly with this release: the per-device /dev file system will be
+ mounted read-only from this version on, and will have "noexec"
+ set. This (minor) change of behavior might cause some (exceptional)
+ legacy software to break, when PrivateDevices=yes is set for its
+ service. Please leave PrivateDevices= off if you run into problems
+ with this.
+
+ * systemd-bootchart has been split out to a separate repository:
+ https://github.com/systemd/systemd-bootchart
+
+ * systemd-bus-proxyd has been removed, as kdbus is unlikely to still be
+ merged into the kernel in its current form.
+
+ * The compatibility libraries libsystemd-daemon.so,
+ libsystemd-journal.so, libsystemd-id128.so, and libsystemd-login.so
+ which have been deprecated since systemd-209 have been removed along
+ with the corresponding pkg-config files. All symbols provided by
+ those libraries are provided by libsystemd.so.
+
+ * The Capabilities= unit file setting has been removed (it is ignored
+ for backwards compatibility). AmbientCapabilities= and
+ CapabilityBoundingSet= should be used instead.
+
+ * A new special target has been added, initrd-root-device.target,
+ which creates a synchronization point for dependencies of the root
+ device in early userspace. Initramfs builders must ensure that this
+ target is now included in early userspace.
+
+ Contributions from: Alban Crequy, Alexander Kuleshov, Alexander Shopov,
+ Alex Crawford, Andre Klärner, Andrew Eikum, Beniamino Galvani, Benjamin
+ Robin, Biao Lu, Bjørnar Ness, Calvin Owens, Christian Hesse, Clemens
+ Gruber, Colin Guthrie, Daniel Drake, Daniele Medri, Daniel J Walsh,
+ Daniel Mack, Dan Nicholson, daurnimator, David Herrmann, David
+ R. Hedges, Elias Probst, Emmanuel Gil Peyrot, EMOziko, Evgeny
+ Vereshchagin, Federico, Felipe Sateler, Filipe Brandenburger, Franck
+ Bui, frankheckenbach, gdamjan, Georgia Brikis, Harald Hoyer, Hendrik
+ Brueckner, Hristo Venev, Iago López Galeiras, Ian Kelling, Ismo
+ Puustinen, Jakub Wilk, Jaroslav Škarvada, Jeff Huang, Joel Holdsworth,
+ John Paul Adrian Glaubitz, Jonathan Boulle, kayrus, Klearchos
+ Chaloulos, Kyle Russell, Lars Uebernickel, Lennart Poettering, Lubomir
+ Rintel, Lukáš Nykrýn, Mantas Mikulėnas, Marcel Holtmann, Martin Pitt,
+ Michael Biebl, michaelolbrich, Michał Bartoszkiewicz, Michal Koutný,
+ Michal Sekletar, Mike Frysinger, Mike Gilbert, Mingcong Bai, Ming Lin,
+ mulkieran, muzena, Nalin Dahyabhai, Naohiro Aota, Nathan McSween,
+ Nicolas Braud-Santoni, Patrik Flykt, Peter Hutterer, Peter Mattern,
+ Petr Lautrbach, Petros Angelatos, Piotr Drąg, Rabin Vincent, Robert
+ Węcławski, Ronny Chevalier, Samuel Tardieu, Stefan Saraev, Stefan
+ Schallenberg aka nafets227, Steven Siloti, Susant Sahani, Sylvain
+ Plantefève, Taylor Smock, Tejun Heo, Thomas Blume, Thomas Haller,
+ Thomas H. P. Andersen, Tobias Klauser, Tom Gundersen, topimiettinen,
+ Torstein Husebø, Umut Tezduyar Lindskog, Uwe Kleine-König, Victor Toso,
+ Vinay Kulkarni, Vito Caputo, Vittorio G (VittGam), Vladimir Panteleev,
+ Wieland Hoffmann, Wouter Verhelst, Yu Watanabe, Zbigniew
+ Jędrzejewski-Szmek
+
+ — Fairfax, 2016-05-21
+
+CHANGES WITH 229:
+
+ * The systemd-resolved DNS resolver service has gained a substantial
+ set of new features, most prominently it may now act as a DNSSEC
+ validating stub resolver. DNSSEC mode is currently turned off by
+ default, but is expected to be turned on by default in one of the
+ next releases. For now, we invite everybody to test the DNSSEC logic
+ by setting DNSSEC=allow-downgrade in /etc/systemd/resolved.conf. The
+ service also gained a full set of D-Bus interfaces, including calls
+ to configure DNS and DNSSEC settings per link (for use by external
+ network management software). systemd-resolved and systemd-networkd
+ now distinguish between "search" and "routing" domains. The former
+ are used to qualify single-label names, the latter are used purely
+ for routing lookups within certain domains to specific links.
+ resolved now also synthesizes RRs for all entries from /etc/hosts.
+
+ * The systemd-resolve tool (which is a client utility for
+ systemd-resolved) has been improved considerably and is now fully
+ supported and documented. Hence it has moved from /usr/lib/systemd to
+ /usr/bin.
+
+ * /dev/disk/by-path/ symlink support has been (re-)added for virtio
+ devices.
+
+ * The coredump collection logic has been reworked: when a coredump is
+ collected it is now written to disk, compressed and processed
+ (including stacktrace extraction) from a new instantiated service
+ systemd-coredump@.service, instead of directly from the
+ /proc/sys/kernel/core_pattern hook we provide. This is beneficial as
+ processing large coredumps can take up a substantial amount of
+ resources and time, and this previously happened entirely outside of
+ systemd's service supervision. With the new logic the core_pattern
+ hook only does minimal metadata collection before passing off control
+ to the new instantiated service, which is configured with a time
+ limit, a nice level and other settings to minimize negative impact on
+ the rest of the system. Also note that the new logic will honour the
+ RLIMIT_CORE setting of the crashed process, which now allows users
+ and processes to turn off coredumping for their processes by setting
+ this limit.
+
+ * The RLIMIT_CORE resource limit now defaults to "unlimited" for PID 1
+ and all forked processes by default. Previously, PID 1 would leave
+ the setting at "0" for all processes, as set by the kernel. Note that
+ the resource limit traditionally has no effect on the generated
+ coredumps on the system if the /proc/sys/kernel/core_pattern hook
+ logic is used. Since the limit is now honoured (see above) its
+ default has been changed so that the coredumping logic is enabled by
+ default for all processes, while allowing specific opt-out.
+
+ * When the stacktrace is extracted from processes of system users, this
+ is now done as "systemd-coredump" user, in order to sandbox this
+ potentially security sensitive parsing operation. (Note that when
+ processing coredumps of normal users this is done under the user ID
+ of process that crashed, as before.) Packagers should take notice
+ that it is now necessary to create the "systemd-coredump" system user
+ and group at package installation time.
+
+ * The systemd-activate socket activation testing tool gained support
+ for SOCK_DGRAM and SOCK_SEQPACKET sockets using the new --datagram
+ and --seqpacket switches. It also has been extended to support both
+ new-style and inetd-style file descriptor passing. Use the new
+ --inetd switch to request inetd-style file descriptor passing.
+
+ * Most systemd tools now honor a new $SYSTEMD_COLORS environment
+ variable, which takes a boolean value. If set to false, ANSI color
+ output is disabled in the tools even when run on a terminal that
+ supports it.
+
+ * The VXLAN support in networkd now supports two new settings
+ DestinationPort= and PortRange=.
+
+ * A new systemd.machine_id= kernel command line switch has been added,
+ that may be used to set the machine ID in /etc/machine-id if it is
+ not initialized yet. This command line option has no effect if the
+ file is already initialized.
+
+ * systemd-nspawn gained a new --as-pid2 switch that invokes any
+ specified command line as PID 2 rather than PID 1 in the
+ container. In this mode PID 1 is a minimal stub init process that
+ implements the special POSIX and Linux semantics of PID 1 regarding
+ signal and child process management. Note that this stub init process
+ is implemented in nspawn itself and requires no support from the
+ container image. This new logic is useful to support running
+ arbitrary commands in the container, as normal processes are
+ generally not prepared to run as PID 1.
+
+ * systemd-nspawn gained a new --chdir= switch for setting the current
+ working directory for the process started in the container.
+
+ * "journalctl /dev/sda" will now output all kernel log messages for
+ specified device from the current boot, in addition to all devices
+ that are parents of it. This should make log output about devices
+ pretty useful, as long as kernel drivers attach enough metadata to
+ the log messages. (The usual SATA drivers do.)
+
+ * The sd-journal API gained two new calls
+ sd_journal_has_runtime_files() and sd_journal_has_persistent_files()
+ that report whether log data from /run or /var has been found.
+
+ * journalctl gained a new switch "--fields" that prints all journal
+ record field names currently in use in the journal. This is backed
+ by two new sd-journal API calls sd_journal_enumerate_fields() and
+ sd_journal_restart_fields().
+
+ * Most configurable timeouts in systemd now expect an argument of
+ "infinity" to turn them off, instead of "0" as before. The semantics
+ from now on is that a timeout of "0" means "now", and "infinity"
+ means "never". To maintain backwards compatibility, "0" continues to
+ turn off previously existing timeout settings.
+
+ * "systemctl reload-or-try-restart" has been renamed to "systemctl
+ try-reload-or-restart" to clarify what it actually does: the "try"
+ logic applies to both reloading and restarting, not just restarting.
+ The old name continues to be accepted for compatibility.
+
+ * On boot-up, when PID 1 detects that the system clock is behind the
+ release date of the systemd version in use, the clock is now set
+ to the latter. Previously, this was already done in timesyncd, in order
+ to avoid running with clocks set to the various clock epochs such as
+ 1902, 1938 or 1970. With this change the logic is now done in PID 1
+ in addition to timesyncd during early boot-up, so that it is enforced
+ before the first process is spawned by systemd. Note that the logic
+ in timesyncd remains, as it is more comprehensive and ensures
+ clock monotonicity by maintaining a persistent timestamp file in
+ /var. Since /var is generally not available in earliest boot or the
+ initrd, this part of the logic remains in timesyncd, and is not done
+ by PID 1.
+
+ * Support for tweaking details in net_cls.class_id through the
+ NetClass= configuration directive has been removed, as the kernel
+ people have decided to deprecate that controller in cgroup v2.
+ Userspace tools such as nftables are moving over to setting rules
+ that are specific to the full cgroup path of a task, which obsoletes
+ these controllers anyway. The NetClass= directive is kept around for
+ legacy compatibility reasons. For a more in-depth description of the
+ kernel change, please refer to the respective upstream commit:
+
+ https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=bd1060a1d671
+
+ * A new service setting RuntimeMaxSec= has been added that may be used
+ to specify a maximum runtime for a service. If the timeout is hit, the
+ service is terminated and put into a failure state.
+
+ * A new service setting AmbientCapabilities= has been added. It allows
+ configuration of additional Linux process capabilities that are
+ passed to the activated processes. This is only available on very
+ recent kernels.
+
+ * The process resource limit settings in service units may now be used
+ to configure hard and soft limits individually.
+
+ * The various libsystemd APIs such as sd-bus or sd-event now publicly
+ expose support for gcc's __attribute__((cleanup())) C extension.
+ Specifically, for many object destructor functions alternative
+ versions have been added that have names suffixed with "p" and take a
+ pointer to a pointer to the object to destroy, instead of just a
+ pointer to the object itself. This is useful because these destructor
+ functions may be used directly as parameters to the cleanup
+ construct. Internally, systemd has been a heavy user of this GCC
+ extension for a long time, and with this change similar support is
+ now available to consumers of the library outside of systemd. Note
+ that by using this extension in your sources compatibility with old
+ and strictly ANSI compatible C compilers is lost. However, all gcc or
+ LLVM versions of recent years support this extension.
+
+ * Timer units gained support for a new setting RandomizedDelaySec= that
+ allows configuring some additional randomized delay to the configured
+ time. This is useful to spread out timer events to avoid load peaks in
+ clusters or larger setups.
+
+ * Calendar time specifications now support sub-second accuracy.
+
+ * Socket units now support listening on SCTP and UDP-lite protocol
+ sockets.
+
+ * The sd-event API now comes with a full set of man pages.
+
+ * Older versions of systemd contained experimental support for
+ compressing journal files and coredumps with the LZ4 compressor that
+ was not compatible with the lz4 binary (due to API limitations of the
+ lz4 library). This support has been removed; only support for files
+ compatible with the lz4 binary remains. This LZ4 logic is now
+ officially supported and no longer considered experimental.
+
+ * The dkr image import logic has been removed again from importd. dkr's
+ micro-services focus doesn't fit into the machine image focus of
+ importd, and quickly got out of date with the upstream dkr API.
+
+ * Creation of the /run/lock/lockdev/ directory was dropped from
+ tmpfiles.d/legacy.conf. Better locking mechanisms like flock() have
+ been available for many years. If you still need this, you need to
+ create your own tmpfiles.d config file with:
+
+ d /run/lock/lockdev 0775 root lock -
+
+ * The settings StartLimitBurst=, StartLimitInterval=, StartLimitAction=
+ and RebootArgument= have been moved from the [Service] section of
+ unit files to [Unit], and they are now supported on all unit types,
+ not just service units. Of course, systemd will continue to
+ understand these settings also at the old location, in order to
+ maintain compatibility.
+
+ Contributions from: Abdo Roig-Maranges, Alban Crequy, Aleksander
+ Adamowski, Alexander Kuleshov, Andreas Pokorny, Andrei Borzenkov,
+ Andrew Wilcox, Arthur Clement, Beniamino Galvani, Casey Schaufler,
+ Chris Atkinson, Chris Mayo, Christian Hesse, Damjan Georgievski, Dan
+ Dedrick, Daniele Medri, Daniel J Walsh, Daniel Korostil, Daniel Mack,
+ David Herrmann, Dimitri John Ledkov, Dominik Hannen, Douglas Christman,
+ Evgeny Vereshchagin, Filipe Brandenburger, Franck Bui, Gabor Kelemen,
+ Harald Hoyer, Hayden Walles, Helmut Grohne, Henrik Kaare Poulsen,
+ Hristo Venev, Hui Wang, Indrajit Raychaudhuri, Ismo Puustinen, Jakub
+ Wilk, Jan Alexander Steffens (heftig), Jan Engelhardt, Jan Synacek,
+ Joost Bremmer, Jorgen Schaefer, Karel Zak, Klearchos Chaloulos,
+ lc85446, Lennart Poettering, Lukas Nykryn, Mantas Mikulėnas, Marcel
+ Holtmann, Martin Pitt, Michael Biebl, Michael Olbrich, Michael Scherer,
+ Michał Górny, Michal Sekletar, Nicolas Cornu, Nicolas Iooss, Nils
+ Carlson, nmartensen, nnz1024, Patrick Ohly, Peter Hutterer, Phillip Sz,
+ Ronny Chevalier, Samu Kallio, Shawn Landden, Stef Walter, Susant
+ Sahani, Sylvain Plantefève, Tadej Janež, Thomas Hindoe Paaboel
+ Andersen, Tom Gundersen, Torstein Husebø, Umut Tezduyar Lindskog, Vito
+ Caputo, WaLyong Cho, Yu Watanabe, Zbigniew Jędrzejewski-Szmek
+
+ — Berlin, 2016-02-11
+
+CHANGES WITH 228:
+
+ * A number of properties previously only settable in unit
+ files are now also available as properties to set when
+ creating transient units programmatically via the bus, as it
+ is exposed with systemd-run's --property=
+ setting. Specifically, these are: SyslogIdentifier=,
+ SyslogLevelPrefix=, TimerSlackNSec=, OOMScoreAdjust=,
+ EnvironmentFile=, ReadWriteDirectories=,
+ ReadOnlyDirectories=, InaccessibleDirectories=,
+ ProtectSystem=, ProtectHome=, RuntimeDirectory=.
+
+ * When creating transient services via the bus API it is now
+ possible to pass in a set of file descriptors to use as
+ STDIN/STDOUT/STDERR for the invoked process.
+
+ * Slice units may now be created transiently via the bus APIs,
+ similar to the way service and scope units may already be
+ created transiently.
+
+ * Wherever systemd expects a calendar timestamp specification
+ (like in journalctl's --since= and --until= switches) UTC
+ timestamps are now supported. Timestamps suffixed with "UTC"
+ are now considered to be in Universal Time Coordinated
+ instead of the local timezone. Also, timestamps may now
+ optionally be specified with sub-second accuracy. Both of
+ these additions also apply to recurring calendar event
+ specification, such as OnCalendar= in timer units.
+
+ * journalctl gained a new "--sync" switch that asks the
+ journal daemon to write all so far unwritten log messages to
+ disk and sync the files, before returning.
+
+ * systemd-tmpfiles learned two new line types "q" and "Q" that
+ operate like "v", but also set up a basic btrfs quota
+ hierarchy when used on a btrfs file system with quota
+ enabled.
+
+ * tmpfiles' "v", "q" and "Q" will now create a plain directory
+ instead of a subvolume (even on a btrfs file system) if the
+ root directory is a plain directory, and not a
+ subvolume. This should simplify things with certain chroot()
+ environments which are not aware of the concept of btrfs
+ subvolumes.
+
+ * systemd-detect-virt gained a new --chroot switch to detect
+ whether execution takes place in a chroot() environment.
+
+ * CPUAffinity= now takes CPU index ranges in addition to
+ individual indexes.
+
+ * The various memory-related resource limit settings (such as
+ LimitAS=) now understand the usual K, M, G, … suffixes to
+ the base of 1024 (IEC). Similar, the time-related resource
+ limit settings understand the usual min, h, day, … suffixes
+ now.
+
+ * There's a new system.conf setting DefaultTasksMax= to
+ control the default TasksMax= setting for services and
+ scopes running on the system. (TasksMax= is the primary
+ setting that exposes the "pids" cgroup controller on systemd
+ and was introduced in the previous systemd release.) The
+ setting now defaults to 512, which means services that are
+ not explicitly configured otherwise will only be able to
+ create 512 processes or threads at maximum, from this
+ version on. Note that this means that thread- or
+ process-heavy services might need to be reconfigured to set
+ TasksMax= to a higher value. It is sufficient to set
+ TasksMax= in these specific unit files to a higher value, or
+ even "infinity". Similar, there's now a logind.conf setting
+ UserTasksMax= that defaults to 4096 and limits the total
+ number of processes or tasks each user may own
+ concurrently. nspawn containers also have the TasksMax=
+ value set by default now, to 8192. Note that all of this
+ only has an effect if the "pids" cgroup controller is
+ enabled in the kernel. The general benefit of these changes
+ should be a more robust and safer system, that provides a
+ certain amount of per-service fork() bomb protection.
+
+ * systemd-nspawn gained the new --network-veth-extra= switch
+ to define additional and arbitrarily-named virtual Ethernet
+ links between the host and the container.
+
+ * A new service execution setting PassEnvironment= has been
+ added that allows importing select environment variables
+ from PID1's environment block into the environment block of
+ the service.
+
+ * Timer units gained support for a new RemainAfterElapse=
+ setting which takes a boolean argument. It defaults to on,
+ exposing behaviour unchanged to previous releases. If set to
+ off, timer units are unloaded after they elapsed if they
+ cannot elapse again. This is particularly useful for
+ transient timer units, which shall not stay around longer
+ than until they first elapse.
+
+ * systemd will now bump the net.unix.max_dgram_qlen to 512 by
+ default now (the kernel default is 16). This is beneficial
+ for avoiding blocking on AF_UNIX/SOCK_DGRAM sockets since it
+ allows substantially larger numbers of queued
+ datagrams. This should increase the capability of systemd to
+ parallelize boot-up, as logging and sd_notify() are unlikely
+ to stall execution anymore. If you need to change the value
+ from the new defaults, use the usual sysctl.d/ snippets.
+
+ * The compression framing format used by the journal or
+ coredump processing has changed to be in line with what the
+ official LZ4 tools generate. LZ4 compression support in
+ systemd was considered unsupported previously, as the format
+ was not compatible with the normal tools. With this release
+ this has changed now, and it is hence safe for downstream
+ distributions to turn it on. While not compressing as well
+ as the XZ, LZ4 is substantially faster, which makes
+ it a good default choice for the compression logic in the
+ journal and in coredump handling.
+
+ * Any reference to /etc/mtab has been dropped from
+ systemd. The file has been obsolete since a while, but
+ systemd refused to work on systems where it was incorrectly
+ set up (it should be a symlink or non-existent). Please make
+ sure to update to util-linux 2.27.1 or newer in conjunction
+ with this systemd release, which also drops any reference to
+ /etc/mtab. If you maintain a distribution make sure that no
+ software you package still references it, as this is a
+ likely source of bugs. There's also a glibc bug pending,
+ asking for removal of any reference to this obsolete file:
+
+ https://sourceware.org/bugzilla/show_bug.cgi?id=19108
+
+ Note that only util-linux versions built with
+ --enable-libmount-force-mountinfo are supported.
+
+ * Support for the ".snapshot" unit type has been removed. This
+ feature turned out to be little useful and little used, and
+ has now been removed from the core and from systemctl.
+
+ * The dependency types RequiresOverridable= and
+ RequisiteOverridable= have been removed from systemd. They
+ have been used only very sparingly to our knowledge and
+ other options that provide a similar effect (such as
+ systemctl --mode=ignore-dependencies) are much more useful
+ and commonly used. Moreover, they were only half-way
+ implemented as the option to control behaviour regarding
+ these dependencies was never added to systemctl. By removing
+ these dependency types the execution engine becomes a bit
+ simpler. Unit files that use these dependencies should be
+ changed to use the non-Overridable dependency types
+ instead. In fact, when parsing unit files with these
+ options, that's what systemd will automatically convert them
+ too, but it will also warn, asking users to fix the unit
+ files accordingly. Removal of these dependency types should
+ only affect a negligible number of unit files in the wild.
+
+ * Behaviour of networkd's IPForward= option changed
+ (again). It will no longer maintain a per-interface setting,
+ but propagate one way from interfaces where this is enabled
+ to the global kernel setting. The global setting will be
+ enabled when requested by a network that is set up, but
+ never be disabled again. This change was made to make sure
+ IPv4 and IPv6 behaviour regarding packet forwarding is
+ similar (as the Linux IPv6 stack does not support
+ per-interface control of this setting) and to minimize
+ surprises.
+
+ * In unit files the behaviour of %u, %U, %h, %s has
+ changed. These specifiers will now unconditionally resolve
+ to the various user database fields of the user that the
+ systemd instance is running as, instead of the user
+ configured in the specific unit via User=. Note that this
+ effectively doesn't change much, as resolving of these
+ specifiers was already turned off in the --system instance
+ of systemd, as we cannot do NSS lookups from PID 1. In the
+ --user instance of systemd these specifiers where correctly
+ resolved, but hardly made any sense, since the user instance
+ lacks privileges to do user switches anyway, and User= is
+ hence useless. Moreover, even in the --user instance of
+ systemd behaviour was awkward as it would only take settings
+ from User= assignment placed before the specifier into
+ account. In order to unify and simplify the logic around
+ this the specifiers will now always resolve to the
+ credentials of the user invoking the manager (which in case
+ of PID 1 is the root user).
+
+ Contributions from: Andrew Jones, Beniamino Galvani, Boyuan
+ Yang, Daniel Machon, Daniel Mack, David Herrmann, David
+ Reynolds, David Strauss, Dongsu Park, Evgeny Vereshchagin,
+ Felipe Sateler, Filipe Brandenburger, Franck Bui, Hristo
+ Venev, Iago López Galeiras, Jan Engelhardt, Jan Janssen, Jan
+ Synacek, Jesus Ornelas Aguayo, Karel Zak, kayrus, Kay Sievers,
+ Lennart Poettering, Liu Yuan Yuan, Mantas Mikulėnas, Marcel
+ Holtmann, Marcin Bachry, Marcos Alano, Marcos Mello, Mark
+ Theunissen, Martin Pitt, Michael Marineau, Michael Olbrich,
+ Michal Schmidt, Michal Sekletar, Mirco Tischler, Nick Owens,
+ Nicolas Cornu, Patrik Flykt, Peter Hutterer, reverendhomer,
+ Ronny Chevalier, Sangjung Woo, Seong-ho Cho, Shawn Landden,
+ Susant Sahani, Thomas Haller, Thomas Hindoe Paaboel Andersen,
+ Tom Gundersen, Torstein Husebø, Vito Caputo, Zbigniew
+ Jędrzejewski-Szmek
+
+ — Berlin, 2015-11-18
+
+CHANGES WITH 227:
+
+ * systemd now depends on util-linux v2.27. More specifically,
+ the newly added mount monitor feature in libmount now
+ replaces systemd's former own implementation.
+
+ * libmount mandates /etc/mtab not to be regular file, and
+ systemd now enforces this condition at early boot.
+ /etc/mtab has been deprecated and warned about for a very
+ long time, so systems running systemd should already have
+ stopped having this file around as anything else than a
+ symlink to /proc/self/mounts.
+
+ * Support for the "pids" cgroup controller has been added. It
+ allows accounting the number of tasks in a cgroup and
+ enforcing limits on it. This adds two new setting
+ TasksAccounting= and TasksMax= to each unit, as well as a
+ global option DefaultTasksAccounting=.
+
+ * Support for the "net_cls" cgroup controller has been added.
+ It allows assigning a net class ID to each task in the
+ cgroup, which can then be used in firewall rules and traffic
+ shaping configurations. Note that the kernel netfilter net
+ class code does not currently work reliably for ingress
+ packets on unestablished sockets.
+
+ This adds a new config directive called NetClass= to CGroup
+ enabled units. Allowed values are positive numbers for fixed
+ assignments and "auto" for picking a free value
+ automatically.
+
+ * 'systemctl is-system-running' now returns 'offline' if the
+ system is not booted with systemd. This command can now be
+ used as a substitute for 'systemd-notify --booted'.
+
+ * Watchdog timeouts have been increased to 3 minutes for all
+ in-tree service files. Apparently, disk IO issues are more
+ frequent than we hoped, and user reported >1 minute waiting
+ for disk IO.
+
+ * 'machine-id-commit' functionality has been merged into
+ 'machine-id-setup --commit'. The separate binary has been
+ removed.
+
+ * The WorkingDirectory= directive in unit files may now be set
+ to the special value '~'. In this case, the working
+ directory is set to the home directory of the user
+ configured in User=.
+
+ * "machinectl shell" will now open the shell in the home
+ directory of the selected user by default.
+
+ * The CrashChVT= configuration file setting is renamed to
+ CrashChangeVT=, following our usual logic of not
+ abbreviating unnecessarily. The old directive is still
+ supported for compat reasons. Also, this directive now takes
+ an integer value between 1 and 63, or a boolean value. The
+ formerly supported '-1' value for disabling stays around for
+ compat reasons.
+
+ * The PrivateTmp=, PrivateDevices=, PrivateNetwork=,
+ NoNewPrivileges=, TTYPath=, WorkingDirectory= and
+ RootDirectory= properties can now be set for transient
+ units.
+
+ * The systemd-analyze tool gained a new "set-log-target" verb
+ to change the logging target the system manager logs to
+ dynamically during runtime. This is similar to how
+ "systemd-analyze set-log-level" already changes the log
+ level.
+
+ * In nspawn /sys is now mounted as tmpfs, with only a selected
+ set of subdirectories mounted in from the real sysfs. This
+ enhances security slightly, and is useful for ensuring user
+ namespaces work correctly.
+
+ * Support for USB FunctionFS activation has been added. This
+ allows implementation of USB gadget services that are
+ activated as soon as they are requested, so that they don't
+ have to run continuously, similar to classic socket
+ activation.
+
+ * The "systemctl exit" command now optionally takes an
+ additional parameter that sets the exit code to return from
+ the systemd manager when exiting. This is only relevant when
+ running the systemd user instance, or when running the
+ system instance in a container.
+
+ * sd-bus gained the new API calls sd_bus_path_encode_many()
+ and sd_bus_path_decode_many() that allow easy encoding and
+ decoding of multiple identifier strings inside a D-Bus
+ object path. Another new call sd_bus_default_flush_close()
+ has been added to flush and close per-thread default
+ connections.
+
+ * systemd-cgtop gained support for a -M/--machine= switch to
+ show the control groups within a certain container only.
+
+ * "systemctl kill" gained support for an optional --fail
+ switch. If specified the requested operation will fail of no
+ processes have been killed, because the unit had no
+ processes attached, or similar.
+
+ * A new systemd.crash_reboot=1 kernel command line option has
+ been added that triggers a reboot after crashing. This can
+ also be set through CrashReboot= in systemd.conf.
+
+ * The RuntimeDirectory= setting now understands unit
+ specifiers like %i or %f.
+
+ * A new (still internal) library API sd-ipv4acd has been added,
+ that implements address conflict detection for IPv4. It's
+ based on code from sd-ipv4ll, and will be useful for
+ detecting DHCP address conflicts.
+
+ * File descriptors passed during socket activation may now be
+ named. A new API sd_listen_fds_with_names() is added to
+ access the names. The default names may be overridden,
+ either in the .socket file using the FileDescriptorName=
+ parameter, or by passing FDNAME= when storing the file
+ descriptors using sd_notify().
+
+ * systemd-networkd gained support for:
+
+ - Setting the IPv6 Router Advertisement settings via
+ IPv6AcceptRouterAdvertisements= in .network files.
+
+ - Configuring the HelloTimeSec=, MaxAgeSec= and
+ ForwardDelaySec= bridge parameters in .netdev files.
+
+ - Configuring PreferredSource= for static routes in
+ .network files.
+
+ * The "ask-password" framework used to query for LUKS harddisk
+ passwords or SSL passwords during boot gained support for
+ caching passwords in the kernel keyring, if it is
+ available. This makes sure that the user only has to type in
+ a passphrase once if there are multiple objects to unlock
+ with the same one. Previously, such password caching was
+ available only when Plymouth was used; this moves the
+ caching logic into the systemd codebase itself. The
+ "systemd-ask-password" utility gained a new --keyname=
+ switch to control which kernel keyring key to use for
+ caching a password in. This functionality is also useful for
+ enabling display managers such as gdm to automatically
+ unlock the user's GNOME keyring if its passphrase, the
+ user's password and the harddisk password are the same, if
+ gdm-autologin is used.
+
+ * When downloading tar or raw images using "machinectl
+ pull-tar" or "machinectl pull-raw", a matching ".nspawn"
+ file is now also downloaded, if it is available and stored
+ next to the image file.
+
+ * Units of type ".socket" gained a new boolean setting
+ Writable= which is only useful in conjunction with
+ ListenSpecial=. If true, enables opening the specified
+ special file in O_RDWR mode rather than O_RDONLY mode.
+
+ * systemd-rfkill has been reworked to become a singleton
+ service that is activated through /dev/rfkill on each rfkill
+ state change and saves the settings to disk. This way,
+ systemd-rfkill is now compatible with devices that exist
+ only intermittendly, and even restores state if the previous
+ system shutdown was abrupt rather than clean.
+
+ * The journal daemon gained support for vacuuming old journal
+ files controlled by the number of files that shall remain,
+ in addition to the already existing control by size and by
+ date. This is useful as journal interleaving performance
+ degrades with too many separate journal files, and allows
+ putting an effective limit on them. The new setting defaults
+ to 100, but this may be changed by setting SystemMaxFiles=
+ and RuntimeMaxFiles= in journald.conf. Also, the
+ "journalctl" tool gained the new --vacuum-files= switch to
+ manually vacuum journal files to leave only the specified
+ number of files in place.
+
+ * udev will now create /dev/disk/by-path links for ATA devices
+ on kernels where that is supported.
+
+ * Galician, Serbian, Turkish and Korean translations were added.
+
+ Contributions from: Aaro Koskinen, Alban Crequy, Beniamino
+ Galvani, Benjamin Robin, Branislav Blaskovic, Chen-Han Hsiao
+ (Stanley), Daniel Buch, Daniel Machon, Daniel Mack, David
+ Herrmann, David Milburn, doubleodoug, Evgeny Vereshchagin,
+ Felipe Franciosi, Filipe Brandenburger, Fran Dieguez, Gabriel
+ de Perthuis, Georg Müller, Hans de Goede, Hendrik Brueckner,
+ Ivan Shapovalov, Jacob Keller, Jan Engelhardt, Jan Janssen,
+ Jan Synacek, Jens Kuske, Karel Zak, Kay Sievers, Krzesimir
+ Nowak, Krzysztof Kotlenga, Lars Uebernickel, Lennart
+ Poettering, Lukas Nykryn, Łukasz Stelmach, Maciej Wereski,
+ Marcel Holtmann, Marius Thesing, Martin Pitt, Michael Biebl,
+ Michael Gebetsroither, Michal Schmidt, Michal Sekletar, Mike
+ Gilbert, Muhammet Kara, nazgul77, Nicolas Cornu, NoXPhasma,
+ Olof Johansson, Patrik Flykt, Pawel Szewczyk, reverendhomer,
+ Ronny Chevalier, Sangjung Woo, Seong-ho Cho, Susant Sahani,
+ Sylvain Plantefève, Thomas Haller, Thomas Hindoe Paaboel
+ Andersen, Tom Gundersen, Tom Lyon, Viktar Vauchkevich,
+ Zbigniew Jędrzejewski-Szmek, Марко М. Костић
+
+ — Berlin, 2015-10-07
+
+CHANGES WITH 226:
+
+ * The DHCP implementation of systemd-networkd gained a set of
+ new features:
+
+ - The DHCP server now supports emitting DNS and NTP
+ information. It may be enabled and configured via
+ EmitDNS=, DNS=, EmitNTP=, and NTP=. If transmission of DNS
+ and NTP information is enabled, but no servers are
+ configured, the corresponding uplink information (if there
+ is any) is propagated.
+
+ - Server and client now support transmission and reception
+ of timezone information. It can be configured via the
+ newly introduced network options UseTimezone=,
+ EmitTimezone=, and Timezone=. Transmission of timezone
+ information is enabled between host and containers by
+ default now: the container will change its local timezone
+ to what the host has set.
+
+ - Lease timeouts can now be configured via
+ MaxLeaseTimeSec= and DefaultLeaseTimeSec=.
+
+ - The DHCP server improved on the stability of
+ leases. Clients are more likely to get the same lease
+ information back, even if the server loses state.
+
+ - The DHCP server supports two new configuration options to
+ control the lease address pool metrics, PoolOffset= and
+ PoolSize=.
+
+ * The encapsulation limit of tunnels in systemd-networkd may
+ now be configured via 'EncapsulationLimit='. It allows
+ modifying the maximum additional levels of encapsulation
+ that are permitted to be prepended to a packet.
+
+ * systemd now supports the concept of user buses replacing
+ session buses, if used with dbus-1.10 (and enabled via dbus
+ --enable-user-session). It previously only supported this on
+ kdbus-enabled systems, and this release expands this to
+ 'dbus-daemon' systems.
+
+ * systemd-networkd now supports predictable interface names
+ for virtio devices.
+
+ * systemd now optionally supports the new Linux kernel
+ "unified" control group hierarchy. If enabled via the kernel
+ command-line option 'systemd.unified_cgroup_hierarchy=1',
+ systemd will try to mount the unified cgroup hierarchy
+ directly on /sys/fs/cgroup. If not enabled, or not
+ available, systemd will fall back to the legacy cgroup
+ hierarchy setup, as before. Host system and containers can
+ mix and match legacy and unified hierarchies as they
+ wish. nspawn understands the $UNIFIED_CGROUP_HIERARCHY
+ environment variable to individually select the hierarchy to
+ use for executed containers. By default, nspawn will use the
+ unified hierarchy for the containers if the host uses the
+ unified hierarchy, and the legacy hierarchy otherwise.
+ Please note that at this point the unified hierarchy is an
+ experimental kernel feature and is likely to change in one
+ of the next kernel releases. Therefore, it should not be
+ enabled by default in downstream distributions yet. The
+ minimum required kernel version for the unified hierarchy to
+ work is 4.2. Note that when the unified hierarchy is used
+ for the first time delegated access to controllers is
+ safe. Because of this systemd-nspawn containers will get
+ access to controllers now, as will systemd user
+ sessions. This means containers and user sessions may now
+ manage their own resources, partitioning up what the system
+ grants them.
+
+ * A new special scope unit "init.scope" has been introduced
+ that encapsulates PID 1 of the system. It may be used to
+ determine resource usage and enforce resource limits on PID
+ 1 itself. PID 1 hence moved out of the root of the control
+ group tree.
+
+ * The cgtop tool gained support for filtering out kernel
+ threads when counting tasks in a control group. Also, the
+ count of processes is now recursively summed up by
+ default. Two options -k and --recursive= have been added to
+ revert to old behaviour. The tool has also been updated to
+ work correctly in containers now.
+
+ * systemd-nspawn's --bind= and --bind-ro= options have been
+ extended to allow creation of non-recursive bind mounts.
+
+ * libsystemd gained two new calls sd_pid_get_cgroup() and
+ sd_peer_get_cgroup() which return the control group path of
+ a process or peer of a connected AF_UNIX socket. This
+ function call is particularly useful when implementing
+ delegated subtrees support in the control group hierarchy.
+
+ * The "sd-event" event loop API of libsystemd now supports
+ correct dequeuing of real-time signals, without losing
+ signal events.
+
+ * When systemd requests a polkit decision when managing units it
+ will now add additional fields to the request, including unit
+ name and desired operation. This enables more powerful polkit
+ policies, that make decisions depending on these parameters.
+
+ * nspawn learnt support for .nspawn settings files, that may
+ accompany the image files or directories of containers, and
+ may contain additional settings for the container. This is
+ an alternative to configuring container parameters via the
+ nspawn command line.
+
+ Contributions from: Cristian Rodríguez, Daniel Mack, David
+ Herrmann, Eugene Yakubovich, Evgeny Vereshchagin, Filipe
+ Brandenburger, Hans de Goede, Jan Alexander Steffens, Jan
+ Synacek, Kay Sievers, Lennart Poettering, Mangix, Marcel
+ Holtmann, Martin Pitt, Michael Biebl, Michael Chapman, Michal
+ Sekletar, Peter Hutterer, Piotr Drąg, reverendhomer, Robin
+ Hack, Susant Sahani, Sylvain Pasche, Thomas Hindoe Paaboel
+ Andersen, Tom Gundersen, Torstein Husebø
+
+ — Berlin, 2015-09-08
+
+CHANGES WITH 225:
+
+ * machinectl gained a new verb 'shell' which opens a fresh
+ shell on the target container or the host. It is similar to
+ the existing 'login' command of machinectl, but spawns the
+ shell directly without prompting for username or
+ password. The pseudo machine '.host' now refers to the local
+ host and is used by default. Hence, 'machinectl shell' can
+ be used as replacement for 'su -' which spawns a session as
+ a fresh systemd unit in a way that is fully isolated from
+ the originating session.
+
+ * systemd-networkd learned to cope with private-zone DHCP
+ options and allows other programs to query the values.
+
+ * SELinux access control when enabling/disabling units is no
+ longer enforced with this release. The previous implementation
+ was incorrect, and a new corrected implementation is not yet
+ available. As unit file operations are still protected via
+ polkit and D-Bus policy this is not a security problem. Yet,
+ distributions which care about optimal SELinux support should
+ probably not stabilize on this release.
+
+ * sd-bus gained support for matches of type "arg0has=", that
+ test for membership of strings in string arrays sent in bus
+ messages.
+
+ * systemd-resolved now dumps the contents of its DNS and LLMNR
+ caches to the logs on reception of the SIGUSR1 signal. This
+ is useful to debug DNS behaviour.
+
+ * The coredumpctl tool gained a new --directory= option to
+ operate on journal files in a specific directory.
+
+ * "systemctl reboot" and related commands gained a new
+ "--message=" option which may be used to set a free-text
+ wall message when shutting down or rebooting the
+ system. This message is also logged, which is useful for
+ figuring out the reason for a reboot or shutdown a
+ posteriori.
+
+ * The "systemd-resolve-host" tool's -i switch now takes
+ network interface numbers as alternative to interface names.
+
+ * A new unit file setting for services has been introduced:
+ UtmpMode= allows configuration of how precisely systemd
+ handles utmp and wtmp entries for the service if this is
+ enabled. This allows writing services that appear similar to
+ user sessions in the output of the "w", "who", "last" and
+ "lastlog" tools.
+
+ * systemd-resolved will now locally synthesize DNS resource
+ records for the "localhost" and "gateway" domains as well as
+ the local hostname. This should ensure that clients querying
+ RRs via resolved will get similar results as those going via
+ NSS, if nss-myhostname is enabled.
+
+ Contributions from: Alastair Hughes, Alex Crawford, Daniel
+ Mack, David Herrmann, Dimitri John Ledkov, Eric Kostrowski,
+ Evgeny Vereshchagin, Felipe Sateler, HATAYAMA Daisuke, Jan
+ Pokorný, Jan Synacek, Johnny Robeson, Karel Zak, Kay Sievers,
+ Kefeng Wang, Lennart Poettering, Major Hayden, Marcel
+ Holtmann, Markus Elfring, Martin Mikkelsen, Martin Pitt, Matt
+ Turner, Maxim Mikityanskiy, Michael Biebl, Namhyung Kim,
+ Nicolas Cornu, Owen W. Taylor, Patrik Flykt, Peter Hutterer,
+ reverendhomer, Richard Maw, Ronny Chevalier, Seth Jennings,
+ Stef Walter, Susant Sahani, Thomas Blume, Thomas Hindoe
+ Paaboel Andersen, Thomas Meyer, Tom Gundersen, Vincent Batts,
+ WaLyong Cho, Zbigniew Jędrzejewski-Szmek
+
+ — Berlin, 2015-08-27
+
+CHANGES WITH 224:
+
+ * The systemd-efi-boot-generator functionality was merged into
+ systemd-gpt-auto-generator.
+
+ * systemd-networkd now supports Group Policy for vxlan
+ devices. It can be enabled via the new boolean configuration
+ option called 'GroupPolicyExtension='.
+
+ Contributions from: Andreas Kempf, Christian Hesse, Daniel Mack, David
+ Herrmann, Herman Fries, Johannes Nixdorf, Kay Sievers, Lennart
+ Poettering, Peter Hutterer, Susant Sahani, Tom Gundersen
+
+ — Berlin, 2015-07-31
+
+CHANGES WITH 223:
+
+ * The python-systemd code has been removed from the systemd repository.
+ A new repository has been created which accommodates the code from
+ now on, and we kindly ask distributions to create a separate package
+ for this: https://github.com/systemd/python-systemd
+
+ * The systemd daemon will now reload its main configuration
+ (/etc/systemd/system.conf) on daemon-reload.
+
+ * sd-dhcp now exposes vendor specific extensions via
+ sd_dhcp_lease_get_vendor_specific().
+
+ * systemd-networkd gained a number of new configuration options.
+
+ - A new boolean configuration option for TAP devices called
+ 'VNetHeader='. If set, the IFF_VNET_HDR flag is set for the
+ device, thus allowing to send and receive GSO packets.
+
+ - A new tunnel configuration option called 'CopyDSCP='.
+ If enabled, the DSCP field of ip6 tunnels is copied into the
+ decapsulated packet.
+
+ - A set of boolean bridge configuration options were added.
+ 'UseBPDU=', 'HairPin=', 'FastLeave=', 'AllowPortToBeRoot=',
+ and 'UnicastFlood=' are now parsed by networkd and applied to the
+ respective bridge link device via the respective IFLA_BRPORT_*
+ netlink attribute.
+
+ - A new string configuration option to override the hostname sent
+ to a DHCP server, called 'Hostname='. If set and 'SendHostname='
+ is true, networkd will use the configured hostname instead of the
+ system hostname when sending DHCP requests.
+
+ - A new tunnel configuration option called 'IPv6FlowLabel='. If set,
+ networkd will configure the IPv6 flow-label of the tunnel device
+ according to RFC2460.
+
+ - The 'macvtap' virtual network devices are now supported, similar to
+ the already supported 'macvlan' devices.
+
+ * systemd-resolved now implements RFC5452 to improve resilience against
+ cache poisoning. Additionally, source port randomization is enabled
+ by default to further protect against DNS spoofing attacks.
+
+ * nss-mymachines now supports translating UIDs and GIDs of running
+ containers with user-namespaces enabled. If a container 'foo'
+ translates a host uid 'UID' to the container uid 'TUID', then
+ nss-mymachines will also map uid 'UID' to/from username 'vu-foo-TUID'
+ (with 'foo' and 'TUID' replaced accordingly). Similarly, groups are
+ mapped as 'vg-foo-TGID'.
+
+ Contributions from: Beniamino Galvani, cee1, Christian Hesse, Daniel
+ Buch, Daniel Mack, daurnimator, David Herrmann, Dimitri John Ledkov,
+ HATAYAMA Daisuke, Ivan Shapovalov, Jan Alexander Steffens (heftig),
+ Johan Ouwerkerk, Jose Carlos Venegas Munoz, Karel Zak, Kay Sievers,
+ Lennart Poettering, Lidong Zhong, Martin Pitt, Michael Biebl, Michael
+ Olbrich, Michal Schmidt, Michal Sekletar, Mike Gilbert, Namhyung Kim,
+ Nick Owens, Peter Hutterer, Richard Maw, Steven Allen, Sungbae Yoo,
+ Susant Sahani, Thomas Blume, Thomas Hindoe Paaboel Andersen, Tom
+ Gundersen, Torstein Husebø, Umut Tezduyar Lindskog, Vito Caputo,
+ Vivenzio Pagliari, Zbigniew Jędrzejewski-Szmek
+
+ — Berlin, 2015-07-29
+
+CHANGES WITH 222:
+
+ * udev does not longer support the WAIT_FOR_SYSFS= key in udev rules.
+ There are no known issues with current sysfs, and udev does not need
+ or should be used to work around such bugs.
+
+ * udev does no longer enable USB HID power management. Several reports
+ indicate, that some devices cannot handle that setting.
+
+ * The udev accelerometer helper was removed. The functionality
+ is now fully included in iio-sensor-proxy. But this means,
+ older iio-sensor-proxy versions will no longer provide
+ accelerometer/orientation data with this systemd version.
+ Please upgrade iio-sensor-proxy to version 1.0.
+
+ * networkd gained a new configuration option IPv6PrivacyExtensions=
+ which enables IPv6 privacy extensions (RFC 4941, "Privacy Extensions
+ for Stateless Address") on selected networks.
+
+ * For the sake of fewer build-time dependencies and less code in the
+ main repository, the python bindings are about to be removed in the
+ next release. A new repository has been created which accommodates
+ the code from now on, and we kindly ask distributions to create a
+ separate package for this. The removal will take place in v223.
+
+ https://github.com/systemd/python-systemd
+
+ Contributions from: Abdo Roig-Maranges, Andrew Eikum, Bastien Nocera,
+ Cédric Delmas, Christian Hesse, Christos Trochalakis, Daniel Mack,
+ daurnimator, David Herrmann, Dimitri John Ledkov, Eric Biggers, Eric
+ Cook, Felipe Sateler, Geert Jansen, Gerd Hoffmann, Gianpaolo Macario,
+ Greg Kroah-Hartman, Iago López Galeiras, Jan Alexander Steffens
+ (heftig), Jan Engelhardt, Jay Strict, Kay Sievers, Lennart Poettering,
+ Markus Knetschke, Martin Pitt, Michael Biebl, Michael Marineau, Michal
+ Sekletar, Miguel Bernal Marin, Peter Hutterer, Richard Maw, rinrinne,
+ Susant Sahani, Thomas Hindoe Paaboel Andersen, Tom Gundersen, Torstein
+ Husebø, Vedran Miletić, WaLyong Cho, Zbigniew Jędrzejewski-Szmek
+
+ — Berlin, 2015-07-07
+
+CHANGES WITH 221:
+
+ * The sd-bus.h and sd-event.h APIs have now been declared
+ stable and have been added to the official interface of
+ libsystemd.so. sd-bus implements an alternative D-Bus client
+ library, that is relatively easy to use, very efficient and
+ supports both classic D-Bus as well as kdbus as transport
+ backend. sd-event is a generic event loop abstraction that
+ is built around Linux epoll, but adds features such as event
+ prioritization or efficient timer handling. Both APIs are good
+ choices for C programs looking for a bus and/or event loop
+ implementation that is minimal and does not have to be
+ portable to other kernels.
+
+ * kdbus support is no longer compile-time optional. It is now
+ always built-in. However, it can still be disabled at
+ runtime using the kdbus=0 kernel command line setting, and
+ that setting may be changed to default to off, by specifying
+ --disable-kdbus at build-time. Note though that the kernel
+ command line setting has no effect if the kdbus.ko kernel
+ module is not installed, in which case kdbus is (obviously)
+ also disabled. We encourage all downstream distributions to
+ begin testing kdbus by adding it to the kernel images in the
+ development distributions, and leaving kdbus support in
+ systemd enabled.
+
+ * The minimal required util-linux version has been bumped to
+ 2.26.
+
+ * Support for chkconfig (--enable-chkconfig) was removed in
+ favor of calling an abstraction tool
+ /lib/systemd/systemd-sysv-install. This needs to be
+ implemented for your distribution. See "SYSV INIT.D SCRIPTS"
+ in README for details.
+
+ * If there's a systemd unit and a SysV init script for the
+ same service name, and the user executes "systemctl enable"
+ for it (or a related call), then this will now enable both
+ (or execute the related operation on both), not just the
+ unit.
+
+ * The libudev API documentation has been converted from gtkdoc
+ into man pages.
+
+ * gudev has been removed from the systemd tree, it is now an
+ external project.
+
+ * The systemd-cgtop tool learnt a new --raw switch to generate
+ "raw" (machine parsable) output.
+
+ * networkd's IPForwarding= .network file setting learnt the
+ new setting "kernel", which ensures that networkd does not
+ change the IP forwarding sysctl from the default kernel
+ state.
+
+ * The systemd-logind bus API now exposes a new boolean
+ property "Docked" that reports whether logind considers the
+ system "docked", i.e. connected to a docking station or not.
+
+ Contributions from: Alex Crawford, Andreas Pokorny, Andrei
+ Borzenkov, Charles Duffy, Colin Guthrie, Cristian Rodríguez,
+ Daniele Medri, Daniel Hahler, Daniel Mack, David Herrmann,
+ David Mohr, Dimitri John Ledkov, Djalal Harouni, dslul, Ed
+ Swierk, Eric Cook, Filipe Brandenburger, Gianpaolo Macario,
+ Harald Hoyer, Iago López Galeiras, Igor Vuk, Jan Synacek,
+ Jason Pleau, Jason S. McMullan, Jean Delvare, Jeff Huang,
+ Jonathan Boulle, Karel Zak, Kay Sievers, kloun, Lennart
+ Poettering, Marc-Antoine Perennou, Marcel Holtmann, Mario
+ Limonciello, Martin Pitt, Michael Biebl, Michael Olbrich,
+ Michal Schmidt, Mike Gilbert, Nick Owens, Pablo Lezaeta Reyes,
+ Patrick Donnelly, Pavel Odvody, Peter Hutterer, Philip
+ Withnall, Ronny Chevalier, Simon McVittie, Susant Sahani,
+ Thomas Hindoe Paaboel Andersen, Tom Gundersen, Torstein
+ Husebø, Umut Tezduyar Lindskog, Viktar Vauchkevich, Werner
+ Fink, Zbigniew Jędrzejewski-Szmek
+
+ — Berlin, 2015-06-19
+
+CHANGES WITH 220:
+
+ * The gudev library has been extracted into a separate repository
+ available at: https://git.gnome.org/browse/libgudev/
+ It is now managed as part of the Gnome project. Distributions
+ are recommended to pass --disable-gudev to systemd and use
+ gudev from the Gnome project instead. gudev is still included
+ in systemd, for now. It will be removed soon, though. Please
+ also see the announcement-thread on systemd-devel:
+ https://lists.freedesktop.org/archives/systemd-devel/2015-May/032070.html
+
+ * systemd now exposes a CPUUsageNSec= property for each
+ service unit on the bus, that contains the overall consumed
+ CPU time of a service (the sum of what each process of the
+ service consumed). This value is only available if
+ CPUAccounting= is turned on for a service, and is then shown
+ in the "systemctl status" output.
+
+ * Support for configuring alternative mappings of the old SysV
+ runlevels to systemd targets has been removed. They are now
+ hardcoded in a way that runlevels 2, 3, 4 all map to
+ multi-user.target and 5 to graphical.target (which
+ previously was already the default behaviour).
+
+ * The auto-mounter logic gained support for mount point
+ expiry, using a new TimeoutIdleSec= setting in .automount
+ units. (Also available as x-systemd.idle-timeout= in /etc/fstab).
+
+ * The EFI System Partition (ESP) as mounted to /boot by
+ systemd-efi-boot-generator will now be unmounted
+ automatically after 2 minutes of not being used. This should
+ minimize the risk of ESP corruptions.
+
+ * New /etc/fstab options x-systemd.requires= and
+ x-systemd.requires-mounts-for= are now supported to express
+ additional dependencies for mounts. This is useful for
+ journaling file systems that support external journal
+ devices or overlay file systems that require underlying file
+ systems to be mounted.
+
+ * systemd does not support direct live-upgrades (via systemctl
+ daemon-reexec) from versions older than v44 anymore. As no
+ distribution we are aware of shipped such old versions in a
+ stable release this should not be problematic.
+
+ * When systemd forks off a new per-connection service instance
+ it will now set the $REMOTE_ADDR environment variable to the
+ remote IP address, and $REMOTE_PORT environment variable to
+ the remote IP port. This behaviour is similar to the
+ corresponding environment variables defined by CGI.
+
+ * systemd-networkd gained support for uplink failure
+ detection. The BindCarrier= option allows binding interface
+ configuration dynamically to the link sense of other
+ interfaces. This is useful to achieve behaviour like in
+ network switches.
+
+ * systemd-networkd gained support for configuring the DHCP
+ client identifier to use when requesting leases.
+
+ * systemd-networkd now has a per-network UseNTP= option to
+ configure whether NTP server information acquired via DHCP
+ is passed on to services like systemd-timesyncd.
+
+ * systemd-networkd gained support for vti6 tunnels.
+
+ * 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 behaviour was broken in v219 and has
+ been fixed in v220.
+
+ * Many bonding and vxlan options are now configurable in
+ systemd-networkd.
+
+ * systemd-nspawn gained a new --property= setting to set unit
+ properties for the container scope. This is useful for
+ setting resource parameters (e.g. "CPUShares=500") on
+ containers started from the command line.
+
+ * systemd-nspawn gained a new --private-users= switch to make
+ use of user namespacing available on recent Linux kernels.
+
+ * systemd-nspawn may now be called as part of a shell pipeline
+ in which case the pipes used for stdin and stdout are passed
+ directly to the process invoked in the container, without
+ indirection via a pseudo tty.
+
+ * systemd-nspawn gained a new switch to control the UNIX
+ signal to use when killing the init process of the container
+ when shutting down.
+
+ * systemd-nspawn gained a new --overlay= switch for mounting
+ overlay file systems into the container using the new kernel
+ overlayfs support.
+
+ * When a container image is imported via systemd-importd and
+ the host file system is not btrfs, a loopback block device
+ file is created in /var/lib/machines.raw with a btrfs file
+ system inside. It is then mounted to /var/lib/machines to
+ enable btrfs features for container management. The loopback
+ file and btrfs file system is grown as needed when container
+ images are imported via systemd-importd.
+
+ * systemd-machined/systemd-importd gained support for btrfs
+ quota, to enforce container disk space limits on disk. This
+ is exposed in "machinectl set-limit".
+
+ * systemd-importd now can import containers from local .tar,
+ .raw and .qcow2 images, and export them to .tar and .raw. It
+ can also import dkr v2 images now from the network (on top
+ of v1 as before).
+
+ * systemd-importd gained support for verifying downloaded
+ images with gpg2 (previously only gpg1 was supported).
+
+ * systemd-machined, systemd-logind, systemd: most bus calls are
+ now accessible to unprivileged processes via polkit. Also,
+ systemd-logind will now allow users to kill their own sessions
+ without further privileges or authorization.
+
+ * systemd-shutdownd has been removed. This service was
+ previously responsible for implementing scheduled shutdowns
+ as exposed in /usr/bin/shutdown's time parameter. This
+ functionality has now been moved into systemd-logind and is
+ accessible via a bus interface.
+
+ * "systemctl reboot" gained a new switch --firmware-setup that
+ can be used to reboot into the EFI firmware setup, if that
+ is available. systemd-logind now exposes an API on the bus
+ to trigger such reboots, in case graphical desktop UIs want
+ to cover this functionality.
+
+ * "systemctl enable", "systemctl disable" and "systemctl mask"
+ now support a new "--now" switch. If specified the units
+ that are enabled will also be started, and the ones
+ disabled/masked also stopped.
+
+ * The Gummiboot EFI boot loader tool has been merged into
+ systemd, and renamed to "systemd-boot". The bootctl tool has been
+ updated to support systemd-boot.
+
+ * An EFI kernel stub has been added that may be used to create
+ kernel EFI binaries that contain not only the actual kernel,
+ but also an initrd, boot splash, command line and OS release
+ information. This combined binary can then be signed as a
+ single image, so that the firmware can verify it all in one
+ step. systemd-boot has special support for EFI binaries created
+ like this and can extract OS release information from them
+ and show them in the boot menu. This functionality is useful
+ to implement cryptographically verified boot schemes.
+
+ * Optional support has been added to systemd-fsck to pass
+ fsck's progress report to an AF_UNIX socket in the file
+ system.
+
+ * udev will no longer create device symlinks for all block devices by
+ default. A deny list for excluding special block devices from this
+ logic has been turned into an allow list that requires picking block
+ devices explicitly that require device symlinks.
+
+ * A new (currently still internal) API sd-device.h has been
+ added to libsystemd. This modernized API is supposed to
+ replace libudev eventually. In fact, already much of libudev
+ is now just a wrapper around sd-device.h.
+
+ * A new hwdb database for storing metadata about pointing
+ stick devices has been added.
+
+ * systemd-tmpfiles gained support for setting file attributes
+ similar to the "chattr" tool with new 'h' and 'H' lines.
+
+ * systemd-journald will no longer unconditionally set the
+ btrfs NOCOW flag on new journal files. This is instead done
+ with tmpfiles snippet using the new 'h' line type. This
+ allows easy disabling of this logic, by masking the
+ journal-nocow.conf tmpfiles file.
+
+ * systemd-journald will now translate audit message types to
+ human readable identifiers when writing them to the
+ journal. This should improve readability of audit messages.
+
+ * The LUKS logic gained support for the offset= and skip=
+ options in /etc/crypttab, as previously implemented by
+ Debian.
+
+ * /usr/lib/os-release gained a new optional field VARIANT= for
+ distributions that support multiple variants (such as a
+ desktop edition, a server edition, …)
+
+ Contributions from: Aaro Koskinen, Adam Goode, Alban Crequy,
+ Alberto Fanjul Alonso, Alexander Sverdlin, Alex Puchades, Alin
+ Rauta, Alison Chaiken, Andrew Jones, Arend van Spriel,
+ Benedikt Morbach, Benjamin Franzke, Benjamin Tissoires, Blaž
+ Tomažič, Chris Morgan, Chris Morin, Colin Walters, Cristian
+ Rodríguez, Daniel Buch, Daniel Drake, Daniele Medri, Daniel
+ Mack, Daniel Mustieles, daurnimator, Davide Bettio, David
+ Herrmann, David Strauss, Didier Roche, Dimitri John Ledkov,
+ Eric Cook, Gavin Li, Goffredo Baroncelli, Hannes Reinecke,
+ Hans de Goede, Hans-Peter Deifel, Harald Hoyer, Iago López
+ Galeiras, Ivan Shapovalov, Jan Engelhardt, Jan Janssen, Jan
+ Pazdziora, Jan Synacek, Jasper St. Pierre, Jay Faulkner, John
+ Paul Adrian Glaubitz, Jonathon Gilbert, Karel Zak, Kay
+ Sievers, Koen Kooi, Lennart Poettering, Lubomir Rintel, Lucas
+ De Marchi, Lukas Nykryn, Lukas Rusak, Lukasz Skalski, Łukasz
+ Stelmach, Mantas Mikulėnas, Marc-Antoine Perennou, Marcel
+ Holtmann, Martin Pitt, Mathieu Chevrier, Matthew Garrett,
+ Michael Biebl, Michael Marineau, Michael Olbrich, Michal
+ Schmidt, Michal Sekletar, Mirco Tischler, Nir Soffer, Patrik
+ Flykt, Pavel Odvody, Peter Hutterer, Peter Lemenkov, Peter
+ Waller, Piotr Drąg, Raul Gutierrez S, Richard Maw, Ronny
+ Chevalier, Ross Burton, Sebastian Rasmussen, Sergey Ptashnick,
+ Seth Jennings, Shawn Landden, Simon Farnsworth, Stefan Junker,
+ Stephen Gallagher, Susant Sahani, Sylvain Plantefève, Thomas
+ Haller, Thomas Hindoe Paaboel Andersen, Tobias Hunger, Tom
+ Gundersen, Torstein Husebø, Umut Tezduyar Lindskog, Will
+ Woods, Zachary Cook, Zbigniew Jędrzejewski-Szmek
+
+ — Berlin, 2015-05-22
+
+CHANGES WITH 219:
+
+ * Introduce a new API "sd-hwdb.h" for querying the hardware
+ metadata database. With this minimal interface one can query
+ and enumerate the udev hwdb, decoupled from the old libudev
+ library. libudev's interface for this is now only a wrapper
+ around sd-hwdb. A new tool systemd-hwdb has been added to
+ interface with and update the database.
+
+ * When any of systemd's tools copies files (for example due to
+ tmpfiles' C lines) a btrfs reflink will attempted first,
+ before bytewise copying is done.
+
+ * systemd-nspawn gained a new --ephemeral switch. When
+ specified a btrfs snapshot is taken of the container's root
+ directory, and immediately removed when the container
+ terminates again. Thus, a container can be started whose
+ changes never alter the container's root directory, and are
+ lost on container termination. This switch can also be used
+ for starting a container off the root file system of the
+ host without affecting the host OS. This switch is only
+ available on btrfs file systems.
+
+ * systemd-nspawn gained a new --template= switch. It takes the
+ path to a container tree to use as template for the tree
+ specified via --directory=, should that directory be
+ missing. This allows instantiating containers dynamically,
+ on first run. This switch is only available on btrfs file
+ systems.
+
+ * When a .mount unit refers to a mount point on which multiple
+ mounts are stacked, and the .mount unit is stopped all of
+ the stacked mount points will now be unmounted until no
+ mount point remains.
+
+ * systemd now has an explicit notion of supported and
+ unsupported unit types. Jobs enqueued for unsupported unit
+ types will now fail with an "unsupported" error code. More
+ specifically .swap, .automount and .device units are not
+ supported in containers, .busname units are not supported on
+ non-kdbus systems. .swap and .automount are also not
+ supported if their respective kernel compile time options
+ are disabled.
+
+ * machinectl gained support for two new "copy-from" and
+ "copy-to" commands for copying files from a running
+ container to the host or vice versa.
+
+ * machinectl gained support for a new "bind" command to bind
+ mount host directories into local containers. This is
+ currently only supported for nspawn containers.
+
+ * networkd gained support for configuring bridge forwarding
+ database entries (fdb) from .network files.
+
+ * A new tiny daemon "systemd-importd" has been added that can
+ download container images in tar, raw, qcow2 or dkr formats,
+ and make them available locally in /var/lib/machines, so
+ that they can run as nspawn containers. The daemon can GPG
+ verify the downloads (not supported for dkr, since it has no
+ provisions for verifying downloads). It will transparently
+ decompress bz2, xz, gzip compressed downloads if necessary,
+ and restore sparse files on disk. The daemon uses privilege
+ separation to ensure the actual download logic runs with
+ fewer privileges than the daemon itself. machinectl has
+ gained new commands "pull-tar", "pull-raw" and "pull-dkr" to
+ make the functionality of importd available to the
+ user. With this in place the Fedora and Ubuntu "Cloud"
+ images can be downloaded and booted as containers unmodified
+ (the Fedora images lack the appropriate GPG signature files
+ currently, so they cannot be verified, but this will change
+ soon, hopefully). Note that downloading images is currently
+ only fully supported on btrfs.
+
+ * machinectl is now able to list container images found in
+ /var/lib/machines, along with some metadata about sizes of
+ disk and similar. If the directory is located on btrfs and
+ quota is enabled, this includes quota display. A new command
+ "image-status" has been added that shows additional
+ information about images.
+
+ * machinectl is now able to clone container images
+ efficiently, if the underlying file system (btrfs) supports
+ it, with the new "machinectl clone" command. It also
+ gained commands for renaming and removing images, as well as
+ marking them read-only or read-write (supported also on
+ legacy file systems).
+
+ * networkd gained support for collecting LLDP network
+ announcements, from hardware that supports this. This is
+ shown in networkctl output.
+
+ * systemd-run gained support for a new -t (--pty) switch for
+ invoking a binary on a pty whose input and output is
+ connected to the invoking terminal. This allows executing
+ processes as system services while interactively
+ communicating with them via the terminal. Most interestingly
+ this is supported across container boundaries. Invoking
+ "systemd-run -t /bin/bash" is an alternative to running a
+ full login session, the difference being that the former
+ will not register a session, nor go through the PAM session
+ setup.
+
+ * tmpfiles gained support for a new "v" line type for creating
+ btrfs subvolumes. If the underlying file system is a legacy
+ file system, this automatically degrades to creating a
+ normal directory. Among others /var/lib/machines is now
+ created like this at boot, should it be missing.
+
+ * The directory /var/lib/containers/ has been deprecated and
+ been replaced by /var/lib/machines. The term "machines" has
+ been used in the systemd context as generic term for both
+ VMs and containers, and hence appears more appropriate for
+ this, as the directory can also contain raw images bootable
+ via qemu/kvm.
+
+ * systemd-nspawn when invoked with -M but without --directory=
+ or --image= is now capable of searching for the container
+ root directory, subvolume or disk image automatically, in
+ /var/lib/machines. systemd-nspawn@.service has been updated
+ to make use of this, thus allowing it to be used for raw
+ disk images, too.
+
+ * A new machines.target unit has been introduced that is
+ supposed to group all containers/VMs invoked as services on
+ the system. systemd-nspawn@.service has been updated to
+ integrate with that.
+
+ * machinectl gained a new "start" command, for invoking a
+ container as a service. "machinectl start foo" is mostly
+ equivalent to "systemctl start systemd-nspawn@foo.service",
+ but handles escaping in a nicer way.
+
+ * systemd-nspawn will now mount most of the cgroupfs tree
+ read-only into each container, with the exception of the
+ container's own subtree in the name=systemd hierarchy.
+
+ * journald now sets the special FS_NOCOW file flag for its
+ journal files. This should improve performance on btrfs, by
+ avoiding heavy fragmentation when journald's write-pattern
+ is used on COW file systems. It degrades btrfs' data
+ integrity guarantees for the files to the same levels as for
+ ext3/ext4 however. This should be OK though as journald does
+ its own data integrity checks and all its objects are
+ checksummed on disk. Also, journald should handle btrfs disk
+ full events a lot more gracefully now, by processing SIGBUS
+ errors, and not relying on fallocate() anymore.
+
+ * When journald detects that journal files it is writing to
+ have been deleted it will immediately start new journal
+ files.
+
+ * systemd now provides a way to store file descriptors
+ per-service in PID 1. This is useful for daemons to ensure
+ that fds they require are not lost during a daemon
+ restart. The fds are passed to the daemon on the next
+ invocation in the same way socket activation fds are
+ passed. This is now used by journald to ensure that the
+ various sockets connected to all the system's stdout/stderr
+ are not lost when journald is restarted. File descriptors
+ may be stored in PID 1 via the sd_pid_notify_with_fds() API,
+ an extension to sd_notify(). Note that a limit is enforced
+ on the number of fds a service can store in PID 1, and it
+ defaults to 0, so that no fds may be stored, unless this is
+ explicitly turned on.
+
+ * The default TERM variable to use for units connected to a
+ terminal, when no other value is explicitly is set is now
+ vt220 rather than vt102. This should be fairly safe still,
+ but allows PgUp/PgDn work.
+
+ * The /etc/crypttab option header= as known from Debian is now
+ supported.
+
+ * "loginctl user-status" and "loginctl session-status" will
+ now show the last 10 lines of log messages of the
+ user/session following the status output. Similar,
+ "machinectl status" will show the last 10 log lines
+ associated with a virtual machine or container
+ service. (Note that this is usually not the log messages
+ done in the VM/container itself, but simply what the
+ container manager logs. For nspawn this includes all console
+ output however.)
+
+ * "loginctl session-status" without further argument will now
+ show the status of the session of the caller. Similar,
+ "lock-session", "unlock-session", "activate",
+ "enable-linger", "disable-linger" may now be called without
+ session/user parameter in which case they apply to the
+ caller's session/user.
+
+ * An X11 session scriptlet is now shipped that uploads
+ $DISPLAY and $XAUTHORITY into the environment of the systemd
+ --user daemon if a session begins. This should improve
+ compatibility with X11 enabled applications run as systemd
+ user services.
+
+ * Generators are now subject to masking via /etc and /run, the
+ same way as unit files.
+
+ * networkd .network files gained support for configuring
+ per-link IPv4/IPv6 packet forwarding as well as IPv4
+ masquerading. This is by default turned on for veth links to
+ containers, as registered by systemd-nspawn. This means that
+ nspawn containers run with --network-veth will now get
+ automatic routed access to the host's networks without any
+ further configuration or setup, as long as networkd runs on
+ the host.
+
+ * systemd-nspawn gained the --port= (-p) switch to expose TCP
+ or UDP posts of a container on the host. With this in place
+ it is possible to run containers with private veth links
+ (--network-veth), and have their functionality exposed on
+ the host as if their services were running directly on the
+ host.
+
+ * systemd-nspawn's --network-veth switch now gained a short
+ version "-n", since with the changes above it is now truly
+ useful out-of-the-box. The systemd-nspawn@.service has been
+ updated to make use of it too by default.
+
+ * systemd-nspawn will now maintain a per-image R/W lock, to
+ ensure that the same image is not started more than once
+ writable. (It's OK to run an image multiple times
+ simultaneously in read-only mode.)
+
+ * systemd-nspawn's --image= option is now capable of
+ dissecting and booting MBR and GPT disk images that contain
+ only a single active Linux partition. Previously it
+ supported only GPT disk images with proper GPT type
+ IDs. This allows running cloud images from major
+ distributions directly with systemd-nspawn, without
+ modification.
+
+ * In addition to collecting mouse dpi data in the udev
+ hardware database, there's now support for collecting angle
+ information for mouse scroll wheels. The database is
+ supposed to guarantee similar scrolling behavior on mice
+ that it knows about. There's also support for collecting
+ information about Touchpad types.
+
+ * udev's input_id built-in will now also collect touch screen
+ dimension data and attach it to probed devices.
+
+ * /etc/os-release gained support for a Distribution Privacy
+ Policy link field.
+
+ * networkd gained support for creating "ipvlan", "gretap",
+ "ip6gre", "ip6gretap" and "ip6tnl" network devices.
+
+ * systemd-tmpfiles gained support for "a" lines for setting
+ ACLs on files.
+
+ * systemd-nspawn will now mount /tmp in the container to
+ tmpfs, automatically.
+
+ * systemd now exposes the memory.usage_in_bytes cgroup
+ attribute and shows it for each service in the "systemctl
+ status" output, if available.
+
+ * When the user presses Ctrl-Alt-Del more than 7x within 2s an
+ immediate reboot is triggered. This useful if shutdown is
+ hung and is unable to complete, to expedite the
+ operation. Note that this kind of reboot will still unmount
+ all file systems, and hence should not result in fsck being
+ run on next reboot.
+
+ * A .device unit for an optical block device will now be
+ considered active only when a medium is in the drive. Also,
+ mount units are now bound to their backing devices thus
+ triggering automatic unmounting when devices become
+ unavailable. With this in place systemd will now
+ automatically unmount left-over mounts when a CD-ROM is
+ ejected or a USB stick is yanked from the system.
+
+ * networkd-wait-online now has support for waiting for
+ specific interfaces only (with globbing), and for giving up
+ after a configurable timeout.
+
+ * networkd now exits when idle. It will be automatically
+ restarted as soon as interfaces show up, are removed or
+ change state. networkd will stay around as long as there is
+ at least one DHCP state machine or similar around, that keep
+ it non-idle.
+
+ * networkd may now configure IPv6 link-local addressing in
+ addition to IPv4 link-local addressing.
+
+ * The IPv6 "token" for use in SLAAC may now be configured for
+ each .network interface in networkd.
+
+ * Routes configured with networkd may now be assigned a scope
+ in .network files.
+
+ * networkd's [Match] sections now support globbing and lists
+ of multiple space-separated matches per item.
+
+ Contributions from: Alban Crequy, Alin Rauta, Andrey Chaser,
+ Bastien Nocera, Bruno Bottazzini, Carlos Garnacho, Carlos
+ Morata Castillo, Chris Atkinson, Chris J. Arges, Christian
+ Kirbach, Christian Seiler, Christoph Brill, Colin Guthrie,
+ Colin Walters, Cristian Rodríguez, Daniele Medri, Daniel Mack,
+ Dave Reisner, David Herrmann, Djalal Harouni, Erik Auerswald,
+ Filipe Brandenburger, Frank Theile, Gabor Kelemen, Gabriel de
+ Perthuis, Harald Hoyer, Hui Wang, Ivan Shapovalov, Jan
+ Engelhardt, Jan Synacek, Jay Faulkner, Johannes Hölzl, Jonas
+ Ådahl, Jonathan Boulle, Josef Andersson, Kay Sievers, Ken
+ Werner, Lennart Poettering, Lucas De Marchi, Lukas Märdian,
+ Lukas Nykryn, Lukasz Skalski, Luke Shumaker, Mantas Mikulėnas,
+ Manuel Mendez, Marcel Holtmann, Marc Schmitzer, Marko
+ Myllynen, Martin Pitt, Maxim Mikityanskiy, Michael Biebl,
+ Michael Marineau, Michael Olbrich, Michal Schmidt, Mindaugas
+ Baranauskas, Moez Bouhlel, Naveen Kumar, Patrik Flykt, Paul
+ Martin, Peter Hutterer, Peter Mattern, Philippe De Swert,
+ Piotr Drąg, Rafael Ferreira, Rami Rosen, Robert Milasan, Ronny
+ Chevalier, Sangjung Woo, Sebastien Bacher, Sergey Ptashnick,
+ Shawn Landden, Stéphane Graber, Susant Sahani, Sylvain
+ Plantefève, Thomas Hindoe Paaboel Andersen, Tim JP, Tom
+ Gundersen, Topi Miettinen, Torstein Husebø, Umut Tezduyar
+ Lindskog, Veres Lajos, Vincent Batts, WaLyong Cho, Wieland
+ Hoffmann, Zbigniew Jędrzejewski-Szmek
+
+ — Berlin, 2015-02-16
+
+CHANGES WITH 218:
+
+ * When querying unit file enablement status (for example via
+ "systemctl is-enabled"), a new state "indirect" is now known
+ which indicates that a unit might not be enabled itself, but
+ another unit listed in its Also= setting might be.
+
+ * Similar to the various existing ConditionXYZ= settings for
+ units, there are now matching AssertXYZ= settings. While
+ failing conditions cause a unit to be skipped, but its job
+ to succeed, failing assertions declared like this will cause
+ a unit start operation and its job to fail.
+
+ * hostnamed now knows a new chassis type "embedded".
+
+ * systemctl gained a new "edit" command. When used on a unit
+ file, this allows extending unit files with .d/ drop-in
+ configuration snippets or editing the full file (after
+ copying it from /usr/lib to /etc). This will invoke the
+ user's editor (as configured with $EDITOR), and reload the
+ modified configuration after editing.
+
+ * "systemctl status" now shows the suggested enablement state
+ for a unit, as declared in the (usually vendor-supplied)
+ system preset files.
+
+ * nss-myhostname will now resolve the single-label hostname
+ "gateway" to the locally configured default IP routing
+ gateways, ordered by their metrics. This assigns a stable
+ name to the used gateways, regardless which ones are
+ currently configured. Note that the name will only be
+ resolved after all other name sources (if nss-myhostname is
+ configured properly) and should hence not negatively impact
+ systems that use the single-label hostname "gateway" in
+ other contexts.
+
+ * systemd-inhibit now allows filtering by mode when listing
+ inhibitors.
+
+ * Scope and service units gained a new "Delegate" boolean
+ property, which, when set, allows processes running inside the
+ unit to further partition resources. This is primarily
+ useful for systemd user instances as well as container
+ managers.
+
+ * journald will now pick up audit messages directly from
+ the kernel, and log them like any other log message. The
+ audit fields are split up and fully indexed. This means that
+ journalctl in many ways is now a (nicer!) alternative to
+ ausearch, the traditional audit client. Note that this
+ implements only a minimal audit client. If you want the
+ special audit modes like reboot-on-log-overflow, please use
+ the traditional auditd instead, which can be used in
+ parallel to journald.
+
+ * The ConditionSecurity= unit file option now understands the
+ special string "audit" to check whether auditing is
+ available.
+
+ * journalctl gained two new commands --vacuum-size= and
+ --vacuum-time= to delete old journal files until the
+ remaining ones take up no more than the specified size on disk,
+ or are not older than the specified time.
+
+ * A new, native PPPoE library has been added to sd-network,
+ systemd's library of light-weight networking protocols. This
+ library will be used in a future version of networkd to
+ enable PPPoE communication without an external pppd daemon.
+
+ * The busctl tool now understands a new "capture" verb that
+ works similar to "monitor", but writes a packet capture
+ trace to STDOUT that can be redirected to a file which is
+ compatible with libcap's capture file format. This can then
+ be loaded in Wireshark and similar tools to inspect bus
+ communication.
+
+ * The busctl tool now understands a new "tree" verb that shows
+ the object trees of a specific service on the bus, or of all
+ services.
+
+ * The busctl tool now understands a new "introspect" verb that
+ shows all interfaces and members of objects on the bus,
+ including their signature and values. This is particularly
+ useful to get more information about bus objects shown by
+ the new "busctl tree" command.
+
+ * The busctl tool now understands new verbs "call",
+ "set-property" and "get-property" for invoking bus method
+ calls, setting and getting bus object properties in a
+ friendly way.
+
+ * busctl gained a new --augment-creds= argument that controls
+ whether the tool shall augment credential information it
+ gets from the bus with data from /proc, in a possibly
+ race-ful way.
+
+ * nspawn's --link-journal= switch gained two new values
+ "try-guest" and "try-host" that work like "guest" and
+ "host", but do not fail if the host has no persistent
+ journaling enabled. -j is now equivalent to
+ --link-journal=try-guest.
+
+ * macvlan network devices created by nspawn will now have
+ stable MAC addresses.
+
+ * A new SmackProcessLabel= unit setting has been added, which
+ controls the SMACK security label processes forked off by
+ the respective unit shall use.
+
+ * If compiled with --enable-xkbcommon, systemd-localed will
+ verify x11 keymap settings by compiling the given keymap. It
+ will spew out warnings if the compilation fails. This
+ requires libxkbcommon to be installed.
+
+ * When a coredump is collected, a larger number of metadata
+ fields is now collected and included in the journal records
+ created for it. More specifically, control group membership,
+ environment variables, memory maps, working directory,
+ chroot directory, /proc/$PID/status, and a list of open file
+ descriptors is now stored in the log entry.
+
+ * The udev hwdb now contains DPI information for mice. For
+ details see:
+
+ http://who-t.blogspot.de/2014/12/building-a-dpi-database-for-mice.html
+
+ * All systemd programs that read standalone configuration
+ files in /etc now also support a corresponding series of
+ .conf.d configuration directories in /etc/, /run/,
+ /usr/local/lib/, /usr/lib/, and (if configured with
+ --enable-split-usr) /lib/. In particular, the following
+ configuration files now have corresponding configuration
+ directories: system.conf user.conf, logind.conf,
+ journald.conf, sleep.conf, bootchart.conf, coredump.conf,
+ resolved.conf, timesyncd.conf, journal-remote.conf, and
+ journal-upload.conf. Note that distributions should use the
+ configuration directories in /usr/lib/; the directories in
+ /etc/ are reserved for the system administrator.
+
+ * systemd-rfkill will no longer take the rfkill device name
+ into account when storing rfkill state on disk, as the name
+ might be dynamically assigned and not stable. Instead, the
+ ID_PATH udev variable combined with the rfkill type (wlan,
+ bluetooth, …) is used.
+
+ * A new service systemd-machine-id-commit.service has been
+ added. When used on systems where /etc is read-only during
+ boot, and /etc/machine-id is not initialized (but an empty
+ file), this service will copy the temporary machine ID
+ created as replacement into /etc after the system is fully
+ booted up. This is useful for systems that are freshly
+ installed with a non-initialized machine ID, but should get
+ a fixed machine ID for subsequent boots.
+
+ * networkd's .netdev files now provide a large set of
+ configuration parameters for VXLAN devices. Similarly, the
+ bridge port cost parameter is now configurable in .network
+ files. There's also new support for configuring IP source
+ routing. networkd .link files gained support for a new
+ OriginalName= match that is useful to match against the
+ original interface name the kernel assigned. .network files
+ may include MTU= and MACAddress= fields for altering the MTU
+ and MAC address while being connected to a specific network
+ interface.
+
+ * The LUKS logic gained supported for configuring
+ UUID-specific key files. There's also new support for naming
+ LUKS device from the kernel command line, using the new
+ luks.name= argument.
+
+ * Timer units may now be transiently created via the bus API
+ (this was previously already available for scope and service
+ units). In addition it is now possible to create multiple
+ transient units at the same time with a single bus call. The
+ "systemd-run" tool has been updated to make use of this for
+ running commands on a specified time, in at(1)-style.
+
+ * tmpfiles gained support for "t" lines, for assigning
+ extended attributes to files. Among other uses this may be
+ used to assign SMACK labels to files.
+
+ Contributions from: Alin Rauta, Alison Chaiken, Andrej
+ Manduch, Bastien Nocera, Chris Atkinson, Chris Leech, Chris
+ Mayo, Colin Guthrie, Colin Walters, Cristian Rodríguez,
+ Daniele Medri, Daniel Mack, Dan Williams, Dan Winship, Dave
+ Reisner, David Herrmann, Didier Roche, Felipe Sateler, Gavin
+ Li, Hans de Goede, Harald Hoyer, Iago López Galeiras, Ivan
+ Shapovalov, Jakub Filak, Jan Janssen, Jan Synacek, Joe
+ Lawrence, Josh Triplett, Kay Sievers, Lennart Poettering,
+ Lukas Nykryn, Łukasz Stelmach, Maciej Wereski, Mantas
+ Mikulėnas, Marcel Holtmann, Martin Pitt, Maurizio Lombardi,
+ Michael Biebl, Michael Chapman, Michael Marineau, Michal
+ Schmidt, Michal Sekletar, Olivier Brunel, Patrik Flykt, Peter
+ Hutterer, Przemyslaw Kedzierski, Rami Rosen, Ray Strode,
+ Richard Schütz, Richard W.M. Jones, Ronny Chevalier, Ross
+ Lagerwall, Sean Young, Stanisław Pitucha, Susant Sahani,
+ Thomas Haller, Thomas Hindoe Paaboel Andersen, Tom Gundersen,
+ Torstein Husebø, Umut Tezduyar Lindskog, Vicente Olivert
+ Riera, WaLyong Cho, Wesley Dawson, Zbigniew Jędrzejewski-Szmek
+
+ — Berlin, 2014-12-10
+
+CHANGES WITH 217:
+
+ * journalctl gained the new options -t/--identifier= to match
+ on the syslog identifier (aka "tag"), as well as --utc to
+ show log timestamps in the UTC timezone. journalctl now also
+ accepts -n/--lines=all to disable line capping in a pager.
+
+ * journalctl gained a new switch, --flush, that synchronously
+ flushes logs from /run/log/journal to /var/log/journal if
+ persistent storage is enabled. systemd-journal-flush.service
+ now waits until the operation is complete.
+
+ * Services can notify the manager before they start a reload
+ (by sending RELOADING=1) or shutdown (by sending
+ STOPPING=1). This allows the manager to track and show the
+ internal state of daemons and closes a race condition when
+ the process is still running but has closed its D-Bus
+ connection.
+
+ * Services with Type=oneshot do not have to have any ExecStart
+ commands anymore.
+
+ * User units are now loaded also from
+ $XDG_RUNTIME_DIR/systemd/user/. This is similar to the
+ /run/systemd/user directory that was already previously
+ supported, but is under the control of the user.
+
+ * Job timeouts (i.e. timeouts on the time a job that is
+ queued stays in the run queue) can now optionally result in
+ immediate reboot or power-off actions (JobTimeoutAction= and
+ JobTimeoutRebootArgument=). This is useful on ".target"
+ units, to limit the maximum time a target remains
+ undispatched in the run queue, and to trigger an emergency
+ operation in such a case. This is now used by default to
+ turn off the system if boot-up (as defined by everything in
+ basic.target) hangs and does not complete for at least
+ 15min. Also, if power-off or reboot hang for at least 30min
+ an immediate power-off/reboot operation is triggered. This
+ functionality is particularly useful to increase reliability
+ on embedded devices, but also on laptops which might
+ accidentally get powered on when carried in a backpack and
+ whose boot stays stuck in a hard disk encryption passphrase
+ question.
+
+ * systemd-logind can be configured to also handle lid switch
+ events even when the machine is docked or multiple displays
+ are attached (HandleLidSwitchDocked= option).
+
+ * A helper binary and a service have been added which can be
+ used to resume from hibernation in the initramfs. A
+ generator will parse the resume= option on the kernel
+ command line to trigger resume.
+
+ * A user console daemon systemd-consoled has been
+ added. Currently, it is a preview, and will so far open a
+ single terminal on each session of the user marked as
+ Desktop=systemd-console.
+
+ * Route metrics can be specified for DHCP routes added by
+ systemd-networkd.
+
+ * The SELinux context of socket-activated services can be set
+ from the information provided by the networking stack
+ (SELinuxContextFromNet= option).
+
+ * Userspace firmware loading support has been removed and
+ the minimum supported kernel version is thus bumped to 3.7.
+
+ * Timeout for udev workers has been increased from 1 to 3
+ minutes, but a warning will be printed after 1 minute to
+ help diagnose kernel modules that take a long time to load.
+
+ * Udev rules can now remove tags on devices with TAG-="foobar".
+
+ * systemd's readahead implementation has been removed. In many
+ circumstances it didn't give expected benefits even for
+ rotational disk drives and was becoming less relevant in the
+ age of SSDs. As none of the developers has been using
+ rotating media anymore, and nobody stepped up to actively
+ maintain this component of systemd it has now been removed.
+
+ * Swap units can use Options= to specify discard options.
+ Discard options specified for swaps in /etc/fstab are now
+ respected.
+
+ * Docker containers are now detected as a separate type of
+ virtualization.
+
+ * The Password Agent protocol gained support for queries where
+ the user input is shown, useful e.g. for user names.
+ systemd-ask-password gained a new --echo option to turn that
+ on.
+
+ * The default sysctl.d/ snippets will now set:
+
+ net.core.default_qdisc = fq_codel
+
+ This selects Fair Queuing Controlled Delay as the default
+ queuing discipline for network interfaces. fq_codel helps
+ fight the network bufferbloat problem. It is believed to be
+ a good default with no tuning required for most workloads.
+ Downstream distributions may override this choice. On 10Gbit
+ servers that do not do forwarding, "fq" may perform better.
+ Systems without a good clocksource should use "pfifo_fast".
+
+ * If kdbus is enabled during build a new option BusPolicy= is
+ available for service units, that allows locking all service
+ processes into a stricter bus policy, in order to limit
+ access to various bus services, or even hide most of them
+ from the service's view entirely.
+
+ * networkctl will now show the .network and .link file
+ networkd has applied to a specific interface.
+
+ * sd-login gained a new API call sd_session_get_desktop() to
+ query which desktop environment has been selected for a
+ session.
+
+ * UNIX utmp support is now compile-time optional to support
+ legacy-free systems.
+
+ * systemctl gained two new commands "add-wants" and
+ "add-requires" for pulling in units from specific targets
+ easily.
+
+ * If the word "rescue" is specified on the kernel command line
+ the system will now boot into rescue mode (aka
+ rescue.target), which was previously available only by
+ specifying "1" or "systemd.unit=rescue.target" on the kernel
+ command line. This new kernel command line option nicely
+ mirrors the already existing "emergency" kernel command line
+ option.
+
+ * New kernel command line options mount.usr=, mount.usrflags=,
+ mount.usrfstype= have been added that match root=, rootflags=,
+ rootfstype= but allow mounting a specific file system to
+ /usr.
+
+ * The $NOTIFY_SOCKET is now also passed to control processes of
+ services, not only the main process.
+
+ * This version reenables support for fsck's -l switch. This
+ means at least version v2.25 of util-linux is required for
+ operation, otherwise dead-locks on device nodes may
+ occur. Again: you need to update util-linux to at least
+ v2.25 when updating systemd to v217.
+
+ * The "multi-seat-x" tool has been removed from systemd, as
+ its functionality has been integrated into X servers 1.16,
+ and the tool is hence redundant. It is recommended to update
+ display managers invoking this tool to simply invoke X
+ directly from now on, again.
+
+ * Support for the new ALLOW_INTERACTIVE_AUTHORIZATION D-Bus
+ message flag has been added for all of systemd's polkit
+ authenticated method calls has been added. In particular this
+ now allows optional interactive authorization via polkit for
+ many of PID1's privileged operations such as unit file
+ enabling and disabling.
+
+ * "udevadm hwdb --update" learnt a new switch "--usr" for
+ placing the rebuilt hardware database in /usr instead of
+ /etc. When used only hardware database entries stored in
+ /usr will be used, and any user database entries in /etc are
+ ignored. This functionality is useful for vendors to ship a
+ pre-built database on systems where local configuration is
+ unnecessary or unlikely.
+
+ * Calendar time specifications in .timer units now also
+ understand the strings "semi-annually", "quarterly" and
+ "minutely" as shortcuts (in addition to the preexisting
+ "annually", "hourly", …).
+
+ * systemd-tmpfiles will now correctly create files in /dev
+ at boot which are marked for creation only at boot. It is
+ recommended to always create static device nodes with 'c!'
+ and 'b!', so that they are created only at boot and not
+ overwritten at runtime.
+
+ * When the watchdog logic is used for a service (WatchdogSec=)
+ and the watchdog timeout is hit the service will now be
+ terminated with SIGABRT (instead of just SIGTERM), in order
+ to make sure a proper coredump and backtrace is
+ generated. This ensures that hanging services will result in
+ similar coredump/backtrace behaviour as services that hit a
+ segmentation fault.
+
+ Contributions from: Andreas Henriksson, Andrei Borzenkov,
+ Angus Gibson, Ansgar Burchardt, Ben Wolsieffer, Brandon L.
+ Black, Christian Hesse, Cristian Rodríguez, Daniel Buch,
+ Daniele Medri, Daniel Mack, Dan Williams, Dave Reisner, David
+ Herrmann, David Sommerseth, David Strauss, Emil Renner
+ Berthing, Eric Cook, Evangelos Foutras, Filipe Brandenburger,
+ Gustavo Sverzut Barbieri, Hans de Goede, Harald Hoyer, Hristo
+ Venev, Hugo Grostabussiat, Ivan Shapovalov, Jan Janssen, Jan
+ Synacek, Jonathan Liu, Juho Son, Karel Zak, Kay Sievers, Klaus
+ Purer, Koen Kooi, Lennart Poettering, Lukas Nykryn, Lukasz
+ Skalski, Łukasz Stelmach, Mantas Mikulėnas, Marcel Holtmann,
+ Marius Tessmann, Marko Myllynen, Martin Pitt, Michael Biebl,
+ Michael Marineau, Michael Olbrich, Michael Scherer, Michal
+ Schmidt, Michal Sekletar, Miroslav Lichvar, Patrik Flykt,
+ Philippe De Swert, Piotr Drąg, Rahul Sundaram, Richard
+ Weinberger, Robert Milasan, Ronny Chevalier, Ruben Kerkhof,
+ Santiago Vila, Sergey Ptashnick, Simon McVittie, Sjoerd
+ Simons, Stefan Brüns, Steven Allen, Steven Noonan, Susant
+ Sahani, Sylvain Plantefève, Thomas Hindoe Paaboel Andersen,
+ Timofey Titovets, Tobias Hunger, Tom Gundersen, Torstein
+ Husebø, Umut Tezduyar Lindskog, WaLyong Cho, Zbigniew
+ Jędrzejewski-Szmek
+
+ — Berlin, 2014-10-28
+
+CHANGES WITH 216:
+
+ * timedated no longer reads NTP implementation unit names from
+ /usr/lib/systemd/ntp-units.d/*.list. Alternative NTP
+ implementations should add a
+
+ Conflicts=systemd-timesyncd.service
+
+ to their unit files to take over and replace systemd's NTP
+ default functionality.
+
+ * systemd-sysusers gained a new line type "r" for configuring
+ which UID/GID ranges to allocate system users/groups
+ from. Lines of type "u" may now add an additional column
+ that specifies the home directory for the system user to be
+ created. Also, systemd-sysusers may now optionally read user
+ information from STDIN instead of a file. This is useful for
+ invoking it from RPM preinst scriptlets that need to create
+ users before the first RPM file is installed since these
+ files might need to be owned by them. A new
+ %sysusers_create_inline RPM macro has been introduced to do
+ just that. systemd-sysusers now updates the shadow files as
+ well as the user/group databases, which should enhance
+ compatibility with certain tools like grpck.
+
+ * A number of bus APIs of PID 1 now optionally consult polkit to
+ permit access for otherwise unprivileged clients under certain
+ conditions. Note that this currently doesn't support
+ interactive authentication yet, but this is expected to be
+ added eventually, too.
+
+ * /etc/machine-info now has new fields for configuring the
+ deployment environment of the machine, as well as the
+ location of the machine. hostnamectl has been updated with
+ new command to update these fields.
+
+ * systemd-timesyncd has been updated to automatically acquire
+ NTP server information from systemd-networkd, which might
+ have been discovered via DHCP.
+
+ * systemd-resolved now includes a caching DNS stub resolver
+ and a complete LLMNR name resolution implementation. A new
+ NSS module "nss-resolve" has been added which can be used
+ instead of glibc's own "nss-dns" to resolve hostnames via
+ systemd-resolved. Hostnames, addresses and arbitrary RRs may
+ be resolved via systemd-resolved D-Bus APIs. In contrast to
+ the glibc internal resolver systemd-resolved is aware of
+ multi-homed system, and keeps DNS server and caches separate
+ and per-interface. Queries are sent simultaneously on all
+ interfaces that have DNS servers configured, in order to
+ properly handle VPNs and local LANs which might resolve
+ separate sets of domain names. systemd-resolved may acquire
+ DNS server information from systemd-networkd automatically,
+ which in turn might have discovered them via DHCP. A tool
+ "systemd-resolve-host" has been added that may be used to
+ query the DNS logic in resolved. systemd-resolved implements
+ IDNA and automatically uses IDNA or UTF-8 encoding depending
+ on whether classic DNS or LLMNR is used as transport. In the
+ next releases we intend to add a DNSSEC and mDNS/DNS-SD
+ implementation to systemd-resolved.
+
+ * A new NSS module nss-mymachines has been added, that
+ automatically resolves the names of all local registered
+ containers to their respective IP addresses.
+
+ * A new client tool "networkctl" for systemd-networkd has been
+ added. It currently is entirely passive and will query
+ networking configuration from udev, rtnetlink and networkd,
+ and present it to the user in a very friendly
+ way. Eventually, we hope to extend it to become a full
+ control utility for networkd.
+
+ * .socket units gained a new DeferAcceptSec= setting that
+ controls the kernels' TCP_DEFER_ACCEPT sockopt for
+ TCP. Similarly, support for controlling TCP keep-alive
+ settings has been added (KeepAliveTimeSec=,
+ KeepAliveIntervalSec=, KeepAliveProbes=). Also, support for
+ turning off Nagle's algorithm on TCP has been added
+ (NoDelay=).
+
+ * logind learned a new session type "web", for use in projects
+ like Cockpit which register web clients as PAM sessions.
+
+ * timer units with at least one OnCalendar= setting will now
+ be started only after time-sync.target has been
+ reached. This way they will not elapse before the system
+ clock has been corrected by a local NTP client or
+ similar. This is particular useful on RTC-less embedded
+ machines, that come up with an invalid system clock.
+
+ * systemd-nspawn's --network-veth= switch should now result in
+ stable MAC addresses for both the outer and the inner side
+ of the link.
+
+ * systemd-nspawn gained a new --volatile= switch for running
+ container instances with /etc or /var unpopulated.
+
+ * The kdbus client code has been updated to use the new Linux
+ 3.17 memfd subsystem instead of the old kdbus-specific one.
+
+ * systemd-networkd's DHCP client and server now support
+ FORCERENEW. There are also new configuration options to
+ configure the vendor client identifier and broadcast mode
+ for DHCP.
+
+ * systemd will no longer inform the kernel about the current
+ timezone, as this is necessarily incorrect and racy as the
+ kernel has no understanding of DST and similar
+ concepts. This hence means FAT timestamps will be always
+ considered UTC, similar to what Android is already
+ doing. Also, when the RTC is configured to the local time
+ (rather than UTC) systemd will never synchronize back to it,
+ as this might confuse Windows at a later boot.
+
+ * systemd-analyze gained a new command "verify" for offline
+ validation of unit files.
+
+ * systemd-networkd gained support for a couple of additional
+ settings for bonding networking setups. Also, the metric for
+ statically configured routes may now be configured. For
+ network interfaces where this is appropriate the peer IP
+ address may now be configured.
+
+ * systemd-networkd's DHCP client will no longer request
+ broadcasting by default, as this tripped up some networks.
+ For hardware where broadcast is required the feature should
+ be switched back on using RequestBroadcast=yes.
+
+ * systemd-networkd will now set up IPv4LL addresses (when
+ enabled) even if DHCP is configured successfully.
+
+ * udev will now default to respect network device names given
+ by the kernel when the kernel indicates that these are
+ predictable. This behavior can be tweaked by changing
+ NamePolicy= in the relevant .link file.
+
+ * A new library systemd-terminal has been added that
+ implements full TTY stream parsing and rendering. This
+ library is supposed to be used later on for implementing a
+ full userspace VT subsystem, replacing the current kernel
+ implementation.
+
+ * A new tool systemd-journal-upload has been added to push
+ journal data to a remote system running
+ systemd-journal-remote.
+
+ * journald will no longer forward all local data to another
+ running syslog daemon. This change has been made because
+ rsyslog (which appears to be the most commonly used syslog
+ implementation these days) no longer makes use of this, and
+ instead pulls the data out of the journal on its own. Since
+ forwarding the messages to a non-existent syslog server is
+ more expensive than we assumed we have now turned this
+ off. If you run a syslog server that is not a recent rsyslog
+ version, you have to turn this option on again
+ (ForwardToSyslog= in journald.conf).
+
+ * journald now optionally supports the LZ4 compressor for
+ larger journal fields. This compressor should perform much
+ better than XZ which was the previous default.
+
+ * machinectl now shows the IP addresses of local containers,
+ if it knows them, plus the interface name of the container.
+
+ * A new tool "systemd-escape" has been added that makes it
+ easy to escape strings to build unit names and similar.
+
+ * sd_notify() messages may now include a new ERRNO= field
+ which is parsed and collected by systemd and shown among the
+ "systemctl status" output for a service.
+
+ * A new component "systemd-firstboot" has been added that
+ queries the most basic systemd information (timezone,
+ hostname, root password) interactively on first
+ boot. Alternatively it may also be used to provision these
+ things offline on OS images installed into directories.
+
+ * The default sysctl.d/ snippets will now set
+
+ net.ipv4.conf.default.promote_secondaries=1
+
+ This has the benefit of no flushing secondary IP addresses
+ when primary addresses are removed.
+
+ Contributions from: Ansgar Burchardt, Bastien Nocera, Colin
+ Walters, Dan Dedrick, Daniel Buch, Daniel Korostil, Daniel
+ Mack, Dan Williams, Dave Reisner, David Herrmann, Denis
+ Kenzior, Eelco Dolstra, Eric Cook, Hannes Reinecke, Harald
+ Hoyer, Hong Shick Pak, Hui Wang, Jean-André Santoni, Jóhann
+ B. Guðmundsson, Jon Severinsson, Karel Zak, Kay Sievers, Kevin
+ Wells, Lennart Poettering, Lukas Nykryn, Mantas Mikulėnas,
+ Marc-Antoine Perennou, Martin Pitt, Michael Biebl, Michael
+ Marineau, Michael Olbrich, Michal Schmidt, Michal Sekletar,
+ Miguel Angel Ajo, Mike Gilbert, Olivier Brunel, Robert
+ Schiele, Ronny Chevalier, Simon McVittie, Sjoerd Simons, Stef
+ Walter, Steven Noonan, Susant Sahani, Tanu Kaskinen, Thomas
+ Blume, Thomas Hindoe Paaboel Andersen, Timofey Titovets,
+ Tobias Geerinckx-Rice, Tomasz Torcz, Tom Gundersen, Umut
+ Tezduyar Lindskog, Zbigniew Jędrzejewski-Szmek
+
+ — Berlin, 2014-08-19
+
+CHANGES WITH 215:
+
+ * A new tool systemd-sysusers has been added. This tool
+ creates system users and groups in /etc/passwd and
+ /etc/group, based on static declarative system user/group
+ definitions in /usr/lib/sysusers.d/. This is useful to
+ enable factory resets and volatile systems that boot up with
+ an empty /etc directory, and thus need system users and
+ groups created during early boot. systemd now also ships
+ with two default sysusers.d/ files for the most basic
+ users and groups systemd and the core operating system
+ require.
+
+ * A new tmpfiles snippet has been added that rebuilds the
+ essential files in /etc on boot, should they be missing.
+
+ * A directive for ensuring automatic clean-up of
+ /var/cache/man/ has been removed from the default
+ configuration. This line should now be shipped by the man
+ implementation. The necessary change has been made to the
+ man-db implementation. Note that you need to update your man
+ implementation to one that ships this line, otherwise no
+ automatic clean-up of /var/cache/man will take place.
+
+ * A new condition ConditionNeedsUpdate= has been added that
+ may conditionalize services to only run when /etc or /var
+ are "older" than the vendor operating system resources in
+ /usr. This is useful for reconstructing or updating /etc
+ after an offline update of /usr or a factory reset, on the
+ next reboot. Services that want to run once after such an
+ update or reset should use this condition and order
+ themselves before the new systemd-update-done.service, which
+ will mark the two directories as fully updated. A number of
+ service files have been added making use of this, to rebuild
+ the udev hardware database, the journald message catalog and
+ dynamic loader cache (ldconfig). The systemd-sysusers tool
+ described above also makes use of this now. With this in
+ place it is now possible to start up a minimal operating
+ system with /etc empty cleanly. For more information on the
+ concepts involved see this recent blog story:
+
+ https://0pointer.de/blog/projects/stateless.html
+
+ * A new system group "input" has been introduced, and all
+ input device nodes get this group assigned. This is useful
+ for system-level software to get access to input devices. It
+ complements what is already done for "audio" and "video".
+
+ * systemd-networkd learnt minimal DHCPv4 server support in
+ addition to the existing DHCPv4 client support. It also
+ learnt DHCPv6 client and IPv6 Router Solicitation client
+ support. The DHCPv4 client gained support for static routes
+ passed in from the server. Note that the [DHCPv4] section
+ known in older systemd-networkd versions has been renamed to
+ [DHCP] and is now also used by the DHCPv6 client. Existing
+ .network files using settings of this section should be
+ updated, though compatibility is maintained. Optionally, the
+ client hostname may now be sent to the DHCP server.
+
+ * networkd gained support for vxlan virtual networks as well
+ as tun/tap and dummy devices.
+
+ * networkd gained support for automatic allocation of address
+ ranges for interfaces from a system-wide pool of
+ addresses. This is useful for dynamically managing a large
+ number of interfaces with a single network configuration
+ file. In particular this is useful to easily assign
+ appropriate IP addresses to the veth links of a large number
+ of nspawn instances.
+
+ * RPM macros for processing sysusers, sysctl and binfmt
+ drop-in snippets at package installation time have been
+ added.
+
+ * The /etc/os-release file should now be placed in
+ /usr/lib/os-release. The old location is automatically
+ created as symlink. /usr/lib is the more appropriate
+ location of this file, since it shall actually describe the
+ vendor operating system shipped in /usr, and not the
+ configuration stored in /etc.
+
+ * .mount units gained a new boolean SloppyOptions= setting
+ that maps to mount(8)'s -s option which enables permissive
+ parsing of unknown mount options.
+
+ * tmpfiles learnt a new "L+" directive which creates a symlink
+ but (unlike "L") deletes a pre-existing file first, should
+ it already exist and not already be the correct
+ symlink. Similarly, "b+", "c+" and "p+" directives have been
+ added as well, which create block and character devices, as
+ well as fifos in the filesystem, possibly removing any
+ pre-existing files of different types.
+
+ * For tmpfiles' "L", "L+", "C" and "C+" directives the final
+ 'argument' field (which so far specified the source to
+ symlink/copy the files from) is now optional. If omitted the
+ same file os copied from /usr/share/factory/ suffixed by the
+ full destination path. This is useful for populating /etc
+ with essential files, by copying them from vendor defaults
+ shipped in /usr/share/factory/etc.
+
+ * A new command "systemctl preset-all" has been added that
+ applies the service preset settings to all installed unit
+ files. A new switch --preset-mode= has been added that
+ controls whether only enable or only disable operations
+ shall be executed.
+
+ * A new command "systemctl is-system-running" has been added
+ that allows checking the overall state of the system, for
+ example whether it is fully up and running.
+
+ * When the system boots up with an empty /etc, the equivalent
+ to "systemctl preset-all" is executed during early boot, to
+ make sure all default services are enabled after a factory
+ reset.
+
+ * systemd now contains a minimal preset file that enables the
+ most basic services systemd ships by default.
+
+ * Unit files' [Install] section gained a new DefaultInstance=
+ field for defining the default instance to create if a
+ template unit is enabled with no instance specified.
+
+ * A new passive target cryptsetup-pre.target has been added
+ that may be used by services that need to make they run and
+ finish before the first LUKS cryptographic device is set up.
+
+ * The /dev/loop-control and /dev/btrfs-control device nodes
+ are now owned by the "disk" group by default, opening up
+ access to this group.
+
+ * systemd-coredump will now automatically generate a
+ stack trace of all core dumps taking place on the system,
+ based on elfutils' libdw library. This stack trace is logged
+ to the journal.
+
+ * systemd-coredump may now optionally store coredumps directly
+ on disk (in /var/lib/systemd/coredump, possibly compressed),
+ instead of storing them unconditionally in the journal. This
+ mode is the new default. A new configuration file
+ /etc/systemd/coredump.conf has been added to configure this
+ and other parameters of systemd-coredump.
+
+ * coredumpctl gained a new "info" verb to show details about a
+ specific coredump. A new switch "-1" has also been added
+ that makes sure to only show information about the most
+ recent entry instead of all entries. Also, as the tool is
+ generally useful now the "systemd-" prefix of the binary
+ name has been removed. Distributions that want to maintain
+ compatibility with the old name should add a symlink from
+ the old name to the new name.
+
+ * journald's SplitMode= now defaults to "uid". This makes sure
+ that unprivileged users can access their own coredumps with
+ coredumpctl without restrictions.
+
+ * New kernel command line options "systemd.wants=" (for
+ pulling an additional unit during boot), "systemd.mask="
+ (for masking a specific unit for the boot), and
+ "systemd.debug-shell" (for enabling the debug shell on tty9)
+ have been added. This is implemented in the new generator
+ "systemd-debug-generator".
+
+ * systemd-nspawn will now by default filter a couple of
+ syscalls for containers, among them those required for
+ kernel module loading, direct x86 IO port access, swap
+ management, and kexec. Most importantly though
+ open_by_handle_at() is now prohibited for containers,
+ closing a hole similar to a recently discussed vulnerability
+ in docker regarding access to files on file hierarchies the
+ container should normally not have access to. Note that, for
+ nspawn, we generally make no security claims anyway (and
+ this is explicitly documented in the man page), so this is
+ just a fix for one of the most obvious problems.
+
+ * A new man page file-hierarchy(7) has been added that
+ contains a minimized, modernized version of the file system
+ layout systemd expects, similar in style to the FHS
+ specification or hier(5). A new tool systemd-path(1) has
+ been added to query many of these paths for the local
+ machine and user.
+
+ * Automatic time-based clean-up of $XDG_RUNTIME_DIR is no
+ longer done. Since the directory now has a per-user size
+ limit, and is cleaned on logout this appears unnecessary,
+ in particular since this now brings the lifecycle of this
+ directory closer in line with how IPC objects are handled.
+
+ * systemd.pc now exports a number of additional directories,
+ including $libdir (which is useful to identify the library
+ path for the primary architecture of the system), and a
+ couple of drop-in directories.
+
+ * udev's predictable network interface names now use the dev_port
+ sysfs attribute, introduced in linux 3.15 instead of dev_id to
+ distinguish between ports of the same PCI function. dev_id should
+ only be used for ports using the same HW address, hence the need
+ for dev_port.
+
+ * machined has been updated to export the OS version of a
+ container (read from /etc/os-release and
+ /usr/lib/os-release) on the bus. This is now shown in
+ "machinectl status" for a machine.
+
+ * A new service setting RestartForceExitStatus= has been
+ added. If configured to a set of exit signals or process
+ return values, the service will be restarted when the main
+ daemon process exits with any of them, regardless of the
+ Restart= setting.
+
+ * systemctl's -H switch for connecting to remote systemd
+ machines has been extended so that it may be used to
+ directly connect to a specific container on the
+ host. "systemctl -H root@foobar:waldi" will now connect as
+ user "root" to host "foobar", and then proceed directly to
+ the container named "waldi". Note that currently you have to
+ authenticate as user "root" for this to work, as entering
+ containers is a privileged operation.
+
+ Contributions from: Andreas Henriksson, Benjamin Steinwender,
+ Carl Schaefer, Christian Hesse, Colin Ian King, Cristian
+ Rodríguez, Daniel Mack, Dave Reisner, David Herrmann, Eugene
+ Yakubovich, Filipe Brandenburger, Frederic Crozat, Hristo
+ Venev, Jan Engelhardt, Jonathan Boulle, Kay Sievers, Lennart
+ Poettering, Luke Shumaker, Mantas Mikulėnas, Marc-Antoine
+ Perennou, Marcel Holtmann, Michael Marineau, Michael Olbrich,
+ Michał Bartoszkiewicz, Michal Sekletar, Patrik Flykt, Ronan Le
+ Martret, Ronny Chevalier, Ruediger Oertel, Steven Noonan,
+ Susant Sahani, Thadeu Lima de Souza Cascardo, Thomas Hindoe
+ Paaboel Andersen, Tom Gundersen, Tom Hirst, Umut Tezduyar
+ Lindskog, Uoti Urpala, Zbigniew Jędrzejewski-Szmek
+
+ — Berlin, 2014-07-03
+
+CHANGES WITH 214:
+
+ * As an experimental feature, udev now tries to lock the
+ disk device node (flock(LOCK_SH|LOCK_NB)) while it
+ executes events for the disk or any of its partitions.
+ Applications like partitioning programs can lock the
+ disk device node (flock(LOCK_EX)) and claim temporary
+ device ownership that way; udev will entirely skip all event
+ handling for this disk and its partitions. If the disk
+ was opened for writing, the close will trigger a partition
+ table rescan in udev's "watch" facility, and if needed
+ synthesize "change" events for the disk and all its partitions.
+ This is now unconditionally enabled, and if it turns out to
+ cause major problems, we might turn it on only for specific
+ devices, or might need to disable it entirely. Device Mapper
+ devices are excluded from this logic.
+
+ * We temporarily dropped the "-l" switch for fsck invocations,
+ since they collide with the flock() logic above. util-linux
+ upstream has been changed already to avoid this conflict,
+ and we will re-add "-l" as soon as util-linux with this
+ change has been released.
+
+ * The dependency on libattr has been removed. Since a long
+ time, the extended attribute calls have moved to glibc, and
+ libattr is thus unnecessary.
+
+ * Virtualization detection works without privileges now. This
+ means the systemd-detect-virt binary no longer requires
+ CAP_SYS_PTRACE file capabilities, and our daemons can run
+ with fewer privileges.
+
+ * systemd-networkd now runs under its own "systemd-network"
+ user. It retains the CAP_NET_ADMIN, CAP_NET_BIND_SERVICE,
+ CAP_NET_BROADCAST, CAP_NET_RAW capabilities though, but
+ loses the ability to write to files owned by root this way.
+
+ * Similarly, systemd-resolved now runs under its own
+ "systemd-resolve" user with no capabilities remaining.
+
+ * Similarly, systemd-bus-proxyd now runs under its own
+ "systemd-bus-proxy" user with only CAP_IPC_OWNER remaining.
+
+ * systemd-networkd gained support for setting up "veth"
+ virtual Ethernet devices for container connectivity, as well
+ as GRE and VTI tunnels.
+
+ * systemd-networkd will no longer automatically attempt to
+ manually load kernel modules necessary for certain tunnel
+ transports. Instead, it is assumed the kernel loads them
+ automatically when required. This only works correctly on
+ very new kernels. On older kernels, please consider adding
+ the kernel modules to /etc/modules-load.d/ as a work-around.
+
+ * The resolv.conf file systemd-resolved generates has been
+ moved to /run/systemd/resolve/. If you have a symlink from
+ /etc/resolv.conf, it might be necessary to correct it.
+
+ * Two new service settings, ProtectHome= and ProtectSystem=,
+ have been added. When enabled, they will make the user data
+ (such as /home) inaccessible or read-only and the system
+ (such as /usr) read-only, for specific services. This allows
+ very light-weight per-service sandboxing to avoid
+ modifications of user data or system files from
+ services. These two new switches have been enabled for all
+ of systemd's long-running services, where appropriate.
+
+ * Socket units gained new SocketUser= and SocketGroup=
+ settings to set the owner user and group of AF_UNIX sockets
+ and FIFOs in the file system.
+
+ * Socket units gained a new RemoveOnStop= setting. If enabled,
+ all FIFOS and sockets in the file system will be removed
+ when the specific socket unit is stopped.
+
+ * Socket units gained a new Symlinks= setting. It takes a list
+ of symlinks to create to file system sockets or FIFOs
+ created by the specific Unix sockets. This is useful to
+ manage symlinks to socket nodes with the same lifecycle as
+ the socket itself.
+
+ * The /dev/log socket and /dev/initctl FIFO have been moved to
+ /run, and have been replaced by symlinks. This allows
+ connecting to these facilities even if PrivateDevices=yes is
+ used for a service (which makes /dev/log itself unavailable,
+ but /run is left). This also has the benefit of ensuring
+ that /dev only contains device nodes, directories and
+ symlinks, and nothing else.
+
+ * sd-daemon gained two new calls sd_pid_notify() and
+ sd_pid_notifyf(). They are similar to sd_notify() and
+ sd_notifyf(), but allow overriding of the source PID of
+ notification messages if permissions permit this. This is
+ useful to send notify messages on behalf of a different
+ process (for example, the parent process). The
+ systemd-notify tool has been updated to make use of this
+ when sending messages (so that notification messages now
+ originate from the shell script invoking systemd-notify and
+ not the systemd-notify process itself. This should minimize
+ a race where systemd fails to associate notification
+ messages to services when the originating process already
+ vanished.
+
+ * A new "on-abnormal" setting for Restart= has been added. If
+ set, it will result in automatic restarts on all "abnormal"
+ reasons for a process to exit, which includes unclean
+ signals, core dumps, timeouts and watchdog timeouts, but
+ does not include clean and unclean exit codes or clean
+ signals. Restart=on-abnormal is an alternative for
+ Restart=on-failure for services that shall be able to
+ terminate and avoid restarts on certain errors, by
+ indicating so with an unclean exit code. Restart=on-failure
+ or Restart=on-abnormal is now the recommended setting for
+ all long-running services.
+
+ * If the InaccessibleDirectories= service setting points to a
+ mount point (or if there are any submounts contained within
+ it), it is now attempted to completely unmount it, to make
+ the file systems truly unavailable for the respective
+ service.
+
+ * The ReadOnlyDirectories= service setting and
+ systemd-nspawn's --read-only parameter are now recursively
+ applied to all submounts, too.
+
+ * Mount units may now be created transiently via the bus APIs.
+
+ * The support for SysV and LSB init scripts has been removed
+ from the systemd daemon itself. Instead, it is now
+ implemented as a generator that creates native systemd units
+ from these scripts when needed. This enables us to remove a
+ substantial amount of legacy code from PID 1, following the
+ fact that many distributions only ship a very small number
+ of LSB/SysV init scripts nowadays.
+
+ * Privileged Xen (dom0) domains are not considered
+ virtualization anymore by the virtualization detection
+ logic. After all, they generally have unrestricted access to
+ the hardware and usually are used to manage the unprivileged
+ (domU) domains.
+
+ * systemd-tmpfiles gained a new "C" line type, for copying
+ files or entire directories.
+
+ * systemd-tmpfiles "m" lines are now fully equivalent to "z"
+ lines. So far, they have been non-globbing versions of the
+ latter, and have thus been redundant. In future, it is
+ recommended to only use "z". "m" has hence been removed
+ from the documentation, even though it stays supported.
+
+ * A tmpfiles snippet to recreate the most basic structure in
+ /var has been added. This is enough to create the /var/run →
+ /run symlink and create a couple of structural
+ directories. This allows systems to boot up with an empty or
+ volatile /var. Of course, while with this change, the core OS
+ now is capable with dealing with a volatile /var, not all
+ user services are ready for it. However, we hope that sooner
+ or later, many service daemons will be changed upstream so
+ that they are able to automatically create their necessary
+ directories in /var at boot, should they be missing. This is
+ the first step to allow state-less systems that only require
+ the vendor image for /usr to boot.
+
+ * systemd-nspawn has gained a new --tmpfs= switch to mount an
+ empty tmpfs instance to a specific directory. This is
+ particularly useful for making use of the automatic
+ reconstruction of /var (see above), by passing --tmpfs=/var.
+
+ * Access modes specified in tmpfiles snippets may now be
+ prefixed with "~", which indicates that they shall be masked
+ by whether the existing file or directory is currently
+ writable, readable or executable at all. Also, if specified,
+ the sgid/suid/sticky bits will be masked for all
+ non-directories.
+
+ * A new passive target unit "network-pre.target" has been
+ added which is useful for services that shall run before any
+ network is configured, for example firewall scripts.
+
+ * The "floppy" group that previously owned the /dev/fd*
+ devices is no longer used. The "disk" group is now used
+ instead. Distributions should probably deprecate usage of
+ this group.
+
+ Contributions from: Camilo Aguilar, Christian Hesse, Colin Ian
+ King, Cristian Rodríguez, Daniel Buch, Dave Reisner, David
+ Strauss, Denis Tikhomirov, John, Jonathan Liu, Kay Sievers,
+ Lennart Poettering, Mantas Mikulėnas, Mark Eichin, Ronny
+ Chevalier, Susant Sahani, Thomas Blume, Thomas Hindoe Paaboel
+ Andersen, Tom Gundersen, Umut Tezduyar Lindskog, Zbigniew
+ Jędrzejewski-Szmek
+
+ — Berlin, 2014-06-11
+
+CHANGES WITH 213:
+
+ * A new "systemd-timesyncd" daemon has been added for
+ synchronizing the system clock across the network. It
+ implements an SNTP client. In contrast to NTP
+ implementations such as chrony or the NTP reference server,
+ this only implements a client side, and does not bother with
+ the full NTP complexity, focusing only on querying time from
+ one remote server and synchronizing the local clock to
+ it. Unless you intend to serve NTP to networked clients or
+ want to connect to local hardware clocks, this simple NTP
+ client should be more than appropriate for most
+ installations. The daemon runs with minimal privileges, and
+ has been hooked up with networkd to only operate when
+ network connectivity is available. The daemon saves the
+ current clock to disk every time a new NTP sync has been
+ acquired, and uses this to possibly correct the system clock
+ early at bootup, in order to accommodate for systems that
+ lack an RTC such as the Raspberry Pi and embedded devices,
+ and to make sure that time monotonically progresses on these
+ systems, even if it is not always correct. To make use of
+ this daemon, a new system user and group "systemd-timesync"
+ needs to be created on installation of systemd.
+
+ * The queue "seqnum" interface of libudev has been disabled, as
+ it was generally incompatible with device namespacing as
+ sequence numbers of devices go "missing" if the devices are
+ part of a different namespace.
+
+ * "systemctl list-timers" and "systemctl list-sockets" gained
+ a --recursive switch for showing units of these types also
+ for all local containers, similar in style to the already
+ supported --recursive switch for "systemctl list-units".
+
+ * A new RebootArgument= setting has been added for service
+ units, which may be used to specify a kernel reboot argument
+ to use when triggering reboots with StartLimitAction=.
+
+ * A new FailureAction= setting has been added for service
+ units which may be used to specify an operation to trigger
+ when a service fails. This works similarly to
+ StartLimitAction=, but unlike it, controls what is done
+ immediately rather than only after several attempts to
+ restart the service in question.
+
+ * hostnamed got updated to also expose the kernel name,
+ release, and version on the bus. This is useful for
+ executing commands like hostnamectl with the -H switch.
+ systemd-analyze makes use of this to properly display
+ details when running non-locally.
+
+ * The bootchart tool can now show cgroup information in the
+ graphs it generates.
+
+ * The CFS CPU quota cgroup attribute is now exposed for
+ services. The new CPUQuota= switch has been added for this
+ which takes a percentage value. Setting this will have the
+ result that a service may never get more CPU time than the
+ specified percentage, even if the machine is otherwise idle.
+
+ * systemd-networkd learned IPIP and SIT tunnel support.
+
+ * LSB init scripts exposing a dependency on $network will now
+ get a dependency on network-online.target rather than simply
+ network.target. This should bring LSB handling closer to
+ what it was on SysV systems.
+
+ * A new fsck.repair= kernel option has been added to control
+ how fsck shall deal with unclean file systems at boot.
+
+ * The (.ini) configuration file parser will now silently ignore
+ sections whose names begin with "X-". This may be used to maintain
+ application-specific extension sections in unit files.
+
+ * machined gained a new API to query the IP addresses of
+ registered containers. "machinectl status" has been updated
+ to show these addresses in its output.
+
+ * A new call sd_uid_get_display() has been added to the
+ sd-login APIs for querying the "primary" session of a
+ user. The "primary" session of the user is elected from the
+ user's sessions and generally a graphical session is
+ preferred over a text one.
+
+ * A minimal systemd-resolved daemon has been added. It
+ currently simply acts as a companion to systemd-networkd and
+ manages resolv.conf based on per-interface DNS
+ configuration, possibly supplied via DHCP. In the long run
+ we hope to extend this into a local DNSSEC enabled DNS and
+ mDNS cache.
+
+ * The systemd-networkd-wait-online tool is now enabled by
+ default. It will delay network-online.target until a network
+ connection has been configured. The tool primarily integrates
+ with networkd, but will also make a best effort to make sense
+ of network configuration performed in some other way.
+
+ * Two new service options StartupCPUShares= and
+ StartupBlockIOWeight= have been added that work similarly to
+ CPUShares= and BlockIOWeight= however only apply during
+ system startup. This is useful to prioritize certain services
+ differently during bootup than during normal runtime.
+
+ * hostnamed has been changed to prefer the statically
+ configured hostname in /etc/hostname (unless set to
+ 'localhost' or empty) over any dynamic one supplied by
+ dhcp. With this change, the rules for picking the hostname
+ match more closely the rules of other configuration settings
+ where the local administrator's configuration in /etc always
+ overrides any other settings.
+
+ Contributions from: Ali H. Caliskan, Alison Chaiken, Bas van
+ den Berg, Brandon Philips, Cristian Rodríguez, Daniel Buch,
+ Dan Kilman, Dave Reisner, David Härdeman, David Herrmann,
+ David Strauss, Dimitris Spingos, Djalal Harouni, Eelco
+ Dolstra, Evan Nemerson, Florian Albrechtskirchinger, Greg
+ Kroah-Hartman, Harald Hoyer, Holger Hans Peter Freyther, Jan
+ Engelhardt, Jani Nikula, Jason St. John, Jeffrey Clark,
+ Jonathan Boulle, Kay Sievers, Lennart Poettering, Lukas
+ Nykryn, Lukasz Skalski, Łukasz Stelmach, Mantas Mikulėnas,
+ Marcel Holtmann, Martin Pitt, Matthew Monaco, Michael
+ Marineau, Michael Olbrich, Michal Sekletar, Mike Gilbert, Nis
+ Martensen, Patrik Flykt, Philip Lorenz, poma, Ray Strode,
+ Reyad Attiyat, Robert Milasan, Scott Thrasher, Stef Walter,
+ Steven Siloti, Susant Sahani, Tanu Kaskinen, Thomas Bächler,
+ Thomas Hindoe Paaboel Andersen, Tom Gundersen, Umut Tezduyar
+ Lindskog, WaLyong Cho, Will Woods, Zbigniew
+ Jędrzejewski-Szmek
+
+ — Beijing, 2014-05-28
+
+CHANGES WITH 212:
+
+ * When restoring the screen brightness at boot, stay away from
+ the darkest setting or from the lowest 5% of the available
+ range, depending on which is the larger value of both. This
+ should effectively protect the user from rebooting into a
+ black screen, should the brightness have been set to minimum
+ by accident.
+
+ * sd-login gained a new sd_machine_get_class() call to
+ determine the class ("vm" or "container") of a machine
+ registered with machined.
+
+ * sd-login gained new calls
+ sd_peer_get_{session,owner_uid,unit,user_unit,slice,machine_name}(),
+ to query the identity of the peer of a local AF_UNIX
+ connection. They operate similarly to their sd_pid_get_xyz()
+ counterparts.
+
+ * PID 1 will now maintain a system-wide system state engine
+ with the states "starting", "running", "degraded",
+ "maintenance", "stopping". These states are bound to system
+ startup, normal runtime, runtime with at least one failed
+ service, rescue/emergency mode and system shutdown. This
+ state is shown in the "systemctl status" output when no unit
+ name is passed. It is useful to determine system state, in
+ particularly when doing so for many systems or containers at
+ once.
+
+ * A new command "list-machines" has been added to "systemctl"
+ that lists all local OS containers and shows their system
+ state (see above), if systemd runs inside of them.
+
+ * systemctl gained a new "-r" switch to recursively enumerate
+ units on all local containers, when used with the
+ "list-unit" command (which is the default one that is
+ executed when no parameters are specified).
+
+ * The GPT automatic partition discovery logic will now honour
+ two GPT partition flags: one may be set on a partition to
+ cause it to be mounted read-only, and the other may be set
+ on a partition to ignore it during automatic discovery.
+
+ * Two new GPT type UUIDs have been added for automatic root
+ partition discovery, for 32-bit and 64-bit ARM. This is not
+ particularly useful for discovering the root directory on
+ these architectures during bare-metal boots (since UEFI is
+ not common there), but still very useful to allow booting of
+ ARM disk images in nspawn with the -i option.
+
+ * MAC addresses of interfaces created with nspawn's
+ --network-interface= switch will now be generated from the
+ machine name, and thus be stable between multiple invocations
+ of the container.
+
+ * logind will now automatically remove all IPC objects owned
+ by a user if she or he fully logs out. This makes sure that
+ users who are logged out cannot continue to consume IPC
+ resources. This covers SysV memory, semaphores and message
+ queues as well as POSIX shared memory and message
+ queues. Traditionally, SysV and POSIX IPC had no lifecycle
+ limits. With this functionality, that is corrected. This may
+ be turned off by using the RemoveIPC= switch of logind.conf.
+
+ * The systemd-machine-id-setup and tmpfiles tools gained a
+ --root= switch to operate on a specific root directory,
+ instead of /.
+
+ * journald can now forward logged messages to the TTYs of all
+ logged in users ("wall"). This is the default for all
+ emergency messages now.
+
+ * A new tool systemd-journal-remote has been added to stream
+ journal log messages across the network.
+
+ * /sys/fs/cgroup/ is now mounted read-only after all cgroup
+ controller trees are mounted into it. Note that the
+ directories mounted beneath it are not read-only. This is a
+ security measure and is particularly useful because glibc
+ actually includes a search logic to pick any tmpfs it can
+ find to implement shm_open() if /dev/shm is not available
+ (which it might very well be in namespaced setups).
+
+ * machinectl gained a new "poweroff" command to cleanly power
+ down a local OS container.
+
+ * The PrivateDevices= unit file setting will now also drop the
+ CAP_MKNOD capability from the capability bound set, and
+ imply DevicePolicy=closed.
+
+ * PrivateDevices=, PrivateNetwork= and PrivateTmp= is now used
+ comprehensively on all long-running systemd services where
+ this is appropriate.
+
+ * systemd-udevd will now run in a disassociated mount
+ namespace. To mount directories from udev rules, make sure to
+ pull in mount units via SYSTEMD_WANTS properties.
+
+ * The kdbus support gained support for uploading policy into
+ the kernel. sd-bus gained support for creating "monitoring"
+ connections that can eavesdrop into all bus communication
+ for debugging purposes.
+
+ * Timestamps may now be specified in seconds since the UNIX
+ epoch Jan 1st, 1970 by specifying "@" followed by the value
+ in seconds.
+
+ * Native tcpwrap support in systemd has been removed. tcpwrap
+ is old code, not really maintained anymore and has serious
+ shortcomings, and better options such as firewalls
+ exist. For setups that require tcpwrap usage, please
+ consider invoking your socket-activated service via tcpd,
+ like on traditional inetd.
+
+ * A new system.conf configuration option
+ DefaultTimerAccuracySec= has been added that controls the
+ default AccuracySec= setting of .timer units.
+
+ * Timer units gained a new WakeSystem= switch. If enabled,
+ timers configured this way will cause the system to resume
+ from system suspend (if the system supports that, which most
+ do these days).
+
+ * Timer units gained a new Persistent= switch. If enabled,
+ timers configured this way will save to disk when they have
+ been last triggered. This information is then used on next
+ reboot to possible execute overdue timer events, that
+ could not take place because the system was powered off.
+ This enables simple anacron-like behaviour for timer units.
+
+ * systemctl's "list-timers" will now also list the time a
+ timer unit was last triggered in addition to the next time
+ it will be triggered.
+
+ * systemd-networkd will now assign predictable IPv4LL
+ addresses to its local interfaces.
+
+ Contributions from: Brandon Philips, Daniel Buch, Daniel Mack,
+ Dave Reisner, David Herrmann, Gerd Hoffmann, Greg
+ Kroah-Hartman, Hendrik Brueckner, Jason St. John, Josh
+ Triplett, Kay Sievers, Lennart Poettering, Marc-Antoine
+ Perennou, Michael Marineau, Michael Olbrich, Miklos Vajna,
+ Patrik Flykt, poma, Sebastian Thorarensen, Thomas Bächler,
+ Thomas Hindoe Paaboel Andersen, Tomasz Torcz, Tom Gundersen,
+ Umut Tezduyar Lindskog, Wieland Hoffmann, Zbigniew
+ Jędrzejewski-Szmek
+
+ — Berlin, 2014-03-25
+
+CHANGES WITH 211:
+
+ * A new unit file setting RestrictAddressFamilies= has been
+ added to restrict which socket address families unit
+ processes gain access to. This takes address family names
+ like "AF_INET" or "AF_UNIX", and is useful to minimize the
+ attack surface of services via exotic protocol stacks. This
+ is built on seccomp system call filters.
+
+ * Two new unit file settings RuntimeDirectory= and
+ RuntimeDirectoryMode= have been added that may be used to
+ manage a per-daemon runtime directories below /run. This is
+ an alternative for setting up directory permissions with
+ tmpfiles snippets, and has the advantage that the runtime
+ directory's lifetime is bound to the daemon runtime and that
+ the daemon starts up with an empty directory each time. This
+ is particularly useful when writing services that drop
+ privileges using the User= or Group= setting.
+
+ * The DeviceAllow= unit setting now supports globbing for
+ matching against device group names.
+
+ * The systemd configuration file system.conf gained new
+ settings DefaultCPUAccounting=, DefaultBlockIOAccounting=,
+ DefaultMemoryAccounting= to globally turn on/off accounting
+ for specific resources (cgroups) for all units. These
+ settings may still be overridden individually in each unit
+ though.
+
+ * systemd-gpt-auto-generator is now able to discover /srv and
+ root partitions in addition to /home and swap partitions. It
+ also supports LUKS-encrypted partitions now. With this in
+ place, automatic discovery of partitions to mount following
+ the Discoverable Partitions Specification
+ (https://systemd.io/DISCOVERABLE_PARTITIONS/)
+ is now a lot more complete. This allows booting without
+ /etc/fstab and without root= on the kernel command line on
+ systems prepared appropriately.
+
+ * systemd-nspawn gained a new --image= switch which allows
+ booting up disk images and Linux installations on any block
+ device that follow the Discoverable Partitions Specification
+ (see above). This means that installations made with
+ appropriately updated installers may now be started and
+ deployed using container managers, completely
+ unmodified. (We hope that libvirt-lxc will add support for
+ this feature soon, too.)
+
+ * systemd-nspawn gained a new --network-macvlan= setting to
+ set up a private macvlan interface for the
+ container. Similarly, systemd-networkd gained a new
+ Kind=macvlan setting in .netdev files.
+
+ * systemd-networkd now supports configuring local addresses
+ using IPv4LL.
+
+ * A new tool systemd-network-wait-online has been added to
+ synchronously wait for network connectivity using
+ systemd-networkd.
+
+ * The sd-bus.h bus API gained a new sd_bus_track object for
+ tracking the lifecycle of bus peers. Note that sd-bus.h is
+ still not a public API though (unless you specify
+ --enable-kdbus on the configure command line, which however
+ voids your warranty and you get no API stability guarantee).
+
+ * The $XDG_RUNTIME_DIR runtime directories for each user are
+ now individual tmpfs instances, which has the benefit of
+ introducing separate pools for each user, with individual
+ size limits, and thus making sure that unprivileged clients
+ can no longer negatively impact the system or other users by
+ filling up their $XDG_RUNTIME_DIR. A new logind.conf setting
+ RuntimeDirectorySize= has been introduced that allows
+ controlling the default size limit for all users. It
+ defaults to 10% of the available physical memory. This is no
+ replacement for quotas on tmpfs though (which the kernel
+ still does not support), as /dev/shm and /tmp are still
+ shared resources used by both the system and unprivileged
+ users.
+
+ * logind will now automatically turn off automatic suspending
+ on laptop lid close when more than one display is
+ connected. This was previously expected to be implemented
+ individually in desktop environments (such as GNOME),
+ however has been added to logind now, in order to fix a
+ boot-time race where a desktop environment might not have
+ been started yet and thus not been able to take an inhibitor
+ lock at the time where logind already suspends the system
+ due to a closed lid.
+
+ * logind will now wait at least 30s after each system
+ suspend/resume cycle, and 3min after system boot before
+ suspending the system due to a closed laptop lid. This
+ should give USB docking stations and similar enough time to
+ be probed and configured after system resume and boot in
+ order to then act as suspend blocker.
+
+ * systemd-run gained a new --property= setting which allows
+ initialization of resource control properties (and others)
+ for the created scope or service unit. Example: "systemd-run
+ --property=BlockIOWeight=10 updatedb" may be used to run
+ updatedb at a low block IO scheduling weight.
+
+ * systemd-run's --uid=, --gid=, --setenv=, --setenv= switches
+ now also work in --scope mode.
+
+ * When systemd is compiled with kdbus support, basic support
+ for enforced policies is now in place. (Note that enabling
+ kdbus still voids your warranty and no API compatibility
+ promises are made.)
+
+ Contributions from: Andrey Borzenkov, Ansgar Burchardt, Armin
+ K., Daniel Mack, Dave Reisner, David Herrmann, Djalal Harouni,
+ Harald Hoyer, Henrik Grindal Bakken, Jasper St. Pierre, Kay
+ Sievers, Kieran Clancy, Lennart Poettering, Lukas Nykryn,
+ Mantas Mikulėnas, Marcel Holtmann, Mark Oteiza, Martin Pitt,
+ Mike Gilbert, Peter Rajnoha, poma, Samuli Suominen, Stef
+ Walter, Susant Sahani, Tero Roponen, Thomas Andersen, Thomas
+ Bächler, Thomas Hindoe Paaboel Andersen, Tomasz Torcz, Tom
+ Gundersen, Umut Tezduyar Lindskog, Uoti Urpala, Zachary Cook,
+ Zbigniew Jędrzejewski-Szmek
+
+ — Berlin, 2014-03-12
+
+CHANGES WITH 210:
+
+ * systemd will now relabel /dev after loading the SMACK policy
+ according to SMACK rules.
+
+ * A new unit file option AppArmorProfile= has been added to
+ set the AppArmor profile for the processes of a unit.
+
+ * A new condition check ConditionArchitecture= has been added
+ to conditionalize units based on the system architecture, as
+ reported by uname()'s "machine" field.
+
+ * systemd-networkd now supports matching on the system
+ virtualization, architecture, kernel command line, hostname
+ and machine ID.
+
+ * logind is now a lot more aggressive when suspending the
+ machine due to a closed laptop lid. Instead of acting only
+ on the lid close action, it will continuously watch the lid
+ status and act on it. This is useful for laptops where the
+ power button is on the outside of the chassis so that it can
+ be reached without opening the lid (such as the Lenovo
+ Yoga). On those machines, logind will now immediately
+ re-suspend the machine if the power button has been
+ accidentally pressed while the laptop was suspended and in a
+ backpack or similar.
+
+ * logind will now watch SW_DOCK switches and inhibit reaction
+ to the lid switch if it is pressed. This means that logind
+ will not suspend the machine anymore if the lid is closed
+ and the system is docked, if the laptop supports SW_DOCK
+ notifications via the input layer. Note that ACPI docking
+ stations do not generate this currently. Also note that this
+ logic is usually not fully sufficient and Desktop
+ Environments should take a lid switch inhibitor lock when an
+ external display is connected, as systemd will not watch
+ this on its own.
+
+ * nspawn will now make use of the devices cgroup controller by
+ default, and only permit creation of and access to the usual
+ API device nodes like /dev/null or /dev/random, as well as
+ access to (but not creation of) the pty devices.
+
+ * We will now ship a default .network file for
+ systemd-networkd that automatically configures DHCP for
+ network interfaces created by nspawn's --network-veth or
+ --network-bridge= switches.
+
+ * systemd will now understand the usual M, K, G, T suffixes
+ according to SI conventions (i.e. to the base 1000) when
+ referring to throughput and hardware metrics. It will stay
+ with IEC conventions (i.e. to the base 1024) for software
+ metrics, according to what is customary according to
+ Wikipedia. We explicitly document which base applies for
+ each configuration option.
+
+ * The DeviceAllow= setting in unit files now supports a syntax to
+ allow-list an entire group of devices node majors at once, based on
+ the /proc/devices listing. For example, with the string "char-pts",
+ it is now possible to allow-list all current and future pseudo-TTYs
+ at once.
+
+ * sd-event learned a new "post" event source. Event sources of
+ this type are triggered by the dispatching of any event
+ source of a type that is not "post". This is useful for
+ implementing clean-up and check event sources that are
+ triggered by other work being done in the program.
+
+ * systemd-networkd is no longer statically enabled, but uses
+ the usual [Install] sections so that it can be
+ enabled/disabled using systemctl. It still is enabled by
+ default however.
+
+ * When creating a veth interface pair with systemd-nspawn, the
+ host side will now be prefixed with "vb-" if
+ --network-bridge= is used, and with "ve-" if --network-veth
+ is used. This way, it is easy to distinguish these cases on
+ the host, for example to apply different configuration to
+ them with systemd-networkd.
+
+ * The compatibility libraries for libsystemd-journal.so,
+ libsystem-id128.so, libsystemd-login.so and
+ libsystemd-daemon.so do not make use of IFUNC
+ anymore. Instead, we now build libsystemd.so multiple times
+ under these alternative names. This means that the footprint
+ is drastically increased, but given that these are
+ transitional compatibility libraries, this should not matter
+ much. This change has been made necessary to support the ARM
+ platform for these compatibility libraries, as the ARM
+ toolchain is not really at the same level as the toolchain
+ for other architectures like x86 and does not support
+ IFUNC. Please make sure to use --enable-compat-libs only
+ during a transitional period!
+
+ * The .include syntax has been deprecated and is not documented
+ anymore. Drop-in files in .d directories should be used instead.
+
+ Contributions from: Andreas Fuchs, Armin K., Colin Walters,
+ Daniel Mack, Dave Reisner, David Herrmann, Djalal Harouni,
+ Holger Schurig, Jason A. Donenfeld, Jason St. John, Jasper
+ St. Pierre, Kay Sievers, Lennart Poettering, Łukasz Stelmach,
+ Marcel Holtmann, Michael Scherer, Michal Sekletar, Mike
+ Gilbert, Samuli Suominen, Thomas Bächler, Thomas Hindoe
+ Paaboel Andersen, Tom Gundersen, Umut Tezduyar Lindskog,
+ Zbigniew Jędrzejewski-Szmek
+
+ — Berlin, 2014-02-24
+
+CHANGES WITH 209:
+
+ * A new component "systemd-networkd" has been added that can
+ be used to configure local network interfaces statically or
+ via DHCP. It is capable of bringing up bridges, VLANs, and
+ bonding. Currently, no hook-ups for interactive network
+ configuration are provided. Use this for your initrd,
+ container, embedded, or server setup if you need a simple,
+ yet powerful, network configuration solution. This
+ configuration subsystem is quite nifty, as it allows wildcard
+ hotplug matching in interfaces. For example, with a single
+ configuration snippet, you can configure that all Ethernet
+ interfaces showing up are automatically added to a bridge,
+ or similar. It supports link-sensing and more.
+
+ * A new tool "systemd-socket-proxyd" has been added which can
+ act as a bidirectional proxy for TCP sockets. This is
+ useful for adding socket activation support to services that
+ do not actually support socket activation, including virtual
+ machines and the like.
+
+ * Add a new tool to save/restore rfkill state on
+ shutdown/boot.
+
+ * Save/restore state of keyboard backlights in addition to
+ display backlights on shutdown/boot.
+
+ * udev learned a new SECLABEL{} construct to label device
+ nodes with a specific security label when they appear. For
+ now, only SECLABEL{selinux} is supported, but the syntax is
+ prepared for additional security frameworks.
+
+ * udev gained a new scheme to configure link-level attributes
+ from files in /etc/systemd/network/*.link. These files can
+ match against MAC address, device path, driver name and type,
+ and will apply attributes like the naming policy, link speed,
+ MTU, duplex settings, Wake-on-LAN settings, MAC address, MAC
+ address assignment policy (randomized, …).
+
+ * The configuration of network interface naming rules for
+ "permanent interface names" has changed: a new NamePolicy=
+ setting in the [Link] section of .link files determines the
+ priority of possible naming schemes (onboard, slot, MAC,
+ path). The default value of this setting is determined by
+ /usr/lib/net/links/99-default.link. Old
+ 80-net-name-slot.rules udev configuration file has been
+ removed, so local configuration overriding this file should
+ be adapted to override 99-default.link instead.
+
+ * When the User= switch is used in a unit file, also
+ initialize $SHELL= based on the user database entry.
+
+ * systemd no longer depends on libdbus. All communication is
+ now done with sd-bus, systemd's low-level bus library
+ implementation.
+
+ * kdbus support has been added to PID 1 itself. When kdbus is
+ enabled, this causes PID 1 to set up the system bus and
+ enable support for a new ".busname" unit type that
+ encapsulates bus name activation on kdbus. It works a little
+ bit like ".socket" units, except for bus names. A new
+ generator has been added that converts classic dbus1 service
+ activation files automatically into native systemd .busname
+ and .service units.
+
+ * sd-bus: add a light-weight vtable implementation that allows
+ defining objects on the bus with a simple static const
+ vtable array of its methods, signals and properties.
+
+ * systemd will not generate or install static dbus
+ introspection data anymore to /usr/share/dbus-1/interfaces,
+ as the precise format of these files is unclear, and
+ nothing makes use of it.
+
+ * A proxy daemon is now provided to proxy clients connecting
+ via classic D-Bus AF_UNIX sockets to kdbus, to provide full
+ compatibility with classic D-Bus.
+
+ * A bus driver implementation has been added that supports the
+ classic D-Bus bus driver calls on kdbus, also for
+ compatibility purposes.
+
+ * A new API "sd-event.h" has been added that implements a
+ minimal event loop API built around epoll. It provides a
+ couple of features that direct epoll usage is lacking:
+ prioritization of events, scales to large numbers of timer
+ events, per-event timer slack (accuracy), system-wide
+ coalescing of timer events, exit handlers, watchdog
+ supervision support using systemd's sd_notify() API, child
+ process handling.
+
+ * A new API "sd-rntl.h" has been added that provides an API
+ around the route netlink interface of the kernel, similar in
+ style to "sd-bus.h".
+
+ * A new API "sd-dhcp-client.h" has been added that provides a
+ small DHCPv4 client-side implementation. This is used by
+ "systemd-networkd".
+
+ * There is a new kernel command line option
+ "systemd.restore_state=0|1". When set to "0", none of the
+ systemd tools will restore saved runtime state to hardware
+ devices. More specifically, the rfkill and backlight states
+ are not restored.
+
+ * The FsckPassNo= compatibility option in mount/service units
+ has been removed. The fstab generator will now add the
+ necessary dependencies automatically, and does not require
+ PID1's support for that anymore.
+
+ * journalctl gained a new switch, --list-boots, that lists
+ recent boots with their times and boot IDs.
+
+ * The various tools like systemctl, loginctl, timedatectl,
+ busctl, systemd-run, … have gained a new switch "-M" to
+ connect to a specific, local OS container (as direct
+ connection, without requiring SSH). This works on any
+ container that is registered with machined, such as those
+ created by libvirt-lxc or nspawn.
+
+ * systemd-run and systemd-analyze also gained support for "-H"
+ to connect to remote hosts via SSH. This is particularly
+ useful for systemd-run because it enables queuing of jobs
+ onto remote systems.
+
+ * machinectl gained a new command "login" to open a getty
+ login in any local container. This works with any container
+ that is registered with machined (such as those created by
+ libvirt-lxc or nspawn), and which runs systemd inside.
+
+ * machinectl gained a new "reboot" command that may be used to
+ trigger a reboot on a specific container that is registered
+ with machined. This works on any container that runs an init
+ system of some kind.
+
+ * systemctl gained a new "list-timers" command to print a nice
+ listing of installed timer units with the times they elapse
+ next.
+
+ * Alternative reboot() parameters may now be specified on the
+ "systemctl reboot" command line and are passed to the
+ reboot() system call.
+
+ * systemctl gained a new --job-mode= switch to configure the
+ mode to queue a job with. This is a more generic version of
+ --fail, --irreversible, and --ignore-dependencies, which are
+ still available but not advertised anymore.
+
+ * /etc/systemd/system.conf gained new settings to configure
+ various default timeouts of units, as well as the default
+ start limit interval and burst. These may still be overridden
+ within each Unit.
+
+ * PID1 will now export on the bus profile data of the security
+ policy upload process (such as the SELinux policy upload to
+ the kernel).
+
+ * journald: when forwarding logs to the console, include
+ timestamps (following the setting in
+ /sys/module/printk/parameters/time).
+
+ * OnCalendar= in timer units now understands the special
+ strings "yearly" and "annually". (Both are equivalent)
+
+ * The accuracy of timer units is now configurable with the new
+ AccuracySec= setting. It defaults to 1min.
+
+ * A new dependency type JoinsNamespaceOf= has been added that
+ allows running two services within the same /tmp and network
+ namespace, if PrivateNetwork= or PrivateTmp= are used.
+
+ * A new command "cat" has been added to systemctl. It outputs
+ the original unit file of a unit, and concatenates the
+ contents of additional "drop-in" unit file snippets, so that
+ the full configuration is shown.
+
+ * systemctl now supports globbing on the various "list-xyz"
+ commands, like "list-units" or "list-sockets", as well as on
+ those commands which take multiple unit names.
+
+ * journalctl's --unit= switch gained support for globbing.
+
+ * All systemd daemons now make use of the watchdog logic so
+ that systemd automatically notices when they hang.
+
+ * If the $container_ttys environment variable is set,
+ getty-generator will automatically spawn a getty for each
+ listed tty. This is useful for container managers to request
+ login gettys to be spawned on as many ttys as needed.
+
+ * %h, %s, %U specifier support is not available anymore when
+ used in unit files for PID 1. This is because NSS calls are
+ not safe from PID 1. They stay available for --user
+ instances of systemd, and as special case for the root user.
+
+ * loginctl gained a new "--no-legend" switch to turn off output
+ of the legend text.
+
+ * The "sd-login.h" API gained three new calls:
+ sd_session_is_remote(), sd_session_get_remote_user(),
+ sd_session_get_remote_host() to query information about
+ remote sessions.
+
+ * The udev hardware database now also carries vendor/product
+ information of SDIO devices.
+
+ * The "sd-daemon.h" API gained a new sd_watchdog_enabled() to
+ determine whether watchdog notifications are requested by
+ the system manager.
+
+ * Socket-activated per-connection services now include a
+ short description of the connection parameters in the
+ description.
+
+ * tmpfiles gained a new "--boot" option. When this is not used,
+ only lines where the command character is not suffixed with
+ "!" are executed. When this option is specified, those
+ options are executed too. This partitions tmpfiles
+ directives into those that can be safely executed at any
+ time, and those which should be run only at boot (for
+ example, a line that creates /run/nologin).
+
+ * A new API "sd-resolve.h" has been added which provides a simple
+ asynchronous wrapper around glibc NSS hostname resolution
+ calls, such as getaddrinfo(). In contrast to glibc's
+ getaddrinfo_a(), it does not use signals. In contrast to most
+ other asynchronous name resolution libraries, this one does
+ not reimplement DNS, but reuses NSS, so that alternate
+ hostname resolution systems continue to work, such as mDNS,
+ LDAP, etc. This API is based on libasyncns, but it has been
+ cleaned up for inclusion in systemd.
+
+ * The APIs "sd-journal.h", "sd-login.h", "sd-id128.h",
+ "sd-daemon.h" are no longer found in individual libraries
+ libsystemd-journal.so, libsystemd-login.so,
+ libsystemd-id128.so, libsystemd-daemon.so. Instead, we have
+ merged them into a single library, libsystemd.so, which
+ provides all symbols. The reason for this is cyclic
+ dependencies, as these libraries tend to use each other's
+ symbols. So far, we have managed to workaround that by linking
+ a copy of a good part of our code into each of these
+ libraries again and again, which, however, makes certain
+ things hard to do, like sharing static variables. Also, it
+ substantially increases footprint. With this change, there
+ is only one library for the basic APIs systemd
+ provides. Also, "sd-bus.h", "sd-memfd.h", "sd-event.h",
+ "sd-rtnl.h", "sd-resolve.h", "sd-utf8.h" are found in this
+ library as well, however are subject to the --enable-kdbus
+ switch (see below). Note that "sd-dhcp-client.h" is not part
+ of this library (this is because it only consumes, never
+ provides, services of/to other APIs). To make the transition
+ easy from the separate libraries to the unified one, we
+ provide the --enable-compat-libs compile-time switch which
+ will generate stub libraries that are compatible with the
+ old ones but redirect all calls to the new one.
+
+ * All of the kdbus logic and the new APIs "sd-bus.h",
+ "sd-memfd.h", "sd-event.h", "sd-rtnl.h", "sd-resolve.h",
+ and "sd-utf8.h" are compile-time optional via the
+ "--enable-kdbus" switch, and they are not compiled in by
+ default. To make use of kdbus, you have to explicitly enable
+ the switch. Note however, that neither the kernel nor the
+ userspace API for all of this is considered stable yet. We
+ want to maintain the freedom to still change the APIs for
+ now. By specifying this build-time switch, you acknowledge
+ that you are aware of the instability of the current
+ APIs.
+
+ * Also, note that while kdbus is pretty much complete,
+ it lacks one thing: proper policy support. This means you
+ can build a fully working system with all features; however,
+ it will be highly insecure. Policy support will be added in
+ one of the next releases, at the same time that we will
+ declare the APIs stable.
+
+ * When the kernel command line argument "kdbus" is specified,
+ systemd will automatically load the kdbus.ko kernel module. At
+ this stage of development, it is only useful for testing kdbus
+ and should not be used in production. Note: if "--enable-kdbus"
+ is specified, and the kdbus.ko kernel module is available, and
+ "kdbus" is added to the kernel command line, the entire system
+ runs with kdbus instead of dbus-daemon, with the above mentioned
+ problem of missing the system policy enforcement. Also a future
+ version of kdbus.ko or a newer systemd will not be compatible with
+ each other, and will unlikely be able to boot the machine if only
+ one of them is updated.
+
+ * systemctl gained a new "import-environment" command which
+ uploads the caller's environment (or parts thereof) into the
+ service manager so that it is inherited by services started
+ by the manager. This is useful to upload variables like
+ $DISPLAY into the user service manager.
+
+ * A new PrivateDevices= switch has been added to service units
+ which allows running a service with a namespaced /dev
+ directory that does not contain any device nodes for
+ physical devices. More specifically, it only includes devices
+ such as /dev/null, /dev/urandom, and /dev/zero which are API
+ entry points.
+
+ * logind has been extended to support behaviour like VT
+ switching on seats that do not support a VT. This makes
+ multi-session available on seats that are not the first seat
+ (seat0), and on systems where kernel support for VTs has
+ been disabled at compile-time.
+
+ * If a process holds a delay lock for system sleep or shutdown
+ and fails to release it in time, we will now log its
+ identity. This makes it easier to identify processes that
+ cause slow suspends or power-offs.
+
+ * When parsing /etc/crypttab, support for a new key-slot=
+ option as supported by Debian is added. It allows indicating
+ which LUKS slot to use on disk, speeding up key loading.
+
+ * The sd_journal_sendv() API call has been checked and
+ officially declared to be async-signal-safe so that it may
+ be invoked from signal handlers for logging purposes.
+
+ * Boot-time status output is now enabled automatically after a
+ short timeout if boot does not progress, in order to give
+ the user an indication what she or he is waiting for.
+
+ * The boot-time output has been improved to show how much time
+ remains until jobs expire.
+
+ * The KillMode= switch in service units gained a new possible
+ value "mixed". If set, and the unit is shut down, then the
+ initial SIGTERM signal is sent only to the main daemon
+ process, while the following SIGKILL signal is sent to
+ all remaining processes of the service.
+
+ * When a scope unit is registered, a new property "Controller"
+ may be set. If set to a valid bus name, systemd will send a
+ RequestStop() signal to this name when it would like to shut
+ down the scope. This may be used to hook manager logic into
+ the shutdown logic of scope units. Also, scope units may now
+ be put in a special "abandoned" state, in which case the
+ manager process which created them takes no further
+ responsibilities for it.
+
+ * When reading unit files, systemd will now verify
+ the access mode of these files, and warn about certain
+ suspicious combinations. This has been added to make it
+ easier to track down packaging bugs where unit files are
+ marked executable or world-writable.
+
+ * systemd-nspawn gained a new "--setenv=" switch to set
+ container-wide environment variables. The similar option in
+ systemd-activate was renamed from "--environment=" to
+ "--setenv=" for consistency.
+
+ * systemd-nspawn has been updated to create a new kdbus domain
+ for each container that is invoked, thus allowing each
+ container to have its own set of system and user buses,
+ independent of the host.
+
+ * systemd-nspawn gained a new --drop-capability= switch to run
+ the container with less capabilities than the default. Both
+ --drop-capability= and --capability= now take the special
+ string "all" for dropping or keeping all capabilities.
+
+ * systemd-nspawn gained new switches for executing containers
+ with specific SELinux labels set.
+
+ * systemd-nspawn gained a new --quiet switch to not generate
+ any additional output but the container's own console
+ output.
+
+ * systemd-nspawn gained a new --share-system switch to run a
+ container without PID namespacing enabled.
+
+ * systemd-nspawn gained a new --register= switch to control
+ whether the container is registered with systemd-machined or
+ not. This is useful for containers that do not run full
+ OS images, but only specific apps.
+
+ * systemd-nspawn gained a new --keep-unit which may be used
+ when invoked as the only program from a service unit, and
+ results in registration of the unit service itself in
+ systemd-machined, instead of a newly opened scope unit.
+
+ * systemd-nspawn gained a new --network-interface= switch for
+ moving arbitrary interfaces to the container. The new
+ --network-veth switch creates a virtual Ethernet connection
+ between host and container. The new --network-bridge=
+ switch then allows assigning the host side of this virtual
+ Ethernet connection to a bridge device.
+
+ * systemd-nspawn gained a new --personality= switch for
+ setting the kernel personality for the container. This is
+ useful when running a 32-bit container on a 64-bit host. A
+ similar option Personality= is now also available for service
+ units to use.
+
+ * logind will now also track a "Desktop" identifier for each
+ session which encodes the desktop environment of it. This is
+ useful for desktop environments that want to identify
+ multiple running sessions of itself easily.
+
+ * A new SELinuxContext= setting for service units has been
+ added that allows setting a specific SELinux execution
+ context for a service.
+
+ * Most systemd client tools will now honour $SYSTEMD_LESS for
+ settings of the "less" pager. By default, these tools will
+ override $LESS to allow certain operations to work, such as
+ jump-to-the-end. With $SYSTEMD_LESS, it is possible to
+ influence this logic.
+
+ * systemd's "seccomp" hook-up has been changed to make use of
+ the libseccomp library instead of using its own
+ implementation. This has benefits for portability among
+ other things.
+
+ * For usage together with SystemCallFilter=, a new
+ SystemCallErrorNumber= setting has been introduced that
+ allows configuration of a system error number to be returned
+ on filtered system calls, instead of immediately killing the
+ process. Also, SystemCallArchitectures= has been added to
+ limit access to system calls of a particular architecture
+ (in order to turn off support for unused secondary
+ architectures). There is also a global
+ SystemCallArchitectures= setting in system.conf now to turn
+ off support for non-native system calls system-wide.
+
+ * systemd requires a kernel with a working name_to_handle_at(),
+ please see the kernel config requirements in the README file.
+
+ Contributions from: Adam Williamson, Alex Jia, Anatol Pomozov,
+ Ansgar Burchardt, AppleBloom, Auke Kok, Bastien Nocera,
+ Chengwei Yang, Christian Seiler, Colin Guthrie, Colin Walters,
+ Cristian Rodríguez, Daniel Buch, Daniele Medri, Daniel J
+ Walsh, Daniel Mack, Dan McGee, Dave Reisner, David Coppa,
+ David Herrmann, David Strauss, Djalal Harouni, Dmitry Pisklov,
+ Elia Pinto, Florian Weimer, George McCollister, Goffredo
+ Baroncelli, Greg Kroah-Hartman, Hendrik Brueckner, Igor
+ Zhbanov, Jan Engelhardt, Jan Janssen, Jason A. Donenfeld,
+ Jason St. John, Jasper St. Pierre, Jóhann B. Guðmundsson, Jose
+ Ignacio Naranjo, Karel Zak, Kay Sievers, Kristian Høgsberg,
+ Lennart Poettering, Lubomir Rintel, Lukas Nykryn, Lukasz
+ Skalski, Łukasz Stelmach, Luke Shumaker, Mantas Mikulėnas,
+ Marc-Antoine Perennou, Marcel Holtmann, Marcos Felipe Rasia de
+ Mello, Marko Myllynen, Martin Pitt, Matthew Monaco, Michael
+ Marineau, Michael Scherer, Michał Górny, Michal Sekletar,
+ Michele Curti, Oleksii Shevchuk, Olivier Brunel, Patrik Flykt,
+ Pavel Holica, Raudi, Richard Marko, Ronny Chevalier, Sébastien
+ Luttringer, Sergey Ptashnick, Shawn Landden, Simon Peeters,
+ Stefan Beller, Susant Sahani, Sylvain Plantefeve, Sylvia Else,
+ Tero Roponen, Thomas Bächler, Thomas Hindoe Paaboel Andersen,
+ Tom Gundersen, Umut Tezduyar Lindskog, Unai Uribarri, Václav
+ Pavlín, Vincent Batts, WaLyong Cho, William Giokas, Yang
+ Zhiyong, Yin Kangkai, Yuxuan Shui, Zbigniew Jędrzejewski-Szmek
+
+ — Berlin, 2014-02-20
+
+CHANGES WITH 208:
+
+ * logind has gained support for facilitating privileged input
+ and drm device access for unprivileged clients. This work is
+ useful to allow Wayland display servers (and similar
+ programs, such as kmscon) to run under the user's ID and
+ access input and drm devices which are normally
+ protected. When this is used (and the kernel is new enough)
+ logind will "mute" IO on the file descriptors passed to
+ Wayland as long as it is in the background and "unmute" it
+ if it returns into the foreground. This allows secure
+ session switching without allowing background sessions to
+ eavesdrop on input and display data. This also introduces
+ session switching support if VT support is turned off in the
+ kernel, and on seats that are not seat0.
+
+ * A new kernel command line option luks.options= is understood
+ now which allows specifying LUKS options for usage for LUKS
+ encrypted partitions specified with luks.uuid=.
+
+ * tmpfiles.d(5) snippets may now use specifier expansion in
+ path names. More specifically %m, %b, %H, %v, are now
+ replaced by the local machine id, boot id, hostname, and
+ kernel version number.
+
+ * A new tmpfiles.d(5) command "m" has been introduced which
+ may be used to change the owner/group/access mode of a file
+ or directory if it exists, but do nothing if it does not.
+
+ * This release removes high-level support for the
+ MemorySoftLimit= cgroup setting. The underlying kernel
+ cgroup attribute memory.soft_limit= is currently badly
+ designed and likely to be removed from the kernel API in its
+ current form, hence we should not expose it for now.
+
+ * The memory.use_hierarchy cgroup attribute is now enabled for
+ all cgroups systemd creates in the memory cgroup
+ hierarchy. This option is likely to be come the built-in
+ default in the kernel anyway, and the non-hierarchical mode
+ never made much sense in the intrinsically hierarchical
+ cgroup system.
+
+ * A new field _SYSTEMD_SLICE= is logged along with all journal
+ messages containing the slice a message was generated
+ from. This is useful to allow easy per-customer filtering of
+ logs among other things.
+
+ * systemd-journald will no longer adjust the group of journal
+ files it creates to the "systemd-journal" group. Instead we
+ rely on the journal directory to be owned by the
+ "systemd-journal" group, and its setgid bit set, so that the
+ kernel file system layer will automatically enforce that
+ journal files inherit this group assignment. The reason for
+ this change is that we cannot allow NSS look-ups from
+ journald which would be necessary to resolve
+ "systemd-journal" to a numeric GID, because this might
+ create deadlocks if NSS involves synchronous queries to
+ other daemons (such as nscd, or sssd) which in turn are
+ logging clients of journald and might block on it, which
+ would then dead lock. A tmpfiles.d(5) snippet included in
+ systemd will make sure the setgid bit and group are
+ properly set on the journal directory if it exists on every
+ boot. However, we recommend adjusting it manually after
+ upgrades too (or from RPM scriptlets), so that the change is
+ not delayed until next reboot.
+
+ * Backlight and random seed files in /var/lib/ have moved into
+ the /var/lib/systemd/ directory, in order to centralize all
+ systemd generated files in one directory.
+
+ * Boot time performance measurements (as displayed by
+ "systemd-analyze" for example) will now read ACPI 5.0 FPDT
+ performance information if that's available to determine how
+ much time BIOS and boot loader initialization required. With
+ a sufficiently new BIOS you hence no longer need to boot
+ with Gummiboot to get access to such information.
+
+ Contributions from: Andrey Borzenkov, Chen Jie, Colin Walters,
+ Cristian Rodríguez, Dave Reisner, David Herrmann, David
+ Mackey, David Strauss, Eelco Dolstra, Evan Callicoat, Gao
+ feng, Harald Hoyer, Jimmie Tauriainen, Kay Sievers, Lennart
+ Poettering, Lukas Nykryn, Mantas Mikulėnas, Martin Pitt,
+ Michael Scherer, Michał Górny, Mike Gilbert, Patrick McCarty,
+ Sebastian Ott, Tom Gundersen, Zbigniew Jędrzejewski-Szmek
+
+ — Berlin, 2013-10-02
+
+CHANGES WITH 207:
+
+ * The Restart= option for services now understands a new
+ on-watchdog setting, which will restart the service
+ automatically if the service stops sending out watchdog keep
+ alive messages (as configured with WatchdogSec=).
+
+ * The getty generator (which is responsible for bringing up a
+ getty on configured serial consoles) will no longer only
+ start a getty on the primary kernel console but on all
+ others, too. This makes the order in which console= is
+ specified on the kernel command line less important.
+
+ * libsystemd-logind gained a new sd_session_get_vt() call to
+ retrieve the VT number of a session.
+
+ * If the option "tries=0" is set for an entry of /etc/crypttab
+ its passphrase is queried indefinitely instead of any
+ maximum number of tries.
+
+ * If a service with a configure PID file terminates its PID
+ file will now be removed automatically if it still exists
+ afterwards. This should put an end to stale PID files.
+
+ * systemd-run will now also take relative binary path names
+ for execution and no longer insists on absolute paths.
+
+ * InaccessibleDirectories= and ReadOnlyDirectories= now take
+ paths that are optionally prefixed with "-" to indicate that
+ it should not be considered a failure if they do not exist.
+
+ * journalctl -o (and similar commands) now understands a new
+ output mode "short-precise", it is similar to "short" but
+ shows timestamps with usec accuracy.
+
+ * The option "discard" (as known from Debian) is now
+ synonymous to "allow-discards" in /etc/crypttab. In fact,
+ "discard" is preferred now (since it is easier to remember
+ and type).
+
+ * Some licensing clean-ups were made, so that more code is now
+ LGPL-2.1 licensed than before.
+
+ * A minimal tool to save/restore the display backlight
+ brightness across reboots has been added. It will store the
+ backlight setting as late as possible at shutdown, and
+ restore it as early as possible during reboot.
+
+ * A logic to automatically discover and enable home and swap
+ partitions on GPT disks has been added. With this in place
+ /etc/fstab becomes optional for many setups as systemd can
+ discover certain partitions located on the root disk
+ automatically. Home partitions are recognized under their
+ GPT type ID 933ac7e12eb44f13b8440e14e2aef915. Swap
+ partitions are recognized under their GPT type ID
+ 0657fd6da4ab43c484e50933c84b4f4f.
+
+ * systemd will no longer pass any environment from the kernel
+ or initrd to system services. If you want to set an
+ environment for all services, do so via the kernel command
+ line systemd.setenv= assignment.
+
+ * The systemd-sysctl tool no longer natively reads the file
+ /etc/sysctl.conf. If desired, the file should be symlinked
+ from /etc/sysctl.d/99-sysctl.conf. Apart from providing
+ legacy support by a symlink rather than built-in code, it
+ also makes the otherwise hidden order of application of the
+ different files visible. (Note that this partly reverts to a
+ pre-198 application order of sysctl knobs!)
+
+ * The "systemctl set-log-level" and "systemctl dump" commands
+ have been moved to systemd-analyze.
+
+ * systemd-run learned the new --remain-after-exit switch,
+ which causes the scope unit not to be cleaned up
+ automatically after the process terminated.
+
+ * tmpfiles learned a new --exclude-prefix= switch to exclude
+ certain paths from operation.
+
+ * journald will now automatically flush all messages to disk
+ as soon as a message at the log level CRIT, ALERT or EMERG
+ is received.
+
+ Contributions from: Andrew Cook, Brandon Philips, Christian
+ Hesse, Christoph Junghans, Colin Walters, Daniel Schaal,
+ Daniel Wallace, Dave Reisner, David Herrmann, Gao feng, George
+ McCollister, Giovanni Campagna, Hannes Reinecke, Harald Hoyer,
+ Herczeg Zsolt, Holger Hans Peter Freyther, Jan Engelhardt,
+ Jesper Larsen, Kay Sievers, Khem Raj, Lennart Poettering,
+ Lukas Nykryn, Maciej Wereski, Mantas Mikulėnas, Marcel
+ Holtmann, Martin Pitt, Michael Biebl, Michael Marineau,
+ Michael Scherer, Michael Stapelberg, Michal Sekletar, Michał
+ Górny, Olivier Brunel, Ondrej Balaz, Ronny Chevalier, Shawn
+ Landden, Steven Hiscocks, Thomas Bächler, Thomas Hindoe
+ Paaboel Andersen, Tom Gundersen, Umut Tezduyar, WANG Chao,
+ William Giokas, Zbigniew Jędrzejewski-Szmek
+
+ — Berlin, 2013-09-13
+
+CHANGES WITH 206:
+
+ * The documentation has been updated to cover the various new
+ concepts introduced with 205.
+
+ * Unit files now understand the new %v specifier which
+ resolves to the kernel version string as returned by "uname
+ -r".
+
+ * systemctl now supports filtering the unit list output by
+ load state, active state and sub state, using the new
+ --state= parameter.
+
+ * "systemctl status" will now show the results of the
+ condition checks (like ConditionPathExists= and similar) of
+ the last start attempts of the unit. They are also logged to
+ the journal.
+
+ * "journalctl -b" may now be used to look for boot output of a
+ specific boot. Try "journalctl -b -1" for the previous boot,
+ but the syntax is substantially more powerful.
+
+ * "journalctl --show-cursor" has been added which prints the
+ cursor string the last shown log line. This may then be used
+ with the new "journalctl --after-cursor=" switch to continue
+ browsing logs from that point on.
+
+ * "journalctl --force" may now be used to force regeneration
+ of an FSS key.
+
+ * Creation of "dead" device nodes has been moved from udev
+ into kmod and tmpfiles. Previously, udev would read the kmod
+ databases to pre-generate dead device nodes based on meta
+ information contained in kernel modules, so that these would
+ be auto-loaded on access rather then at boot. As this
+ does not really have much to do with the exposing actual
+ kernel devices to userspace this has always been slightly
+ alien in the udev codebase. Following the new scheme kmod
+ will now generate a runtime snippet for tmpfiles from the
+ module meta information and it now is tmpfiles' job to the
+ create the nodes. This also allows overriding access and
+ other parameters for the nodes using the usual tmpfiles
+ facilities. As side effect this allows us to remove the
+ CAP_SYS_MKNOD capability bit from udevd entirely.
+
+ * logind's device ACLs may now be applied to these "dead"
+ devices nodes too, thus finally allowing managed access to
+ devices such as /dev/snd/sequencer without loading the
+ backing module right-away.
+
+ * A new RPM macro has been added that may be used to apply
+ tmpfiles configuration during package installation.
+
+ * systemd-detect-virt and ConditionVirtualization= now can
+ detect User-Mode-Linux machines (UML).
+
+ * journald will now implicitly log the effective capabilities
+ set of processes in the message metadata.
+
+ * systemd-cryptsetup has gained support for TrueCrypt volumes.
+
+ * The initrd interface has been simplified (more specifically,
+ support for passing performance data via environment
+ variables and fsck results via files in /run has been
+ removed). These features were non-essential, and are
+ nowadays available in a much nicer way by having systemd in
+ the initrd serialize its state and have the hosts systemd
+ deserialize it again.
+
+ * The udev "keymap" data files and tools to apply keyboard
+ specific mappings of scan to key codes, and force-release
+ scan code lists have been entirely replaced by a udev
+ "keyboard" builtin and a hwdb data file.
+
+ * systemd will now honour the kernel's "quiet" command line
+ argument also during late shutdown, resulting in a
+ completely silent shutdown when used.
+
+ * There's now an option to control the SO_REUSEPORT socket
+ option in .socket units.
+
+ * Instance units will now automatically get a per-template
+ subslice of system.slice unless something else is explicitly
+ configured. For example, instances of sshd@.service will now
+ implicitly be placed in system-sshd.slice rather than
+ system.slice as before.
+
+ * Test coverage support may now be enabled at build time.
+
+ Contributions from: Dave Reisner, Frederic Crozat, Harald
+ Hoyer, Holger Hans Peter Freyther, Jan Engelhardt, Jan
+ Janssen, Jason St. John, Jesper Larsen, Kay Sievers, Lennart
+ Poettering, Lukas Nykryn, Maciej Wereski, Martin Pitt, Michael
+ Olbrich, Ramkumar Ramachandra, Ross Lagerwall, Shawn Landden,
+ Thomas H.P. Andersen, Tom Gundersen, Tomasz Torcz, William
+ Giokas, Zbigniew Jędrzejewski-Szmek
+
+ — Berlin, 2013-07-23
+
+CHANGES WITH 205:
+
+ * Two new unit types have been introduced:
+
+ Scope units are very similar to service units, however, are
+ created out of pre-existing processes — instead of PID 1
+ forking off the processes. By using scope units it is
+ possible for system services and applications to group their
+ own child processes (worker processes) in a powerful way
+ which then maybe used to organize them, or kill them
+ together, or apply resource limits on them.
+
+ Slice units may be used to partition system resources in an
+ hierarchical fashion and then assign other units to them. By
+ default there are now three slices: system.slice (for all
+ system services), user.slice (for all user sessions),
+ machine.slice (for VMs and containers).
+
+ Slices and scopes have been introduced primarily in
+ context of the work to move cgroup handling to a
+ single-writer scheme, where only PID 1
+ creates/removes/manages cgroups.
+
+ * There's a new concept of "transient" units. In contrast to
+ normal units these units are created via an API at runtime,
+ not from configuration from disk. More specifically this
+ means it is now possible to run arbitrary programs as
+ independent services, with all execution parameters passed
+ in via bus APIs rather than read from disk. Transient units
+ make systemd substantially more dynamic then it ever was,
+ and useful as a general batch manager.
+
+ * logind has been updated to make use of scope and slice units
+ for managing user sessions. As a user logs in he will get
+ his own private slice unit, to which all sessions are added
+ as scope units. We also added support for automatically
+ adding an instance of user@.service for the user into the
+ slice. Effectively logind will no longer create cgroup
+ hierarchies on its own now, it will defer entirely to PID 1
+ for this by means of scope, service and slice units. Since
+ user sessions this way become entities managed by PID 1
+ the output of "systemctl" is now a lot more comprehensive.
+
+ * A new mini-daemon "systemd-machined" has been added which
+ may be used by virtualization managers to register local
+ VMs/containers. nspawn has been updated accordingly, and
+ libvirt will be updated shortly. machined will collect a bit
+ of meta information about the VMs/containers, and assign
+ them their own scope unit (see above). The collected
+ meta-data is then made available via the "machinectl" tool,
+ and exposed in "ps" and similar tools. machined/machinectl
+ is compile-time optional.
+
+ * As discussed earlier, the low-level cgroup configuration
+ options ControlGroup=, ControlGroupModify=,
+ ControlGroupPersistent=, ControlGroupAttribute= have been
+ removed. Please use high-level attribute settings instead as
+ well as slice units.
+
+ * A new bus call SetUnitProperties() has been added to alter
+ various runtime parameters of a unit. This is primarily
+ useful to alter cgroup parameters dynamically in a nice way,
+ but will be extended later on to make more properties
+ modifiable at runtime. systemctl gained a new set-properties
+ command that wraps this call.
+
+ * A new tool "systemd-run" has been added which can be used to
+ run arbitrary command lines as transient services or scopes,
+ while configuring a number of settings via the command
+ line. This tool is currently very basic, however already
+ very useful. We plan to extend this tool to even allow
+ queuing of execution jobs with time triggers from the
+ command line, similar in fashion to "at".
+
+ * nspawn will now inform the user explicitly that kernels with
+ audit enabled break containers, and suggest the user to turn
+ off audit.
+
+ * Support for detecting the IMA and AppArmor security
+ frameworks with ConditionSecurity= has been added.
+
+ * journalctl gained a new "-k" switch for showing only kernel
+ messages, mimicking dmesg output; in addition to "--user"
+ and "--system" switches for showing only user's own logs
+ and system logs.
+
+ * systemd-delta can now show information about drop-in
+ snippets extending unit files.
+
+ * libsystemd-bus has been substantially updated but is still
+ not available as public API.
+
+ * systemd will now look for the "debug" argument on the kernel
+ command line and enable debug logging, similar to what
+ "systemd.log_level=debug" already did before.
+
+ * "systemctl set-default", "systemctl get-default" has been
+ added to configure the default.target symlink, which
+ controls what to boot into by default.
+
+ * "systemctl set-log-level" has been added as a convenient
+ way to raise and lower systemd logging threshold.
+
+ * "systemd-analyze plot" will now show the time the various
+ generators needed for execution, as well as information
+ about the unit file loading.
+
+ * libsystemd-journal gained a new sd_journal_open_files() call
+ for opening specific journal files. journactl also gained a
+ new switch to expose this new functionality. Previously we
+ only supported opening all files from a directory, or all
+ files from the system, as opening individual files only is
+ racy due to journal file rotation.
+
+ * systemd gained the new DefaultEnvironment= setting in
+ /etc/systemd/system.conf to set environment variables for
+ all services.
+
+ * If a privileged process logs a journal message with the
+ OBJECT_PID= field set, then journald will automatically
+ augment this with additional OBJECT_UID=, OBJECT_GID=,
+ OBJECT_COMM=, OBJECT_EXE=, … fields. This is useful if
+ system services want to log events about specific client
+ processes. journactl/systemctl has been updated to make use
+ of this information if all log messages regarding a specific
+ unit is requested.
+
+ Contributions from: Auke Kok, Chengwei Yang, Colin Walters,
+ Cristian Rodríguez, Daniel Albers, Daniel Wallace, Dave
+ Reisner, David Coppa, David King, David Strauss, Eelco
+ Dolstra, Gabriel de Perthuis, Harald Hoyer, Jan Alexander
+ Steffens, Jan Engelhardt, Jan Janssen, Jason St. John, Johan
+ Heikkilä, Karel Zak, Karol Lewandowski, Kay Sievers, Lennart
+ Poettering, Lukas Nykryn, Mantas Mikulėnas, Marius Vollmer,
+ Martin Pitt, Michael Biebl, Michael Olbrich, Michael Tremer,
+ Michal Schmidt, Michał Bartoszkiewicz, Nirbheek Chauhan,
+ Pierre Neidhardt, Ross Burton, Ross Lagerwall, Sean McGovern,
+ Thomas Hindoe Paaboel Andersen, Tom Gundersen, Umut Tezduyar,
+ Václav Pavlín, Zachary Cook, Zbigniew Jędrzejewski-Szmek,
+ Łukasz Stelmach, 장동준
+
+CHANGES WITH 204:
+
+ * The Python bindings gained some minimal support for the APIs
+ exposed by libsystemd-logind.
+
+ * ConditionSecurity= gained support for detecting SMACK. Since
+ this condition already supports SELinux and AppArmor we only
+ miss IMA for this. Patches welcome!
+
+ Contributions from: Karol Lewandowski, Lennart Poettering,
+ Zbigniew Jędrzejewski-Szmek
+
+CHANGES WITH 203:
+
+ * systemd-nspawn will now create /etc/resolv.conf if
+ necessary, before bind-mounting the host's file onto it.
+
+ * systemd-nspawn will now store meta information about a
+ container on the container's cgroup as extended attribute
+ fields, including the root directory.
+
+ * The cgroup hierarchy has been reworked in many ways. All
+ objects any of the components systemd creates in the cgroup
+ tree are now suffixed. More specifically, user sessions are
+ now placed in cgroups suffixed with ".session", users in
+ cgroups suffixed with ".user", and nspawn containers in
+ cgroups suffixed with ".nspawn". Furthermore, all cgroup
+ names are now escaped in a simple scheme to avoid collision
+ of userspace object names with kernel filenames. This work
+ is preparation for making these objects relocatable in the
+ cgroup tree, in order to allow easy resource partitioning of
+ these objects without causing naming conflicts.
+
+ * systemctl list-dependencies gained the new switches
+ --plain, --reverse, --after and --before.
+
+ * systemd-inhibit now shows the process name of processes that
+ have taken an inhibitor lock.
+
+ * nss-myhostname will now also resolve "localhost"
+ implicitly. This makes /etc/hosts an optional file and
+ nicely handles that on IPv6 ::1 maps to both "localhost" and
+ the local hostname.
+
+ * libsystemd-logind.so gained a new call
+ sd_get_machine_names() to enumerate running containers and
+ VMs (currently only supported by very new libvirt and
+ nspawn). sd_login_monitor can now be used to watch
+ VMs/containers coming and going.
+
+ * .include is not allowed recursively anymore, and only in
+ unit files. Usually it is better to use drop-in snippets in
+ .d/*.conf anyway, as introduced with systemd 198.
+
+ * systemd-analyze gained a new "critical-chain" command that
+ determines the slowest chain of units run during system
+ boot-up. It is very useful for tracking down where
+ optimizing boot time is the most beneficial.
+
+ * systemd will no longer allow manipulating service paths in
+ the name=systemd:/system cgroup tree using ControlGroup= in
+ units. (But is still fine with it in all other dirs.)
+
+ * There's a new systemd-nspawn@.service service file that may
+ be used to easily run nspawn containers as system
+ services. With the container's root directory in
+ /var/lib/container/foobar it is now sufficient to run
+ "systemctl start systemd-nspawn@foobar.service" to boot it.
+
+ * systemd-cgls gained a new parameter "--machine" to list only
+ the processes within a certain container.
+
+ * ConditionSecurity= now can check for "apparmor". We still
+ are lacking checks for SMACK and IMA for this condition
+ check though. Patches welcome!
+
+ * A new configuration file /etc/systemd/sleep.conf has been
+ added that may be used to configure which kernel operation
+ systemd is supposed to execute when "suspend", "hibernate"
+ or "hybrid-sleep" is requested. This makes the new kernel
+ "freeze" state accessible to the user.
+
+ * ENV{SYSTEMD_WANTS} in udev rules will now implicitly escape
+ the passed argument if applicable.
+
+ Contributions from: Auke Kok, Colin Guthrie, Colin Walters,
+ Cristian Rodríguez, Daniel Buch, Daniel Wallace, Dave Reisner,
+ Evangelos Foutras, Greg Kroah-Hartman, Harald Hoyer, Josh
+ Triplett, Kay Sievers, Lennart Poettering, Lukas Nykryn,
+ MUNEDA Takahiro, Mantas Mikulėnas, Mirco Tischler, Nathaniel
+ Chen, Nirbheek Chauhan, Ronny Chevalier, Ross Lagerwall, Tom
+ Gundersen, Umut Tezduyar, Ville Skyttä, Zbigniew
+ Jędrzejewski-Szmek
+
+CHANGES WITH 202:
+
+ * The output of 'systemctl list-jobs' got some polishing. The
+ '--type=' argument may now be passed more than once. A new
+ command 'systemctl list-sockets' has been added which shows
+ a list of kernel sockets systemd is listening on with the
+ socket units they belong to, plus the units these socket
+ units activate.
+
+ * The experimental libsystemd-bus library got substantial
+ updates to work in conjunction with the (also experimental)
+ kdbus kernel project. It works well enough to exchange
+ messages with some sophistication. Note that kdbus is not
+ ready yet, and the library is mostly an elaborate test case
+ for now, and not installable.
+
+ * systemd gained a new unit 'systemd-static-nodes.service'
+ that generates static device nodes earlier during boot, and
+ can run in conjunction with udev.
+
+ * libsystemd-login gained a new call sd_pid_get_user_unit()
+ to retrieve the user systemd unit a process is running
+ in. This is useful for systems where systemd is used as
+ session manager.
+
+ * systemd-nspawn now places all containers in the new /machine
+ top-level cgroup directory in the name=systemd
+ hierarchy. libvirt will soon do the same, so that we get a
+ uniform separation of /system, /user and /machine for system
+ services, user processes and containers/virtual
+ machines. This new cgroup hierarchy is also useful to stick
+ stable names to specific container instances, which can be
+ recognized later this way (this name may be controlled
+ via systemd-nspawn's new -M switch). libsystemd-login also
+ gained a new call sd_pid_get_machine_name() to retrieve the
+ name of the container/VM a specific process belongs to.
+
+ * bootchart can now store its data in the journal.
+
+ * libsystemd-journal gained a new call
+ sd_journal_add_conjunction() for AND expressions to the
+ matching logic. This can be used to express more complex
+ logical expressions.
+
+ * journactl can now take multiple --unit= and --user-unit=
+ switches.
+
+ * The cryptsetup logic now understands the "luks.key=" kernel
+ command line switch for specifying a file to read the
+ decryption key from. Also, if a configured key file is not
+ found the tool will now automatically fall back to prompting
+ the user.
+
+ * Python systemd.journal module was updated to wrap recently
+ added functions from libsystemd-journal. The interface was
+ changed to bring the low level interface in s.j._Reader
+ closer to the C API, and the high level interface in
+ s.j.Reader was updated to wrap and convert all data about
+ an entry.
+
+ Contributions from: Anatol Pomozov, Auke Kok, Harald Hoyer,
+ Henrik Grindal Bakken, Josh Triplett, Kay Sievers, Lennart
+ Poettering, Lukas Nykryn, Mantas Mikulėnas Marius Vollmer,
+ Martin Jansa, Martin Pitt, Michael Biebl, Michal Schmidt,
+ Mirco Tischler, Pali Rohar, Simon Peeters, Steven Hiscocks,
+ Tom Gundersen, Zbigniew Jędrzejewski-Szmek
+
+CHANGES WITH 201:
+
+ * journalctl --update-catalog now understands a new --root=
+ option to operate on catalogs found in a different root
+ directory.
+
+ * During shutdown after systemd has terminated all running
+ services a final killing loop kills all remaining left-over
+ processes. We will now print the name of these processes
+ when we send SIGKILL to them, since this usually indicates a
+ problem.
+
+ * If /etc/crypttab refers to password files stored on
+ configured mount points automatic dependencies will now be
+ generated to ensure the specific mount is established first
+ before the key file is attempted to be read.
+
+ * 'systemctl status' will now show information about the
+ network sockets a socket unit is listening on.
+
+ * 'systemctl status' will also shown information about any
+ drop-in configuration file for units. (Drop-In configuration
+ files in this context are files such as
+ /etc/systemd/system/foobar.service.d/*.conf)
+
+ * systemd-cgtop now optionally shows summed up CPU times of
+ cgroups. Press '%' while running cgtop to switch between
+ percentage and absolute mode. This is useful to determine
+ which cgroups use up the most CPU time over the entire
+ runtime of the system. systemd-cgtop has also been updated
+ to be 'pipeable' for processing with further shell tools.
+
+ * 'hostnamectl set-hostname' will now allow setting of FQDN
+ hostnames.
+
+ * The formatting and parsing of time span values has been
+ changed. The parser now understands fractional expressions
+ such as "5.5h". The formatter will now output fractional
+ expressions for all time spans under 1min, i.e. "5.123456s"
+ rather than "5s 123ms 456us". For time spans under 1s
+ millisecond values are shown, for those under 1ms
+ microsecond values are shown. This should greatly improve
+ all time-related output of systemd.
+
+ * libsystemd-login and libsystemd-journal gained new
+ functions for querying the poll() events mask and poll()
+ timeout value for integration into arbitrary event
+ loops.
+
+ * localectl gained the ability to list available X11 keymaps
+ (models, layouts, variants, options).
+
+ * 'systemd-analyze dot' gained the ability to filter for
+ specific units via shell-style globs, to create smaller,
+ more useful graphs. I.e. it is now possible to create simple
+ graphs of all the dependencies between only target units, or
+ of all units that Avahi has dependencies with.
+
+ Contributions from: Cristian Rodríguez, Dr. Tilmann Bubeck,
+ Harald Hoyer, Holger Hans Peter Freyther, Kay Sievers, Kelly
+ Anderson, Koen Kooi, Lennart Poettering, Maksim Melnikau,
+ Marc-Antoine Perennou, Marius Vollmer, Martin Pitt, Michal
+ Schmidt, Oleksii Shevchuk, Ronny Chevalier, Simon McVittie,
+ Steven Hiscocks, Thomas Weißschuh, Umut Tezduyar, Václav
+ Pavlín, Zbigniew Jędrzejewski-Szmek, Łukasz Stelmach
+
+CHANGES WITH 200:
+
+ * The boot-time readahead implementation for rotating media
+ will now read the read-ahead data in multiple passes which
+ consist of all read requests made in equidistant time
+ intervals. This means instead of strictly reading read-ahead
+ data in its physical order on disk we now try to find a
+ middle ground between physical and access time order.
+
+ * /etc/os-release files gained a new BUILD_ID= field for usage
+ on operating systems that provide continuous builds of OS
+ images.
+
+ Contributions from: Auke Kok, Eelco Dolstra, Kay Sievers,
+ Lennart Poettering, Lukas Nykryn, Martin Pitt, Václav Pavlín
+ William Douglas, Zbigniew Jędrzejewski-Szmek
+
+CHANGES WITH 199:
+
+ * systemd-python gained an API exposing libsystemd-daemon.
+
+ * The SMACK setup logic gained support for uploading CIPSO
+ security policy.
+
+ * Behaviour of PrivateTmp=, ReadWriteDirectories=,
+ ReadOnlyDirectories= and InaccessibleDirectories= has
+ changed. The private /tmp and /var/tmp directories are now
+ shared by all processes of a service (which means
+ ExecStartPre= may now leave data in /tmp that ExecStart= of
+ the same service can still access). When a service is
+ stopped its temporary directories are immediately deleted
+ (normal clean-up with tmpfiles is still done in addition to
+ this though).
+
+ * By default, systemd will now set a couple of sysctl
+ variables in the kernel: the safe sysrq options are turned
+ on, IP route verification is turned on, and source routing
+ disabled. The recently added hardlink and softlink
+ protection of the kernel is turned on. These settings should
+ be reasonably safe, and good defaults for all new systems.
+
+ * The predictable network naming logic may now be turned off
+ with a new kernel command line switch: net.ifnames=0.
+
+ * A new libsystemd-bus module has been added that implements a
+ pretty complete D-Bus client library. For details see:
+
+ https://lists.freedesktop.org/archives/systemd-devel/2013-March/009797.html
+
+ * journald will now explicitly flush the journal files to disk
+ at the latest 5min after each write. The file will then also
+ be marked offline until the next write. This should increase
+ reliability in case of a crash. The synchronization delay
+ can be configured via SyncIntervalSec= in journald.conf.
+
+ * There's a new remote-fs-setup.target unit that can be used
+ to pull in specific services when at least one remote file
+ system is to be mounted.
+
+ * There are new targets timers.target and paths.target as
+ canonical targets to pull user timer and path units in
+ from. This complements sockets.target with a similar
+ purpose for socket units.
+
+ * libudev gained a new call udev_device_set_attribute_value()
+ to set sysfs attributes of a device.
+
+ * The udev daemon now sets the default number of worker
+ processes executed in parallel based on the number of available
+ CPUs instead of the amount of available RAM. This is supposed
+ to provide a more reliable default and limit a too aggressive
+ parallelism for setups with 1000s of devices connected.
+
+ Contributions from: Auke Kok, Colin Walters, Cristian
+ Rodríguez, Daniel Buch, Dave Reisner, Frederic Crozat, Hannes
+ Reinecke, Harald Hoyer, Jan Alexander Steffens, Jan
+ Engelhardt, Josh Triplett, Kay Sievers, Lennart Poettering,
+ Mantas Mikulėnas, Martin Pitt, Mathieu Bridon, Michael Biebl,
+ Michal Schmidt, Michal Sekletar, Miklos Vajna, Nathaniel Chen,
+ Oleksii Shevchuk, Ozan Çağlayan, Thomas Hindoe Paaboel
+ Andersen, Tollef Fog Heen, Tom Gundersen, Umut Tezduyar,
+ Zbigniew Jędrzejewski-Szmek
+
+CHANGES WITH 198:
+
+ * Configuration of unit files may now be extended via drop-in
+ files without having to edit/override the unit files
+ themselves. More specifically, if the administrator wants to
+ change one value for a service file foobar.service he can
+ now do so by dropping in a configuration snippet into
+ /etc/systemd/system/foobar.service.d/*.conf. The unit logic
+ will load all these snippets and apply them on top of the
+ main unit configuration file, possibly extending or
+ overriding its settings. Using these drop-in snippets is
+ generally nicer than the two earlier options for changing
+ unit files locally: copying the files from
+ /usr/lib/systemd/system/ to /etc/systemd/system/ and editing
+ them there; or creating a new file in /etc/systemd/system/
+ that incorporates the original one via ".include". Drop-in
+ snippets into these .d/ directories can be placed in any
+ directory systemd looks for units in, and the usual
+ overriding semantics between /usr/lib, /etc and /run apply
+ for them too.
+
+ * Most unit file settings which take lists of items can now be
+ reset by assigning the empty string to them. For example,
+ normally, settings such as Environment=FOO=BAR append a new
+ environment variable assignment to the environment block,
+ each time they are used. By assigning Environment= the empty
+ string the environment block can be reset to empty. This is
+ particularly useful with the .d/*.conf drop-in snippets
+ mentioned above, since this adds the ability to reset list
+ settings from vendor unit files via these drop-ins.
+
+ * systemctl gained a new "list-dependencies" command for
+ listing the dependencies of a unit recursively.
+
+ * Inhibitors are now honored and listed by "systemctl
+ suspend", "systemctl poweroff" (and similar) too, not only
+ GNOME. These commands will also list active sessions by
+ other users.
+
+ * Resource limits (as exposed by the various control group
+ controllers) can now be controlled dynamically at runtime
+ for all units. More specifically, you can now use a command
+ like "systemctl set-cgroup-attr foobar.service cpu.shares
+ 2000" to alter the CPU shares a specific service gets. These
+ settings are stored persistently on disk, and thus allow the
+ administrator to easily adjust the resource usage of
+ services with a few simple commands. This dynamic resource
+ management logic is also available to other programs via the
+ bus. Almost any kernel cgroup attribute and controller is
+ supported.
+
+ * systemd-vconsole-setup will now copy all font settings to
+ all allocated VTs, where it previously applied them only to
+ the foreground VT.
+
+ * libsystemd-login gained the new sd_session_get_tty() API
+ call.
+
+ * This release drops support for a few legacy or
+ distribution-specific LSB facility names when parsing init
+ scripts: $x-display-manager, $mail-transfer-agent,
+ $mail-transport-agent, $mail-transfer-agent, $smtp,
+ $null. Also, the mail-transfer-agent.target unit backing
+ this has been removed. Distributions which want to retain
+ compatibility with this should carry the burden for
+ supporting this themselves and patch support for these back
+ in, if they really need to. Also, the facilities $syslog and
+ $local_fs are now ignored, since systemd does not support
+ early-boot LSB init scripts anymore, and these facilities
+ are implied anyway for normal services. syslog.target has
+ also been removed.
+
+ * There are new bus calls on PID1's Manager object for
+ cancelling jobs, and removing snapshot units. Previously,
+ both calls were only available on the Job and Snapshot
+ objects themselves.
+
+ * systemd-journal-gatewayd gained SSL support.
+
+ * The various "environment" files, such as /etc/locale.conf
+ now support continuation lines with a backslash ("\") as
+ last character in the line, similarly in style (but different)
+ to how this is supported in shells.
+
+ * For normal user processes the _SYSTEMD_USER_UNIT= field is
+ now implicitly appended to every log entry logged. systemctl
+ has been updated to filter by this field when operating on a
+ user systemd instance.
+
+ * nspawn will now implicitly add the CAP_AUDIT_WRITE and
+ CAP_AUDIT_CONTROL capabilities to the capabilities set for
+ the container. This makes it easier to boot unmodified
+ Fedora systems in a container, which however still requires
+ audit=0 to be passed on the kernel command line. Auditing in
+ kernel and userspace is unfortunately still too broken in
+ context of containers, hence we recommend compiling it out
+ of the kernel or using audit=0. Hopefully this will be fixed
+ one day for good in the kernel.
+
+ * nspawn gained the new --bind= and --bind-ro= parameters to
+ bind mount specific directories from the host into the
+ container.
+
+ * nspawn will now mount its own devpts file system instance
+ into the container, in order not to leak pty devices from
+ the host into the container.
+
+ * systemd will now read the firmware boot time performance
+ information from the EFI variables, if the used boot loader
+ supports this, and takes it into account for boot performance
+ analysis via "systemd-analyze". This is currently supported
+ only in conjunction with Gummiboot, but could be supported
+ by other boot loaders too. For details see:
+
+ https://systemd.io/BOOT_LOADER_INTERFACE
+
+ * A new generator has been added that automatically mounts the
+ EFI System Partition (ESP) to /boot, if that directory
+ exists, is empty, and no other file system has been
+ configured to be mounted there.
+
+ * logind will now send out PrepareForSleep(false) out
+ unconditionally, after coming back from suspend. This may be
+ used by applications as asynchronous notification for
+ system resume events.
+
+ * "systemctl unlock-sessions" has been added, that allows
+ unlocking the screens of all user sessions at once, similar
+ to how "systemctl lock-sessions" already locked all users
+ sessions. This is backed by a new D-Bus call UnlockSessions().
+
+ * "loginctl seat-status" will now show the master device of a
+ seat. (i.e. the device of a seat that needs to be around for
+ the seat to be considered available, usually the graphics
+ card).
+
+ * tmpfiles gained a new "X" line type, that allows
+ configuration of files and directories (with wildcards) that
+ shall be excluded from automatic cleanup ("aging").
+
+ * udev default rules set the device node permissions now only
+ at "add" events, and do not change them any longer with a
+ later "change" event.
+
+ * The log messages for lid events and power/sleep keypresses
+ now carry a message ID.
+
+ * We now have a substantially larger unit test suite, but this
+ continues to be work in progress.
+
+ * udevadm hwdb gained a new --root= parameter to change the
+ root directory to operate relative to.
+
+ * logind will now issue a background sync() request to the kernel
+ early at shutdown, so that dirty buffers are flushed to disk early
+ instead of at the last moment, in order to optimize shutdown
+ times a little.
+
+ * A new bootctl tool has been added that is an interface for
+ certain boot loader operations. This is currently a preview
+ and is likely to be extended into a small mechanism daemon
+ like timedated, localed, hostnamed, and can be used by
+ graphical UIs to enumerate available boot options, and
+ request boot into firmware operations.
+
+ * systemd-bootchart has been relicensed to LGPLv2.1+ to match
+ the rest of the package. It also has been updated to work
+ correctly in initrds.
+
+ * polkit previously has been runtime optional, and is now also
+ compile time optional via a configure switch.
+
+ * systemd-analyze has been reimplemented in C. Also "systemctl
+ dot" has moved into systemd-analyze.
+
+ * "systemctl status" with no further parameters will now print
+ the status of all active or failed units.
+
+ * Operations such as "systemctl start" can now be executed
+ with a new mode "--irreversible" which may be used to queue
+ operations that cannot accidentally be reversed by a later
+ job queuing. This is by default used to make shutdown
+ requests more robust.
+
+ * The Python API of systemd now gained a new module for
+ reading journal files.
+
+ * A new tool kernel-install has been added that can install
+ kernel images according to the Boot Loader Specification:
+
+ https://systemd.io/BOOT_LOADER_SPECIFICATION
+
+ * Boot time console output has been improved to provide
+ animated boot time output for hanging jobs.
+
+ * A new tool systemd-activate has been added which can be used
+ to test socket activation with, directly from the command
+ line. This should make it much easier to test and debug
+ socket activation in daemons.
+
+ * journalctl gained a new "--reverse" (or -r) option to show
+ journal output in reverse order (i.e. newest line first).
+
+ * journalctl gained a new "--pager-end" (or -e) option to jump
+ to immediately jump to the end of the journal in the
+ pager. This is only supported in conjunction with "less".
+
+ * journalctl gained a new "--user-unit=" option, that works
+ similarly to "--unit=" but filters for user units rather than
+ system units.
+
+ * A number of unit files to ease adoption of systemd in
+ initrds has been added. This moves some minimal logic from
+ the various initrd implementations into systemd proper.
+
+ * The journal files are now owned by a new group
+ "systemd-journal", which exists specifically to allow access
+ to the journal, and nothing else. Previously, we used the
+ "adm" group for that, which however possibly covers more
+ than just journal/log file access. This new group is now
+ already used by systemd-journal-gatewayd to ensure this
+ daemon gets access to the journal files and as little else
+ as possible. Note that "make install" will also set FS ACLs
+ up for /var/log/journal to give "adm" and "wheel" read
+ access to it, in addition to "systemd-journal" which owns
+ the journal files. We recommend that packaging scripts also
+ add read access to "adm" + "wheel" to /var/log/journal, and
+ all existing/future journal files. To normal users and
+ administrators little changes, however packagers need to
+ ensure to create the "systemd-journal" system group at
+ package installation time.
+
+ * The systemd-journal-gatewayd now runs as unprivileged user
+ systemd-journal-gateway:systemd-journal-gateway. Packaging
+ scripts need to create these system user/group at
+ installation time.
+
+ * timedated now exposes a new boolean property CanNTP that
+ indicates whether a local NTP service is available or not.
+
+ * systemd-detect-virt will now also detect xen PVs
+
+ * The pstore file system is now mounted by default, if it is
+ available.
+
+ * In addition to the SELinux and IMA policies we will now also
+ load SMACK policies at early boot.
+
+ Contributions from: Adel Gadllah, Aleksander Morgado, Auke
+ Kok, Ayan George, Bastien Nocera, Colin Walters, Daniel Buch,
+ Daniel Wallace, Dave Reisner, David Herrmann, David Strauss,
+ Eelco Dolstra, Enrico Scholz, Frederic Crozat, Harald Hoyer,
+ Jan Janssen, Jonathan Callen, Kay Sievers, Lennart Poettering,
+ Lukas Nykryn, Mantas Mikulėnas, Marc-Antoine Perennou, Martin
+ Pitt, Mauro Dreissig, Max F. Albrecht, Michael Biebl, Michael
+ Olbrich, Michal Schmidt, Michal Sekletar, Michal Vyskocil,
+ Michał Bartoszkiewicz, Mirco Tischler, Nathaniel Chen, Nestor
+ Ovroy, Oleksii Shevchuk, Paul W. Frields, Piotr Drąg, Rob
+ Clark, Ryan Lortie, Simon McVittie, Simon Peeters, Steven
+ Hiscocks, Thomas Hindoe Paaboel Andersen, Tollef Fog Heen, Tom
+ Gundersen, Umut Tezduyar, William Giokas, Zbigniew
+ Jędrzejewski-Szmek, Zeeshan Ali (Khattak)
+
+CHANGES WITH 197:
+
+ * Timer units now support calendar time events in addition to
+ monotonic time events. That means you can now trigger a unit
+ based on a calendar time specification such as "Thu,Fri
+ 2013-*-1,5 11:12:13" which refers to 11:12:13 of the first
+ or fifth day of any month of the year 2013, given that it is
+ a Thursday or a Friday. This brings timer event support
+ considerably closer to cron's capabilities. For details on
+ the supported calendar time specification language see
+ systemd.time(7).
+
+ * udev now supports a number of different naming policies for
+ network interfaces for predictable names, and a combination
+ of these policies is now the default. Please see this wiki
+ document for details:
+
+ https://www.freedesktop.org/software/systemd/man/systemd.net-naming-scheme.html
+
+ * Auke Kok's bootchart implementation has been added to the
+ systemd tree. It is an optional component that can graph the
+ boot in quite some detail. It is one of the best bootchart
+ implementations around and minimal in its code and
+ dependencies.
+
+ * nss-myhostname has been integrated into the systemd source
+ tree. nss-myhostname guarantees that the local hostname
+ always stays resolvable via NSS. It has been a weak
+ requirement of systemd-hostnamed since a long time, and
+ since its code is actually trivial we decided to just
+ include it in systemd's source tree. It can be turned off
+ with a configure switch.
+
+ * The read-ahead logic is now capable of properly detecting
+ whether a btrfs file system is on SSD or rotating media, in
+ order to optimize the read-ahead scheme. Previously, it was
+ only capable of detecting this on traditional file systems
+ such as ext4.
+
+ * In udev, additional device properties are now read from the
+ IAB in addition to the OUI database. Also, Bluetooth company
+ identities are attached to the devices as well.
+
+ * In service files %U may be used as specifier that is
+ replaced by the configured user name of the service.
+
+ * nspawn may now be invoked without a controlling TTY. This
+ makes it suitable for invocation as its own service. This
+ may be used to set up a simple containerized server system
+ using only core OS tools.
+
+ * systemd and nspawn can now accept socket file descriptors
+ when they are started for socket activation. This enables
+ implementation of socket activated nspawn
+ containers. i.e. think about autospawning an entire OS image
+ when the first SSH or HTTP connection is received. We expect
+ that similar functionality will also be added to libvirt-lxc
+ eventually.
+
+ * journalctl will now suppress ANSI color codes when
+ presenting log data.
+
+ * systemctl will no longer show control group information for
+ a unit if the control group is empty anyway.
+
+ * logind can now automatically suspend/hibernate/shutdown the
+ system on idle.
+
+ * /etc/machine-info and hostnamed now also expose the chassis
+ type of the system. This can be used to determine whether
+ the local system is a laptop, desktop, handset or
+ tablet. This information may either be configured by the
+ user/vendor or is automatically determined from ACPI and DMI
+ information if possible.
+
+ * A number of polkit actions are now bound together with "imply"
+ rules. This should simplify creating UIs because many actions
+ will now authenticate similar ones as well.
+
+ * Unit files learnt a new condition ConditionACPower= which
+ may be used to conditionalize a unit depending on whether an
+ AC power source is connected or not, of whether the system
+ is running on battery power.
+
+ * systemctl gained a new "is-failed" verb that may be used in
+ shell scripts and suchlike to check whether a specific unit
+ is in the "failed" state.
+
+ * The EnvironmentFile= setting in unit files now supports file
+ globbing, and can hence be used to easily read a number of
+ environment files at once.
+
+ * systemd will no longer detect and recognize specific
+ distributions. All distribution-specific #ifdeffery has been
+ removed, systemd is now fully generic and
+ distribution-agnostic. Effectively, not too much is lost as
+ a lot of the code is still accessible via explicit configure
+ switches. However, support for some distribution specific
+ legacy configuration file formats has been dropped. We
+ recommend distributions to simply adopt the configuration
+ files everybody else uses now and convert the old
+ configuration from packaging scripts. Most distributions
+ already did that. If that's not possible or desirable,
+ distributions are welcome to forward port the specific
+ pieces of code locally from the git history.
+
+ * When logging a message about a unit systemd will now always
+ log the unit name in the message meta data.
+
+ * localectl will now also discover system locale data that is
+ not stored in locale archives, but directly unpacked.
+
+ * logind will no longer unconditionally use framebuffer
+ devices as seat masters, i.e. as devices that are required
+ to be existing before a seat is considered preset. Instead,
+ it will now look for all devices that are tagged as
+ "seat-master" in udev. By default, framebuffer devices will
+ be marked as such, but depending on local systems, other
+ devices might be marked as well. This may be used to
+ integrate graphics cards using closed source drivers (such
+ as NVidia ones) more nicely into logind. Note however, that
+ we recommend using the open source NVidia drivers instead,
+ and no udev rules for the closed-source drivers will be
+ shipped from us upstream.
+
+ Contributions from: Adam Williamson, Alessandro Crismani, Auke
+ Kok, Colin Walters, Daniel Wallace, Dave Reisner, David
+ Herrmann, David Strauss, Dimitrios Apostolou, Eelco Dolstra,
+ Eric Benoit, Giovanni Campagna, Hannes Reinecke, Henrik
+ Grindal Bakken, Hermann Gausterer, Kay Sievers, Lennart
+ Poettering, Lukas Nykryn, Mantas Mikulėnas, Marcel Holtmann,
+ Martin Pitt, Matthew Monaco, Michael Biebl, Michael Terry,
+ Michal Schmidt, Michal Sekletar, Michał Bartoszkiewicz, Oleg
+ Samarin, Pekka Lundstrom, Philip Nilsson, Ramkumar
+ Ramachandra, Richard Yao, Robert Millan, Sami Kerola, Shawn
+ Landden, Thomas Hindoe Paaboel Andersen, Thomas Jarosch,
+ Tollef Fog Heen, Tom Gundersen, Umut Tezduyar, Zbigniew
+ Jędrzejewski-Szmek
+
+CHANGES WITH 196:
+
+ * udev gained support for loading additional device properties
+ from an indexed database that is keyed by vendor/product IDs
+ and similar device identifiers. For the beginning this
+ "hwdb" is populated with data from the well-known PCI and
+ USB database, but also includes PNP, ACPI and OID data. In
+ the longer run this indexed database shall grow into
+ becoming the one central database for non-essential
+ userspace device metadata. Previously, data from the PCI/USB
+ database was only attached to select devices, since the
+ lookup was a relatively expensive operation due to O(n) time
+ complexity (with n being the number of entries in the
+ database). Since this is now O(1), we decided to add in this
+ data for all devices where this is available, by
+ default. Note that the indexed database needs to be rebuilt
+ when new data files are installed. To achieve this you need
+ to update your packaging scripts to invoke "udevadm hwdb
+ --update" after installation of hwdb data files. For
+ RPM-based distributions we introduced the new
+ %udev_hwdb_update macro for this purpose.
+
+ * The Journal gained support for the "Message Catalog", an
+ indexed database to link up additional information with
+ journal entries. For further details please check:
+
+ https://www.freedesktop.org/wiki/Software/systemd/catalog
+
+ The indexed message catalog database also needs to be
+ rebuilt after installation of message catalog files. Use
+ "journalctl --update-catalog" for this. For RPM-based
+ distributions we introduced the %journal_catalog_update
+ macro for this purpose.
+
+ * The Python Journal bindings gained support for the standard
+ Python logging framework.
+
+ * The Journal API gained new functions for checking whether
+ the underlying file system of a journal file is capable of
+ properly reporting file change notifications, or whether
+ applications that want to reflect journal changes "live"
+ need to recheck journal files continuously in appropriate
+ time intervals.
+
+ * It is now possible to set the "age" field for tmpfiles
+ entries to 0, indicating that files matching this entry
+ shall always be removed when the directories are cleaned up.
+
+ * coredumpctl gained a new "gdb" verb which invokes gdb
+ right-away on the selected coredump.
+
+ * There's now support for "hybrid sleep" on kernels that
+ support this, in addition to "suspend" and "hibernate". Use
+ "systemctl hybrid-sleep" to make use of this.
+
+ * logind's HandleSuspendKey= setting (and related settings)
+ now gained support for a new "lock" setting to simply
+ request the screen lock on all local sessions, instead of
+ actually executing a suspend or hibernation.
+
+ * systemd will now mount the EFI variables file system by
+ default.
+
+ * Socket units now gained support for configuration of the
+ SMACK security label.
+
+ * timedatectl will now output the time of the last and next
+ daylight saving change.
+
+ * We dropped support for various legacy and distro-specific
+ concepts, such as insserv, early-boot SysV services
+ (i.e. those for non-standard runlevels such as 'b' or 'S')
+ or ArchLinux /etc/rc.conf support. We recommend the
+ distributions who still need support this to either continue
+ to maintain the necessary patches downstream, or find a
+ different solution. (Talk to us if you have questions!)
+
+ * Various systemd components will now bypass polkit checks for
+ root and otherwise handle properly if polkit is not found to
+ be around. This should fix most issues for polkit-less
+ systems. Quite frankly this should have been this way since
+ day one. It is absolutely our intention to make systemd work
+ fine on polkit-less systems, and we consider it a bug if
+ something does not work as it should if polkit is not around.
+
+ * For embedded systems it is now possible to build udev and
+ systemd without blkid and/or kmod support.
+
+ * "systemctl switch-root" is now capable of switching root
+ more than once. I.e. in addition to transitions from the
+ initrd to the host OS it is now possible to transition to
+ further OS images from the host. This is useful to implement
+ offline updating tools.
+
+ * Various other additions have been made to the RPM macros
+ shipped with systemd. Use %udev_rules_update() after
+ installing new udev rules files. %_udevhwdbdir,
+ %_udevrulesdir, %_journalcatalogdir, %_tmpfilesdir,
+ %_sysctldir are now available which resolve to the right
+ directories for packages to place various data files in.
+
+ * journalctl gained the new --full switch (in addition to
+ --all, to disable ellipsation for long messages.
+
+ Contributions from: Anders Olofsson, Auke Kok, Ben Boeckel,
+ Colin Walters, Cosimo Cecchi, Daniel Wallace, Dave Reisner,
+ Eelco Dolstra, Holger Hans Peter Freyther, Kay Sievers,
+ Chun-Yi Lee, Lekensteyn, Lennart Poettering, Mantas Mikulėnas,
+ Marti Raudsepp, Martin Pitt, Mauro Dreissig, Michael Biebl,
+ Michal Schmidt, Michal Sekletar, Miklos Vajna, Nis Martensen,
+ Oleksii Shevchuk, Olivier Brunel, Ramkumar Ramachandra, Thomas
+ Bächler, Thomas Hindoe Paaboel Andersen, Tom Gundersen, Tony
+ Camuso, Umut Tezduyar, Zbigniew Jędrzejewski-Szmek
+
+CHANGES WITH 195:
+
+ * journalctl gained new --since= and --until= switches to
+ filter by time. It also now supports nice filtering for
+ units via --unit=/-u.
+
+ * Type=oneshot services may use ExecReload= and do the
+ right thing.
+
+ * The journal daemon now supports time-based rotation and
+ vacuuming, in addition to the usual disk-space based
+ rotation.
+
+ * The journal will now index the available field values for
+ each field name. This enables clients to show pretty drop
+ downs of available match values when filtering. The bash
+ completion of journalctl has been updated
+ accordingly. journalctl gained a new switch -F to list all
+ values a certain field takes in the journal database.
+
+ * More service events are now written as structured messages
+ to the journal, and made recognizable via message IDs.
+
+ * The timedated, localed and hostnamed mini-services which
+ previously only provided support for changing time, locale
+ and hostname settings from graphical DEs such as GNOME now
+ also have a minimal (but very useful) text-based client
+ utility each. This is probably the nicest way to changing
+ these settings from the command line now, especially since
+ it lists available options and is fully integrated with bash
+ completion.
+
+ * There's now a new tool "systemd-coredumpctl" to list and
+ extract coredumps from the journal.
+
+ * We now install a README each in /var/log/ and
+ /etc/rc.d/init.d explaining where the system logs and init
+ scripts went. This hopefully should help folks who go to
+ that dirs and look into the otherwise now empty void and
+ scratch their heads.
+
+ * When user-services are invoked (by systemd --user) the
+ $MANAGERPID env var is set to the PID of systemd.
+
+ * SIGRTMIN+24 when sent to a --user instance will now result
+ in immediate termination of systemd.
+
+ * gatewayd received numerous feature additions such as a
+ "follow" mode, for live syncing and filtering.
+
+ * browse.html now allows filtering and showing detailed
+ information on specific entries. Keyboard navigation and
+ mouse screen support has been added.
+
+ * gatewayd/journalctl now supports HTML5/JSON
+ Server-Sent-Events as output.
+
+ * The SysV init script compatibility logic will now
+ heuristically determine whether a script supports the
+ "reload" verb, and only then make this available as
+ "systemctl reload".
+
+ * "systemctl status --follow" has been removed, use "journalctl
+ -u" instead.
+
+ * journald.conf's RuntimeMinSize=, PersistentMinSize= settings
+ have been removed since they are hardly useful to be
+ configured.
+
+ * And I'd like to take the opportunity to specifically mention
+ Zbigniew for his great contributions. Zbigniew, you rock!
+
+ Contributions from: Andrew Eikum, Christian Hesse, Colin
+ Guthrie, Daniel J Walsh, Dave Reisner, Eelco Dolstra, Ferenc
+ Wágner, Kay Sievers, Lennart Poettering, Lukas Nykryn, Mantas
+ Mikulėnas, Martin Mikkelsen, Martin Pitt, Michael Olbrich,
+ Michael Stapelberg, Michal Schmidt, Sebastian Ott, Thomas
+ Bächler, Umut Tezduyar, Will Woods, Wulf C. Krueger, Zbigniew
+ Jędrzejewski-Szmek, Сковорода Никита Андреевич
+
+CHANGES WITH 194:
+
+ * If /etc/vconsole.conf is non-existent or empty we will no
+ longer load any console font or key map at boot by
+ default. Instead the kernel defaults will be left
+ intact. This is definitely the right thing to do, as no
+ configuration should mean no configuration, and hard-coding
+ font names that are different on all archs is probably a bad
+ idea. Also, the kernel default key map and font should be
+ good enough for most cases anyway, and mostly identical to
+ the userspace fonts/key maps we previously overloaded them
+ with. If distributions want to continue to default to a
+ non-kernel font or key map they should ship a default
+ /etc/vconsole.conf with the appropriate contents.
+
+ Contributions from: Colin Walters, Daniel J Walsh, Dave
+ Reisner, Kay Sievers, Lennart Poettering, Lukas Nykryn, Tollef
+ Fog Heen, Tom Gundersen, Zbigniew Jędrzejewski-Szmek
+
+CHANGES WITH 193:
+
+ * journalctl gained a new --cursor= switch to show entries
+ starting from the specified location in the journal.
+
+ * We now enforce a size limit on journal entry fields exported
+ with "-o json" in journalctl. Fields larger than 4K will be
+ assigned null. This can be turned off with --all.
+
+ * An (optional) journal gateway daemon is now available as
+ "systemd-journal-gatewayd.service". This service provides
+ access to the journal via HTTP and JSON. This functionality
+ will be used to implement live log synchronization in both
+ pull and push modes, but has various other users too, such
+ as easy log access for debugging of embedded devices. Right
+ now it is already useful to retrieve the journal via HTTP:
+
+ # systemctl start systemd-journal-gatewayd.service
+ # wget http://localhost:19531/entries
+
+ This will download the journal contents in a
+ /var/log/messages compatible format. The same as JSON:
+
+ # curl -H"Accept: application/json" http://localhost:19531/entries
+
+ This service is also accessible via a web browser where a
+ single static HTML5 app is served that uses the JSON logic
+ to enable the user to do some basic browsing of the
+ journal. This will be extended later on. Here's an example
+ screenshot of this app in its current state:
+
+ https://0pointer.de/public/journal-gatewayd
+
+ Contributions from: Kay Sievers, Lennart Poettering, Robert
+ Milasan, Tom Gundersen
+
+CHANGES WITH 192:
+
+ * The bash completion logic is now available for journalctl
+ too.
+
+ * We do not mount the "cpuset" controller anymore together with
+ "cpu" and "cpuacct", as "cpuset" groups generally cannot be
+ started if no parameters are assigned to it. "cpuset" hence
+ broke code that assumed it could create "cpu" groups and
+ just start them.
+
+ * journalctl -f will now subscribe to terminal size changes,
+ and line break accordingly.
+
+ Contributions from: Dave Reisner, Kay Sievers, Lennart
+ Poettering, Lukas Nykrynm, Mirco Tischler, Václav Pavlín
+
+CHANGES WITH 191:
+
+ * nspawn will now create a symlink /etc/localtime in the
+ container environment, copying the host's timezone
+ setting. Previously this has been done via a bind mount, but
+ since symlinks cannot be bind mounted this has now been
+ changed to create/update the appropriate symlink.
+
+ * journalctl -n's line number argument is now optional, and
+ will default to 10 if omitted.
+
+ * journald will now log the maximum size the journal files may
+ take up on disk. This is particularly useful if the default
+ built-in logic of determining this parameter from the file
+ system size is used. Use "systemctl status
+ systemd-journald.service" to see this information.
+
+ * The multi-seat X wrapper tool has been stripped down. As X
+ is now capable of enumerating graphics devices via udev in a
+ seat-aware way the wrapper is not strictly necessary
+ anymore. A stripped down temporary stop-gap is still shipped
+ until the upstream display managers have been updated to
+ fully support the new X logic. Expect this wrapper to be
+ removed entirely in one of the next releases.
+
+ * HandleSleepKey= in logind.conf has been split up into
+ HandleSuspendKey= and HandleHibernateKey=. The old setting
+ is not available anymore. X11 and the kernel are
+ distinguishing between these keys and we should too. This
+ also means the inhibition lock for these keys has been split
+ into two.
+
+ Contributions from: Dave Airlie, Eelco Dolstra, Lennart
+ Poettering, Lukas Nykryn, Václav Pavlín
+
+CHANGES WITH 190:
+
+ * Whenever a unit changes state we will now log this to the
+ journal and show along the unit's own log output in
+ "systemctl status".
+
+ * ConditionPathIsMountPoint= can now properly detect bind
+ mount points too. (Previously, a bind mount of one file
+ system to another place in the same file system could not be
+ detected as mount, since they shared struct stat's st_dev
+ field.)
+
+ * We will now mount the cgroup controllers cpu, cpuacct,
+ cpuset and the controllers net_cls, net_prio together by
+ default.
+
+ * nspawn containers will now have a virtualized boot
+ ID. (i.e. /proc/sys/kernel/random/boot_id is now mounted
+ over with a randomized ID at container initialization). This
+ has the effect of making "journalctl -b" do the right thing
+ in a container.
+
+ * The JSON output journal serialization has been updated not
+ to generate "endless" list objects anymore, but rather one
+ JSON object per line. This is more in line how most JSON
+ parsers expect JSON objects. The new output mode
+ "json-pretty" has been added to provide similar output, but
+ neatly aligned for readability by humans.
+
+ * We dropped all explicit sync() invocations in the shutdown
+ code. The kernel does this implicitly anyway in the kernel
+ reboot() syscall. halt(8)'s -n option is now a compatibility
+ no-op.
+
+ * We now support virtualized reboot() in containers, as
+ supported by newer kernels. We will fall back to exit() if
+ CAP_SYS_REBOOT is not available to the container. Also,
+ nspawn makes use of this now and will actually reboot the
+ container if the containerized OS asks for that.
+
+ * journalctl will only show local log output by default
+ now. Use --merge (-m) to show remote log output, too.
+
+ * libsystemd-journal gained the new sd_journal_get_usage()
+ call to determine the current disk usage of all journal
+ files. This is exposed in the new "journalctl --disk-usage"
+ command.
+
+ * journald gained a new configuration setting SplitMode= in
+ journald.conf which may be used to control how user journals
+ are split off. See journald.conf(5) for details.
+
+ * A new condition type ConditionFileNotEmpty= has been added.
+
+ * tmpfiles' "w" lines now support file globbing, to write
+ multiple files at once.
+
+ * We added Python bindings for the journal submission
+ APIs. More Python APIs for a number of selected APIs will
+ likely follow. Note that we intend to add native bindings
+ only for the Python language, as we consider it common
+ enough to deserve bindings shipped within systemd. There are
+ various projects outside of systemd that provide bindings
+ for languages such as PHP or Lua.
+
+ * Many conditions will now resolve specifiers such as %i. In
+ addition, PathChanged= and related directives of .path units
+ now support specifiers as well.
+
+ * There's now a new RPM macro definition for the system preset
+ dir: %_presetdir.
+
+ * journald will now warn if it ca not forward a message to the
+ syslog daemon because its socket is full.
+
+ * timedated will no longer write or process /etc/timezone,
+ except on Debian. As we do not support late mounted /usr
+ anymore /etc/localtime always being a symlink is now safe,
+ and hence the information in /etc/timezone is not necessary
+ anymore.
+
+ * logind will now always reserve one VT for a text getty (VT6
+ by default). Previously if more than 6 X sessions where
+ started they took up all the VTs with auto-spawned gettys,
+ so that no text gettys were available anymore.
+
+ * udev will now automatically inform the btrfs kernel logic
+ about btrfs RAID components showing up. This should make
+ simple hotplug based btrfs RAID assembly work.
+
+ * PID 1 will now increase its RLIMIT_NOFILE to 64K by default
+ (but not for its children which will stay at the kernel
+ default). This should allow setups with a lot more listening
+ sockets.
+
+ * systemd will now always pass the configured timezone to the
+ kernel at boot. timedated will do the same when the timezone
+ is changed.
+
+ * logind's inhibition logic has been updated. By default,
+ logind will now handle the lid switch, the power and sleep
+ keys all the time, even in graphical sessions. If DEs want
+ to handle these events on their own they should take the new
+ handle-power-key, handle-sleep-key and handle-lid-switch
+ inhibitors during their runtime. A simple way to achieve
+ that is to invoke the DE wrapped in an invocation of:
+
+ systemd-inhibit --what=handle-power-key:handle-sleep-key:handle-lid-switch …
+
+ * Access to unit operations is now checked via SELinux taking
+ the unit file label and client process label into account.
+
+ * systemd will now notify the administrator in the journal
+ when he over-mounts a non-empty directory.
+
+ * There are new specifiers that are resolved in unit files,
+ for the hostname (%H), the machine ID (%m) and the boot ID
+ (%b).
+
+ Contributions from: Allin Cottrell, Auke Kok, Brandon Philips,
+ Colin Guthrie, Colin Walters, Daniel J Walsh, Dave Reisner,
+ Eelco Dolstra, Jan Engelhardt, Kay Sievers, Lennart
+ Poettering, Lucas De Marchi, Lukas Nykryn, Mantas Mikulėnas,
+ Martin Pitt, Matthias Clasen, Michael Olbrich, Pierre Schmitz,
+ Shawn Landden, Thomas Hindoe Paaboel Andersen, Tom Gundersen,
+ Václav Pavlín, Yin Kangkai, Zbigniew Jędrzejewski-Szmek
+
+CHANGES WITH 189:
+
+ * Support for reading structured kernel messages from
+ /dev/kmsg has now been added and is enabled by default.
+
+ * Support for reading kernel messages from /proc/kmsg has now
+ been removed. If you want kernel messages in the journal
+ make sure to run a recent kernel (>= 3.5) that supports
+ reading structured messages from /dev/kmsg (see
+ above). /proc/kmsg is now exclusive property of classic
+ syslog daemons again.
+
+ * The libudev API gained the new
+ udev_device_new_from_device_id() call.
+
+ * The logic for file system namespace (ReadOnlyDirectory=,
+ ReadWriteDirectoy=, PrivateTmp=) has been reworked not to
+ require pivot_root() anymore. This means fewer temporary
+ directories are created below /tmp for this feature.
+
+ * nspawn containers will now see and receive all submounts
+ made on the host OS below the root file system of the
+ container.
+
+ * Forward Secure Sealing is now supported for Journal files,
+ which provide cryptographical sealing of journal files so
+ that attackers cannot alter log history anymore without this
+ being detectable. Lennart will soon post a blog story about
+ this explaining it in more detail.
+
+ * There are two new service settings RestartPreventExitStatus=
+ and SuccessExitStatus= which allow configuration of exit
+ status (exit code or signal) which will be excepted from the
+ restart logic, resp. consider successful.
+
+ * journalctl gained the new --verify switch that can be used
+ to check the integrity of the structure of journal files and
+ (if Forward Secure Sealing is enabled) the contents of
+ journal files.
+
+ * nspawn containers will now be run with /dev/stdin, /dev/fd/
+ and similar symlinks pre-created. This makes running shells
+ as container init process a lot more fun.
+
+ * The fstab support can now handle PARTUUID= and PARTLABEL=
+ entries.
+
+ * A new ConditionHost= condition has been added to match
+ against the hostname (with globs) and machine ID. This is
+ useful for clusters where a single OS image is used to
+ provision a large number of hosts which shall run slightly
+ different sets of services.
+
+ * Services which hit the restart limit will now be placed in a
+ failure state.
+
+ Contributions from: Bertram Poettering, Dave Reisner, Huang
+ Hang, Kay Sievers, Lennart Poettering, Lukas Nykryn, Martin
+ Pitt, Simon Peeters, Zbigniew Jędrzejewski-Szmek
+
+CHANGES WITH 188:
+
+ * When running in --user mode systemd will now become a
+ subreaper (PR_SET_CHILD_SUBREAPER). This should make the ps
+ tree a lot more organized.
+
+ * A new PartOf= unit dependency type has been introduced that
+ may be used to group services in a natural way.
+
+ * "systemctl enable" may now be used to enable instances of
+ services.
+
+ * journalctl now prints error log levels in red, and
+ warning/notice log levels in bright white. It also supports
+ filtering by log level now.
+
+ * cgtop gained a new -n switch (similar to top), to configure
+ the maximum number of iterations to run for. It also gained
+ -b, to run in batch mode (accepting no input).
+
+ * The suffix ".service" may now be omitted on most systemctl
+ command lines involving service unit names.
+
+ * There's a new bus call in logind to lock all sessions, as
+ well as a loginctl verb for it "lock-sessions".
+
+ * libsystemd-logind.so gained a new call sd_journal_perror()
+ that works similar to libc perror() but logs to the journal
+ and encodes structured information about the error number.
+
+ * /etc/crypttab entries now understand the new keyfile-size=
+ option.
+
+ * shutdown(8) now can send a (configurable) wall message when
+ a shutdown is cancelled.
+
+ * The mount propagation mode for the root file system will now
+ default to "shared", which is useful to make containers work
+ nicely out-of-the-box so that they receive new mounts from
+ the host. This can be undone locally by running "mount
+ --make-rprivate /" if needed.
+
+ * The prefdm.service file has been removed. Distributions
+ should maintain this unit downstream if they intend to keep
+ it around. However, we recommend writing normal unit files
+ for display managers instead.
+
+ * Since systemd is a crucial part of the OS we will now
+ default to a number of compiler switches that improve
+ security (hardening) such as read-only relocations, stack
+ protection, and suchlike.
+
+ * The TimeoutSec= setting for services is now split into
+ TimeoutStartSec= and TimeoutStopSec= to allow configuration
+ of individual time outs for the start and the stop phase of
+ the service.
+
+ Contributions from: Artur Zaprzala, Arvydas Sidorenko, Auke
+ Kok, Bryan Kadzban, Dave Reisner, David Strauss, Harald Hoyer,
+ Jim Meyering, Kay Sievers, Lennart Poettering, Mantas
+ Mikulėnas, Martin Pitt, Michal Schmidt, Michal Sekletar, Peter
+ Alfredsen, Shawn Landden, Simon Peeters, Terence Honles, Tom
+ Gundersen, Zbigniew Jędrzejewski-Szmek
+
+CHANGES WITH 187:
+
+ * The journal and id128 C APIs are now fully documented as man
+ pages.
+
+ * Extra safety checks have been added when transitioning from
+ the initial RAM disk to the main system to avoid accidental
+ data loss.
+
+ * /etc/crypttab entries now understand the new keyfile-offset=
+ option.
+
+ * systemctl -t can now be used to filter by unit load state.
+
+ * The journal C API gained the new sd_journal_wait() call to
+ make writing synchronous journal clients easier.
+
+ * journalctl gained the new -D switch to show journals from a
+ specific directory.
+
+ * journalctl now displays a special marker between log
+ messages of two different boots.
+
+ * The journal is now explicitly flushed to /var via a service
+ systemd-journal-flush.service, rather than implicitly simply
+ by seeing /var/log/journal to be writable.
+
+ * journalctl (and the journal C APIs) can now match for much
+ more complex expressions, with alternatives and
+ disjunctions.
+
+ * When transitioning from the initial RAM disk to the main
+ system we will now kill all processes in a killing spree to
+ ensure no processes stay around by accident.
+
+ * Three new specifiers may be used in unit files: %u, %h, %s
+ resolve to the user name, user home directory resp. user
+ shell. This is useful for running systemd user instances.
+
+ * We now automatically rotate journal files if their data
+ object hash table gets a fill level > 75%. We also size the
+ hash table based on the configured maximum file size. This
+ together should lower hash collisions drastically and thus
+ speed things up a bit.
+
+ * journalctl gained the new "--header" switch to introspect
+ header data of journal files.
+
+ * A new setting SystemCallFilters= has been added to services which may
+ be used to apply deny lists or allow lists to system calls. This is
+ based on SECCOMP Mode 2 of Linux 3.5.
+
+ * nspawn gained a new --link-journal= switch (and quicker: -j)
+ to link the container journal with the host. This makes it
+ very easy to centralize log viewing on the host for all
+ guests while still keeping the journal files separated.
+
+ * Many bugfixes and optimizations
+
+ Contributions from: Auke Kok, Eelco Dolstra, Harald Hoyer, Kay
+ Sievers, Lennart Poettering, Malte Starostik, Paul Menzel, Rex
+ Tsai, Shawn Landden, Tom Gundersen, Ville Skyttä, Zbigniew
+ Jędrzejewski-Szmek
+
+CHANGES WITH 186:
+
+ * Several tools now understand kernel command line arguments,
+ which are only read when run in an initial RAM disk. They
+ usually follow closely their normal counterparts, but are
+ prefixed with rd.
+
+ * There's a new tool to analyze the readahead files that are
+ automatically generated at boot. Use:
+
+ /usr/lib/systemd/systemd-readahead analyze /.readahead
+
+ * We now provide an early debug shell on tty9 if this enabled. Use:
+
+ systemctl enable debug-shell.service
+
+ * All plymouth related units have been moved into the Plymouth
+ package. Please make sure to upgrade your Plymouth version
+ as well.
+
+ * systemd-tmpfiles now supports getting passed the basename of
+ a configuration file only, in which case it will look for it
+ in all appropriate directories automatically.
+
+ * udevadm info now takes a /dev or /sys path as argument, and
+ does the right thing. Example:
+
+ udevadm info /dev/sda
+ udevadm info /sys/class/block/sda
+
+ * systemctl now prints a warning if a unit is stopped but a
+ unit that might trigger it continues to run. Example: a
+ service is stopped but the socket that activates it is left
+ running.
+
+ * "systemctl status" will now mention if the log output was
+ shortened due to rotation since a service has been started.
+
+ * The journal API now exposes functions to determine the
+ "cutoff" times due to rotation.
+
+ * journald now understands SIGUSR1 and SIGUSR2 for triggering
+ immediately flushing of runtime logs to /var if possible,
+ resp. for triggering immediate rotation of the journal
+ files.
+
+ * It is now considered an error if a service is attempted to
+ be stopped that is not loaded.
+
+ * XDG_RUNTIME_DIR now uses numeric UIDs instead of usernames.
+
+ * systemd-analyze now supports Python 3
+
+ * tmpfiles now supports cleaning up directories via aging
+ where the first level dirs are always kept around but
+ directories beneath it automatically aged. This is enabled
+ by prefixing the age field with '~'.
+
+ * Seat objects now expose CanGraphical, CanTTY properties
+ which is required to deal with very fast bootups where the
+ display manager might be running before the graphics drivers
+ completed initialization.
+
+ * Seat objects now expose a State property.
+
+ * We now include RPM macros for service enabling/disabling
+ based on the preset logic. We recommend RPM based
+ distributions to make use of these macros if possible. This
+ makes it simpler to reuse RPM spec files across
+ distributions.
+
+ * We now make sure that the collected systemd unit name is
+ always valid when services log to the journal via
+ STDOUT/STDERR.
+
+ * There's a new man page kernel-command-line(7) detailing all
+ command line options we understand.
+
+ * The fstab generator may now be disabled at boot by passing
+ fstab=0 on the kernel command line.
+
+ * A new kernel command line option modules-load= is now understood
+ to load a specific kernel module statically, early at boot.
+
+ * Unit names specified on the systemctl command line are now
+ automatically escaped as needed. Also, if file system or
+ device paths are specified they are automatically turned
+ into the appropriate mount or device unit names. Example:
+
+ systemctl status /home
+ systemctl status /dev/sda
+
+ * The SysVConsole= configuration option has been removed from
+ system.conf parsing.
+
+ * The SysV search path is no longer exported on the D-Bus
+ Manager object.
+
+ * The Names= option has been removed from unit file parsing.
+
+ * There's a new man page bootup(7) detailing the boot process.
+
+ * Every unit and every generator we ship with systemd now
+ comes with full documentation. The self-explanatory boot is
+ complete.
+
+ * A couple of services gained "systemd-" prefixes in their
+ name if they wrap systemd code, rather than only external
+ code. Among them fsck@.service which is now
+ systemd-fsck@.service.
+
+ * The HaveWatchdog property has been removed from the D-Bus
+ Manager object.
+
+ * systemd.confirm_spawn= on the kernel command line should now
+ work sensibly.
+
+ * There's a new man page crypttab(5) which details all options
+ we actually understand.
+
+ * systemd-nspawn gained a new --capability= switch to pass
+ additional capabilities to the container.
+
+ * timedated will now read known NTP implementation unit names
+ from /usr/lib/systemd/ntp-units.d/*.list,
+ systemd-timedated-ntp.target has been removed.
+
+ * journalctl gained a new switch "-b" that lists log data of
+ the current boot only.
+
+ * The notify socket is in the abstract namespace again, in
+ order to support daemons which chroot() at start-up.
+
+ * There is a new Storage= configuration option for journald
+ which allows configuration of where log data should go. This
+ also provides a way to disable journal logging entirely, so
+ that data collected is only forwarded to the console, the
+ kernel log buffer or another syslog implementation.
+
+ * Many bugfixes and optimizations
+
+ Contributions from: Auke Kok, Colin Guthrie, Dave Reisner,
+ David Strauss, Eelco Dolstra, Kay Sievers, Lennart Poettering,
+ Lukas Nykryn, Michal Schmidt, Michal Sekletar, Paul Menzel,
+ Shawn Landden, Tom Gundersen
+
+CHANGES WITH 185:
+
+ * "systemctl help <unit>" now shows the man page if one is
+ available.
+
+ * Several new man pages have been added.
+
+ * MaxLevelStore=, MaxLevelSyslog=, MaxLevelKMsg=,
+ MaxLevelConsole= can now be specified in
+ journald.conf. These options allow reducing the amount of
+ data stored on disk or forwarded by the log level.
+
+ * TimerSlackNSec= can now be specified in system.conf for
+ PID1. This allows system-wide power savings.
+
+ Contributions from: Dave Reisner, Kay Sievers, Lauri Kasanen,
+ Lennart Poettering, Malte Starostik, Marc-Antoine Perennou,
+ Matthias Clasen
+
+CHANGES WITH 184:
+
+ * logind is now capable of (optionally) handling power and
+ sleep keys as well as the lid switch.
+
+ * journalctl now understands the syntax "journalctl
+ /usr/bin/avahi-daemon" to get all log output of a specific
+ daemon.
+
+ * CapabilityBoundingSet= in system.conf now also influences
+ the capability bound set of usermode helpers of the kernel.
+
+ Contributions from: Daniel Drake, Daniel J. Walsh, Gert
+ Michael Kulyk, Harald Hoyer, Jean Delvare, Kay Sievers,
+ Lennart Poettering, Matthew Garrett, Matthias Clasen, Paul
+ Menzel, Shawn Landden, Tero Roponen, Tom Gundersen
+
+CHANGES WITH 183:
+
+ * Note that we skipped 139 releases here in order to set the
+ new version to something that is greater than both udev's
+ and systemd's most recent version number.
+
+ * udev: all udev sources are merged into the systemd source tree now.
+ All future udev development will happen in the systemd tree. It
+ is still fully supported to use the udev daemon and tools without
+ systemd running, like in initramfs or other init systems. Building
+ udev though, will require the *build* of the systemd tree, but
+ udev can be properly *run* without systemd.
+
+ * udev: /lib/udev/devices/ are not read anymore; systemd-tmpfiles
+ should be used to create dead device nodes as workarounds for broken
+ subsystems.
+
+ * udev: RUN+="socket:…" and udev_monitor_new_from_socket() is
+ no longer supported. udev_monitor_new_from_netlink() needs to be
+ used to subscribe to events.
+
+ * udev: when udevd is started by systemd, processes which are left
+ behind by forking them off of udev rules, are unconditionally cleaned
+ up and killed now after the event handling has finished. Services or
+ daemons must be started as systemd services. Services can be
+ pulled-in by udev to get started, but they can no longer be directly
+ forked by udev rules.
+
+ * udev: the daemon binary is called systemd-udevd now and installed
+ in /usr/lib/systemd/. Standalone builds or non-systemd systems need
+ to adapt to that, create symlink, or rename the binary after building
+ it.
+
+ * libudev no longer provides these symbols:
+ udev_monitor_from_socket()
+ udev_queue_get_failed_list_entry()
+ udev_get_{dev,sys,run}_path()
+ The versions number was bumped and symbol versioning introduced.
+
+ * systemd-loginctl and systemd-journalctl have been renamed
+ to loginctl and journalctl to match systemctl.
+
+ * The config files: /etc/systemd/systemd-logind.conf and
+ /etc/systemd/systemd-journald.conf have been renamed to
+ logind.conf and journald.conf. Package updates should rename
+ the files to the new names on upgrade.
+
+ * For almost all files the license is now LGPL2.1+, changed
+ from the previous GPL2.0+. Exceptions are some minor stuff
+ of udev (which will be changed to LGPL2.1 eventually, too),
+ and the MIT licensed sd-daemon.[ch] library that is suitable
+ to be used as drop-in files.
+
+ * systemd and logind now handle system sleep states, in
+ particular suspending and hibernating.
+
+ * logind now implements a sleep/shutdown/idle inhibiting logic
+ suitable for a variety of uses. Soonishly Lennart will blog
+ about this in more detail.
+
+ * var-run.mount and var-lock.mount are no longer provided
+ (which previously bind mounted these directories to their new
+ places). Distributions which have not converted these
+ directories to symlinks should consider stealing these files
+ from git history and add them downstream.
+
+ * We introduced the Documentation= field for units and added
+ this to all our shipped units. This is useful to make it
+ easier to explore the boot and the purpose of the various
+ units.
+
+ * All smaller setup units (such as
+ systemd-vconsole-setup.service) now detect properly if they
+ are run in a container and are skipped when
+ appropriate. This guarantees an entirely noise-free boot in
+ Linux container environments such as systemd-nspawn.
+
+ * A framework for implementing offline system updates is now
+ integrated, for details see:
+ https://www.freedesktop.org/software/systemd/man/systemd.offline-updates.html
+
+ * A new service type Type=idle is available now which helps us
+ avoiding ugly interleaving of getty output and boot status
+ messages.
+
+ * There's now a system-wide CapabilityBoundingSet= option to
+ globally reduce the set of capabilities for the
+ system. This is useful to drop CAP_SYS_MKNOD, CAP_SYS_RAWIO,
+ CAP_NET_RAW, CAP_SYS_MODULE, CAP_SYS_TIME, CAP_SYS_PTRACE or
+ even CAP_NET_ADMIN system-wide for secure systems.
+
+ * There are now system-wide DefaultLimitXXX= options to
+ globally change the defaults of the various resource limits
+ for all units started by PID 1.
+
+ * Harald Hoyer's systemd test suite has been integrated into
+ systemd which allows easy testing of systemd builds in qemu
+ and nspawn. (This is really awesome! Ask us for details!)
+
+ * The fstab parser is now implemented as generator, not inside
+ of PID 1 anymore.
+
+ * systemctl will now warn you if .mount units generated from
+ /etc/fstab are out of date due to changes in fstab that
+ have not been read by systemd yet.
+
+ * systemd is now suitable for usage in initrds. Dracut has
+ already been updated to make use of this. With this in place
+ initrds get a slight bit faster but primarily are much
+ easier to introspect and debug since "systemctl status" in
+ the host system can be used to introspect initrd services,
+ and the journal from the initrd is kept around too.
+
+ * systemd-delta has been added, a tool to explore differences
+ between user/admin configuration and vendor defaults.
+
+ * PrivateTmp= now affects both /tmp and /var/tmp.
+
+ * Boot time status messages are now much prettier and feature
+ proper english language. Booting up systemd has never been
+ so sexy.
+
+ * Read-ahead pack files now include the inode number of all
+ files to pre-cache. When the inode changes the pre-caching
+ is not attempted. This should be nicer to deal with updated
+ packages which might result in changes of read-ahead
+ patterns.
+
+ * We now temporaritly lower the kernel's read_ahead_kb variable
+ when collecting read-ahead data to ensure the kernel's
+ built-in read-ahead does not add noise to our measurements
+ of necessary blocks to pre-cache.
+
+ * There's now RequiresMountsFor= to add automatic dependencies
+ for all mounts necessary for a specific file system path.
+
+ * MountAuto= and SwapAuto= have been removed from
+ system.conf. Mounting file systems at boot has to take place
+ in systemd now.
+
+ * nspawn now learned a new switch --uuid= to set the machine
+ ID on the command line.
+
+ * nspawn now learned the -b switch to automatically search
+ for an init system.
+
+ * vt102 is now the default TERM for serial TTYs, upgraded from
+ vt100.
+
+ * systemd-logind now works on VT-less systems.
+
+ * The build tree has been reorganized. The individual
+ components now have directories of their own.
+
+ * A new condition type ConditionPathIsReadWrite= is now available.
+
+ * nspawn learned the new -C switch to create cgroups for the
+ container in other hierarchies.
+
+ * We now have support for hardware watchdogs, configurable in
+ system.conf.
+
+ * The scheduled shutdown logic now has a public API.
+
+ * We now mount /tmp as tmpfs by default, but this can be
+ masked and /etc/fstab can override it.
+
+ * Since udisks does not make use of /media anymore we are not
+ mounting a tmpfs on it anymore.
+
+ * journalctl gained a new --local switch to only interleave
+ locally generated journal files.
+
+ * We can now load the IMA policy at boot automatically.
+
+ * The GTK tools have been split off into a systemd-ui.
+
+ Contributions from: Andreas Schwab, Auke Kok, Ayan George,
+ Colin Guthrie, Daniel Mack, Dave Reisner, David Ward, Elan
+ Ruusamäe, Frederic Crozat, Gergely Nagy, Guillermo Vidal,
+ Hannes Reinecke, Harald Hoyer, Javier Jardón, Kay Sievers,
+ Lennart Poettering, Lucas De Marchi, Léo Gillot-Lamure,
+ Marc-Antoine Perennou, Martin Pitt, Matthew Monaco, Maxim
+ A. Mikityanskiy, Michael Biebl, Michael Olbrich, Michal
+ Schmidt, Nis Martensen, Patrick McCarty, Roberto Sassu, Shawn
+ Landden, Sjoerd Simons, Sven Anders, Tollef Fog Heen, Tom
+ Gundersen
+
+CHANGES WITH 44:
+
+ * This is mostly a bugfix release
+
+ * Support optional initialization of the machine ID from the
+ KVM or container configured UUID.
+
+ * Support immediate reboots with "systemctl reboot -ff"
+
+ * Show /etc/os-release data in systemd-analyze output
+
+ * Many bugfixes for the journal, including endianness fixes and
+ ensuring that disk space enforcement works
+
+ * sd-login.h is C++ compatible again
+
+ * Extend the /etc/os-release format on request of the Debian
+ folks
+
+ * We now refuse non-UTF8 strings used in various configuration
+ and unit files. This is done to ensure we do not pass invalid
+ data over D-Bus or expose it elsewhere.
+
+ * Register Mimo USB Screens as suitable for automatic seat
+ configuration
+
+ * Read SELinux client context from journal clients in a race
+ free fashion
+
+ * Reorder configuration file lookup order. /etc now always
+ overrides /run in order to allow the administrator to always
+ and unconditionally override vendor-supplied or
+ automatically generated data.
+
+ * The various user visible bits of the journal now have man
+ pages. We still lack man pages for the journal API calls
+ however.
+
+ * We now ship all man pages in HTML format again in the
+ tarball.
+
+ Contributions from: Dave Reisner, Dirk Eibach, Frederic
+ Crozat, Harald Hoyer, Kay Sievers, Lennart Poettering, Marti
+ Raudsepp, Michal Schmidt, Shawn Landden, Tero Roponen, Thierry
+ Reding
+
+CHANGES WITH 43:
+
+ * This is mostly a bugfix release
+
+ * systems lacking /etc/os-release are no longer supported.
+
+ * Various functionality updates to libsystemd-login.so
+
+ * Track class of PAM logins to distinguish greeters from
+ normal user logins.
+
+ Contributions from: Kay Sievers, Lennart Poettering, Michael
+ Biebl
+
+CHANGES WITH 42:
+
+ * This is an important bugfix release for v41.
+
+ * Building man pages is now optional which should be useful
+ for those building systemd from git but unwilling to install
+ xsltproc.
+
+ * Watchdog support for supervising services is now usable. In
+ a future release support for hardware watchdogs
+ (i.e. /dev/watchdog) will be added building on this.
+
+ * Service start rate limiting is now configurable and can be
+ turned off per service. When a start rate limit is hit a
+ reboot can automatically be triggered.
+
+ * New CanReboot(), CanPowerOff() bus calls in systemd-logind.
+
+ Contributions from: Benjamin Franzke, Bill Nottingham,
+ Frederic Crozat, Lennart Poettering, Michael Olbrich, Michal
+ Schmidt, Michał Górny, Piotr Drąg
+
+CHANGES WITH 41:
+
+ * The systemd binary is installed /usr/lib/systemd/systemd now;
+ An existing /sbin/init symlink needs to be adapted with the
+ package update.
+
+ * The code that loads kernel modules has been ported to invoke
+ libkmod directly, instead of modprobe. This means we do not
+ support systems with module-init-tools anymore.
+
+ * Watchdog support is now already useful, but still not
+ complete.
+
+ * A new kernel command line option systemd.setenv= is
+ understood to set system wide environment variables
+ dynamically at boot.
+
+ * We now limit the set of capabilities of systemd-journald.
+
+ * We now set SIGPIPE to ignore by default, since it only is
+ useful in shell pipelines, and has little use in general
+ code. This can be disabled with IgnoreSIPIPE=no in unit
+ files.
+
+ Contributions from: Benjamin Franzke, Kay Sievers, Lennart
+ Poettering, Michael Olbrich, Michal Schmidt, Tom Gundersen,
+ William Douglas
+
+CHANGES WITH 40:
+
+ * This is mostly a bugfix release
+
+ * We now expose the reason why a service failed in the
+ "Result" D-Bus property.
+
+ * Rudimentary service watchdog support (will be completed over
+ the next few releases.)
+
+ * When systemd forks off in order execute some service we will
+ now immediately changes its argv[0] to reflect which process
+ it will execute. This is useful to minimize the time window
+ with a generic argv[0], which makes bootcharts more useful
+
+ Contributions from: Alvaro Soliverez, Chris Paulson-Ellis, Kay
+ Sievers, Lennart Poettering, Michael Olbrich, Michal Schmidt,
+ Mike Kazantsev, Ray Strode
+
+CHANGES WITH 39:
+
+ * This is mostly a test release, but incorporates many
+ bugfixes.
+
+ * New systemd-cgtop tool to show control groups by their
+ resource usage.
+
+ * Linking against libacl for ACLs is optional again. If
+ disabled, support tracking device access for active logins
+ goes becomes unavailable, and so does access to the user
+ journals by the respective users.
+
+ * If a group "adm" exists, journal files are automatically
+ owned by them, thus allow members of this group full access
+ to the system journal as well as all user journals.
+
+ * The journal now stores the SELinux context of the logging
+ client for all entries.
+
+ * Add C++ inclusion guards to all public headers
+
+ * New output mode "cat" in the journal to print only text
+ messages, without any meta data like date or time.
+
+ * Include tiny X server wrapper as a temporary stop-gap to
+ teach XOrg udev display enumeration. This is used by display
+ managers such as gdm, and will go away as soon as XOrg
+ learned native udev hotplugging for display devices.
+
+ * Add new systemd-cat tool for executing arbitrary programs
+ with STDERR/STDOUT connected to the journal. Can also act as
+ BSD logger replacement, and does so by default.
+
+ * Optionally store all locally generated coredumps in the
+ journal along with meta data.
+
+ * systemd-tmpfiles learnt four new commands: n, L, c, b, for
+ writing short strings to files (for usage for /sys), and for
+ creating symlinks, character and block device nodes.
+
+ * New unit file option ControlGroupPersistent= to make cgroups
+ persistent, following the mechanisms outlined in
+ https://www.freedesktop.org/wiki/Software/systemd/PaxControlGroups
+
+ * Support multiple local RTCs in a sane way
+
+ * No longer monopolize IO when replaying readahead data on
+ rotating disks, since we might starve non-file-system IO to
+ death, since fanotify() will not see accesses done by blkid,
+ or fsck.
+
+ * Do not show kernel threads in systemd-cgls anymore, unless
+ requested with new -k switch.
+
+ Contributions from: Dan Horák, Kay Sievers, Lennart
+ Poettering, Michal Schmidt
+
+CHANGES WITH 38:
+
+ * This is mostly a test release, but incorporates many
+ bugfixes.
+
+ * The git repository moved to:
+ git://anongit.freedesktop.org/systemd/systemd
+ ssh://git.freedesktop.org/git/systemd/systemd
+
+ * First release with the journal
+ https://0pointer.de/blog/projects/the-journal.html
+
+ * The journal replaces both systemd-kmsg-syslogd and
+ systemd-stdout-bridge.
+
+ * New sd_pid_get_unit() API call in libsystemd-logind
+
+ * Many systemadm clean-ups
+
+ * Introduce remote-fs-pre.target which is ordered before all
+ remote mounts and may be used to start services before all
+ remote mounts.
+
+ * Added Mageia support
+
+ * Add bash completion for systemd-loginctl
+
+ * Actively monitor PID file creation for daemons which exit in
+ the parent process before having finished writing the PID
+ file in the daemon process. Daemons which do this need to be
+ fixed (i.e. PID file creation must have finished before the
+ parent exits), but we now react a bit more gracefully to them.
+
+ * Add colourful boot output, mimicking the well-known output
+ of existing distributions.
+
+ * New option PassCredentials= for socket units, for
+ compatibility with a recent kernel ABI breakage.
+
+ * /etc/rc.local is now hooked in via a generator binary, and
+ thus will no longer act as synchronization point during
+ boot.
+
+ * systemctl list-unit-files now supports --root=.
+
+ * systemd-tmpfiles now understands two new commands: z, Z for
+ relabelling files according to the SELinux database. This is
+ useful to apply SELinux labels to specific files in /sys,
+ among other things.
+
+ * Output of SysV services is now forwarded to both the console
+ and the journal by default, not only just the console.
+
+ * New man pages for all APIs from libsystemd-login.
+
+ * The build tree got reorganized and the build system is a
+ lot more modular allowing embedded setups to specifically
+ select the components of systemd they are interested in.
+
+ * Support for Linux systems lacking the kernel VT subsystem is
+ restored.
+
+ * configure's --with-rootdir= got renamed to
+ --with-rootprefix= to follow the naming used by udev and
+ kmod
+
+ * Unless specified otherwise we will now install to /usr instead
+ of /usr/local by default.
+
+ * Processes with '@' in argv[0][0] are now excluded from the
+ final shut-down killing spree, following the logic explained
+ in:
+ https://systemd.io/ROOT_STORAGE_DAEMONS/
+
+ * All processes remaining in a service cgroup when we enter
+ the START or START_PRE states are now killed with
+ SIGKILL. That means it is no longer possible to spawn
+ background processes from ExecStart= lines (which was never
+ supported anyway, and bad style).
+
+ * New PropagateReloadTo=/PropagateReloadFrom= options to bind
+ reloading of units together.
+
+ Contributions from: Bill Nottingham, Daniel J. Walsh, Dave
+ Reisner, Dexter Morgan, Gregs Gregs, Jonathan Nieder, Kay
+ Sievers, Lennart Poettering, Michael Biebl, Michal Schmidt,
+ Michał Górny, Ran Benita, Thomas Jarosch, Tim Waugh, Tollef
+ Fog Heen, Tom Gundersen, Zbigniew Jędrzejewski-Szmek