chiark / gitweb /
Prep v239: fs-util: Mask new chase_symlinks_and_*() functions.
[elogind.git] / NEWS
diff --git a/NEWS b/NEWS
index da9e203832227dce1d4a026aeebc76b6f28bd8a9..3bd24d7ad3b9a3609613e4240f8aeec73bfa0bcf 100644 (file)
--- a/NEWS
+++ b/NEWS
 systemd System and Service Manager
 
+CHANGES WITH 239:
+
+        * NETWORK INTERFACE DEVICE NAMING CHANGES: elogind-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
+          elogind.service. Since v235, IPAddressDeny=any has been set to
+          the unit. So, it is expected that the default behavior of
+          elogind 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.
+
+        * elogind-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
+          elogind-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 elogind will
+          now default to a system call whitelist (rather than a blacklist, as
+          before). In particular, elogind-udevd will now enforce one too. For
+          most cases this should be safe, however downstream distributions
+          which disabled sandboxing of elogind-udevd (specifically the
+          MountFlags= setting), might want to disable this security feature
+          too, as the default whitelisting 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.
+
+        * The elogind-resolve tool has been renamed to resolvectl (it also
+        * elogind-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.
+
+        * elogind-resolved.service and elogind-networkd.service now set
+          DynamicUser=yes. The users elogind-resolve and elogind-network are
+          not created by elogind-sysusers.
+
+          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/elogind-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 time-out 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.
+
+        * The nss-elogind 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 elogind-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, elogind 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, elogind 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 'elogind-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.
+
+        * elogind-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 elogind configuration files. For example use
+          "elogind-analyze cat-config elogind/system.conf" to get the complete
+          system configuration file of elogind how it would be loaded by PID 1
+          itself. Similar to this, various tools such as elogind-tmpfiles or
+          elogind-sysusers, gained a new option "--cat-config", which does the
+          corresponding operation for their own configuration settings. For
+          example, "elogind-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
+          elogind-timedated, "timesync-status" shows the current NTP
+          synchronization state of elogind-timesyncd, and "show-timesync"
+          shows bus properties of elogind-timesyncd.
+
+        * elogind-timesyncd gained a bus interface on which it exposes details
+          about its state.
+
+        * elogind-nspawn gained a new --rlimit= switch for setting initial
+        * A new environment variable $SYSTEMD_TIMEDATED_NTP_SERVICES is now
+          understood by elogind-timedated. It takes a colon-separated list of
+          unit names of NTP client services. The list is used by
+          "timedatectl set-ntp".
+
+          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.
+
+        * elogind-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/elogind/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 elogind
+          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/doc/CGROUP_DELEGATION.md
+          https://github.com/systemd/systemd/blob/master/doc/PORTABLE_SERVICES.md
+          https://github.com/systemd/systemd/blob/master/doc/CODE_QUALITY.md
+
+        * The Boot Loader Specification has been added to the source tree.
+
+          https://github.com/systemd/systemd/blob/master/doc/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_elogind will now look for PAM userdata fields elogind.memory_max,
+          elogind.tasks_max, elogind.cpu_weight, elogind.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 "elogind-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 elogind-udevd.service
+          wher 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.
+
+        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.
+
+        * elogind-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 elogind-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 elogind-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 elogind-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 elogind-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).
+
+        * elogind-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 elogind (which can be used with
+          --elogind, --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 elogind 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 libelogind — sd_bus_get_n_queued_read and
+          sd_bus_get_n_queued_write — may be used to check the number of
+          pending bus messages.
+
+        * elogind gained a new
+          org.freedesktop.elogind1.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 elogind itself: the
+          elogind --user instance uses this call of the elogind --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 "elogind-run --scope --user …" works
+          again in pure cgroups 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 elogind-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 elogind. This
+          means that after the upgrade and daemon-reexec, any such units must
+          be restarted.
+
+        * INCOMPATIBILITY: as announced in the NEWS for 237, elogind-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: elogind-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 elogind-tmpfiles was run. This behaviour was
+          different from what the documentation said, and not particularly
+          useful, as repeated elogind-tmpfiles invocations would not be
+          idempotent and grow such files without bounds. With this release
+          behaviour has been altered slightly, 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 elogind v238 we intend to slightly change
+          elogind-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 reqires
+          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 elogind-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 elogind-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 elogind-networkd's .netdev and
+          .network files all gained support for a new condition
+          ConditionKernelVersion= for checking against specific kernel
+          versions.
+
+        * In elogind-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=.
+
+        * elogind-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. elogind-networkd and
+          elogind-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 elogind'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.
+
+        * elogind-networkd gained support for natively configuring WireGuard
+          connections.
+
+        * In previous versions elogind synthesized user records both for the
+          "nobody" (UID 65534) and "root" (UID 0) users in nss-elogind 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/elogind/dont-synthesize-nobody exists synthesizing of the 65534
+          user and group record within the elogind codebase is disabled.
+
+        * elogind-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 "elogind-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
+          elogind.service_watchdogs= for controlling the same.
+
+        * Two new "log-level" and "log-target" options for elogind-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 commandline 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.
+
+        * elogind-resolved's DNSSEC support gained support for RFC 8080
+          (Ed25519 keys and signatures).
+
+        * The elogind-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 elogind-resolved from DNS hook scripts that various interface
+          managing software supports (such as pppd).
+
+        * elogind-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
+          host name 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 whitelist instead of a blacklist.
+
+        * 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 file is missing or empty, the variable is
+          empty and BOOT_DIR_ABS is the path of a temporary directory which is
+          removed after all the plugins exit. So, if KERNEL_INSTALL_MACHINE_ID
+          is empty, all plugins should not put anything in BOOT_DIR_ABS.
+
+        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
@@ -272,7 +1622,7 @@ CHANGES WITH 233:
         * Documentation has been added that lists all of systemd's low-level
           environment variables:
 
-          https://github.com/systemd/systemd/blob/master/ENVIRONMENT.md
+          https://github.com/systemd/systemd/blob/master/doc/ENVIRONMENT.md
 
         * sd-daemon gained a new API sd_is_socket_sockaddr() for determining
           whether a specific socket file descriptor matches a specified socket
@@ -348,7 +1698,7 @@ CHANGES WITH 233:
           these NTP servers officially. We still recommend downstreams to
           properly register an NTP pool with the NTP pool project though.
 
-        * coredumpctl gained new new "--reverse" option for printing the list
+        * coredumpctl gained a new "--reverse" option for printing the list
           of coredumps in reverse order.
 
         * coredumpctl will now show additional information about truncated and
@@ -638,7 +1988,7 @@ CHANGES WITH 232:
           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 to make a
+          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.
 
@@ -969,7 +2319,7 @@ CHANGES WITH 231:
           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 not ABI stable, but is likely to change with every new
+          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.
@@ -983,7 +2333,7 @@ CHANGES WITH 231:
           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
-          HACKING for details.
+          doc/HACKING for details.
 
         * configure learned the --with-support-url= option to specify the
           distribution's bugtracker.
@@ -1446,6 +2796,13 @@ CHANGES WITH 229:
 
                   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, elogind 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,
@@ -3315,7 +4672,7 @@ CHANGES WITH 216:
           like Cockpit which register web clients as PAM sessions.
 
         * timer units with at least one OnCalendar= setting will now
-          be started only after timer-sync.target has been
+          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
@@ -4686,7 +6043,7 @@ CHANGES WITH 209:
           option as supported by Debian is added. It allows indicating
           which LUKS slot to use on disk, speeding up key loading.
 
-        * The sd_journald_sendv() API call has been checked and
+        * 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.