]> git.ipfire.org Git - thirdparty/systemd.git/blobdiff - NEWS
nspawn: don't look for .nspawn file above the top-level directory, it makes no sense
[thirdparty/systemd.git] / NEWS
diff --git a/NEWS b/NEWS
index dbe87297bb71ee0c767ee72d02d7579daa129b41..e23a954304ba64c3a807a2fff20e1930d6c19da1 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -2,21 +2,31 @@ systemd System and Service Manager
 
 CHANGES WITH 243 in spe:
 
+        * 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 an calling an offending system call would terminate the
-          calling thread. This behaviour never made much sense, since killing
-          individual threads of unexpecting 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.
+          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.
 
         * 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 16bit
@@ -35,14 +45,18 @@ CHANGES WITH 243 in spe:
           are harder to type, but we believe the change from 5 digit PIDs to 7
           digit PIDs is not too hampering for usability.
 
-        * MemoryLow and MemoryMin gained hierarchy-aware counterparts,
-          DefaultMemoryLow and DefaultMemoryMin, which can be used to
+        * 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.
 
+        * A new setting DisableControllers= has been added that may be used to
+          explicitly disable one or more cgroups controllers for a unit and all
+          its children.
+
         * 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
@@ -56,13 +70,13 @@ CHANGES WITH 243 in spe:
         * 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 -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.
+          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.:
@@ -70,23 +84,26 @@ CHANGES WITH 243 in spe:
           build/man/man systemctl
           build/man/html systemd.index
 
-        * The D-Bus "wire format" for CPUAffinity attribute is changed on
+        * libidn2 is used by default if both libidn2 and libidn are installed.
+          Please use -Dlibidn=true when libidn is favorable.
+
+        * 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 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.
+          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
@@ -105,12 +122,267 @@ CHANGES WITH 243 in spe:
           interfaces should really be matched.
 
         * A new setting NUMAPolicy= may be used to set process memory
-          allocation policy. Setting can be specified in system.conf and
-          hence will set the default policy for PID1. Default policy can be
-          overridden on per-service basis. Related setting NUMAMask= is used to
-          specify NUMA node mask that should be associated with the selected
-          policy.
-          …
+          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 time-out to wait for when killed
+          with SIGABRT, for example when a service watchdog is hit. Previously,
+          the regular TimeoutStopSec= time-out was applied in this case too —
+          now a separate time-out 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
+          request service take down. 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 time-out 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 skipped from being cached while keeping the same cache heuristics
+          for positive answers.  The default remains as "yes" (i.e. caching is
+          enabled).
+
+        * The predictable naming scheme for network devices now supports
+          generating predictable names for "netdevsim" devices.
+
+        * 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 blacklisting 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.
+
+        * 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'.
+
+        * 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.
+
+        * 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, compatible with the format Dracut expects.
+
+        * 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 new "timestamp" verb for parsing and
+          converting timestamps. It's similar to the existing "systemd-analyze
+          calendar" command which does the same for recurring calendar
+          events. It also gained a new "condition" verb for parsing and testing
+          ConditionXYZ= expressions.
+
+        * 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 specific 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 timeouts for waiting for the hibernation
+          device to show up.
+
+        * 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 128bit 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. It allows configuration of a watchdog
+          timeout to write to a hardware watchdog device on kexec-based
+          reboots. Previously this functionality was only available for regular
+          reboots. This option defaults to off, since it depends on drivers and
+          software setup whether the watchdog is correctly reset again after
+          the kexec completed, and thus for the general case not clear if safe
+          (since it might cause unwanted watchdog reboots after the kexec
+          completed otherwise). Moreover, the old ShutdownWatchdogSec= setting
+          has been renamed to RebootWatchdogSec= to more clearly communicate
+          what it is about. The old name of the setting 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 selecting
+          a different tty 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 cases of 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 there name.)
+
+        * If variable assignments in sysctl.d/ files are prefixed with "-" any
+          failures to apply them are now ignored.
+
+        Contributions from: Aaron Barany, Adrian Bunk, Alan Jenkins, Andrej
+        Valek, Anita Zhang, Arian van Putten, Balint Reczey, Bastien Nocera,
+        Ben Boeckel, Benjamin Robin, camoz, Chen Qi, Chris Chiu, Chris Down,
+        Christian Kellner, Connor Reeder, Daniele Medri, Dan Streetman, Dave
+        Reisner, Dave Ross, David Art, David Tardon, Debarshi Ray, Dominick
+        Grift, Donald Buczek, Douglas Christman, Eric DeVolder, Evgeny
+        Vereshchagin, Feldwor, Felix Riemann, Florian Dollinger, Franck Bui,
+        Frantisek Sumsal, Franz Pletz, Hans de Goede, Insun Pyo, Ivan
+        Shapovalov, Iwan Timmer, Jack, Jakob Unterwurzacher, Jan Klötzke, Jan
+        Pokorný, Jan Synacek, Jeka Pats, Jérémy Rosen, Jiri Pirko, Joe Lin,
+        Joerg Behrmann, Joe Richey, Jóhann B. Guðmundsson, Johannes Schmitz,
+        Jonathan Rouleau, Jorge Niedbalski, 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, Michael Biebl, Michael Olbrich, Michael Prokop, Michael
+        Stapelberg, Michael Zhivich, Michal Koutný, Michal Sekletar, Mike
+        Gilbert, Milan Broz, mpe85, Oliver Harley, pan93412, Paul Menzel,
+        pEJipE, Peter A. Bigot, Philip Withnall, Piotr Drąg, Rafael Fontenelle,
+        Roberto Santalla, root, RussianNeuroMancer, Sebastian Jennen, Simon
+        Schricker, Susant Sahani, Thadeu Lima de Souza Cascardo, Theo
+        Ouzhinski, Thomas Weißschuh, Tomas Mraz, Topi Miettinen, ven, Wieland
+        Hoffmann, Xi Ruoyao, Yuri Chornoivan, Yu Watanabe, Zach Smith, Zbigniew
+        Jędrzejewski-Szmek, Zhang Xianwei
+
+        – Somewhere, SOME-TI-ME
 
 CHANGES WITH 242: