NEWS: mention about [DHCPv6PrefixDelegation] section
[thirdparty/systemd.git] / NEWS
1 systemd System and Service Manager
2
3 CHANGES WITH 246:
4
5         * The service manager gained basic support for cgroup v2 freezer. Units
6           can now be suspended or resumed either using new systemctl verbs,
7           freeze and thaw respectively, or via D-Bus.
8
9         * PID 1 may now automatically load pre-compiled AppArmor policies from
10           /etc/apparmor/earlypolicy during early boot.
11
12         * The CPUAffinity= setting in service unit files now supports a new
13           special value "numa" that causes the CPU affinity masked to be set
14           based on the NUMA mask.
15
16         * systemd will now log about all left-over processes remaining in a
17           unit when the unit is stopped. It will now warn about services using
18           KillMode=none, as this is generally an unsafe thing to make use of.
19
20         * Two new unit file settings
21           ConditionPathIsEncrypted=/AssertPathIsEncrypted= have been
22           added. They may be used to check whether a specific file system path
23           resides on a block device that is encrypted on the block level
24           (i.e. using dm-crypt/LUKS).
25
26         * Another pair of new settings ConditionEnvironment=/AssertEnvironment=
27           has been added that may be used for simple environment checks. This
28           is particularly useful when passing in environment variables from a
29           container manager (or from PAM in case of the systemd --user
30           instance).
31
32         * .service unit files now accept a new setting CoredumpFilter= which
33           allows configuration of the memory sections coredumps of the
34           service's processes shall include.
35
36         * .mount units gained a new ReadWriteOnly= boolean option. If set
37           it will not be attempted to mount a file system read-only if mounting
38           in read-write mode doesn't succeed. An option x-systemd.rw-only is
39           available in /etc/fstab to control the same.
40
41         * .socket units gained a new boolean setting PassPacketInfo=. If
42           enabled, the kernel will attach additional per-packet metadata to all
43           packets read from the socket, as an ancillary message. This controls
44           the IP_PKTINFO, IPV6_RECVPKTINFO, NETLINK_PKTINFO socket options,
45           depending on socket type.
46
47         * .service units gained a new setting RootHash= which may be used to
48           specify the root hash for verity enabled disk images which are
49           specified in RootImage=. RootVerity= may be used to specify a path to
50           the Verity data matching a RootImage= file system. (The latter is
51           only useful for images that do not contain the Verity data embedded
52           into the same image that carries a GPT partition table following the
53           Discoverable Partition Specification). Similarly, systemd-nspawn
54           gained a new switch --verity-data= that takes a path to a file with
55           the verity data of the disk image supplied in --image=, if the image
56           doesn't contain the verity data itself.
57
58         * .service units gained a new setting RootHashSignature= which takes
59           either a base64 encoded PKCS#7 signature of the root hash specified
60           with RootHash=, or a path to a file to read the signature from. This
61           allows validation of the root hash against public keys available in
62           the kernel keyring, and is only supported on recent kernels
63           (>= 5.4)/libcryptsetup (>= 2.30). A similar switch has been added to
64           systemd-nspawn and systemd-dissect (--root-hash-sig=). Support for
65           this mechanism has also been added to systemd-veritysetup.
66
67         * .service unit files gained two new options
68           TimeoutStartFailureMode=/TimeoutStopFailureMode= that may be used to
69           tune behaviour if a start or stop timeout is hit, i.e. whether to
70           terminate the service with SIGTERM, SIGABRT or SIGKILL.
71
72         * Most options in systemd that accept hexadecimal values prefixed with
73           0x in additional to the usual decimal notation now also support octal
74           notation when the 0o prefix is used and binary notation if the 0b
75           prefix is used.
76
77         * Various command line parameters and configuration file settings that
78           configure key or certificate files now optionally take paths to
79           AF_UNIX sockets in the file system. If configured that way a stream
80           connection is made to the socket and the required data read from
81           it. This is a simple and natural extension to the existing regular
82           file logic, and permits other software to provide keys or
83           certificates via simple IPC services, for example when unencrypted
84           storage on disk is not desired. Specifically, systemd-networkd's
85           Wireguard and MACSEC key file settings as well as
86           systemd-journal-gatewayd's and systemd-journal-remote's PEM
87           key/certificate parameters support this now.
88
89         * Unit files, tmpfiles.d/ snippets, sysusers.d/ snippets and other
90           configuration files that support specifier expansion learnt six new
91           specifiers: %a resolves to the current architecture, %o/%w/%B/%W
92           resolve to the various ID fields from /etc/os-release, %l resolves to
93           the "short" hostname of the system, i.e. the hostname configured in
94           the kernel truncated at the first dot.
95
96         * Support for the .include syntax in unit files has been removed. The
97           concept has been obsolete for 6 years and we started warning about
98           its pending removal 2 years ago (also see NEWS file below). It's
99           finally gone now.
100
101         * StandardError= and StandardOutput= in unit files no longer support
102           the "syslog" and "syslog-console" switches. They were long removed
103           from the documentation, but will now result in warnings when used,
104           and be converted to "journal" and "journal+console" automatically.
105
106         * If the service setting User= is set to the "nobody" user, a warning
107           message is now written to the logs (but the value is nonetheless
108           accepted). Setting User=nobody is unsafe, since the primary purpose
109           of the "nobody" user is to own all files whose owner cannot be mapped
110           locally. It's in particular used by the NFS subsystem and in user
111           namespacing. By running a service under this user's UID it might get
112           read and even write access to all these otherwise unmappable files,
113           which is quite likely a major security problem.
114
115         * tmpfs mounts automatically created by systemd (/tmp, /run, /dev/shm,
116           and others) now have a size and inode limits applied (50% of RAM for
117           /tmp, 10% of RAM for /dev/shm, etc.)
118
119         * nss-mymachines lost support for resolution of users and groups, and
120           now only does resolution of hostnames. This functionality is now
121           provided by nss-systemd. Thus, the 'mymachines' entry should be
122           removed from the 'passwd:' and 'group:' lines in /etc/nsswitch.conf
123           (and 'systemd' added if it is not already there).
124
125         * A new kernel command line option systemd.hostname= has been added
126           that allows controlling the hostname that is initialized early during
127           boot.
128
129         * A kernel command line option "udev.blockdev_read_only" has been
130           added. If specified all hardware block devices that show up are
131           immediately marked as read-only by udev. This option is useful for
132           making sure that a specific boot under no circumstances modifies data
133           on disk. Use "blockdev --setrw" to undo the effect of this, per
134           device.
135
136         * A new boolean kernel command line option systemd.swap= has been
137           added, which may be used to turn off automatic activation of swap
138           devices listed in /etc/fstab.
139
140         * New kernel command line options systemd.condition-needs-update= and
141           systemd.condition-first-boot= have been added, which override the
142           result of the ConditionNeedsUpdate= and ConditionFirstBoot=
143           conditions.
144
145         * A new kernel command line option systemd.clock-usec= has been added
146           that allows setting the system clock to the specified time in µs
147           since Jan 1st, 1970 early during boot. This is in particular useful
148           in order to make test cases more reliable.
149
150         * The fs.suid_dumpable sysctl is set to 2 / "suidsafe". This allows
151           systemd-coredump to save core files for suid processes. When saving
152           the core file, systemd-coredump will use the effective uid and gid of
153           the process that faulted.
154
155         * The /sys/module/kernel/parameters/crash_kexec_post_notifiers file is
156           now automatically set to "Y" at boot, in order to enable pstore
157           generation for collection with systemd-pstore.
158
159         * A new 'hwdb' file has been added that collects information about PCI
160           and USB devices that correctly support auto-suspend, on top of the
161           databases for this we import from the ChromiumOS project. If you have
162           a device that supports auto-suspend correctly and where it should be
163           enabled by default, please submit a patch that adds it to the
164           database (see /usr/lib/udev/hwdb.d/60-autosuspend.hwdb).
165
166         * systemd-udevd gained the new configuration option timeout_signal= as well
167           as a corresponding kernel command line option udev.timeout_signal=.
168           The option can be used to configure the UNIX signal that the main
169           daemon sends to the worker processes on timeout. Setting the signal
170           to SIGABRT is useful for debugging.
171
172         * .link files managed by systemd-udevd gained options RxFlowControl=,
173           TxFlowControl=, AutoNegotiationFlowControl= in the [Link] section, in
174           order to configure various flow control parameters. They also gained
175           RxMiniBufferSize= and RxJumboBufferSize= in order to configure jumbo
176           frame ring buffer sizes.
177
178         * networkd.conf gained a new boolean setting ManageForeignRoutes=. If
179           enabled systemd-networkd manages all routes configured by other tools.
180
181         * .network files managed by systemd-networkd gained a new section
182           [SR-IOV], in order to configure SR-IOV capable network devices.
183
184         * systemd-networkd's [IPv6Prefix] section in .network files gained a
185           new boolean setting Assign=. If enabled an address from the prefix is
186           automatically assigned to the interface.
187
188         * systemd-networkd gained a new section [DHCPv6PrefixDelegation] which
189           controls delegated prefixes assigned by DHCPv6 client. The section
190           has three settings: SubnetID=, Assign=, and Token=. The setting
191           SubnetID= allows explicit configuration of the preferred subnet that
192           systemd-networkd's Prefix Delegation logic assigns to interfaces. If
193           Assign= is enabled (which is the default) an address from any acquired
194           delegated prefix is automatically chosen and assigned to the
195           interface. The setting Token= specifies an optional address generation
196           mode for Assign=.
197
198         * systemd-networkd's [Network] section gained a new setting
199           IPv4AcceptLocal=. If enabled the interface accepts packets with local
200           source addresses.
201
202         * systemd-networkd gained support for configuring the HTB queuing
203           discipline in the [HierarchyTokenBucket] and
204           [HierarchyTokenBucketClass] sections. Similar the "pfifo" qdisc may
205           be configured in the [PFIFO] section, "GRED" in
206           [GenericRandomEarlyDetection], "SFB" in [StochasticFairBlue], "cake"
207           in [CAKE], "PIE" in [PIE], "DRR" in [DeficitRoundRobinScheduler] and
208           [DeficitRoundRobinSchedulerClass], "BFIFO" in [BFIFO],
209           "PFIFOHeadDrop" in [PFIFOHeadDrop], "PFIFOFast" in [PFIFOFast], "HHF"
210           in [HeavyHitterFilter], "ETS" in [EnhancedTransmissionSelection] and
211           "QFQ" in [QuickFairQueueing] and [QuickFairQueueingClass].
212
213         * systemd-networkd gained support for a new Termination= setting in the
214           [CAN] section for configuring the termination resistor. It also
215           gained a new ListenOnly= setting for controlling whether to only
216           listen on CAN interfaces, without interfering with traffic otherwise
217           (which is useful for debugging/monitoring CAN network
218           traffic). DataBitRate=, DataSamplePoint=, FDMode=, FDNonISO= have
219           been added to configure various CAN-FD aspects.
220
221         * systemd-networkd's [DHCPv6] section gained a new option WithoutRA=.
222           When enabled, DHCPv6 will be attempted right-away without requiring an
223           Router Advertisement packet suggesting it first (i.e. without the 'M'
224           or 'O' flags set). The [IPv6AcceptRA] section gained a boolean option
225           DHCPv6Client= that may be used to turn off the DHCPv6 client even if
226           the RA packets suggest it.
227
228         * systemd-networkd's [DHCPv4] section gained a new setting UseGateway=
229           which may be used to turn off use of the gateway information provided
230           by the DHCP lease. A new FallbackLeaseLifetimeSec= setting may be
231           used to configure how to process leases that lack a lifetime option.
232
233         * systemd-networkd's [DHCPv4] and [DHCPServer] sections gained a new
234           setting SendVendorOption= allowing configuration of additional vendor
235           options to send in the DHCP requests/responses. The [DHCPv6] section
236           gained a new SendOption= setting for sending arbitrary DHCP
237           options. RequestOptions= has been added to request arbitrary options
238           from the server. UserClass= has been added to set the DHCP user class
239           field.
240
241         * systemd-networkd's [DHCPServer] section gained a new set of options
242           EmitPOP3=/POP3=, EmitSMTP=/SMTP=, EmitLPR=/LPR= for including server
243           information about these three protocols in the DHCP lease. It also
244           gained support for including "MUD" URLs ("Manufacturer Usage
245           Description"). Support for "MUD" URLs was also added to the LLDP
246           stack, configurable in the [LLDP] section in .network files.
247
248         * The Mode= settings in [MACVLAN] and [MACVTAP] now support 'source'
249           mode. Also, the sections now support a new setting SourceMACAddress=.
250
251         * systemd-networkd's .netdev files now support a new setting
252           VLANProtocol= in the [Bridge] section that allows configuration of
253           the VLAN protocol to use.
254
255         * systemd-networkd supports a new Group= setting in the [Link] section
256           of the .network files, to control the link group.
257
258         * systemd-networkd's [Network] section gained a new
259           IPv6LinkLocalAddressGenerationMode= setting, which specifies how IPv6
260           link local address is generated.
261
262         * A new default .network file is now shipped that matches TUN/TAP
263           devices that begin with "vt-" in their name. Such interfaces will
264           have IP routing onto the host links set up automatically. This is
265           supposed to be used by VM managers to trivially acquire a network
266           interface which is fully set up for host communication, simply by
267           carefully picking an interface name to use.
268
269         * systemd-networkd's [DHCPv6] section gained a new setting RouteMetric=
270           which sets the route priority for routes specified by the DHCP server.
271
272         * systemd-networkd's [DHCPv6] section gained a new setting VendorClass=
273           which configures the vendor class information sent to DHCP server.
274
275         * The BlackList= settings in .network files' [DHCPv4] and
276           [IPv6AcceptRA] sections have been renamed DenyList=. The old names
277           are still understood to provide compatibility.
278
279         * networkctl gained the new "forcerenew" command for forcing all DHCP
280           server clients to renew their lease. The interface "status" output
281           will now show numerous additional fields of information about an
282           interface. There are new "up" and "down" commands to bring specific
283           interfaces up or down.
284
285         * systemd-resolved's DNS= configuration option now optionally accepts a
286           port number (after ":") and a host name (after "#"). When the host
287           name is specified, the DNS-over-TLS certificate is validated to match
288           the specified hostname. Additionally, in case of IPv6 addresses, an
289           interface may be specified (after "%").
290
291         * systemd-resolved may be configured to forward single-label DNS names.
292           This is not standard-conformant, but may make sense in setups where
293           public DNS servers are not used.
294
295         * systemd-resolved's DNS-over-TLS support gained SNI validation.
296
297         * systemd-nspawn's --resolv-conf= switch gained a number of new
298           supported values. Specifically, options starting with "replace-" are
299           like those prefixed "copy-" but replace any existing resolv.conf
300           file. And options ending in "-uplink" and "-stub" can now be used to
301           propagate other flavours of resolv.conf into the container (as
302           defined by systemd-resolved).
303
304         * The various programs included in systemd can now optionally output
305           their log messages on stderr prefixed with a timestamp, controlled by
306           the $SYSTEMD_LOG_TIME environment variable.
307
308         * systemctl gained a new "-P" switch that is a shortcut for "--value
309           --property=…".
310
311         * "systemctl list-units" and "systemctl list-machines" no longer hide
312           their first output column with --no-legend. To hide the first column,
313           use --plain.
314
315         * "systemctl reboot" takes the option "--reboot-argument=".
316           The optional positional argument to "systemctl reboot" is now
317           being deprecated in favor of this option.
318
319         * systemd-run gained a new switch --slice-inherit. If specified the
320           unit it generates is placed in the same slice as the systemd-run
321           process itself.
322
323         * systemd-journald gained support for zstd compression of large fields
324           in journal files. The hash tables in journal files have been hardened
325           against hash collisions. This is an incompatible change and means
326           that journal files created with new systemd versions are not readable
327           with old versions. If the $SYSTEMD_JOURNAL_KEYED_HASH boolean
328           environment variable for systemd-journald.service is set to 0 this
329           new hardening functionality may be turned off, so that generated
330           journal files remain compatible with older journalctl
331           implementations.
332
333         * journalctl will now include a clickable link in the default output for
334           each log message for which an URL with further documentation is
335           known. This is only supported on terminal emulators that support
336           clickable hyperlinks, and is turned off if a pager is used (since
337           "less" still doesn't support hyperlinks,
338           unfortunately). Documentation URLs may be included in log messages
339           either by including a DOCUMENTATION= journal field in it, or by
340           associating a journal message catalog entry with the log message's
341           MESSAGE_ID, which then carries a "Documentation:" tag.
342
343         * journald.conf gained a new boolean setting Audit= that may be used to
344           control whether systemd-journald will enable audit during
345           initialization.
346
347         * when systemd-journald's log stream is broken up into multiple lines
348           because the PID of the sender changed this is indicated in the
349           generated log records via the _LINE_BREAK=pid-change field.
350
351         * journalctl's "-o cat" output mode will now show one or more journal
352           fields specified with --output-fields= instead of unconditionally
353           MESSAGE=. This is useful to retrieve a very specific set of fields
354           without any decoration.
355
356         * The sd-journal.h API gained two new functions:
357           sd_journal_enumerate_available_unique() and
358           sd_journal_enumerate_available_data() that operate like their
359           counterparts that lack the _available_ in the name, but skip items
360           that cannot be read and processed by the local implementation
361           (i.e. are compressed in an unsupported format or such),
362
363         * coredumpctl gained a new --file= switch, matching the same one in
364           journalctl: a specific journal file may be specified to read the
365           coredump data from.
366
367         * coredumps collected by systemd-coredump may now be compressed using
368           the zstd algorithm.
369
370         * systemd-binfmt gained a new switch --unregister for unregistering all
371           registered entries at once. This is now invoked automatically at
372           shutdown, so that binary formats registered with the "F" flag will
373           not block clean file system unmounting.
374
375         * systemd-notify's --pid= switch gained new values: "parent", "self",
376           "auto" for controlling which PID to send to the service manager: the
377           systemd-notify process' PID, or the one of the process invoking it.
378
379         * systemd-logind's Session bus object learnt a new method call
380           SetType() for temporarily updating the session type of an already
381           allocated session. This is useful for upgrading tty sessions to
382           graphical ones once a compositor is invoked.
383
384         * systemd-socket-proxy gained a new switch --exit-idle-time= for
385           configuring an exit-on-idle time.
386
387         * systemd-repart's --empty= setting gained a new value "create". If
388           specified a new empty regular disk image file is created under the
389           specified name. Its size may be specified with the new --size=
390           option. The latter is also supported without the "create" mode, in
391           order to grow existing disk image files to the specified size. These
392           two new options are useful when creating or manipulating disk images
393           instead of operating on actual block devices.
394
395         * systemd-repart drop-ins now support a new UUID= setting to control
396           the UUID to assign to a newly created partition.
397
398         * systemd-repart's SizeMin= per-partition parameter now defaults to 10M
399           instead of 0.
400
401         * systemd-repart's Label= setting now support the usual, simple
402           specifier expansion.
403
404         * systemd-homed's LUKS backend gained the ability to discard empty file
405           system blocks automatically when the user logs out. This is enabled
406           by default to ensure that home directories take minimal space when
407           logged out but get full size guarantees when logged in. This may be
408           controlled with the new --luks-offline-discard= switch to homectl.
409
410         * If systemd-homed detects that /home/ is encrypted as a whole it will
411           now default to the directory or subvolume backends instead of the
412           LUKS backend, in order to avoid double encryption. The default
413           storage and file system may now be configured explicitly, too, via
414           the new /etc/systemd/homed.conf configuration file.
415
416         * systemd-homed now supports unlocking home directories with FIDO2
417           security tokens that support the 'hmac-secret' extension, in addition
418           to the existing support for PKCS#11 security token unlocking
419           support. Note that many recent hardware security tokens support both
420           interfaces. The FIDO2 support is accessible via homectl's
421           --fido2-device= option.
422
423         * homectl's --pkcs11-uri= setting now accepts two special parameters:
424           if "auto" is specified and only one suitable PKCS#11 security token
425           is plugged in, its URL is automatically determined and enrolled for
426           unlocking the home directory. If "list" is specified a brief table of
427           suitable PKCS#11 security tokens is shown. Similar, the new
428           --fido2-device= option also supports these two special values, for
429           automatically selecting and listing suitable FIDO2 devices.
430
431         * The /etc/crypttab tmp option now optionally takes an argument
432           selecting the file system to use. Moreover, the default is now
433           changed from ext2 to ext4.
434
435         * There's a new /etc/crypttab option "keyfile-erase". If specified the
436           key file listed in the same line is removed after use, regardless if
437           volume activation was successful or not. This is useful if the key
438           file is only acquired transiently at runtime and shall be erased
439           before the system continues to boot.
440
441         * There's also a new /etc/crypttab option "try-empty-password". If
442           specified, before asking the user for a password it is attempted to
443           unlock the volume with an empty password. This is useful for
444           installing encrypted images whose password shall be set on first boot
445           instead of at installation time.
446
447         * systemd-cryptsetup will now attempt to load the keys to unlock
448           volumes with automatically from files in
449           /etc/cryptsetup-keys.d/<volume>.key and
450           /run/cryptsetup-keys.d/<volume>.key, if any of these files exist.
451
452         * systemd-cryptsetup may now activate Microsoft BitLocker volumes via
453           /etc/crypttab, during boot.
454
455         * logind.conf gained a new RuntimeDirectoryInodesMax= setting to
456           control the inode limit for the per-user $XDG_RUNTIME_DIR tmpfs
457           instance.
458
459         * A new generator systemd-xdg-autostart-generator has been added. It
460           generates systemd unit files from XDG autostart .desktop files, and
461           may be used to let the systemd user instance manage services that are
462           started automatically as part of the desktop session.
463
464         * "bootctl" gained a new verb "reboot-to-firmware" that may be used
465           to query and change the firmware's 'reboot into firmware' setup flag.
466
467         * systemd-firstboot gained a new switch --kernel-command-line= that may
468           be used to initialize the /etc/kernel/cmdline file of the image. It
469           also gained a new switch --root-password-hashed= which is like
470           --root-password= but accepts a pre-hashed UNIX password as
471           argument. The new option --delete-root-password may be used to unset
472           any password for the root user (dangerous!). The --root-shell= switch
473           may be used to control the shell to use for the root account. A new
474           --force option may be used to override any already set settings with
475           the parameters specified on the command line (by default, the tool
476           will not override what has already been set before, i.e. is purely
477           incremental).
478
479         * systemd-firstboot gained support for a new --image= switch, which is
480           similar to --root= but accepts the path to a disk image file, on
481           which it then operates.
482
483         * A new sd-path.h API has been added to libsystemd. It provides a
484           simple API for retrieving various search paths and primary
485           directories for various resources.
486
487         * A new call sd_notify_barrier() has been added to the sd-daemon.h
488           API. The call will block until all previously sent sd_notify()
489           messages have been processed by the service manager. This is useful
490           to remove races caused by a process already having disappeared at the
491           time a notification message is processed by the service manager,
492           making correct attribution impossible. The systemd-notify tool will
493           now make use of this call implicitly, but this can be turned off again
494           via the new --no-block switch.
495
496         * When sending a file descriptor (fd) to the service manager to keep
497           track of, using the sd_notify() mechanism, a new parameter FDPOLL=0
498           may be specified. If passed the service manager will refrain from
499           poll()ing on the file descriptor. Traditionally (and when the
500           parameter is not specified), the service manager will poll it for
501           POLLHUP or POLLERR events, and immediately close the fds in that
502           case.
503
504         * The service manager (PID1) gained a new D-Bus method call
505           SetShowStatus() which may be used to control whether it shall show
506           boot-time status output on the console. This method has a similar
507           effect to sending SIGRTMIN+20/SIGRTMIN+21 to PID 1.
508
509         * The sd-bus API gained a number of convenience functions that take
510           va_list arguments rather than "...". For example, there's now
511           sd_bus_call_methodv() to match sd_bus_call_method(). Those calls make
512           it easier to build wrappers that accept variadic arguments and want
513           to pass a ready va_list structure to sd-bus.
514
515         * sd-bus vtable entries can have a new SD_BUS_VTABLE_ABSOLUTE_OFFSET
516           flag which alters how the userdata pointer to pass to the callbacks
517           is determined. When the flag is set, the offset field is converted
518           as-is into a pointer, without adding it to the object pointer the
519           vtable is associated with.
520
521         * sd-bus now exposes four new functions:
522           sd_bus_interface_name_is_valid() + sd_bus_service_name_is_valid() +
523           sd_bus_member_name_is_valid() + sd_bus_object_path_is_valid() will
524           validate strings to check if they qualify as various D-Bus concepts.
525
526         * The sd-bus API gained the SD_BUS_METHOD_WITH_ARGS(),
527           SD_BUS_METHOD_WITH_ARGS_OFFSET() and SD_BUS_SIGNAL_WITH_ARGS() macros
528           that simplify adding argument names to D-Bus methods and signals.
529
530         * The man pages for the sd-bus and sd-hwdb APIs have been completed.
531
532         * Various D-Bus APIs of systemd daemons now have man pages that
533           document the methods, signals and properties.
534
535         * The expectations on user/group name syntax are now documented in
536           detail; documentation on how classic home directories may be
537           converted into home directories managed by homed has been added;
538           documentation regarding integration of homed/userdb functionality in
539           desktops has been added:
540
541               https://systemd.io/USER_NAMES
542               https://systemd.io/CONVERTING_TO_HOMED
543               https://systemd.io/USERDB_AND_DESKTOPS
544
545         * Documentation for the on-disk Journal file format has been updated
546           and has now moved to:
547
548               https://systemd.io/JOURNAL_FILE_FORMAT
549
550         * The interface for containers (https://systemd.io/CONTAINER_INTERFACE)
551           has been extended by a set of environment variables that expose
552           select fields from the host's os-release file to the container
553           payload. Similarly, host's os-release files can be mounted into the
554           container underneath /run/host. Together, those mechanisms provide a
555           standardized way to expose information about the host to the
556           container payload. Both interfaces are implemented in systemd-nspawn.
557
558         * All D-Bus services shipped in systemd now implement the generic
559           LogControl1 D-Bus API which allows clients to change log level +
560           target of the service during runtime.
561
562         * Only relevant for developers: the mkosi.default symlink has been
563           dropped from version control. Please create a symlink to one of the
564           distribution-specific defaults in .mkosi/ based on your preference.
565
566         Contributions from: 24bisquitz, Adam Nielsen, Alan Perry, Alexander
567         Malafeev, Alin Popa, Alvin Šipraga, Amos Bird, Andreas Rammhold,
568         AndreRH, Andrew Doran, Anita Zhang, Ankit Jain, antznin, Arnaud
569         Ferraris, Arthur Moraes do Lago, Arusekk, Balaji Punnuru, Balint
570         Reczey, Bastien Nocera, bemarek, Benjamin Berg, Benjamin Dahlhoff,
571         Benjamin Robin, Chris Down, Chris Kerr, Christian Göttsche, Christian
572         Hesse, Christian Oder, Ciprian Hacman, Clinton Roy, codicodi, Corey
573         Hinshaw, Daan De Meyer, Dana Olson, Dan Callaghan, Daniel Fullmer,
574         Daniel Rusek, Dan Streetman, Dave Reisner, David Edmundson, David Wood,
575         Denis Pronin, Diego Escalante Urrelo, Dimitri John Ledkov,
576         dolphrundgren, duguxy, Einsler Lee, Elisei Roca, Emmanuel Garette, Eric
577         Anderson, Eric DeVolder, Evgeny Vereshchagin, ExtinctFire, fangxiuning,
578         Ferran Pallarès Roca, Filipe Brandenburger, Filippo Falezza, Finn,
579         Florian Klink, Florian Mayer, Franck Bui, Frantisek Sumsal, gaurav,
580         Georg Müller, Gergely Polonkai, Giedrius Statkevičius, Gigadoc2,
581         gogogogi, gzjsgdsb, Hans de Goede, Haochen Tong, ianhi, ignapk, Jakov
582         Smolic, James T. Lee, Jan Janssen, Jan Klötzke, Jan Palus, Jay Burger,
583         Jeremy Cline, Jérémy Rosen, Jian-Hong Pan, Jiri Slaby, Joel Shapiro,
584         Joerg Behrmann, Jörg Thalheim, Jouke Witteveen, Kai-Heng Feng, Kenny
585         Levinsen, Kevin Kuehler, Kumar Kartikeya Dwivedi, layderv, laydervus,
586         Lénaïc Huard, Lennart Poettering, Lidong Zhong, Luca Boccassi, Luca
587         BRUNO, Lucas Werkmeister, Lukas Klingsbo, Lukáš Nykrýn, Łukasz
588         Stelmach, Maciej S. Szmigiero, MadMcCrow, Marc-André Lureau, Marcel
589         Holtmann, Marc Kleine-Budde, Martin Hundebøll, Matthew Leeds, Matt
590         Ranostay, Maxim Fomin, MaxVerevkin, Michael Biebl, Michael Chapman,
591         Michael Gubbels, Michael Marley, Michał Bartoszkiewicz, Michal Koutný,
592         Michal Sekletár, Mike Gilbert, Mike Kazantsev, Mikhail Novosyolov, ml,
593         Motiejus Jakštys, nabijaczleweli, nerdopolis, Niccolò Maggioni, Niklas
594         Hambüchen, Norbert Lange, Paul Cercueil, pelzvieh, Peter Hutterer,
595         Piero La Terza, Pieter Lexis, Piotr Drąg, Rafael Fontenelle, Richard
596         Petri, Ronan Pigott, Ross Lagerwall, Rubens Figueiredo, satmandu,
597         Sean-StarLabs, Sebastian Jennen, sterlinghughes, Surhud More, Susant
598         Sahani, szb512, Thomas Haller, Tobias Hunger, Tom, Tomáš Pospíšek,
599         Tomer Shechner, Tom Hughes, Topi Miettinen, Tudor Roman, Uwe
600         Kleine-König, Valery0xff, Vito Caputo, Vladimir Panteleev, Vladyslav
601         Tronko, Wen Yang, Yegor Vialov, Yigal Korman, Yi Gao, YmrDtnJu, Yuri
602         Chornoivan, Yu Watanabe, Zbigniew Jędrzejewski-Szmek, Zhu Li, Дамјан
603         Георгиевски, наб
604
605         – Warsaw, 2020-07-24
606
607 CHANGES WITH 245:
608
609         * A new tool "systemd-repart" has been added, that operates as an
610           idempotent declarative repartitioner for GPT partition tables.
611           Specifically, a set of partitions that must or may exist can be
612           configured via drop-in files, and during every boot the partition
613           table on disk is compared with these files, creating missing
614           partitions or growing existing ones based on configurable relative
615           and absolute size constraints. The tool is strictly incremental,
616           i.e. does not delete, shrink or move partitions, but only adds and
617           grows them. The primary use-case is OS images that ship in minimized
618           form, that on first boot are grown to the size of the underlying
619           block device or augmented with additional partitions. For example,
620           the root partition could be extended to cover the whole disk, or a
621           swap or /home partitions could be added on first boot. It can also be
622           used for systems that use an A/B update scheme but ship images with
623           just the A partition, with B added on first boot. The tool is
624           primarily intended to be run in the initrd, shortly before
625           transitioning into the host OS, but can also be run after the
626           transition took place. It automatically discovers the disk backing
627           the root file system, and should hence not require any additional
628           configuration besides the partition definition drop-ins. If no
629           configuration drop-ins are present, no action is taken.
630
631         * A new component "userdb" has been added, along with a small daemon
632           "systemd-userdb.service" and a client tool "userdbctl". The framework
633           allows defining rich user and group records in a JSON format,
634           extending on the classic "struct passwd" and "struct group"
635           structures. Various components in systemd have been updated to
636           process records in this format, including systemd-logind and
637           pam-systemd. The user records are intended to be extensible, and
638           allow setting various resource management, security and runtime
639           parameters that shall be applied to processes and sessions of the
640           user as they log in. This facility is intended to allow associating
641           such metadata directly with user/group records so that they can be
642           produced, extended and consumed in unified form. We hope that
643           eventually frameworks such as sssd will generate records this way, so
644           that for the first time resource management and various other
645           per-user settings can be configured in LDAP directories and then
646           provided to systemd (specifically to systemd-logind and pam-system)
647           to apply on login. For further details see:
648
649           https://systemd.io/USER_RECORD
650           https://systemd.io/GROUP_RECORD
651           https://systemd.io/USER_GROUP_API
652
653         * A small new service systemd-homed.service has been added, that may be
654           used to securely manage home directories with built-in encryption.
655           The complete user record data is unified with the home directory,
656           thus making home directories naturally migratable. Its primary
657           back-end is based on LUKS volumes, but fscrypt, plain directories,
658           and other storage schemes are also supported. This solves a couple of
659           problems we saw with traditional ways to manage home directories, in
660           particular when it comes to encryption. For further discussion of
661           this, see the video of Lennart's talk at AllSystemsGo! 2019:
662
663           https://media.ccc.de/v/ASG2019-164-reinventing-home-directories
664
665           For further details about the format and expectations on home
666           directories this new daemon makes, see:
667
668           https://systemd.io/HOME_DIRECTORY
669
670         * systemd-journald is now multi-instantiable. In addition to the main
671           instance systemd-journald.service there's now a template unit
672           systemd-journald@.service, with each instance defining a new named
673           log 'namespace' (whose name is specified via the instance part of the
674           unit name). A new unit file setting LogNamespace= has been added,
675           taking such a namespace name, that assigns services to the specified
676           log namespaces. As each log namespace is serviced by its own
677           independent journal daemon, this functionality may be used to improve
678           performance and increase isolation of applications, at the price of
679           losing global message ordering. Each instance of journald has a
680           separate set of configuration files, with possibly different disk
681           usage limitations and other settings.
682
683           journalctl now takes a new option --namespace= to show logs from a
684           specific log namespace. The sd-journal.h API gained
685           sd_journal_open_namespace() for opening the log stream of a specific
686           log namespace. systemd-journald also gained the ability to exit on
687           idle, which is useful in the context of log namespaces, as this means
688           log daemons for log namespaces can be activated automatically on
689           demand and will stop automatically when no longer used, minimizing
690           resource usage.
691
692         * When systemd-tmpfiles copies a file tree using the 'C' line type it
693           will now label every copied file according to the SELinux database.
694
695         * When systemd/PID 1 detects it is used in the initrd it will now boot
696           into initrd.target rather than default.target by default. This should
697           make it simpler to build initrds with systemd as for many cases the
698           only difference between a host OS image and an initrd image now is
699           the presence of the /etc/initrd-release file.
700
701         * A new kernel command line option systemd.cpu_affinity= is now
702           understood. It's equivalent to the CPUAffinity= option in
703           /etc/systemd/system.conf and allows setting the CPU mask for PID 1
704           itself and the default for all other processes.
705
706         * When systemd/PID 1 is reloaded (with systemctl daemon-reload or
707           equivalent), the SELinux database is now reloaded, ensuring that
708           sockets and other file system objects are generated taking the new
709           database into account.
710
711         * systemd/PID 1 accepts a new "systemd.show-status=error" setting, and
712           "quiet" has been changed to imply that instead of
713           "systemd.show-status=auto". In this mode, only messages about errors
714           and significant delays in boot are shown on the console.
715
716         * The sd-event.h API gained native support for the new Linux "pidfd"
717           concept. This permits watching processes using file descriptors
718           instead of PID numbers, which fixes a number of races and makes
719           process supervision more robust and efficient. All of systemd's
720           components will now use pidfds if the kernel supports it for process
721           watching, with the exception of PID 1 itself, unfortunately. We hope
722           to move PID 1 to exclusively using pidfds too eventually, but this
723           requires some more kernel work first. (Background: PID 1 watches
724           processes using waitid() with the P_ALL flag, and that does not play
725           together nicely with pidfds yet.)
726
727         * Closely related to this, the sd-event.h API gained two new calls
728           sd_event_source_send_child_signal() (for sending a signal to a
729           watched process) and sd_event_source_get_child_process_own() (for
730           marking a process so that it is killed automatically whenever the
731           event source watching it is freed).
732
733         * systemd-networkd gained support for configuring Token Bucket Filter
734           (TBF) parameters in its qdisc configuration support. Similarly,
735           support for Stochastic Fairness Queuing (SFQ), Controlled-Delay
736           Active Queue Management (CoDel), and Fair Queue (FQ) has been added.
737
738         * systemd-networkd gained support for Intermediate Functional Block
739           (IFB) network devices.
740
741         * systemd-networkd gained support for configuring multi-path IP routes,
742           using the new MultiPathRoute= setting in the [Route] section.
743
744         * systemd-networkd's DHCPv4 client has been updated to support a new
745           SendDecline= option. If enabled, duplicate address detection is done
746           after a DHCP offer is received from the server. If a conflict is
747           detected, the address is declined. The DHCPv4 client also gained
748           support for a new RouteMTUBytes= setting that allows to configure the
749           MTU size to be used for routes generated from DHCPv4 leases.
750
751         * The PrefixRoute= setting in systemd-networkd's [Address] section of
752           .network files has been deprecated, and replaced by AddPrefixRoute=,
753           with its sense inverted.
754
755         * The Gateway= setting of [Route] sections of .network files gained
756           support for a special new value "_dhcp". If set, the configured
757           static route uses the gateway host configured via DHCP.
758
759         * New User= and SuppressPrefixLength= settings have been implemented
760           for the [RoutingPolicyRule] section of .network files to configure
761           source routing based on UID ranges and prefix length, respectively.
762
763         * sd-bus gained a new API call sd_bus_message_sensitive() that marks a
764           D-Bus message object as "sensitive". Those objects are erased from
765           memory when they are freed. This concept is intended to be used for
766           messages that contain security sensitive data. A new flag
767           SD_BUS_VTABLE_SENSITIVE has been introduced as well to mark methods
768           in sd-bus vtables, causing any incoming and outgoing messages of
769           those methods to be implicitly marked as "sensitive".
770
771         * sd-bus gained a new API call sd_bus_message_dump() for dumping the
772           contents of a message (or parts thereof) to standard output for
773           debugging purposes.
774
775         * systemd-sysusers gained support for creating users with the primary
776           group named differently than the user.
777
778         * systemd-growfs (i.e. the x-systemd.growfs mount option in /etc/fstab)
779           gained support for growing XFS partitions. Previously it supported
780           only ext4 and btrfs partitions.
781
782         * The support for /etc/crypttab gained a new x-initrd.attach option. If
783           set, the specified encrypted volume is unlocked already in the
784           initrd. This concept corresponds to the x-initrd.mount option in
785           /etc/fstab.
786
787         * systemd-cryptsetup gained native support for unlocking encrypted
788           volumes utilizing PKCS#11 smartcards, i.e. for example to bind
789           encryption of volumes to YubiKeys. This is exposed in the new
790           pkcs11-uri= option in /etc/crypttab.
791
792         * The /etc/fstab support in systemd now supports two new mount options
793           x-systemd.{required,wanted}-by=, for explicitly configuring the units
794           that the specified mount shall be pulled in by, in place of
795           the usual local-fs.target/remote-fs.target.
796
797         * The https://systemd.io/ web site has been relaunched, directly
798           populated with most of the documentation included in the systemd
799           repository. systemd also acquired a new logo, thanks to Tobias
800           Bernard.
801
802         * systemd-udevd gained support for managing "alternative" network
803           interface names, as supported by new Linux kernels. For the first
804           time this permits assigning multiple (and longer!) names to a network
805           interface. systemd-udevd will now by default assign the names
806           generated via all supported naming schemes to each interface. This
807           may be further tweaked with .link files and the AlternativeName= and
808           AlternativeNamesPolicy= settings. Other components of systemd have
809           been updated to support the new alternative names wherever
810           appropriate. For example, systemd-nspawn will now generate
811           alternative interface names for the host-facing side of container
812           veth links based on the full container name without truncation.
813
814         * systemd-nspawn interface naming logic has been updated in another way
815           too: if the main interface name (i.e. as opposed to new-style
816           "alternative" names) based on the container name is truncated, a
817           simple hashing scheme is used to give different interface names to
818           multiple containers whose names all begin with the same prefix. Since
819           this changes the primary interface names pointing to containers if
820           truncation happens, the old scheme may still be requested by
821           selecting an older naming scheme, via the net.naming-scheme= kernel
822           command line option.
823
824         * PrivateUsers= in service files now works in services run by the
825           systemd --user per-user instance of the service manager.
826
827         * A new per-service sandboxing option ProtectClock= has been added that
828           locks down write access to the system clock. It takes away device
829           node access to /dev/rtc as well as the system calls that set the
830           system clock and the CAP_SYS_TIME and CAP_WAKE_ALARM capabilities.
831           Note that this option does not affect access to auxiliary services
832           that allow changing the clock, for example access to
833           systemd-timedated.
834
835         * The systemd-id128 tool gained a new "show" verb for listing or
836           resolving a number of well-known UUIDs/128bit IDs, currently mostly
837           GPT partition table types.
838
839         * The Discoverable Partitions Specification has been updated to support
840           /var and /var/tmp partition discovery. Support for this has been
841           added to systemd-gpt-auto-generator. For details see:
842
843           https://systemd.io/DISCOVERABLE_PARTITIONS
844
845         * "systemctl list-unit-files" has been updated to show a new column
846           with the suggested enablement state based on the vendor preset files
847           for the respective units.
848
849         * "systemctl" gained a new option "--with-dependencies". If specified
850           commands such as "systemctl status" or "systemctl cat" will now show
851           all specified units along with all units they depend on.
852
853         * networkctl gained support for showing per-interface logs in its
854           "status" output.
855
856         * systemd-networkd-wait-online gained support for specifying the maximum
857           operational state to wait for, and to wait for interfaces to
858           disappear.
859
860         * The [Match] section of .link and .network files now supports a new
861           option PermanentMACAddress= which may be used to check against the
862           permanent MAC address of a network device even if a randomized MAC
863           address is used.
864
865         * The [TrafficControlQueueingDiscipline] section in .network files has
866           been renamed to [NetworkEmulator] with the "NetworkEmulator" prefix
867           dropped from the individual setting names.
868
869         * Any .link and .network files that have an empty [Match] section (this
870           also includes empty and commented-out files) will now be
871           rejected. systemd-udev and systemd-networkd started warning about
872           such files in version 243.
873
874         * systemd-logind will now validate access to the operation of changing
875           the virtual terminal via a polkit action. By default, only users
876           with at least one session on a local VT are granted permission.
877
878         * When systemd sets up PAM sessions that invoked service processes
879           shall run in, the pam_setcred() API is now invoked, thus permitting
880           PAM modules to set additional credentials for the processes.
881
882         * portablectl attach/detach verbs now accept --now and --enable options
883           to combine attachment with enablement and invocation, or detachment
884           with stopping and disablement.
885
886         * UPGRADE ISSUE: a bug where some jobs were trimmed as redundant was
887           fixed, which in turn exposed bugs in unit configuration of services
888           which have Type=oneshot and should only run once, but do not have
889           RemainAfterExit=yes set. Without RemainAfterExit=yes, a one-shot
890           service may be started again after exiting successfully, for example
891           as a dependency in another transaction. Affected services included
892           some internal systemd services (most notably
893           systemd-vconsole-setup.service, which was updated to have
894           RemainAfterExit=yes), and plymouth-start.service. Please ensure that
895           plymouth has been suitably updated or patched before upgrading to
896           this systemd release. See
897           https://bugzilla.redhat.com/show_bug.cgi?id=1807771 for some
898           additional discussion.
899
900         Contributions from: AJ Bagwell, Alin Popa, Andreas Rammhold, Anita
901         Zhang, Ansgar Burchardt, Antonio Russo, Arian van Putten, Ashley Davis,
902         Balint Reczey, Bart Willems, Bastien Nocera, Benjamin Dahlhoff, Charles
903         (Chas) Williams, cheese1, Chris Down, Chris Murphy, Christian Ehrhardt,
904         Christian Göttsche, cvoinf, Daan De Meyer, Daniele Medri, Daniel Rusek,
905         Daniel Shahaf, Dann Frazier, Dan Streetman, Dariusz Gadomski, David
906         Michael, Dimitri John Ledkov, Emmanuel Bourg, Evgeny Vereshchagin,
907         ezst036, Felipe Sateler, Filipe Brandenburger, Florian Klink, Franck
908         Bui, Fran Dieguez, Frantisek Sumsal, Greg "GothAck" Miell, Guilhem
909         Lettron, Guillaume Douézan-Grard, Hans de Goede, HATAYAMA Daisuke, Iain
910         Lane, James Buren, Jan Alexander Steffens (heftig), Jérémy Rosen, Jin
911         Park, Jun'ichi Nomura, Kai Krakow, Kevin Kuehler, Kevin P. Fleming,
912         Lennart Poettering, Leonid Bloch, Leonid Evdokimov, lothrond, Luca
913         Boccassi, Lukas K, Lynn Kirby, Mario Limonciello, Mark Deneen, Matthew
914         Leeds, Michael Biebl, Michal Koutný, Michal Sekletár, Mike Auty, Mike
915         Gilbert, mtron, nabijaczleweli, Naïm Favier, Nate Jones, Norbert Lange,
916         Oliver Giles, Paul Davey, Paul Menzel, Peter Hutterer, Piotr Drąg, Rafa
917         Couto, Raphael, rhn, Robert Scheck, Rocka, Romain Naour, Ryan Attard,
918         Sascha Dewald, Shengjing Zhu, Slava Kardakov, Spencer Michaels, Sylvain
919         Plantefeve, Stanislav Angelovič, Susant Sahani, Thomas Haller, Thomas
920         Schmitt, Timo Schlüßler, Timo Wilken, Tobias Bernard, Tobias Klauser,
921         Tobias Stoeckmann, Topi Miettinen, tsia, WataruMatsuoka, Wieland
922         Hoffmann, Wilhelm Schuster, Will Fleming, xduugu, Yong Cong Sin, Yuri
923         Chornoivan, Yu Watanabe, Zach Smith, Zbigniew Jędrzejewski-Szmek, Zeyu
924         DONG
925
926         – Warsaw, 2020-03-06
927
928 CHANGES WITH 244:
929
930         * Support for the cpuset cgroups v2 controller has been added.
931           Processes may be restricted to specific CPUs using the new
932           AllowedCPUs= setting, and to specific memory NUMA nodes using the new
933           AllowedMemoryNodes= setting.
934
935         * The signal used in restart jobs (as opposed to e.g. stop jobs) may
936           now be configured using a new RestartKillSignal= setting. This
937           allows units which signals to request termination to implement
938           different behaviour when stopping in preparation for a restart.
939
940         * "systemctl clean" may now be used also for socket, mount, and swap
941           units.
942
943         * systemd will also read configuration options from the EFI variable
944           SystemdOptions. This may be used to configure systemd behaviour when
945           modifying the kernel command line is inconvenient, but configuration
946           on disk is read too late, for example for the options related to
947           cgroup hierarchy setup. 'bootctl systemd-efi-options' may be used to
948           set the EFI variable.
949
950         * systemd will now disable printk ratelimits in early boot. This should
951           allow us to capture more logs from the early boot phase where normal
952           storage is not available and the kernel ring buffer is used for
953           logging. Configuration on the kernel command line has higher priority
954           and overrides the systemd setting.
955
956           systemd programs which log to /dev/kmsg directly use internal
957           ratelimits to prevent runaway logging. (Normally this is only used
958           during early boot, so in practice this change has very little
959           effect.)
960
961         * Unit files now support top level dropin directories of the form
962           <unit_type>.d/ (e.g. service.d/) that may be used to add configuration
963           that affects all corresponding unit files.
964
965         * systemctl gained support for 'stop --job-mode=triggering' which will
966           stop the specified unit and any units which could trigger it.
967
968         * Unit status display now includes units triggering and triggered by
969           the unit being shown.
970
971         * The RuntimeMaxSec= setting is now supported by scopes, not just
972           .service units. This is particularly useful for PAM sessions which
973           create a scope unit for the user login. systemd.runtime_max_sec=
974           setting may used with the pam_systemd module to limit the duration
975           of the PAM session, for example for time-limited logins.
976
977         * A new @pkey system call group is now defined to make it easier to
978           allow-list memory protection syscalls for containers and services
979           which need to use them.
980
981         * systemd-udevd: removed the 30s timeout for killing stale workers on
982           exit. systemd-udevd now waits for workers to finish. The hard-coded
983           exit timeout of 30s was too short for some large installations, where
984           driver initialization could be prematurely interrupted during initrd
985           processing if the root file system had been mounted and init was
986           preparing to switch root. If udevd is run without systemd and workers
987           are hanging while udevd receives an exit signal, udevd will now exit
988           when udev.event_timeout is reached for the last hanging worker. With
989           systemd, the exit timeout can additionally be configured using
990           TimeoutStopSec= in systemd-udevd.service.
991
992         * udev now provides a program (fido_id) that identifies FIDO CTAP1
993           ("U2F")/CTAP2 security tokens based on the usage declared in their
994           report and descriptor and outputs suitable environment variables.
995           This replaces the externally maintained allow lists of all known
996           security tokens that were used previously.
997
998         * Automatically generated autosuspend udev rules for allow-listed
999           devices have been imported from the Chromium OS project. This should
1000           improve power saving with many more devices.
1001
1002         * udev gained a new "CONST{key}=value" setting that allows matching
1003           against system-wide constants without forking a helper binary.
1004           Currently "arch" and "virt" keys are supported.
1005
1006         * udev now opens CDROMs in non-exclusive mode when querying their
1007           capabilities. This should fix issues where other programs trying to
1008           use the CDROM cannot gain access to it, but carries a risk of
1009           interfering with programs writing to the disk, if they did not open
1010           the device in exclusive mode as they should.
1011
1012         * systemd-networkd does not create a default route for IPv4 link local
1013           addressing anymore. The creation of the route was unexpected and was
1014           breaking routing in various cases, but people who rely on it being
1015           created implicitly will need to adjust. Such a route may be requested
1016           with DefaultRouteOnDevice=yes.
1017
1018           Similarly, systemd-networkd will not assign a link-local IPv6 address
1019           when IPv6 link-local routing is not enabled.
1020
1021         * Receive and transmit buffers may now be configured on links with
1022           the new RxBufferSize= and TxBufferSize= settings.
1023
1024         * systemd-networkd may now advertise additional IPv6 routes. A new
1025           [IPv6RoutePrefix] section with Route= and LifetimeSec= options is
1026           now supported.
1027
1028         * systemd-networkd may now configure "next hop" routes using the
1029           [NextHop] section and Gateway= and Id= settings.
1030
1031         * systemd-networkd will now retain DHCP config on restarts by default
1032           (but this may be overridden using the KeepConfiguration= setting).
1033           The default for SendRelease= has been changed to true.
1034
1035         * The DHCPv4 client now uses the OPTION_INFORMATION_REFRESH_TIME option
1036           received from the server.
1037
1038           The client will use the received SIP server list if UseSIP=yes is
1039           set.
1040
1041           The client may be configured to request specific options from the
1042           server using a new RequestOptions= setting.
1043
1044           The client may be configured to send arbitrary options to the server
1045           using a new SendOption= setting.
1046
1047           A new IPServiceType= setting has been added to configure the "IP
1048           service type" value used by the client.
1049
1050         * The DHCPv6 client learnt a new PrefixDelegationHint= option to
1051           request prefix hints in the DHCPv6 solicitation.
1052
1053         * The DHCPv4 server may be configured to send arbitrary options using
1054           a new SendOption= setting.
1055
1056         * The DHCPv4 server may now be configured to emit SIP server list using
1057           the new EmitSIP= and SIP= settings.
1058
1059         * systemd-networkd and networkctl may now renew DHCP leases on demand.
1060           networkctl has a new 'networkctl renew' verb.
1061
1062         * systemd-networkd may now reconfigure links on demand. networkctl
1063           gained two new verbs: "reload" will reload the configuration, and
1064           "reconfigure DEVICE…" will reconfigure one or more devices.
1065
1066         * .network files may now match on SSID and BSSID of a wireless network,
1067           i.e. the access point name and hardware address using the new SSID=
1068           and BSSID= options. networkctl will display the current SSID and
1069           BSSID for wireless links.
1070
1071           .network files may also match on the wireless network type using the
1072           new WLANInterfaceType= option.
1073
1074         * systemd-networkd now includes default configuration that enables
1075           link-local addressing when connected to an ad-hoc wireless network.
1076
1077         * systemd-networkd may configure the Traffic Control queueing
1078           disciplines in the kernel using the new
1079           [TrafficControlQueueingDiscipline] section and Parent=,
1080           NetworkEmulatorDelaySec=, NetworkEmulatorDelayJitterSec=,
1081           NetworkEmulatorPacketLimit=, NetworkEmulatorLossRate=,
1082           NetworkEmulatorDuplicateRate= settings.
1083
1084         * systemd-tmpfiles gained a new w+ setting to append to files.
1085
1086         * systemd-analyze dump will now report when the memory configuration in
1087           the kernel does not match what systemd has configured (usually,
1088           because some external program has modified the kernel configuration
1089           on its own).
1090
1091         * systemd-analyze gained a new --base-time= switch instructs the
1092           'calendar' verb to resolve times relative to that timestamp instead
1093           of the present time.
1094
1095         * journalctl --update-catalog now produces deterministic output (making
1096           reproducible image builds easier).
1097
1098         * A new devicetree-overlay setting is now documented in the Boot Loader
1099           Specification.
1100
1101         * The default value of the WatchdogSec= setting used in systemd
1102           services (the ones bundled with the project itself) may be set at
1103           configuration time using the -Dservice-watchdog= setting. If set to
1104           empty, the watchdogs will be disabled.
1105
1106         * systemd-resolved validates IP addresses in certificates now when GnuTLS
1107           is being used.
1108
1109         * libcryptsetup >= 2.0.1 is now required.
1110
1111         * A configuration option -Duser-path= may be used to override the $PATH
1112           used by the user service manager. The default is again to use the same
1113           path as the system manager.
1114
1115         * The systemd-id128 tool gained a new switch "-u" (or "--uuid") for
1116           outputting the 128bit IDs in UUID format (i.e. in the "canonical
1117           representation").
1118
1119         * Service units gained a new sandboxing option ProtectKernelLogs= which
1120           makes sure the program cannot get direct access to the kernel log
1121           buffer anymore, i.e. the syslog() system call (not to be confused
1122           with the API of the same name in libc, which is not affected), the
1123           /proc/kmsg and /dev/kmsg nodes and the CAP_SYSLOG capability are made
1124           inaccessible to the service. It's recommended to enable this setting
1125           for all services that should not be able to read from or write to the
1126           kernel log buffer, which are probably almost all.
1127
1128         Contributions from: Aaron Plattner, Alcaro, Anita Zhang, Balint Reczey,
1129         Bastien Nocera, Baybal Ni, Benjamin Bouvier, Benjamin Gilbert, Carlo
1130         Teubner, cbzxt, Chen Qi, Chris Down, Christian Rebischke, Claudio
1131         Zumbo, ClydeByrdIII, crashfistfight, Cyprien Laplace, Daniel Edgecumbe,
1132         Daniel Gorbea, Daniel Rusek, Daniel Stuart, Dan Streetman, David
1133         Pedersen, David Tardon, Dimitri John Ledkov, Dominique Martinet, Donald
1134         A. Cupp Jr, Evgeny Vereshchagin, Fabian Henneke, Filipe Brandenburger,
1135         Franck Bui, Frantisek Sumsal, Georg Müller, Hans de Goede, Haochen
1136         Tong, HATAYAMA Daisuke, Iwan Timmer, Jan Janssen, Jan Kundrát, Jan
1137         Synacek, Jan Tojnar, Jay Strict, Jérémy Rosen, Jóhann B. Guðmundsson,
1138         Jonas Jelten, Jonas Thelemann, Justin Trudell, J. Xing, Kai-Heng Feng,
1139         Kenneth D'souza, Kevin Becker, Kevin Kuehler, Lennart Poettering,
1140         Léonard Gérard, Lorenz Bauer, Luca Boccassi, Maciej Stanczew, Mario
1141         Limonciello, Marko Myllynen, Mark Stosberg, Martin Wilck, matthiasroos,
1142         Michael Biebl, Michael Olbrich, Michael Tretter, Michal Sekletar,
1143         Michal Sekletár, Michal Suchanek, Mike Gilbert, Mike Kazantsev, Nicolas
1144         Douma, nikolas, Norbert Lange, pan93412, Pascal de Bruijn, Paul Menzel,
1145         Pavel Hrdina, Peter Wu, Philip Withnall, Piotr Drąg, Rafael Fontenelle,
1146         Renaud Métrich, Riccardo Schirone, RoadrunnerWMC, Ronan Pigott, Ryan
1147         Attard, Sebastian Wick, Serge, Siddharth Chandrasekara, Steve Ramage,
1148         Steve Traylen, Susant Sahani, Thibault Nélis, Tim Teichmann, Tom
1149         Fitzhenry, Tommy J, Torsten Hilbrich, Vito Caputo, ypf791, Yu Watanabe,
1150         Zach Smith, Zbigniew Jędrzejewski-Szmek
1151
1152         – Warsaw, 2019-11-29
1153
1154 CHANGES WITH 243:
1155
1156         * This release enables unprivileged programs (i.e. requiring neither
1157           setuid nor file capabilities) to send ICMP Echo (i.e. ping) requests
1158           by turning on the "net.ipv4.ping_group_range" sysctl of the Linux
1159           kernel for the whole UNIX group range, i.e. all processes. This
1160           change should be reasonably safe, as the kernel support for it was
1161           specifically implemented to allow safe access to ICMP Echo for
1162           processes lacking any privileges. If this is not desirable, it can be
1163           disabled again by setting the parameter to "1 0".
1164
1165         * Previously, filters defined with SystemCallFilter= would have the
1166           effect that any calling of an offending system call would terminate
1167           the calling thread. This behaviour never made much sense, since
1168           killing individual threads of unsuspecting processes is likely to
1169           create more problems than it solves. With this release the default
1170           action changed from killing the thread to killing the whole
1171           process. For this to work correctly both a kernel version (>= 4.14)
1172           and a libseccomp version (>= 2.4.0) supporting this new seccomp
1173           action is required. If an older kernel or libseccomp is used the old
1174           behaviour continues to be used. This change does not affect any
1175           services that have no system call filters defined, or that use
1176           SystemCallErrorNumber= (and thus see EPERM or another error instead
1177           of being killed when calling an offending system call). Note that
1178           systemd documentation always claimed that the whole process is
1179           killed. With this change behaviour is thus adjusted to match the
1180           documentation.
1181
1182         * On 64 bit systems, the "kernel.pid_max" sysctl is now bumped to
1183           4194304 by default, i.e. the full 22bit range the kernel allows, up
1184           from the old 16bit range. This should improve security and
1185           robustness, as PID collisions are made less likely (though certainly
1186           still possible). There are rumours this might create compatibility
1187           problems, though at this moment no practical ones are known to
1188           us. Downstream distributions are hence advised to undo this change in
1189           their builds if they are concerned about maximum compatibility, but
1190           for everybody else we recommend leaving the value bumped. Besides
1191           improving security and robustness this should also simplify things as
1192           the maximum number of allowed concurrent tasks was previously bounded
1193           by both "kernel.pid_max" and "kernel.threads-max" and now effectively
1194           only a single knob is left ("kernel.threads-max"). There have been
1195           concerns that usability is affected by this change because larger PID
1196           numbers are harder to type, but we believe the change from 5 digits
1197           to 7 digits doesn't hamper usability.
1198
1199         * MemoryLow= and MemoryMin= gained hierarchy-aware counterparts,
1200           DefaultMemoryLow= and DefaultMemoryMin=, which can be used to
1201           hierarchically set default memory protection values for a particular
1202           subtree of the unit hierarchy.
1203
1204         * Memory protection directives can now take a value of zero, allowing
1205           explicit opting out of a default value propagated by an ancestor.
1206
1207         * systemd now defaults to the "unified" cgroup hierarchy setup during
1208           build-time, i.e. -Ddefault-hierarchy=unified is now the build-time
1209           default. Previously, -Ddefault-hierarchy=hybrid was the default. This
1210           change reflects the fact that cgroupsv2 support has matured
1211           substantially in both systemd and in the kernel, and is clearly the
1212           way forward. Downstream production distributions might want to
1213           continue to use -Ddefault-hierarchy=hybrid (or even =legacy) for
1214           their builds as unfortunately the popular container managers have not
1215           caught up with the kernel API changes.
1216
1217         * Man pages are not built by default anymore (html pages were already
1218           disabled by default), to make development builds quicker. When
1219           building systemd for a full installation with documentation, meson
1220           should be called with -Dman=true and/or -Dhtml=true as appropriate.
1221           The default was changed based on the assumption that quick one-off or
1222           repeated development builds are much more common than full optimized
1223           builds for installation, and people need to pass various other
1224           options to when doing "proper" builds anyway, so the gain from making
1225           development builds quicker is bigger than the one time disruption for
1226           packagers.
1227
1228           Two scripts are created in the *build* directory to generate and
1229           preview man and html pages on demand, e.g.:
1230
1231           build/man/man systemctl
1232           build/man/html systemd.index
1233
1234         * libidn2 is used by default if both libidn2 and libidn are installed.
1235           Please use -Dlibidn=true if libidn is preferred.
1236
1237         * The D-Bus "wire format" of the CPUAffinity= attribute is changed on
1238           big-endian machines. Before, bytes were written and read in native
1239           machine order as exposed by the native libc __cpu_mask interface.
1240           Now, little-endian order is always used (CPUs 0–7 are described by
1241           bits 0–7 in byte 0, CPUs 8–15 are described by byte 1, and so on).
1242           This change fixes D-Bus calls that cross endianness boundary.
1243
1244           The presentation format used for CPUAffinity= by "systemctl show" and
1245           "systemd-analyze dump" is changed to present CPU indices instead of
1246           the raw __cpu_mask bitmask. For example, CPUAffinity=0-1 would be
1247           shown as CPUAffinity=03000000000000000000000000000… (on
1248           little-endian) or CPUAffinity=00000000000000300000000000000… (on
1249           64-bit big-endian), and is now shown as CPUAffinity=0-1, matching the
1250           input format. The maximum integer that will be printed in the new
1251           format is 8191 (four digits), while the old format always used a very
1252           long number (with the length varying by architecture), so they can be
1253           unambiguously distinguished.
1254
1255         * /usr/sbin/halt.local is no longer supported. Implementation in
1256           distributions was inconsistent and it seems this functionality was
1257           very rarely used.
1258
1259           To replace this functionality, users should:
1260           - either define a new unit and make it a dependency of final.target
1261             (systemctl add-wants final.target my-halt-local.service)
1262           - or move the shutdown script to /usr/lib/systemd/system-shutdown/
1263             and ensure that it accepts "halt", "poweroff", "reboot", and
1264             "kexec" as an argument, see the description in systemd-shutdown(8).
1265
1266         * When a [Match] section in .link or .network file is empty (contains
1267           no match patterns), a warning will be emitted. Please add any "match
1268           all" pattern instead, e.g. OriginalName=* or Name=* in case all
1269           interfaces should really be matched.
1270
1271         * A new setting NUMAPolicy= may be used to set process memory
1272           allocation policy. This setting can be specified in
1273           /etc/systemd/system.conf and hence will set the default policy for
1274           PID1. The default policy can be overridden on a per-service
1275           basis. The related setting NUMAMask= is used to specify NUMA node
1276           mask that should be associated with the selected policy.
1277
1278         * PID 1 will now listen to Out-Of-Memory (OOM) events the kernel
1279           generates when processes it manages are reaching their memory limits,
1280           and will place their units in a special state, and optionally kill or
1281           stop the whole unit.
1282
1283         * The service manager will now expose bus properties for the IO
1284           resources used by units. This information is also shown in "systemctl
1285           status" now (for services that have IOAccounting=yes set). Moreover,
1286           the IO accounting data is included in the resource log message
1287           generated whenever a unit stops.
1288
1289         * Units may now configure an explicit timeout to wait for when killed
1290           with SIGABRT, for example when a service watchdog is hit. Previously,
1291           the regular TimeoutStopSec= timeout was applied in this case too —
1292           now a separate timeout may be set using TimeoutAbortSec=.
1293
1294         * Services may now send a special WATCHDOG=trigger message with
1295           sd_notify() to trigger an immediate "watchdog missed" event, and thus
1296           trigger service termination. This is useful both for testing watchdog
1297           handling, but also for defining error paths in services, that shall
1298           be handled the same way as watchdog events.
1299
1300         * There are two new per-unit settings IPIngressFilterPath= and
1301           IPEgressFilterPath= which allow configuration of a BPF program
1302           (usually by specifying a path to a program uploaded to /sys/fs/bpf/)
1303           to apply to the IP packet ingress/egress path of all processes of a
1304           unit. This is useful to allow running systemd services with BPF
1305           programs set up externally.
1306
1307         * systemctl gained a new "clean" verb for removing the state, cache,
1308           runtime or logs directories of a service while it is terminated. The
1309           new verb may also be used to remove the state maintained on disk for
1310           timer units that have Persistent= configured.
1311
1312         * During the last phase of shutdown systemd will now automatically
1313           increase the log level configured in the "kernel.printk" sysctl so
1314           that any relevant loggable events happening during late shutdown are
1315           made visible. Previously, loggable events happening so late during
1316           shutdown were generally lost if the "kernel.printk" sysctl was set to
1317           high thresholds, as regular logging daemons are terminated at that
1318           time and thus nothing is written to disk.
1319
1320         * If processes terminated during the last phase of shutdown do not exit
1321           quickly systemd will now show their names after a short time, to make
1322           debugging easier. After a longer timeout they are forcibly killed,
1323           as before.
1324
1325         * journalctl (and the other tools that display logs) will now highlight
1326           warnings in yellow (previously, both LOG_NOTICE and LOG_WARNING where
1327           shown in bright bold, now only LOG_NOTICE is). Moreover, audit logs
1328           are now shown in blue color, to separate them visually from regular
1329           logs. References to configuration files are now turned into clickable
1330           links on terminals that support that.
1331
1332         * systemd-journald will now stop logging to /var/log/journal during
1333           shutdown when /var/ is on a separate mount, so that it can be
1334           unmounted safely during shutdown.
1335
1336         * systemd-resolved gained support for a new 'strict' DNS-over-TLS mode.
1337
1338         * systemd-resolved "Cache=" configuration option in resolved.conf has
1339           been extended to also accept the 'no-negative' value. Previously,
1340           only a boolean option was allowed (yes/no), having yes as the
1341           default. If this option is set to 'no-negative', negative answers are
1342           not cached while the old cache heuristics are used positive answers.
1343           The default remains unchanged.
1344
1345         * The predictable naming scheme for network devices now supports
1346           generating predictable names for "netdevsim" devices.
1347
1348           Moreover, the "en" prefix was dropped from the ID_NET_NAME_ONBOARD
1349           udev property.
1350
1351           Those two changes form a new net.naming-policy-scheme= entry.
1352           Distributions which want to preserve naming stability may want to set
1353           the -Ddefault-net-naming-scheme= configuration option.
1354
1355         * systemd-networkd now supports MACsec, nlmon, IPVTAP and Xfrm
1356           interfaces natively.
1357
1358         * systemd-networkd's bridge FDB support now allows configuration of a
1359           destination address for each entry (Destination=), as well as the
1360           VXLAN VNI (VNI=), as well as an option to declare what an entry is
1361           associated with (AssociatedWith=).
1362
1363         * systemd-networkd's DHCPv4 support now understands a new MaxAttempts=
1364           option for configuring the maximum number of DHCP lease requests.  It
1365           also learnt a new BlackList= option for deny-listing DHCP servers (a
1366           similar setting has also been added to the IPv6 RA client), as well
1367           as a SendRelease= option for configuring whether to send a DHCP
1368           RELEASE message when terminating.
1369
1370         * systemd-networkd's DHCPv4 and DHCPv6 stacks can now be configured
1371           separately in the [DHCPv4] and [DHCPv6] sections.
1372
1373         * systemd-networkd's DHCP support will now optionally create an
1374           implicit host route to the DNS server specified in the DHCP lease, in
1375           addition to the routes listed explicitly in the lease. This should
1376           ensure that in multi-homed systems DNS traffic leaves the systems on
1377           the interface that acquired the DNS server information even if other
1378           routes such as default routes exist. This behaviour may be turned on
1379           with the new RoutesToDNS= option.
1380
1381         * systemd-networkd's VXLAN support gained a new option
1382           GenericProtocolExtension= for enabling VXLAN Generic Protocol
1383           Extension support, as well as IPDoNotFragment= for setting the IP
1384           "Don't fragment" bit on outgoing packets. A similar option has been
1385           added to the GENEVE support.
1386
1387         * In systemd-networkd's [Route] section you may now configure
1388           FastOpenNoCookie= for configuring per-route TCP fast-open support, as
1389           well as TTLPropagate= for configuring Label Switched Path (LSP) TTL
1390           propagation. The Type= setting now supports local, broadcast,
1391           anycast, multicast, any, xresolve routes, too.
1392
1393         * systemd-networkd's [Network] section learnt a new option
1394           DefaultRouteOnDevice= for automatically configuring a default route
1395           onto the network device.
1396
1397         * systemd-networkd's bridging support gained two new options ProxyARP=
1398           and ProxyARPWifi= for configuring proxy ARP behaviour as well as
1399           MulticastRouter= for configuring multicast routing behaviour. A new
1400           option MulticastIGMPVersion= may be used to change bridge's multicast
1401           Internet Group Management Protocol (IGMP) version.
1402
1403         * systemd-networkd's FooOverUDP support gained the ability to configure
1404           local and peer IP addresses via Local= and Peer=. A new option
1405           PeerPort= may be used to configure the peer's IP port.
1406
1407         * systemd-networkd's TUN support gained a new setting VnetHeader= for
1408           tweaking Generic Segment Offload support.
1409
1410         * The address family for policy rules may be specified using the new
1411           Family= option in the [RoutingPolicyRule] section.
1412
1413         * networkctl gained a new "delete" command for removing virtual network
1414           devices, as well as a new "--stats" switch for showing device
1415           statistics.
1416
1417         * networkd.conf gained a new setting SpeedMeter= and
1418           SpeedMeterIntervalSec=, to measure bitrate of network interfaces. The
1419           measured speed may be shown by 'networkctl status'.
1420
1421         * "networkctl status" now displays MTU and queue lengths, and more
1422           detailed information about VXLAN and bridge devices.
1423
1424         * systemd-networkd's .network and .link files gained a new Property=
1425           setting in the [Match] section, to match against devices with
1426           specific udev properties.
1427
1428         * systemd-networkd's tunnel support gained a new option
1429           AssignToLoopback= for selecting whether to use the loopback device
1430           "lo" as underlying device.
1431
1432         * systemd-networkd's MACAddress= setting in the [Neighbor] section has
1433           been renamed to LinkLayerAddress=, and it now allows configuration of
1434           IP addresses, too.
1435
1436         * systemd-networkd's handling of the kernel's disable_ipv6 sysctl is
1437           simplified: systemd-networkd will disable the sysctl (enable IPv6) if
1438           IPv6 configuration (static or DHCPv6) was found for a given
1439           interface. It will not touch the sysctl otherwise.
1440
1441         * The order of entries is $PATH used by the user manager instance was
1442           changed to put bin/ entries before the corresponding sbin/ entries.
1443           It is recommended to not rely on this order, and only ever have one
1444           binary with a given name in the system paths under /usr.
1445
1446         * A new tool systemd-network-generator has been added that may generate
1447           .network, .netdev and .link files from IP configuration specified on
1448           the kernel command line in the format used by Dracut.
1449
1450         * The CriticalConnection= setting in .network files is now deprecated,
1451           and replaced by a new KeepConfiguration= setting which allows more
1452           detailed configuration of the IP configuration to keep in place.
1453
1454         * systemd-analyze gained a few new verbs:
1455
1456           - "systemd-analyze timestamp" parses and converts timestamps. This is
1457             similar to the existing "systemd-analyze calendar" command which
1458             does the same for recurring calendar events.
1459
1460           - "systemd-analyze timespan" parses and converts timespans (i.e.
1461             durations as opposed to points in time).
1462
1463           - "systemd-analyze condition" will parse and test ConditionXYZ=
1464             expressions.
1465
1466           - "systemd-analyze exit-status" will parse and convert exit status
1467             codes to their names and back.
1468
1469           - "systemd-analyze unit-files" will print a list of all unit
1470             file paths and unit aliases.
1471
1472         * SuccessExitStatus=, RestartPreventExitStatus=, and
1473           RestartForceExitStatus= now accept exit status names (e.g. "DATAERR"
1474           is equivalent to "65"). Those exit status name mappings may be
1475           displayed with the systemd-analyze exit-status verb describe above.
1476
1477         * systemd-logind now exposes a per-session SetBrightness() bus call,
1478           which may be used to securely change the brightness of a kernel
1479           brightness device, if it belongs to the session's seat. By using this
1480           call unprivileged clients can make changes to "backlight" and "leds"
1481           devices securely with strict requirements on session membership.
1482           Desktop environments may use this to generically make brightness
1483           changes to such devices without shipping private SUID binaries or
1484           udev rules for that purpose.
1485
1486         * "udevadm info" gained a --wait-for-initialization switch to wait for
1487           a device to be initialized.
1488
1489         * systemd-hibernate-resume-generator will now look for resumeflags= on
1490           the kernel command line, which is similar to rootflags= and may be
1491           used to configure device timeout for the hibernation device.
1492
1493         * sd-event learnt a new API call sd_event_source_disable_unref() for
1494           disabling and unref'ing an event source in a single function. A
1495           related call sd_event_source_disable_unrefp() has been added for use
1496           with gcc's cleanup extension.
1497
1498         * The sd-id128.h public API gained a new definition
1499           SD_ID128_UUID_FORMAT_STR for formatting a 128bit ID in UUID format
1500           with printf().
1501
1502         * "busctl introspect" gained a new switch --xml-interface for dumping
1503           XML introspection data unmodified.
1504
1505         * PID 1 may now show the unit name instead of the unit description
1506           string in its status output during boot. This may be configured in
1507           the StatusUnitFormat= setting in /etc/systemd/system.conf or the
1508           kernel command line option systemd.status_unit_format=.
1509
1510         * PID 1 now understands a new option KExecWatchdogSec= in
1511           /etc/systemd/system.conf to set a watchdog timeout for kexec reboots.
1512           Previously watchdog functionality was only available for regular
1513           reboots. The new setting defaults to off, because we don't know in
1514           the general case if the watchdog will be reset after kexec (some
1515           drivers do reset it, but not all), and the new userspace might not be
1516           configured to handle the watchdog.
1517
1518           Moreover, the old ShutdownWatchdogSec= setting has been renamed to
1519           RebootWatchdogSec= to more clearly communicate what it is about. The
1520           old name is still accepted for compatibility.
1521
1522         * The systemd.debug_shell kernel command line option now optionally
1523           takes a tty name to spawn the debug shell on, which allows a
1524           different tty to be selected than the built-in default.
1525
1526         * Service units gained a new ExecCondition= setting which will run
1527           before ExecStartPre= and either continue execution of the unit (for
1528           clean exit codes), stop execution without marking the unit failed
1529           (for exit codes 1 through 254), or stop execution and fail the unit
1530           (for exit code 255 or abnormal termination).
1531
1532         * A new service systemd-pstore.service has been added that pulls data
1533           from /sys/fs/pstore/ and saves it to /var/lib/pstore for later
1534           review.
1535
1536         * timedatectl gained new verbs for configuring per-interface NTP
1537           service configuration for systemd-timesyncd.
1538
1539         * "localectl list-locales" won't list non-UTF-8 locales anymore. It's
1540           2019. (You can set non-UTF-8 locales though, if you know their name.)
1541
1542         * If variable assignments in sysctl.d/ files are prefixed with "-" any
1543           failures to apply them are now ignored.
1544
1545         * systemd-random-seed.service now optionally credits entropy when
1546           applying the seed to the system. Set $SYSTEMD_RANDOM_SEED_CREDIT to
1547           true for the service to enable this behaviour, but please consult the
1548           documentation first, since this comes with a couple of caveats.
1549
1550         * systemd-random-seed.service is now a synchronization point for full
1551           initialization of the kernel's entropy pool. Services that require
1552           /dev/urandom to be correctly initialized should be ordered after this
1553           service.
1554
1555         * The systemd-boot boot loader has been updated to optionally maintain
1556           a random seed file in the EFI System Partition (ESP). During the boot
1557           phase, this random seed is read and updated with a new seed
1558           cryptographically derived from it. Another derived seed is passed to
1559           the OS. The latter seed is then credited to the kernel's entropy pool
1560           very early during userspace initialization (from PID 1). This allows
1561           systems to boot up with a fully initialized kernel entropy pool from
1562           earliest boot on, and thus entirely removes all entropy pool
1563           initialization delays from systems using systemd-boot. Special care
1564           is taken to ensure different seeds are derived on system images
1565           replicated to multiple systems. "bootctl status" will show whether
1566           a seed was received from the boot loader.
1567
1568         * bootctl gained two new verbs:
1569
1570           - "bootctl random-seed" will generate the file in ESP and an EFI
1571             variable to allow a random seed to be passed to the OS as described
1572             above.
1573
1574           - "bootctl is-installed" checks whether systemd-boot is currently
1575             installed.
1576
1577         * bootctl will warn if it detects that boot entries are misconfigured
1578           (for example if the kernel image was removed without purging the
1579           bootloader entry).
1580
1581         * A new document has been added describing systemd's use and support
1582           for the kernel's entropy pool subsystem:
1583
1584           https://systemd.io/RANDOM_SEEDS
1585
1586         * When the system is hibernated the swap device to write the
1587           hibernation image to is now automatically picked from all available
1588           swap devices, preferring the swap device with the highest configured
1589           priority over all others, and picking the device with the most free
1590           space if there are multiple devices with the highest priority.
1591
1592         * /etc/crypttab support has learnt a new keyfile-timeout= per-device
1593           option that permits selecting the timeout how long to wait for a
1594           device with an encryption key before asking for the password.
1595
1596         * IOWeight= has learnt to properly set the IO weight when using the
1597           BFQ scheduler officially found in kernels 5.0+.
1598
1599         * A new mailing list has been created for reporting of security issues:
1600           systemd-security@redhat.com. For mode details, see
1601           https://systemd.io/CONTRIBUTING#security-vulnerability-reports.
1602
1603         Contributions from: Aaron Barany, Adrian Bunk, Alan Jenkins, Albrecht
1604         Lohofener, Andrej Valek, Anita Zhang, Arian van Putten, Balint Reczey,
1605         Bastien Nocera, Ben Boeckel, Benjamin Robin, camoz, Chen Qi, Chris
1606         Chiu, Chris Down, Christian Göttsche, Christian Kellner, Clinton Roy,
1607         Connor Reeder, Daniel Black, Daniel Lublin, Daniele Medri, Dan
1608         Streetman, Dave Reisner, Dave Ross, David Art, David Tardon, Debarshi
1609         Ray, Dimitri John Ledkov, Dominick Grift, Donald Buczek, Douglas
1610         Christman, Eric DeVolder, EtherGraf, Evgeny Vereshchagin, Feldwor,
1611         Felix Riemann, Florian Dollinger, Francesco Pennica, Franck Bui,
1612         Frantisek Sumsal, Franz Pletz, frederik, Hans de Goede, Iago López
1613         Galeiras, Insun Pyo, Ivan Shapovalov, Iwan Timmer, Jack, Jakob
1614         Unterwurzacher, Jan Chren, Jan Klötzke, Jan Losinski, Jan Pokorný, Jan
1615         Synacek, Jan-Michael Brummer, Jeka Pats, Jeremy Soller, Jérémy Rosen,
1616         Jiri Pirko, Joe Lin, Joerg Behrmann, Joe Richey, Jóhann B. Guðmundsson,
1617         Johannes Christ, Johannes Schmitz, Jonathan Rouleau, Jorge Niedbalski,
1618         Jörg Thalheim, Kai Krakow, Kai Lüke, Karel Zak, Kashyap Chamarthy,
1619         Krayushkin Konstantin, Lennart Poettering, Lubomir Rintel, Luca
1620         Boccassi, Luís Ferreira, Marc-André Lureau, Markus Felten, Martin Pitt,
1621         Matthew Leeds, Mattias Jernberg, Michael Biebl, Michael Olbrich,
1622         Michael Prokop, Michael Stapelberg, Michael Zhivich, Michal Koutný,
1623         Michal Sekletar, Mike Gilbert, Milan Broz, Miroslav Lichvar, mpe85,
1624         Mr-Foo, Network Silence, Oliver Harley, pan93412, Paul Menzel, pEJipE,
1625         Peter A. Bigot, Philip Withnall, Piotr Drąg, Rafael Fontenelle, Robert
1626         Scheck, Roberto Santalla, Ronan Pigott, root, RussianNeuroMancer,
1627         Sebastian Jennen, shinygold, Shreyas Behera, Simon Schricker, Susant
1628         Sahani, Thadeu Lima de Souza Cascardo, Theo Ouzhinski, Thiebaud
1629         Weksteen, Thomas Haller, Thomas Weißschuh, Tomas Mraz, Tommi Rantala,
1630         Topi Miettinen, VD-Lycos, ven, Vladimir Yerilov, Wieland Hoffmann,
1631         William A. Kennington III, William Wold, Xi Ruoyao, Yuri Chornoivan,
1632         Yu Watanabe, Zach Smith, Zbigniew Jędrzejewski-Szmek, Zhang Xianwei
1633
1634         – Camerino, 2019-09-03
1635
1636 CHANGES WITH 242:
1637
1638         * In .link files, MACAddressPolicy=persistent (the default) is changed
1639           to cover more devices. For devices like bridges, tun, tap, bond, and
1640           similar interfaces that do not have other identifying information,
1641           the interface name is used as the basis for persistent seed for MAC
1642           and IPv4LL addresses. The way that devices that were handled
1643           previously is not changed, and this change is about covering more
1644           devices then previously by the "persistent" policy.
1645
1646           MACAddressPolicy=random may be used to force randomized MACs and
1647           IPv4LL addresses for a device if desired.
1648
1649           Hint: the log output from udev (at debug level) was enhanced to
1650           clarify what policy is followed and which attributes are used.
1651           `SYSTEMD_LOG_LEVEL=debug udevadm test-builtin net_setup_link /sys/class/net/<name>`
1652           may be used to view this.
1653
1654           Hint: if a bridge interface is created without any slaves, and gains
1655           a slave later, then now the bridge does not inherit slave's MAC.
1656           To inherit slave's MAC, for example, create the following file:
1657           ```
1658           # /etc/systemd/network/98-bridge-inherit-mac.link
1659           [Match]
1660           Type=bridge
1661
1662           [Link]
1663           MACAddressPolicy=none
1664           ```
1665
1666         * The .device units generated by systemd-fstab-generator and other
1667           generators do not automatically pull in the corresponding .mount unit
1668           as a Wants= dependency. This means that simply plugging in the device
1669           will not cause the mount unit to be started automatically. But please
1670           note that the mount unit may be started for other reasons, in
1671           particular if it is part of local-fs.target, and any unit which
1672           (transitively) depends on local-fs.target is started.
1673
1674         * networkctl list/status/lldp now accept globbing wildcards for network
1675           interface names to match against all existing interfaces.
1676
1677         * The $PIDFILE environment variable is set to point the absolute path
1678           configured with PIDFile= for processes of that service.
1679
1680         * The fallback DNS server list was augmented with Cloudflare public DNS
1681           servers. Use `-Ddns-servers=` to set a different fallback.
1682
1683         * A new special target usb-gadget.target will be started automatically
1684           when a USB Device Controller is detected (which means that the system
1685           is a USB peripheral).
1686
1687         * A new unit setting CPUQuotaPeriodSec= assigns the time period
1688           relatively to which the CPU time quota specified by CPUQuota= is
1689           measured.
1690
1691         * A new unit setting ProtectHostname= may be used to prevent services
1692           from modifying hostname information (even if they otherwise would
1693           have privileges to do so).
1694
1695         * A new unit setting NetworkNamespacePath= may be used to specify a
1696           namespace for service or socket units through a path referring to a
1697           Linux network namespace pseudo-file.
1698
1699         * The PrivateNetwork= setting and JoinsNamespaceOf= dependencies now
1700           have an effect on .socket units: when used the listening socket is
1701           created within the configured network namespace instead of the host
1702           namespace.
1703
1704         * ExecStart= command lines in unit files may now be prefixed with ':'
1705           in which case environment variable substitution is
1706           disabled. (Supported for the other ExecXYZ= settings, too.)
1707
1708         * .timer units gained two new boolean settings OnClockChange= and
1709           OnTimezoneChange= which may be used to also trigger a unit when the
1710           system clock is changed or the local timezone is
1711           modified. systemd-run has been updated to make these options easily
1712           accessible from the command line for transient timers.
1713
1714         * Two new conditions for units have been added: ConditionMemory= may be
1715           used to conditionalize a unit based on installed system
1716           RAM. ConditionCPUs= may be used to conditionalize a unit based on
1717           installed CPU cores.
1718
1719         * The @default system call filter group understood by SystemCallFilter=
1720           has been updated to include the new rseq() system call introduced in
1721           kernel 4.15.
1722
1723         * A new time-set.target has been added that indicates that the system
1724           time has been set from a local source (possibly imprecise). The
1725           existing time-sync.target is stronger and indicates that the time has
1726           been synchronized with a precise external source. Services where
1727           approximate time is sufficient should use the new target.
1728
1729         * "systemctl start" (and related commands) learnt a new
1730           --show-transaction option. If specified brief information about all
1731           jobs queued because of the requested operation is shown.
1732
1733         * systemd-networkd recognizes a new operation state 'enslaved', used
1734           (instead of 'degraded' or 'carrier') for interfaces which form a
1735           bridge, bond, or similar, and an new 'degraded-carrier' operational
1736           state used for the bond or bridge master interface when one of the
1737           enslaved devices is not operational.
1738
1739         * .network files learnt the new IgnoreCarrierLoss= option for leaving
1740           networks configured even if the carrier is lost.
1741
1742         * The RequiredForOnline= setting in .network files may now specify a
1743           minimum operational state required for the interface to be considered
1744           "online" by systemd-networkd-wait-online. Related to this
1745           systemd-networkd-wait-online gained a new option --operational-state=
1746           to configure the same, and its --interface= option was updated to
1747           optionally also take an operational state specific for an interface.
1748
1749         * systemd-networkd-wait-online gained a new setting --any for waiting
1750           for only one of the requested interfaces instead of all of them.
1751
1752         * systemd-networkd now implements L2TP tunnels.
1753
1754         * Two new .network settings UseAutonomousPrefix= and UseOnLinkPrefix=
1755           may be used to cause autonomous and onlink prefixes received in IPv6
1756           Router Advertisements to be ignored.
1757
1758         * New MulticastFlood=, NeighborSuppression=, and Learning= .network
1759           file settings may be used to tweak bridge behaviour.
1760
1761         * The new TripleSampling= option in .network files may be used to
1762           configure CAN triple sampling.
1763
1764         * A new .netdev settings PrivateKeyFile= and PresharedKeyFile= may be
1765           used to point to private or preshared key for a WireGuard interface.
1766
1767         * /etc/crypttab now supports the same-cpu-crypt and
1768           submit-from-crypt-cpus options to tweak encryption work scheduling
1769           details.
1770
1771         * systemd-tmpfiles will now take a BSD file lock before operating on a
1772           contents of directory. This may be used to temporarily exclude
1773           directories from aging by taking the same lock (useful for example
1774           when extracting a tarball into /tmp or /var/tmp as a privileged user,
1775           which might create files with really old timestamps, which
1776           nevertheless should not be deleted). For further details, see:
1777
1778           https://systemd.io/TEMPORARY_DIRECTORIES
1779
1780         * systemd-tmpfiles' h line type gained support for the
1781           FS_PROJINHERIT_FL ('P') file attribute (introduced in kernel 4.5),
1782           controlling project quota inheritance.
1783
1784         * sd-boot and bootctl now implement support for an Extended Boot Loader
1785           (XBOOTLDR) partition, that is intended to be mounted to /boot, in
1786           addition to the ESP partition mounted to /efi or /boot/efi.
1787           Configuration file fragments, kernels, initrds and other EFI images
1788           to boot will be loaded from both the ESP and XBOOTLDR partitions.
1789           The XBOOTLDR partition was previously described by the Boot Loader
1790           Specification, but implementation was missing in sd-boot. Support for
1791           this concept allows using the sd-boot boot loader in more
1792           conservative scenarios where the boot loader itself is placed in the
1793           ESP but the kernels to boot (and their metadata) in a separate
1794           partition.
1795
1796         * A system may now be booted with systemd.volatile=overlay on the
1797           kernel command line, which causes the root file system to be set up
1798           an overlayfs mount combining the root-only root directory with a
1799           writable tmpfs. In this setup, the underlying root device is not
1800           modified, and any changes are lost at reboot.
1801
1802         * Similar, systemd-nspawn can now boot containers with a volatile
1803           overlayfs root with the new --volatile=overlay switch.
1804
1805         * systemd-nspawn can now consume OCI runtime bundles using a new
1806           --oci-bundle= option. This implementation is fully usable, with most
1807           features in the specification implemented, but since this a lot of
1808           new code and functionality, this feature should most likely not
1809           be used in production yet.
1810
1811         * systemd-nspawn now supports various options described by the OCI
1812           runtime specification on the command-line and in .nspawn files:
1813           --inaccessible=/Inaccessible= may be used to mask parts of the file
1814           system tree, --console=/--pipe may be used to configure how standard
1815           input, output, and error are set up.
1816
1817         * busctl learned the `emit` verb to generate D-Bus signals.
1818
1819         * systemd-analyze cat-config may be used to gather and display
1820           configuration spread over multiple files, for example system and user
1821           presets, tmpfiles.d, sysusers.d, udev rules, etc.
1822
1823         * systemd-analyze calendar now takes an optional new parameter
1824           --iterations= which may be used to show a maximum number of iterations
1825           the specified expression will elapse next.
1826
1827         * The sd-bus C API gained support for naming method parameters in the
1828           introspection data.
1829
1830         * systemd-logind gained D-Bus APIs to specify the "reboot parameter"
1831           the reboot() system call expects.
1832
1833         * journalctl learnt a new --cursor-file= option that points to a file
1834           from which a cursor should be loaded in the beginning and to which
1835           the updated cursor should be stored at the end.
1836
1837         * ACRN hypervisor and Windows Subsystem for Linux (WSL) are now
1838           detected by systemd-detect-virt (and may also be used in
1839           ConditionVirtualization=).
1840
1841         * The behaviour of systemd-logind may now be modified with environment
1842           variables $SYSTEMD_REBOOT_TO_FIRMWARE_SETUP,
1843           $SYSTEMD_REBOOT_TO_BOOT_LOADER_MENU, and
1844           $SYSTEMD_REBOOT_TO_BOOT_LOADER_ENTRY. They cause logind to either
1845           skip the relevant operation completely (when set to false), or to
1846           create a flag file in /run/systemd (when set to true), instead of
1847           actually commencing the real operation when requested. The presence
1848           of /run/systemd/reboot-to-firmware-setup,
1849           /run/systemd/reboot-to-boot-loader-menu, and
1850           /run/systemd/reboot-to-boot-loader-entry, may be used by alternative
1851           boot loader implementations to replace some steps logind performs
1852           during reboot with their own operations.
1853
1854         * systemctl can be used to request a reboot into the boot loader menu
1855           or a specific boot loader entry with the new --boot-load-menu= and
1856           --boot-loader-entry= options to a reboot command. (This requires a
1857           boot loader that supports this, for example sd-boot.)
1858
1859         * kernel-install will no longer unconditionally create the output
1860           directory (e.g. /efi/<machine-id>/<kernel-version>) for boot loader
1861           snippets, but will do only if the machine-specific parent directory
1862           (i.e. /efi/<machine-id>/) already exists. bootctl has been modified
1863           to create this parent directory during sd-boot installation.
1864
1865           This makes it easier to use kernel-install with plugins which support
1866           a different layout of the bootloader partitions (for example grub2).
1867
1868         * During package installation (with `ninja install`), we would create
1869           symlinks for getty@tty1.service, systemd-networkd.service,
1870           systemd-networkd.socket, systemd-resolved.service,
1871           remote-cryptsetup.target, remote-fs.target,
1872           systemd-networkd-wait-online.service, and systemd-timesyncd.service
1873           in /etc, as if `systemctl enable` was called for those units, to make
1874           the system usable immediately after installation. Now this is not
1875           done anymore, and instead calling `systemctl preset-all` is
1876           recommended after the first installation of systemd.
1877
1878         * A new boolean sandboxing option RestrictSUIDSGID= has been added that
1879           is built on seccomp. When turned on creation of SUID/SGID files is
1880           prohibited.
1881
1882         * The NoNewPrivileges= and the new RestrictSUIDSGID= options are now
1883           implied if DynamicUser= is turned on for a service. This hardens
1884           these services, so that they neither can benefit from nor create
1885           SUID/SGID executables. This is a minor compatibility breakage, given
1886           that when DynamicUser= was first introduced SUID/SGID behaviour was
1887           unaffected. However, the security benefit of these two options is
1888           substantial, and the setting is still relatively new, hence we opted
1889           to make it mandatory for services with dynamic users.
1890
1891         Contributions from: Adam Jackson, Alexander Tsoy, Andrey Yashkin,
1892         Andrzej Pietrasiewicz, Anita Zhang, Balint Reczey, Beniamino Galvani,
1893         Ben Iofel, Benjamin Berg, Benjamin Dahlhoff, Chris, Chris Morin,
1894         Christopher Wong, Claudius Ellsel, Clemens Gruber, dana, Daniel Black,
1895         Davide Cavalca, David Michael, David Rheinsberg, emersion, Evgeny
1896         Vereshchagin, Filipe Brandenburger, Franck Bui, Frantisek Sumsal,
1897         Giacinto Cifelli, Hans de Goede, Hugo Kindel, Ignat Korchagin, Insun
1898         Pyo, Jan Engelhardt, Jonas Dorel, Jonathan Lebon, Jonathon Kowalski,
1899         Jörg Sommer, Jörg Thalheim, Jussi Pakkanen, Kai-Heng Feng, Lennart
1900         Poettering, Lubomir Rintel, Luís Ferreira, Martin Pitt, Matthias
1901         Klumpp, Michael Biebl, Michael Niewöhner, Michael Olbrich, Michal
1902         Sekletar, Mike Lothian, Paul Menzel, Piotr Drąg, Riccardo Schirone,
1903         Robin Elvedi, Roman Kulikov, Ronald Tschalär, Ross Burton, Ryan
1904         Gonzalez, Sebastian Krzyszkowiak, Stephane Chazelas, StKob, Susant
1905         Sahani, Sylvain Plantefève, Szabolcs Fruhwald, Taro Yamada, Theo
1906         Ouzhinski, Thomas Haller, Tobias Jungel, Tom Yan, Tony Asleson, Topi
1907         Miettinen, unixsysadmin, Van Laser, Vesa Jääskeläinen, Yu, Li-Yu,
1908         Yu Watanabe, Zbigniew Jędrzejewski-Szmek
1909
1910         — Warsaw, 2019-04-11
1911
1912 CHANGES WITH 241:
1913
1914         * The default locale can now be configured at compile time. Otherwise,
1915           a suitable default will be selected automatically (one of C.UTF-8,
1916           en_US.UTF-8, and C).
1917
1918         * The version string shown by systemd and other tools now includes the
1919           git commit hash when built from git. An override may be specified
1920           during compilation, which is intended to be used by distributions to
1921           include the package release information.
1922
1923         * systemd-cat can now filter standard input and standard error streams
1924           for different syslog priorities using the new --stderr-priority=
1925           option.
1926
1927         * systemd-journald and systemd-journal-remote reject entries which
1928           contain too many fields (CVE-2018-16865) and set limits on the
1929           process' command line length (CVE-2018-16864).
1930
1931         * $DBUS_SESSION_BUS_ADDRESS environment variable is set by pam_systemd
1932           again.
1933
1934         * A new network device NamePolicy "keep" is implemented for link files,
1935           and used by default in 99-default.link (the fallback configuration
1936           provided by systemd). With this policy, if the network device name
1937           was already set by userspace, the device will not be renamed again.
1938           This matches the naming scheme that was implemented before
1939           systemd-240. If naming-scheme < 240 is specified, the "keep" policy
1940           is also enabled by default, even if not specified. Effectively, this
1941           means that if naming-scheme >= 240 is specified, network devices will
1942           be renamed according to the configuration, even if they have been
1943           renamed already, if "keep" is not specified as the naming policy in
1944           the .link file. The 99-default.link file provided by systemd includes
1945           "keep" for backwards compatibility, but it is recommended for user
1946           installed .link files to *not* include it.
1947
1948           The "kernel" policy, which keeps kernel names declared to be
1949           "persistent", now works again as documented.
1950
1951         * kernel-install script now optionally takes the paths to one or more
1952           initrd files, and passes them to all plugins.
1953
1954         * The mincore() system call has been dropped from the @system-service
1955           system call filter group, as it is pretty exotic and may potentially
1956           used for side-channel attacks.
1957
1958         * -fPIE is dropped from compiler and linker options. Please specify
1959           -Db_pie=true option to meson to build position-independent
1960           executables. Note that the meson option is supported since meson-0.49.
1961
1962         * The fs.protected_regular and fs.protected_fifos sysctls, which were
1963           added in Linux 4.19 to make some data spoofing attacks harder, are
1964           now enabled by default. While this will hopefully improve the
1965           security of most installations, it is technically a backwards
1966           incompatible change; to disable these sysctls again, place the
1967           following lines in /etc/sysctl.d/60-protected.conf or a similar file:
1968
1969               fs.protected_regular = 0
1970               fs.protected_fifos = 0
1971
1972           Note that the similar hardlink and symlink protection has been
1973           enabled since v199, and may be disabled likewise.
1974
1975         * The files read from the EnvironmentFile= setting in unit files now
1976           parse backslashes inside quotes literally, matching the behaviour of
1977           POSIX shells.
1978
1979         * udevadm trigger, udevadm control, udevadm settle and udevadm monitor
1980           now automatically become NOPs when run in a chroot() environment.
1981
1982         * The tmpfiles.d/ "C" line type will now copy directory trees not only
1983           when the destination is so far missing, but also if it already exists
1984           as a directory and is empty. This is useful to cater for systems
1985           where directory trees are put together from multiple separate mount
1986           points but otherwise empty.
1987
1988         * A new function sd_bus_close_unref() (and the associated
1989           sd_bus_close_unrefp()) has been added to libsystemd, that combines
1990           sd_bus_close() and sd_bus_unref() in one.
1991
1992         * udevadm control learnt a new option for --ping for testing whether a
1993           systemd-udevd instance is running and reacting.
1994
1995         * udevadm trigger learnt a new option for --wait-daemon for waiting
1996           systemd-udevd daemon to be initialized.
1997
1998         Contributions from: Aaron Plattner, Alberts Muktupāvels, Alex Mayer,
1999         Ayman Bagabas, Beniamino Galvani, Burt P, Chris Down, Chris Lamb, Chris
2000         Morin, Christian Hesse, Claudius Ellsel, dana, Daniel Axtens, Daniele
2001         Medri, Dave Reisner, David Santamaría Rogado, Diego Canuhe, Dimitri
2002         John Ledkov, Evgeny Vereshchagin, Fabrice Fontaine, Filipe
2003         Brandenburger, Franck Bui, Frantisek Sumsal, govwin, Hans de Goede,
2004         James Hilliard, Jan Engelhardt, Jani Uusitalo, Jan Janssen, Jan
2005         Synacek, Jonathan McDowell, Jonathan Roemer, Jonathon Kowalski, Joost
2006         Heitbrink, Jörg Thalheim, Lance, Lennart Poettering, Louis Taylor,
2007         Lucas Werkmeister, Mantas Mikulėnas, Marc-Antoine Perennou,
2008         marvelousblack, Michael Biebl, Michael Sloan, Michal Sekletar, Mike
2009         Auty, Mike Gilbert, Mikhail Kasimov, Neil Brown, Niklas Hambüchen,
2010         Patrick Williams, Paul Seyfert, Peter Hutterer, Philip Withnall, Roger
2011         James, Ronnie P. Thomas, Ryan Gonzalez, Sam Morris, Stephan Edel,
2012         Stephan Gerhold, Susant Sahani, Taro Yamada, Thomas Haller, Topi
2013         Miettinen, YiFei Zhu, YmrDtnJu, YunQiang Su, Yu Watanabe, Zbigniew
2014         Jędrzejewski-Szmek, zsergeant77, Дамјан Георгиевски
2015
2016         — Berlin, 2019-02-14
2017
2018 CHANGES WITH 240:
2019
2020         * NoNewPrivileges=yes has been set for all long-running services
2021           implemented by systemd. Previously, this was problematic due to
2022           SELinux (as this would also prohibit the transition from PID1's label
2023           to the service's label). This restriction has since been lifted, but
2024           an SELinux policy update is required.
2025           (See e.g. https://github.com/fedora-selinux/selinux-policy/pull/234.)
2026
2027         * DynamicUser=yes is dropped from systemd-networkd.service,
2028           systemd-resolved.service and systemd-timesyncd.service, which was
2029           enabled in v239 for systemd-networkd.service and systemd-resolved.service,
2030           and since v236 for systemd-timesyncd.service. The users and groups
2031           systemd-network, systemd-resolve and systemd-timesync are created
2032           by systemd-sysusers again. Distributors or system administrators
2033           may need to create these users and groups if they not exist (or need
2034           to re-enable DynamicUser= for those units) while upgrading systemd.
2035           Also, the clock file for systemd-timesyncd may need to move from
2036           /var/lib/private/systemd/timesync/clock to /var/lib/systemd/timesync/clock.
2037
2038         * When unit files are loaded from disk, previously systemd would
2039           sometimes (depending on the unit loading order) load units from the
2040           target path of symlinks in .wants/ or .requires/ directories of other
2041           units. This meant that unit could be loaded from different paths
2042           depending on whether the unit was requested explicitly or as a
2043           dependency of another unit, not honouring the priority of directories
2044           in search path. It also meant that it was possible to successfully
2045           load and start units which are not found in the unit search path, as
2046           long as they were requested as a dependency and linked to from
2047           .wants/ or .requires/. The target paths of those symlinks are not
2048           used for loading units anymore and the unit file must be found in
2049           the search path.
2050
2051         * A new service type has been added: Type=exec. It's very similar to
2052           Type=simple but ensures the service manager will wait for both fork()
2053           and execve() of the main service binary to complete before proceeding
2054           with follow-up units. This is primarily useful so that the manager
2055           propagates any errors in the preparation phase of service execution
2056           back to the job that requested the unit to be started. For example,
2057           consider a service that has ExecStart= set to a file system binary
2058           that doesn't exist. With Type=simple starting the unit would be
2059           considered instantly successful, as only fork() has to complete
2060           successfully and the manager does not wait for execve(), and hence
2061           its failure is seen "too late". With the new Type=exec service type
2062           starting the unit will fail, as the manager will wait for the
2063           execve() and notice its failure, which is then propagated back to the
2064           start job.
2065
2066           NOTE: with the next release 241 of systemd we intend to change the
2067           systemd-run tool to default to Type=exec for transient services
2068           started by it. This should be mostly safe, but in specific corner
2069           cases might result in problems, as the systemd-run tool will then
2070           block on NSS calls (such as user name look-ups due to User=) done
2071           between the fork() and execve(), which under specific circumstances
2072           might cause problems. It is recommended to specify "-p Type=simple"
2073           explicitly in the few cases where this applies. For regular,
2074           non-transient services (i.e. those defined with unit files on disk)
2075           we will continue to default to Type=simple.
2076
2077         * The Linux kernel's current default RLIMIT_NOFILE resource limit for
2078           userspace processes is set to 1024 (soft) and 4096
2079           (hard). Previously, systemd passed this on unmodified to all
2080           processes it forked off. With this systemd release the hard limit
2081           systemd passes on is increased to 512K, overriding the kernel's
2082           defaults and substantially increasing the number of simultaneous file
2083           descriptors unprivileged userspace processes can allocate. Note that
2084           the soft limit remains at 1024 for compatibility reasons: the
2085           traditional UNIX select() call cannot deal with file descriptors >=
2086           1024 and increasing the soft limit globally might thus result in
2087           programs unexpectedly allocating a high file descriptor and thus
2088           failing abnormally when attempting to use it with select() (of
2089           course, programs shouldn't use select() anymore, and prefer
2090           poll()/epoll, but the call unfortunately remains undeservedly popular
2091           at this time). This change reflects the fact that file descriptor
2092           handling in the Linux kernel has been optimized in more recent
2093           kernels and allocating large numbers of them should be much cheaper
2094           both in memory and in performance than it used to be. Programs that
2095           want to take benefit of the increased limit have to "opt-in" into
2096           high file descriptors explicitly by raising their soft limit. Of
2097           course, when they do that they must acknowledge that they cannot use
2098           select() anymore (and neither can any shared library they use — or
2099           any shared library used by any shared library they use and so on).
2100           Which default hard limit is most appropriate is of course hard to
2101           decide. However, given reports that ~300K file descriptors are used
2102           in real-life applications we believe 512K is sufficiently high as new
2103           default for now. Note that there are also reports that using very
2104           high hard limits (e.g. 1G) is problematic: some software allocates
2105           large arrays with one element for each potential file descriptor
2106           (Java, …) — a high hard limit thus triggers excessively large memory
2107           allocations in these applications. Hopefully, the new default of 512K
2108           is a good middle ground: higher than what real-life applications
2109           currently need, and low enough for avoid triggering excessively large
2110           allocations in problematic software. (And yes, somebody should fix
2111           Java.)
2112
2113         * The fs.nr_open and fs.file-max sysctls are now automatically bumped
2114           to the highest possible values, as separate accounting of file
2115           descriptors is no longer necessary, as memcg tracks them correctly as
2116           part of the memory accounting anyway. Thus, from the four limits on
2117           file descriptors currently enforced (fs.file-max, fs.nr_open,
2118           RLIMIT_NOFILE hard, RLIMIT_NOFILE soft) we turn off the first two,
2119           and keep only the latter two. A set of build-time options
2120           (-Dbump-proc-sys-fs-file-max=false and -Dbump-proc-sys-fs-nr-open=false)
2121           has been added to revert this change in behaviour, which might be
2122           an option for systems that turn off memcg in the kernel.
2123
2124         * When no /etc/locale.conf file exists (and hence no locale settings
2125           are in place), systemd will now use the "C.UTF-8" locale by default,
2126           and set LANG= to it. This locale is supported by various
2127           distributions including Fedora, with clear indications that upstream
2128           glibc is going to make it available too. This locale enables UTF-8
2129           mode by default, which appears appropriate for 2018.
2130
2131         * The "net.ipv4.conf.all.rp_filter" sysctl will now be set to 2 by
2132           default. This effectively switches the RFC3704 Reverse Path filtering
2133           from Strict mode to Loose mode. This is more appropriate for hosts
2134           that have multiple links with routes to the same networks (e.g.
2135           a client with a Wi-Fi and Ethernet both connected to the internet).
2136
2137           Consult the kernel documentation for details on this sysctl:
2138           https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt
2139
2140         * CPUAccounting=yes no longer enables the CPU controller when using
2141           kernel 4.15+ and the unified cgroup hierarchy, as required accounting
2142           statistics are now provided independently from the CPU controller.
2143
2144         * Support for disabling a particular cgroup controller within a sub-tree
2145           has been added through the DisableControllers= directive.
2146
2147         * cgroup_no_v1=all on the kernel command line now also implies
2148           using the unified cgroup hierarchy, unless one explicitly passes
2149           systemd.unified_cgroup_hierarchy=0 on the kernel command line.
2150
2151         * The new "MemoryMin=" unit file property may now be used to set the
2152           memory usage protection limit of processes invoked by the unit. This
2153           controls the cgroup v2 memory.min attribute. Similarly, the new
2154           "IODeviceLatencyTargetSec=" property has been added, wrapping the new
2155           cgroup v2 io.latency cgroup property for configuring per-service I/O
2156           latency.
2157
2158         * systemd now supports the cgroup v2 devices BPF logic, as counterpart
2159           to the cgroup v1 "devices" cgroup controller.
2160
2161         * systemd-escape now is able to combine --unescape with --template. It
2162           also learnt a new option --instance for extracting and unescaping the
2163           instance part of a unit name.
2164
2165         * sd-bus now provides the sd_bus_message_readv() which is similar to
2166           sd_bus_message_read() but takes a va_list object. The pair
2167           sd_bus_set_method_call_timeout() and sd_bus_get_method_call_timeout()
2168           has been added for configuring the default method call timeout to
2169           use. sd_bus_error_move() may be used to efficiently move the contents
2170           from one sd_bus_error structure to another, invalidating the
2171           source. sd_bus_set_close_on_exit() and sd_bus_get_close_on_exit() may
2172           be used to control whether a bus connection object is automatically
2173           flushed when an sd-event loop is exited.
2174
2175         * When processing classic BSD syslog log messages, journald will now
2176           save the original time-stamp string supplied in the new
2177           SYSLOG_TIMESTAMP= journal field. This permits consumers to
2178           reconstruct the original BSD syslog message more correctly.
2179
2180         * StandardOutput=/StandardError= in service files gained support for
2181           new "append:…" parameters, for connecting STDOUT/STDERR of a service
2182           to a file, and appending to it.
2183
2184         * The signal to use as last step of killing of unit processes is now
2185           configurable. Previously it was hard-coded to SIGKILL, which may now
2186           be overridden with the new KillSignal= setting. Note that this is the
2187           signal used when regular termination (i.e. SIGTERM) does not suffice.
2188           Similarly, the signal used when aborting a program in case of a
2189           watchdog timeout may now be configured too (WatchdogSignal=).
2190
2191         * The XDG_SESSION_DESKTOP environment variable may now be configured in
2192           the pam_systemd argument line, using the new desktop= switch. This is
2193           useful to initialize it properly from a display manager without
2194           having to touch C code.
2195
2196         * Most configuration options that previously accepted percentage values
2197           now also accept permille values with the '‰' suffix (instead of '%').
2198
2199         * systemd-resolved may now optionally use OpenSSL instead of GnuTLS for
2200           DNS-over-TLS.
2201
2202         * systemd-resolved's configuration file resolved.conf gained a new
2203           option ReadEtcHosts= which may be used to turn off processing and
2204           honoring /etc/hosts entries.
2205
2206         * The "--wait" switch may now be passed to "systemctl
2207           is-system-running", in which case the tool will synchronously wait
2208           until the system finished start-up.
2209
2210         * hostnamed gained a new bus call to determine the DMI product UUID.
2211
2212         * On x86-64 systemd will now prefer using the RDRAND processor
2213           instruction over /dev/urandom whenever it requires randomness that
2214           neither has to be crypto-grade nor should be reproducible. This
2215           should substantially reduce the amount of entropy systemd requests
2216           from the kernel during initialization on such systems, though not
2217           reduce it to zero. (Why not zero? systemd still needs to allocate
2218           UUIDs and such uniquely, which require high-quality randomness.)
2219
2220         * networkd gained support for Foo-Over-UDP, ERSPAN and ISATAP
2221           tunnels. It also gained a new option ForceDHCPv6PDOtherInformation=
2222           for forcing the "Other Information" bit in IPv6 RA messages. The
2223           bonding logic gained four new options AdActorSystemPriority=,
2224           AdUserPortKey=, AdActorSystem= for configuring various 802.3ad
2225           aspects, and DynamicTransmitLoadBalancing= for enabling dynamic
2226           shuffling of flows. The tunnel logic gained a new
2227           IPv6RapidDeploymentPrefix= option for configuring IPv6 Rapid
2228           Deployment. The policy rule logic gained four new options IPProtocol=,
2229           SourcePort= and DestinationPort=, InvertRule=. The bridge logic gained
2230           support for the MulticastToUnicast= option. networkd also gained
2231           support for configuring static IPv4 ARP or IPv6 neighbor entries.
2232
2233         * .preset files (as read by 'systemctl preset') may now be used to
2234           instantiate services.
2235
2236         * /etc/crypttab now understands the sector-size= option to configure
2237           the sector size for an encrypted partition.
2238
2239         * Key material for encrypted disks may now be placed on a formatted
2240           medium, and referenced from /etc/crypttab by the UUID of the file
2241           system, followed by "=" suffixed by the path to the key file.
2242
2243         * The "collect" udev component has been removed without replacement, as
2244           it is neither used nor maintained.
2245
2246         * When the RuntimeDirectory=, StateDirectory=, CacheDirectory=,
2247           LogsDirectory=, ConfigurationDirectory= settings are used in a
2248           service the executed processes will now receive a set of environment
2249           variables containing the full paths of these directories.
2250           Specifically, RUNTIME_DIRECTORY=, STATE_DIRECTORY, CACHE_DIRECTORY,
2251           LOGS_DIRECTORY, CONFIGURATION_DIRECTORY are now set if these options
2252           are used. Note that these options may be used multiple times per
2253           service in which case the resulting paths will be concatenated and
2254           separated by colons.
2255
2256         * Predictable interface naming has been extended to cover InfiniBand
2257           NICs. They will be exposed with an "ib" prefix.
2258
2259         * tmpfiles.d/ line types may now be suffixed with a '-' character, in
2260           which case the respective line failing is ignored.
2261
2262         * .link files may now be used to configure the equivalent to the
2263           "ethtool advertise" commands.
2264
2265         * The sd-device.h and sd-hwdb.h APIs are now exported, as an
2266           alternative to libudev.h. Previously, the latter was just an internal
2267           wrapper around the former, but now these two APIs are exposed
2268           directly.
2269
2270         * sd-id128.h gained a new function sd_id128_get_boot_app_specific()
2271           which calculates an app-specific boot ID similar to how
2272           sd_id128_get_machine_app_specific() generates an app-specific machine
2273           ID.
2274
2275         * A new tool systemd-id128 has been added that can be used to determine
2276           and generate various 128bit IDs.
2277
2278         * /etc/os-release gained two new standardized fields DOCUMENTATION_URL=
2279           and LOGO=.
2280
2281         * systemd-hibernate-resume-generator will now honor the "noresume"
2282           kernel command line option, in which case it will bypass resuming
2283           from any hibernated image.
2284
2285         * The systemd-sleep.conf configuration file gained new options
2286           AllowSuspend=, AllowHibernation=, AllowSuspendThenHibernate=,
2287           AllowHybridSleep= for prohibiting specific sleep modes even if the
2288           kernel exports them.
2289
2290         * portablectl is now officially supported and has thus moved to
2291           /usr/bin/.
2292
2293         * bootctl learnt the two new commands "set-default" and "set-oneshot"
2294           for setting the default boot loader item to boot to (either
2295           persistently or only for the next boot). This is currently only
2296           compatible with sd-boot, but may be implemented on other boot loaders
2297           too, that follow the boot loader interface. The updated interface is
2298           now documented here:
2299
2300           https://systemd.io/BOOT_LOADER_INTERFACE
2301
2302         * A new kernel command line option systemd.early_core_pattern= is now
2303           understood which may be used to influence the core_pattern PID 1
2304           installs during early boot.
2305
2306         * busctl learnt two new options -j and --json= for outputting method
2307           call replies, properties and monitoring output in JSON.
2308
2309         * journalctl's JSON output now supports simple ANSI coloring as well as
2310           a new "json-seq" mode for generating RFC7464 output.
2311
2312         * Unit files now support the %g/%G specifiers that resolve to the UNIX
2313           group/GID of the service manager runs as, similar to the existing
2314           %u/%U specifiers that resolve to the UNIX user/UID.
2315
2316         * systemd-logind learnt a new global configuration option
2317           UserStopDelaySec= that may be set in logind.conf. It specifies how
2318           long the systemd --user instance shall remain started after a user
2319           logs out. This is useful to speed up repetitive re-connections of the
2320           same user, as it means the user's service manager doesn't have to be
2321           stopped/restarted on each iteration, but can be reused between
2322           subsequent options. This setting defaults to 10s. systemd-logind also
2323           exports two new properties on its Manager D-Bus objects indicating
2324           whether the system's lid is currently closed, and whether the system
2325           is on AC power.
2326
2327         * systemd gained support for a generic boot counting logic, which
2328           generically permits automatic reverting to older boot loader entries
2329           if newer updated ones don't work. The boot loader side is implemented
2330           in sd-boot, but is kept open for other boot loaders too. For details
2331           see:
2332
2333           https://systemd.io/AUTOMATIC_BOOT_ASSESSMENT
2334
2335         * The SuccessAction=/FailureAction= unit file settings now learnt two
2336           new parameters: "exit" and "exit-force", which result in immediate
2337           exiting of the service manager, and are only useful in systemd --user
2338           and container environments.
2339
2340         * Unit files gained support for a pair of options
2341           FailureActionExitStatus=/SuccessActionExitStatus= for configuring the
2342           exit status to use as service manager exit status when
2343           SuccessAction=/FailureAction= is set to exit or exit-force.
2344
2345         * A pair of LogRateLimitIntervalSec=/LogRateLimitBurst= per-service
2346           options may now be used to configure the log rate limiting applied by
2347           journald per-service.
2348
2349         * systemd-analyze gained a new verb "timespan" for parsing and
2350           normalizing time span values (i.e. strings like "5min 7s 8us").
2351
2352         * systemd-analyze also gained a new verb "security" for analyzing the
2353           security and sand-boxing settings of services in order to determine an
2354           "exposure level" for them, indicating whether a service would benefit
2355           from more sand-boxing options turned on for them.
2356
2357         * "systemd-analyze syscall-filter" will now also show system calls
2358           supported by the local kernel but not included in any of the defined
2359           groups.
2360
2361         * .nspawn files now understand the Ephemeral= setting, matching the
2362           --ephemeral command line switch.
2363
2364         * sd-event gained the new APIs sd_event_source_get_floating() and
2365           sd_event_source_set_floating() for controlling whether a specific
2366           event source is "floating", i.e. destroyed along with the even loop
2367           object itself.
2368
2369         * Unit objects on D-Bus gained a new "Refs" property that lists all
2370           clients that currently have a reference on the unit (to ensure it is
2371           not unloaded).
2372
2373         * The JoinControllers= option in system.conf is no longer supported, as
2374           it didn't work correctly, is hard to support properly, is legacy (as
2375           the concept only exists on cgroup v1) and apparently wasn't used.
2376
2377         * Journal messages that are generated whenever a unit enters the failed
2378           state are now tagged with a unique MESSAGE_ID. Similarly, messages
2379           generated whenever a service process exits are now made recognizable,
2380           too. A tagged message is also emitted whenever a unit enters the
2381           "dead" state on success.
2382
2383         * systemd-run gained a new switch --working-directory= for configuring
2384           the working directory of the service to start. A shortcut -d is
2385           equivalent, setting the working directory of the service to the
2386           current working directory of the invoking program. The new --shell
2387           (or just -S) option has been added for invoking the $SHELL of the
2388           caller as a service, and implies --pty --same-dir --wait --collect
2389           --service-type=exec. Or in other words, "systemd-run -S" is now the
2390           quickest way to quickly get an interactive in a fully clean and
2391           well-defined system service context.
2392
2393         * machinectl gained a new verb "import-fs" for importing an OS tree
2394           from a directory. Moreover, when a directory or tarball is imported
2395           and single top-level directory found with the OS itself below the OS
2396           tree is automatically mangled and moved one level up.
2397
2398         * systemd-importd will no longer set up an implicit btrfs loop-back
2399           file system on /var/lib/machines. If one is already set up, it will
2400           continue to be used.
2401
2402         * A new generator "systemd-run-generator" has been added. It will
2403           synthesize a unit from one or more program command lines included in
2404           the kernel command line. This is very useful in container managers
2405           for example:
2406
2407           # systemd-nspawn -i someimage.raw -b systemd.run='"some command line"'
2408
2409           This will run "systemd-nspawn" on an image, invoke the specified
2410           command line and immediately shut down the container again, returning
2411           the command line's exit code.
2412
2413         * The block device locking logic is now documented:
2414
2415           https://systemd.io/BLOCK_DEVICE_LOCKING
2416
2417         * loginctl and machinectl now optionally output the various tables in
2418           JSON using the --output= switch. It is our intention to add similar
2419           support to systemctl and all other commands.
2420
2421         * udevadm's query and trigger verb now optionally take a .device unit
2422           name as argument.
2423
2424         * systemd-udevd's network naming logic now understands a new
2425           net.naming-scheme= kernel command line switch, which may be used to
2426           pick a specific version of the naming scheme. This helps stabilizing
2427           interface names even as systemd/udev are updated and the naming logic
2428           is improved.
2429
2430         * sd-id128.h learnt two new auxiliary helpers: sd_id128_is_allf() and
2431           SD_ID128_ALLF to test if a 128bit ID is set to all 0xFF bytes, and to
2432           initialize one to all 0xFF.
2433
2434         * After loading the SELinux policy systemd will now recursively relabel
2435           all files and directories listed in
2436           /run/systemd/relabel-extra.d/*.relabel (which should be simple
2437           newline separated lists of paths) in addition to the ones it already
2438           implicitly relabels in /run, /dev and /sys. After the relabelling is
2439           completed the *.relabel files (and /run/systemd/relabel-extra.d/) are
2440           removed. This is useful to permit initrds (i.e. code running before
2441           the SELinux policy is in effect) to generate files in the host
2442           filesystem safely and ensure that the correct label is applied during
2443           the transition to the host OS.
2444
2445         * KERNEL API BREAKAGE: Linux kernel 4.18 changed behaviour regarding
2446           mknod() handling in user namespaces. Previously mknod() would always
2447           fail with EPERM in user namespaces. Since 4.18 mknod() will succeed
2448           but device nodes generated that way cannot be opened, and attempts to
2449           open them result in EPERM. This breaks the "graceful fallback" logic
2450           in systemd's PrivateDevices= sand-boxing option. This option is
2451           implemented defensively, so that when systemd detects it runs in a
2452           restricted environment (such as a user namespace, or an environment
2453           where mknod() is blocked through seccomp or absence of CAP_SYS_MKNOD)
2454           where device nodes cannot be created the effect of PrivateDevices= is
2455           bypassed (following the logic that 2nd-level sand-boxing is not
2456           essential if the system systemd runs in is itself already sand-boxed
2457           as a whole). This logic breaks with 4.18 in container managers where
2458           user namespacing is used: suddenly PrivateDevices= succeeds setting
2459           up a private /dev/ file system containing devices nodes — but when
2460           these are opened they don't work.
2461
2462           At this point it is recommended that container managers utilizing
2463           user namespaces that intend to run systemd in the payload explicitly
2464           block mknod() with seccomp or similar, so that the graceful fallback
2465           logic works again.
2466
2467           We are very sorry for the breakage and the requirement to change
2468           container configurations for newer kernels. It's purely caused by an
2469           incompatible kernel change. The relevant kernel developers have been
2470           notified about this userspace breakage quickly, but they chose to
2471           ignore it.
2472
2473         * PermissionsStartOnly= setting is deprecated (but is still supported
2474           for backwards compatibility). The same functionality is provided by
2475           the more flexible "+", "!", and "!!" prefixes to ExecStart= and other
2476           commands.
2477
2478         * $DBUS_SESSION_BUS_ADDRESS environment variable is not set by
2479           pam_systemd anymore.
2480
2481         * The naming scheme for network devices was changed to always rename
2482           devices, even if they were already renamed by userspace. The "kernel"
2483           policy was changed to only apply as a fallback, if no other naming
2484           policy took effect.
2485
2486         * The requirements to build systemd is bumped to meson-0.46 and
2487           python-3.5.
2488
2489         Contributions from: afg, Alan Jenkins, Aleksei Timofeyev, Alexander
2490         Filippov, Alexander Kurtz, Alexey Bogdanenko, Andreas Henriksson,
2491         Andrew Jorgensen, Anita Zhang, apnix-uk, Arkan49, Arseny Maslennikov,
2492         asavah, Asbjørn Apeland, aszlig, Bastien Nocera, Ben Boeckel, Benedikt
2493         Morbach, Benjamin Berg, Bruce Zhang, Carlo Caione, Cedric Viou, Chen
2494         Qi, Chris Chiu, Chris Down, Chris Morin, Christian Rebischke, Claudius
2495         Ellsel, Colin Guthrie, dana, Daniel, Daniele Medri, Daniel Kahn
2496         Gillmor, Daniel Rusek, Daniel van Vugt, Dariusz Gadomski, Dave Reisner,
2497         David Anderson, Davide Cavalca, David Leeds, David Malcolm, David
2498         Strauss, David Tardon, Dimitri John Ledkov, Dmitry Torokhov, dj-kaktus,
2499         Dongsu Park, Elias Probst, Emil Soleyman, Erik Kooistra, Ervin Peters,
2500         Evgeni Golov, Evgeny Vereshchagin, Fabrice Fontaine, Faheel Ahmad,
2501         Faizal Luthfi, Felix Yan, Filipe Brandenburger, Franck Bui, Frank
2502         Schaefer, Frantisek Sumsal, Gautier Husson, Gianluca Boiano, Giuseppe
2503         Scrivano, glitsj16, Hans de Goede, Harald Hoyer, Harry Mallon, Harshit
2504         Jain, Helmut Grohne, Henry Tung, Hui Yiqun, imayoda, Insun Pyo, Iwan
2505         Timmer, Jan Janssen, Jan Pokorný, Jan Synacek, Jason A. Donenfeld,
2506         javitoom, Jérémy Nouhaud, Jeremy Su, Jiuyang Liu, João Paulo Rechi
2507         Vita, Joe Hershberger, Joe Rayhawk, Joerg Behrmann, Joerg Steffens,
2508         Jonas Dorel, Jon Ringle, Josh Soref, Julian Andres Klode, Jun Bo Bi,
2509         Jürg Billeter, Keith Busch, Khem Raj, Kirill Marinushkin, Larry
2510         Bernstone, Lennart Poettering, Lion Yang, Li Song, Lorenz
2511         Hübschle-Schneider, Lubomir Rintel, Lucas Werkmeister, Ludwin Janvier,
2512         Lukáš Nykrýn, Luke Shumaker, mal, Marc-Antoine Perennou, Marcin
2513         Skarbek, Marco Trevisan (Treviño), Marian Cepok, Mario Hros, Marko
2514         Myllynen, Markus Grimm, Martin Pitt, Martin Sobotka, Martin Wilck,
2515         Mathieu Trudel-Lapierre, Matthew Leeds, Michael Biebl, Michael Olbrich,
2516         Michael 'pbone' Pobega, Michael Scherer, Michal Koutný, Michal
2517         Sekletar, Michal Soltys, Mike Gilbert, Mike Palmer, Muhammet Kara, Neal
2518         Gompa, Neil Brown, Network Silence, Niklas Tibbling, Nikolas Nyby,
2519         Nogisaka Sadata, Oliver Smith, Patrik Flykt, Pavel Hrdina, Paweł
2520         Szewczyk, Peter Hutterer, Piotr Drąg, Ray Strode, Reinhold Mueller,
2521         Renaud Métrich, Roman Gushchin, Ronny Chevalier, Rubén Suárez Alvarez,
2522         Ruixin Bao, RussianNeuroMancer, Ryutaroh Matsumoto, Saleem Rashid, Sam
2523         Morris, Samuel Morris, Sandy Carter, scootergrisen, Sébastien Bacher,
2524         Sergey Ptashnick, Shawn Landden, Shengyao Xue, Shih-Yuan Lee
2525         (FourDollars), Silvio Knizek, Sjoerd Simons, Stasiek Michalski, Stephen
2526         Gallagher, Steven Allen, Steve Ramage, Susant Sahani, Sven Joachim,
2527         Sylvain Plantefève, Tanu Kaskinen, Tejun Heo, Thiago Macieira, Thomas
2528         Blume, Thomas Haller, Thomas H. P. Andersen, Tim Ruffing, TJ, Tobias
2529         Jungel, Todd Walton, Tommi Rantala, Tomsod M, Tony Novak, Tore
2530         Anderson, Trevonn, Victor Laskurain, Victor Tapia, Violet Halo, Vojtech
2531         Trefny, welaq, William A. Kennington III, William Douglas, Wyatt Ward,
2532         Xiang Fan, Xi Ruoyao, Xuanwo, Yann E. Morin, YmrDtnJu, Yu Watanabe,
2533         Zbigniew Jędrzejewski-Szmek, Zhang Xianwei, Zsolt Dollenstein
2534
2535         — Warsaw, 2018-12-21
2536
2537 CHANGES WITH 239:
2538
2539         * NETWORK INTERFACE DEVICE NAMING CHANGES: systemd-udevd's "net_id"
2540           builtin will name network interfaces differently than in previous
2541           versions for virtual network interfaces created with SR-IOV and NPAR
2542           and for devices where the PCI network controller device does not have
2543           a slot number associated.
2544
2545           SR-IOV virtual devices are now named based on the name of the parent
2546           interface, with a suffix of "v<N>", where <N> is the virtual device
2547           number. Previously those virtual devices were named as if completely
2548           independent.
2549
2550           The ninth and later NPAR virtual devices will be named following the
2551           scheme used for the first eight NPAR partitions. Previously those
2552           devices were not renamed and the kernel default (eth<n>) was used.
2553
2554           "net_id" will also generate names for PCI devices where the PCI
2555           network controller device does not have an associated slot number
2556           itself, but one of its parents does. Previously those devices were
2557           not renamed and the kernel default (eth<n>) was used.
2558
2559         * AF_INET and AF_INET6 are dropped from RestrictAddressFamilies= in
2560           systemd-logind.service. Since v235, IPAddressDeny=any has been set to
2561           the unit. So, it is expected that the default behavior of
2562           systemd-logind is not changed. However, if distribution packagers or
2563           administrators disabled or modified IPAddressDeny= setting by a
2564           drop-in config file, then it may be necessary to update the file to
2565           re-enable AF_INET and AF_INET6 to support network user name services,
2566           e.g. NIS.
2567
2568         * When the RestrictNamespaces= unit property is specified multiple
2569           times, then the specified types are merged now. Previously, only the
2570           last assignment was used. So, if distribution packagers or
2571           administrators modified the setting by a drop-in config file, then it
2572           may be necessary to update the file.
2573
2574         * When OnFailure= is used in combination with Restart= on a service
2575           unit, then the specified units will no longer be triggered on
2576           failures that result in restarting. Previously, the specified units
2577           would be activated each time the unit failed, even when the unit was
2578           going to be restarted automatically. This behaviour contradicted the
2579           documentation. With this release the code is adjusted to match the
2580           documentation.
2581
2582         * systemd-tmpfiles will now print a notice whenever it encounters
2583           tmpfiles.d/ lines referencing the /var/run/ directory. It will
2584           recommend reworking them to use the /run/ directory instead (for
2585           which /var/run/ is simply a symlinked compatibility alias). This way
2586           systemd-tmpfiles can properly detect line conflicts and merge lines
2587           referencing the same file by two paths, without having to access
2588           them.
2589
2590         * systemctl disable/unmask/preset/preset-all cannot be used with
2591           --runtime. Previously this was allowed, but resulted in unintuitive
2592           behaviour that wasn't useful. systemctl disable/unmask will now undo
2593           both runtime and persistent enablement/masking, i.e. it will remove
2594           any relevant symlinks both in /run and /etc.
2595
2596         * Note that all long-running system services shipped with systemd will
2597           now default to a system call allow list (rather than a deny list, as
2598           before). In particular, systemd-udevd will now enforce one too. For
2599           most cases this should be safe, however downstream distributions
2600           which disabled sandboxing of systemd-udevd (specifically the
2601           MountFlags= setting), might want to disable this security feature
2602           too, as the default allow-listing will prohibit all mount, swap,
2603           reboot and clock changing operations from udev rules.
2604
2605         * sd-boot acquired new loader configuration settings to optionally turn
2606           off Windows and MacOS boot partition discovery as well as
2607           reboot-into-firmware menu items. It is also able to pick a better
2608           screen resolution for HiDPI systems, and now provides loader
2609           configuration settings to change the resolution explicitly.
2610
2611         * systemd-resolved now supports DNS-over-TLS. It's still
2612           turned off by default, use DNSOverTLS=opportunistic to turn it on in
2613           resolved.conf. We intend to make this the default as soon as couple
2614           of additional techniques for optimizing the initial latency caused by
2615           establishing a TLS/TCP connection are implemented.
2616
2617         * systemd-resolved.service and systemd-networkd.service now set
2618           DynamicUser=yes. The users systemd-resolve and systemd-network are
2619           not created by systemd-sysusers anymore.
2620
2621           NOTE: This has a chance of breaking nss-ldap and similar NSS modules
2622           that embed a network facing module into any process using getpwuid()
2623           or related call: the dynamic allocation of the user ID for
2624           systemd-resolved.service means the service manager has to check NSS
2625           if the user name is already taken when forking off the service. Since
2626           the user in the common case won't be defined in /etc/passwd the
2627           lookup is likely to trigger nss-ldap which in turn might use NSS to
2628           ask systemd-resolved for hostname lookups. This will hence result in
2629           a deadlock: a user name lookup in order to start
2630           systemd-resolved.service will result in a hostname lookup for which
2631           systemd-resolved.service needs to be started already. There are
2632           multiple ways to work around this problem: pre-allocate the
2633           "systemd-resolve" user on such systems, so that nss-ldap won't be
2634           triggered; or use a different NSS package that doesn't do networking
2635           in-process but provides a local asynchronous name cache; or configure
2636           the NSS package to avoid lookups for UIDs in the range `pkg-config
2637           systemd --variable=dynamicuidmin` … `pkg-config systemd
2638           --variable=dynamicuidmax`, so that it does not consider itself
2639           authoritative for the same UID range systemd allocates dynamic users
2640           from.
2641
2642         * The systemd-resolve tool has been renamed to resolvectl (it also
2643           remains available under the old name, for compatibility), and its
2644           interface is now verb-based, similar in style to the other <xyz>ctl
2645           tools, such as systemctl or loginctl.
2646
2647         * The resolvectl/systemd-resolve tool also provides 'resolvconf'
2648           compatibility. It may be symlinked under the 'resolvconf' name, in
2649           which case it will take arguments and input compatible with the
2650           Debian and FreeBSD resolvconf tool.
2651
2652         * Support for suspend-then-hibernate has been added, i.e. a sleep mode
2653           where the system initially suspends, and after a timeout resumes and
2654           hibernates again.
2655
2656         * networkd's ClientIdentifier= now accepts a new option "duid-only". If
2657           set the client will only send a DUID as client identifier.
2658
2659         * The nss-systemd glibc NSS module will now enumerate dynamic users and
2660           groups in effect. Previously, it could resolve UIDs/GIDs to user
2661           names/groups and vice versa, but did not support enumeration.
2662
2663         * journald's Compress= configuration setting now optionally accepts a
2664           byte threshold value. All journal objects larger than this threshold
2665           will be compressed, smaller ones will not. Previously this threshold
2666           was not configurable and set to 512.
2667
2668         * A new system.conf setting NoNewPrivileges= is now available which may
2669           be used to turn off acquisition of new privileges system-wide
2670           (i.e. set Linux' PR_SET_NO_NEW_PRIVS for PID 1 itself, and thus also
2671           for all its children). Note that turning this option on means setuid
2672           binaries and file system capabilities lose their special powers.
2673           While turning on this option is a big step towards a more secure
2674           system, doing so is likely to break numerous pre-existing UNIX tools,
2675           in particular su and sudo.
2676
2677         * A new service systemd-time-sync-wait.service has been added. If
2678           enabled it will delay the time-sync.target unit at boot until time
2679           synchronization has been received from the network. This
2680           functionality is useful on systems lacking a local RTC or where it is
2681           acceptable that the boot process shall be delayed by external network
2682           services.
2683
2684         * When hibernating, systemd will now inform the kernel of the image
2685           write offset, on kernels new enough to support this. This means swap
2686           files should work for hibernation now.
2687
2688         * When loading unit files, systemd will now look for drop-in unit files
2689           extensions in additional places. Previously, for a unit file name
2690           "foo-bar-baz.service" it would look for dropin files in
2691           "foo-bar-baz.service.d/*.conf". Now, it will also look in
2692           "foo-bar-.service.d/*.conf" and "foo-.service.d/", i.e. at the
2693           service name truncated after all inner dashes. This scheme allows
2694           writing drop-ins easily that apply to a whole set of unit files at
2695           once. It's particularly useful for mount and slice units (as their
2696           naming is prefix based), but is also useful for service and other
2697           units, for packages that install multiple unit files at once,
2698           following a strict naming regime of beginning the unit file name with
2699           the package's name. Two new specifiers are now supported in unit
2700           files to match this: %j and %J are replaced by the part of the unit
2701           name following the last dash.
2702
2703         * Unit files and other configuration files that support specifier
2704           expansion now understand another three new specifiers: %T and %V will
2705           resolve to /tmp and /var/tmp respectively, or whatever temporary
2706           directory has been set for the calling user. %E will expand to either
2707           /etc (for system units) or $XDG_CONFIG_HOME (for user units).
2708
2709         * The ExecStart= lines of unit files are no longer required to
2710           reference absolute paths. If non-absolute paths are specified the
2711           specified binary name is searched within the service manager's
2712           built-in $PATH, which may be queried with 'systemd-path
2713           search-binaries-default'. It's generally recommended to continue to
2714           use absolute paths for all binaries specified in unit files.
2715
2716         * Units gained a new load state "bad-setting", which is used when a
2717           unit file was loaded, but contained fatal errors which prevent it
2718           from being started (for example, a service unit has been defined
2719           lacking both ExecStart= and ExecStop= lines).
2720
2721         * coredumpctl's "gdb" verb has been renamed to "debug", in order to
2722           support alternative debuggers, for example lldb. The old name
2723           continues to be available however, for compatibility reasons. Use the
2724           new --debugger= switch or the $SYSTEMD_DEBUGGER environment variable
2725           to pick an alternative debugger instead of the default gdb.
2726
2727         * systemctl and the other tools will now output escape sequences that
2728           generate proper clickable hyperlinks in various terminal emulators
2729           where useful (for example, in the "systemctl status" output you can
2730           now click on the unit file name to quickly open it in the
2731           editor/viewer of your choice). Note that not all terminal emulators
2732           support this functionality yet, but many do. Unfortunately, the
2733           "less" pager doesn't support this yet, hence this functionality is
2734           currently automatically turned off when a pager is started (which
2735           happens quite often due to auto-paging). We hope to remove this
2736           limitation as soon as "less" learns these escape sequences. This new
2737           behaviour may also be turned off explicitly with the $SYSTEMD_URLIFY
2738           environment variable. For details on these escape sequences see:
2739           https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda
2740
2741         * networkd's .network files now support a new IPv6MTUBytes= option for
2742           setting the MTU used by IPv6 explicitly as well as a new MTUBytes=
2743           option in the [Route] section to configure the MTU to use for
2744           specific routes. It also gained support for configuration of the DHCP
2745           "UserClass" option through the new UserClass= setting. It gained
2746           three new options in the new [CAN] section for configuring CAN
2747           networks. The MULTICAST and ALLMULTI interface flags may now be
2748           controlled explicitly with the new Multicast= and AllMulticast=
2749           settings.
2750
2751         * networkd will now automatically make use of the kernel's route
2752           expiration feature, if it is available.
2753
2754         * udevd's .link files now support setting the number of receive and
2755           transmit channels, using the RxChannels=, TxChannels=,
2756           OtherChannels=, CombinedChannels= settings.
2757
2758         * Support for UDPSegmentationOffload= has been removed, given its
2759           limited support in hardware, and waning software support.
2760
2761         * networkd's .netdev files now support creating "netdevsim" interfaces.
2762
2763         * PID 1 learnt a new bus call GetUnitByControlGroup() which may be used
2764           to query the unit belonging to a specific kernel control group.
2765
2766         * systemd-analyze gained a new verb "cat-config", which may be used to
2767           dump the contents of any configuration file, with all its matching
2768           drop-in files added in, and honouring the usual search and masking
2769           logic applied to systemd configuration files. For example use
2770           "systemd-analyze cat-config systemd/system.conf" to get the complete
2771           system configuration file of systemd how it would be loaded by PID 1
2772           itself. Similar to this, various tools such as systemd-tmpfiles or
2773           systemd-sysusers, gained a new option "--cat-config", which does the
2774           corresponding operation for their own configuration settings. For
2775           example, "systemd-tmpfiles --cat-config" will now output the full
2776           list of tmpfiles.d/ lines in place.
2777
2778         * timedatectl gained three new verbs: "show" shows bus properties of
2779           systemd-timedated, "timesync-status" shows the current NTP
2780           synchronization state of systemd-timesyncd, and "show-timesync"
2781           shows bus properties of systemd-timesyncd.
2782
2783         * systemd-timesyncd gained a bus interface on which it exposes details
2784           about its state.
2785
2786         * A new environment variable $SYSTEMD_TIMEDATED_NTP_SERVICES is now
2787           understood by systemd-timedated. It takes a colon-separated list of
2788           unit names of NTP client services. The list is used by
2789           "timedatectl set-ntp".
2790
2791         * systemd-nspawn gained a new --rlimit= switch for setting initial
2792           resource limits for the container payload. There's a new switch
2793           --hostname= to explicitly override the container's hostname. A new
2794           --no-new-privileges= switch may be used to control the
2795           PR_SET_NO_NEW_PRIVS flag for the container payload. A new
2796           --oom-score-adjust= switch controls the OOM scoring adjustment value
2797           for the payload. The new --cpu-affinity= switch controls the CPU
2798           affinity of the container payload. The new --resolv-conf= switch
2799           allows more detailed control of /etc/resolv.conf handling of the
2800           container. Similarly, the new --timezone= switch allows more detailed
2801           control of /etc/localtime handling of the container.
2802
2803         * systemd-detect-virt gained a new --list switch, which will print a
2804           list of all currently known VM and container environments.
2805
2806         * Support for "Portable Services" has been added, see
2807           doc/PORTABLE_SERVICES.md for details. Currently, the support is still
2808           experimental, but this is expected to change soon. Reflecting this
2809           experimental state, the "portablectl" binary is not installed into
2810           /usr/bin yet. The binary has to be called with the full path
2811           /usr/lib/systemd/portablectl instead.
2812
2813         * journalctl's and systemctl's -o switch now knows a new log output
2814           mode "with-unit". The output it generates is very similar to the
2815           regular "short" mode, but displays the unit name instead of the
2816           syslog tag for each log line. Also, the date is shown with timezone
2817           information. This mode is probably more useful than the classic
2818           "short" output mode for most purposes, except where pixel-perfect
2819           compatibility with classic /var/log/messages formatting is required.
2820
2821         * A new --dump-bus-properties switch has been added to the systemd
2822           binary, which may be used to dump all supported D-Bus properties.
2823           (Options which are still supported, but are deprecated, are *not*
2824           shown.)
2825
2826         * sd-bus gained a set of new calls:
2827           sd_bus_slot_set_floating()/sd_bus_slot_get_floating() may be used to
2828           enable/disable the "floating" state of a bus slot object,
2829           i.e. whether the slot object pins the bus it is allocated for into
2830           memory or if the bus slot object gets disconnected when the bus goes
2831           away. sd_bus_open_with_description(),
2832           sd_bus_open_user_with_description(),
2833           sd_bus_open_system_with_description() may be used to allocate bus
2834           objects and set their description string already during allocation.
2835
2836         * sd-event gained support for watching inotify events from the event
2837           loop, in an efficient way, sharing inotify handles between multiple
2838           users. For this a new function sd_event_add_inotify() has been added.
2839
2840         * sd-event and sd-bus gained support for calling special user-supplied
2841           destructor functions for userdata pointers associated with
2842           sd_event_source, sd_bus_slot, and sd_bus_track objects. For this new
2843           functions sd_bus_slot_set_destroy_callback,
2844           sd_bus_slot_get_destroy_callback, sd_bus_track_set_destroy_callback,
2845           sd_bus_track_get_destroy_callback,
2846           sd_event_source_set_destroy_callback,
2847           sd_event_source_get_destroy_callback have been added.
2848
2849         * The "net.ipv4.tcp_ecn" sysctl will now be turned on by default.
2850
2851         * PID 1 will now automatically reschedule .timer units whenever the
2852           local timezone changes. (They previously got rescheduled
2853           automatically when the system clock changed.)
2854
2855         * New documentation has been added to document cgroups delegation,
2856           portable services and the various code quality tools we have set up:
2857
2858           https://github.com/systemd/systemd/blob/master/docs/CGROUP_DELEGATION.md
2859           https://github.com/systemd/systemd/blob/master/docs/PORTABLE_SERVICES.md
2860           https://github.com/systemd/systemd/blob/master/docs/CODE_QUALITY.md
2861
2862         * The Boot Loader Specification has been added to the source tree.
2863
2864           https://github.com/systemd/systemd/blob/master/docs/BOOT_LOADER_SPECIFICATION.md
2865
2866           While moving it into our source tree we have updated it and further
2867           changes are now accepted through the usual github PR workflow.
2868
2869         * pam_systemd will now look for PAM userdata fields systemd.memory_max,
2870           systemd.tasks_max, systemd.cpu_weight, systemd.io_weight set by
2871           earlier PAM modules. The data in these fields is used to initialize
2872           the session scope's resource properties. Thus external PAM modules
2873           may now configure per-session limits, for example sourced from
2874           external user databases.
2875
2876         * socket units with Accept=yes will now maintain a "refused" counter in
2877           addition to the existing "accepted" counter, counting connections
2878           refused due to the enforced limits.
2879
2880         * The "systemd-path search-binaries-default" command may now be use to
2881           query the default, built-in $PATH PID 1 will pass to the services it
2882           manages.
2883
2884         * A new unit file setting PrivateMounts= has been added. It's a boolean
2885           option. If enabled the unit's processes are invoked in their own file
2886           system namespace. Note that this behaviour is also implied if any
2887           other file system namespacing options (such as PrivateTmp=,
2888           PrivateDevices=, ProtectSystem=, …) are used. This option is hence
2889           primarily useful for services that do not use any of the other file
2890           system namespacing options. One such service is systemd-udevd.service
2891           where this is now used by default.
2892
2893         * ConditionSecurity= gained a new value "uefi-secureboot" that is true
2894           when the system is booted in UEFI "secure mode".
2895
2896         * A new unit "system-update-pre.target" is added, which defines an
2897           optional synchronization point for offline system updates, as
2898           implemented by the pre-existing "system-update.target" unit. It
2899           allows ordering services before the service that executes the actual
2900           update process in a generic way.
2901
2902         * Systemd now emits warnings whenever .include syntax is used.
2903
2904         Contributions from: Adam Duskett, Alan Jenkins, Alessandro Casale,
2905         Alexander Kurtz, Alex Gartrell, Anssi Hannula, Arnaud Rebillout, Brian
2906         J. Murrell, Bruno Vernay, Chris Lamb, Chris Lesiak, Christian Brauner,
2907         Christian Hesse, Christian Rebischke, Colin Guthrie, Daniel Dao, Daniel
2908         Lin, Danylo Korostil, Davide Cavalca, David Tardon, Dimitri John
2909         Ledkov, Dmitriy Geels, Douglas Christman, Elia Geretto, emelenas, Emil
2910         Velikov, Evgeny Vereshchagin, Felipe Sateler, Feng Sun, Filipe
2911         Brandenburger, Franck Bui, futpib, Giuseppe Scrivano, Guillem Jover,
2912         guixxx, Hannes Reinecke, Hans de Goede, Harald Hoyer, Henrique Dante de
2913         Almeida, Hiram van Paassen, Ian Miell, Igor Gnatenko, Ivan Shapovalov,
2914         Iwan Timmer, James Cowgill, Jan Janssen, Jan Synacek, Jared Kazimir,
2915         Jérémy Rosen, João Paulo Rechi Vita, Joost Heitbrink, Jui-Chi Ricky
2916         Liang, Jürg Billeter, Kai-Heng Feng, Karol Augustin, Kay Sievers,
2917         Krzysztof Nowicki, Lauri Tirkkonen, Lennart Poettering, Leonard König,
2918         Long Li, Luca Boccassi, Lucas Werkmeister, Marcel Hoppe, Marc
2919         Kleine-Budde, Mario Limonciello, Martin Jansa, Martin Wilck, Mathieu
2920         Malaterre, Matteo F. Vescovi, Matthew McGinn, Matthias-Christian Ott,
2921         Michael Biebl, Michael Olbrich, Michael Prokop, Michal Koutný, Michal
2922         Sekletar, Mike Gilbert, Mikhail Kasimov, Milan Broz, Milan Pässler,
2923         Mladen Pejaković, Muhammet Kara, Nicolas Boichat, Omer Katz, Paride
2924         Legovini, Paul Menzel, Paul Milliken, Pavel Hrdina, Peter A. Bigot,
2925         Peter D'Hoye, Peter Hutterer, Peter Jones, Philip Sequeira, Philip
2926         Withnall, Piotr Drąg, Radostin Stoyanov, Ricardo Salveti de Araujo,
2927         Ronny Chevalier, Rosen Penev, Rubén Suárez Alvarez, Ryan Gonzalez,
2928         Salvo Tomaselli, Sebastian Reichel, Sergey Ptashnick, Sergio Lindo
2929         Mansilla, Stefan Schweter, Stephen Hemminger, Stuart Hayes, Susant
2930         Sahani, Sylvain Plantefève, Thomas H. P. Andersen, Tobias Jungel,
2931         Tomasz Torcz, Vito Caputo, Will Dietz, Will Thompson, Wim van Mourik,
2932         Yu Watanabe, Zbigniew Jędrzejewski-Szmek
2933
2934         — Berlin, 2018-06-22
2935
2936 CHANGES WITH 238:
2937
2938         * The MemoryAccounting= unit property now defaults to on. After
2939           discussions with the upstream control group maintainers we learnt
2940           that the negative impact of cgroup memory accounting on current
2941           kernels is finally relatively minimal, so that it should be safe to
2942           enable this by default without affecting system performance. Besides
2943           memory accounting only task accounting is turned on by default, all
2944           other forms of resource accounting (CPU, IO, IP) remain off for now,
2945           because it's not clear yet that their impact is small enough to move
2946           from opt-in to opt-out. We recommend downstreams to leave memory
2947           accounting on by default if kernel 4.14 or higher is primarily
2948           used. On very resource constrained systems or when support for old
2949           kernels is a necessity, -Dmemory-accounting-default=false can be used
2950           to revert this change.
2951
2952         * rpm scriptlets to update the udev hwdb and rules (%udev_hwdb_update,
2953           %udev_rules_update) and the journal catalog (%journal_catalog_update)
2954           from the upgrade scriptlets of individual packages now do nothing.
2955           Transfiletriggers have been added which will perform those updates
2956           once at the end of the transaction.
2957
2958           Similar transfiletriggers have been added to execute any sysctl.d
2959           and binfmt.d rules. Thus, it should be unnecessary to provide any
2960           scriptlets to execute this configuration from package installation
2961           scripts.
2962
2963         * systemd-sysusers gained a mode where the configuration to execute is
2964           specified on the command line, but this configuration is not executed
2965           directly, but instead it is merged with the configuration on disk,
2966           and the result is executed. This is useful for package installation
2967           scripts which want to create the user before installing any files on
2968           disk (in case some of those files are owned by that user), while
2969           still allowing local admin overrides.
2970
2971           This functionality is exposed to rpm scriptlets through a new
2972           %sysusers_create_package macro. Old %sysusers_create and
2973           %sysusers_create_inline macros are deprecated.
2974
2975           A transfiletrigger for sysusers.d configuration is now installed,
2976           which means that it should be unnecessary to call systemd-sysusers from
2977           package installation scripts, unless the package installs any files
2978           owned by those newly-created users, in which case
2979           %sysusers_create_package should be used.
2980
2981         * Analogous change has been done for systemd-tmpfiles: it gained a mode
2982           where the command-line configuration is merged with the configuration
2983           on disk. This is exposed as the new %tmpfiles_create_package macro,
2984           and %tmpfiles_create is deprecated. A transfiletrigger is installed
2985           for tmpfiles.d, hence it should be unnecessary to call systemd-tmpfiles
2986           from package installation scripts.
2987
2988         * sysusers.d configuration for a user may now also specify the group
2989           number, in addition to the user number ("u username 123:456"), or
2990           without the user number ("u username -:456").
2991
2992         * Configution items for systemd-sysusers can now be specified as
2993           positional arguments when the new --inline switch is used.
2994
2995         * The login shell of users created through sysusers.d may now be
2996           specified (previously, it was always /bin/sh for root and
2997           /sbin/nologin for other users).
2998
2999         * systemd-analyze gained a new --global switch to look at global user
3000           configuration. It also gained a unit-paths verb to list the unit load
3001           paths that are compiled into systemd (which can be used with
3002           --systemd, --user, or --global).
3003
3004         * udevadm trigger gained a new --settle/-w option to wait for any
3005           triggered events to finish (but just those, and not any other events
3006           which are triggered meanwhile).
3007
3008         * The action that systemd-logind takes when the lid is closed and the
3009           machine is connected to external power can now be configured using
3010           HandleLidSwitchExternalPower= in logind.conf. Previously, this action
3011           was determined by HandleLidSwitch=, and, for backwards compatibility,
3012           is still is, if HandleLidSwitchExternalPower= is not explicitly set.
3013
3014         * journalctl will periodically call sd_journal_process() to make it
3015           resilient against inotify queue overruns when journal files are
3016           rotated very quickly.
3017
3018         * Two new functions in libsystemd — sd_bus_get_n_queued_read and
3019           sd_bus_get_n_queued_write — may be used to check the number of
3020           pending bus messages.
3021
3022         * systemd gained a new
3023           org.freedesktop.systemd1.Manager.AttachProcessesToUnit dbus call
3024           which can be used to migrate foreign processes to scope and service
3025           units. The primary user for this new API is systemd itself: the
3026           systemd --user instance uses this call of the systemd --system
3027           instance to migrate processes if it itself gets the request to
3028           migrate processes and the kernel refuses this due to access
3029           restrictions.  Thanks to this "systemd-run --scope --user …" works
3030           again in pure cgroup v2 environments when invoked from the user
3031           session scope.
3032
3033         * A new TemporaryFileSystem= setting can be used to mask out part of
3034           the real file system tree with tmpfs mounts. This may be combined
3035           with BindPaths= and BindReadOnlyPaths= to hide files or directories
3036           not relevant to the unit, while still allowing some paths lower in
3037           the tree to be accessed.
3038
3039           ProtectHome=tmpfs may now be used to hide user home and runtime
3040           directories from units, in a way that is mostly equivalent to
3041           "TemporaryFileSystem=/home /run/user /root".
3042
3043         * Non-service units are now started with KeyringMode=shared by default.
3044           This means that mount and swapon and other mount tools have access
3045           to keys in the main keyring.
3046
3047         * /sys/fs/bpf is now mounted automatically.
3048
3049         * QNX virtualization is now detected by systemd-detect-virt and may
3050           be used in ConditionVirtualization=.
3051
3052         * IPAccounting= may now be enabled also for slice units.
3053
3054         * A new -Dsplit-bin= build configuration switch may be used to specify
3055           whether bin and sbin directories are merged, or if they should be
3056           included separately in $PATH and various listings of executable
3057           directories. The build configuration scripts will try to autodetect
3058           the proper values of -Dsplit-usr= and -Dsplit-bin= based on build
3059           system, but distributions are encouraged to configure this
3060           explicitly.
3061
3062         * A new -Dok-color= build configuration switch may be used to change
3063           the colour of "OK" status messages.
3064
3065         * UPGRADE ISSUE: serialization of units using JoinsNamespaceOf= with
3066           PrivateNetwork=yes was buggy in previous versions of systemd. This
3067           means that after the upgrade and daemon-reexec, any such units must
3068           be restarted.
3069
3070         * INCOMPATIBILITY: as announced in the NEWS for 237, systemd-tmpfiles
3071           will not exclude read-only files owned by root from cleanup.
3072
3073         Contributions from: Alan Jenkins, Alexander F Rødseth, Alexis Jeandet,
3074         Andika Triwidada, Andrei Gherzan, Ansgar Burchardt, antizealot1337,
3075         Batuhan Osman Taşkaya, Beniamino Galvani, Bill Yodlowsky, Caio Marcelo
3076         de Oliveira Filho, CuBiC, Daniele Medri, Daniel Mouritzen, Daniel
3077         Rusek, Davide Cavalca, Dimitri John Ledkov, Douglas Christman, Evgeny
3078         Vereshchagin, Faalagorn, Filipe Brandenburger, Franck Bui, futpib,
3079         Giacomo Longo, Gunnar Hjalmarsson, Hans de Goede, Hermann Gausterer,
3080         Iago López Galeiras, Jakub Filak, Jan Synacek, Jason A. Donenfeld,
3081         Javier Martinez Canillas, Jérémy Rosen, Lennart Poettering, Lucas
3082         Werkmeister, Mao Huang, Marco Gulino, Michael Biebl, Michael Vogt,
3083         MilhouseVH, Neal Gompa (ニール・ゴンパ), Oleander Reis, Olof Mogren,
3084         Patrick Uiterwijk, Peter Hutterer, Peter Portante, Piotr Drąg, Robert
3085         Antoni Buj Gelonch, Sergey Ptashnick, Shawn Landden, Shuang Liu, Simon
3086         Fowler, SjonHortensius, snorreflorre, Susant Sahani, Sylvain
3087         Plantefève, Thomas Blume, Thomas Haller, Vito Caputo, Yu Watanabe,
3088         Zbigniew Jędrzejewski-Szmek, Марко М. Костић (Marko M. Kostić)
3089
3090         — Warsaw, 2018-03-05
3091
3092 CHANGES WITH 237:
3093
3094         * Some keyboards come with a zoom see-saw or rocker which until now got
3095           mapped to the Linux "zoomin/out" keys in hwdb. However, these
3096           keycodes are not recognized by any major desktop. They now produce
3097           Up/Down key events so that they can be used for scrolling.
3098
3099         * INCOMPATIBILITY: systemd-tmpfiles' "f" lines changed behaviour
3100           slightly: previously, if an argument was specified for lines of this
3101           type (i.e. the right-most column was set) this string was appended to
3102           existing files each time systemd-tmpfiles was run. This behaviour was
3103           different from what the documentation said, and not particularly
3104           useful, as repeated systemd-tmpfiles invocations would not be
3105           idempotent and grow such files without bounds. With this release
3106           behaviour has been altered to match what the documentation says:
3107           lines of this type only have an effect if the indicated files don't
3108           exist yet, and only then the argument string is written to the file.
3109
3110         * FUTURE INCOMPATIBILITY: In systemd v238 we intend to slightly change
3111           systemd-tmpfiles behaviour: previously, read-only files owned by root
3112           were always excluded from the file "aging" algorithm (i.e. the
3113           automatic clean-up of directories like /tmp based on
3114           atime/mtime/ctime). We intend to drop this restriction, and age files
3115           by default even when owned by root and read-only. This behaviour was
3116           inherited from older tools, but there have been requests to remove
3117           it, and it's not obvious why this restriction was made in the first
3118           place. Please speak up now, if you are aware of software that reqires
3119           this behaviour, otherwise we'll remove the restriction in v238.
3120
3121         * A new environment variable $SYSTEMD_OFFLINE is now understood by
3122           systemctl. It takes a boolean argument. If on, systemctl assumes it
3123           operates on an "offline" OS tree, and will not attempt to talk to the
3124           service manager. Previously, this mode was implicitly enabled if a
3125           chroot() environment was detected, and this new environment variable
3126           now provides explicit control.
3127
3128         * .path and .socket units may now be created transiently, too.
3129           Previously only service, mount, automount and timer units were
3130           supported as transient units. The systemd-run tool has been updated
3131           to expose this new functionality, you may hence use it now to bind
3132           arbitrary commands to path or socket activation on-the-fly from the
3133           command line. Moreover, almost all properties are now exposed for the
3134           unit types that already supported transient operation.
3135
3136         * The systemd-mount command gained support for a new --owner= parameter
3137           which takes a user name, which is then resolved and included in uid=
3138           and gid= mount options string of the file system to mount.
3139
3140         * A new unit condition ConditionControlGroupController= has been added
3141           that checks whether a specific cgroup controller is available.
3142
3143         * Unit files, udev's .link files, and systemd-networkd's .netdev and
3144           .network files all gained support for a new condition
3145           ConditionKernelVersion= for checking against specific kernel
3146           versions.
3147
3148         * In systemd-networkd, the [IPVLAN] section in .netdev files gained
3149           support for configuring device flags in the Flags= setting. In the
3150           same files, the [Tunnel] section gained support for configuring
3151           AllowLocalRemote=.  The [Route] section in .network files gained
3152           support for configuring InitialCongestionWindow=,
3153           InitialAdvertisedReceiveWindow= and QuickAck=. The [DHCP] section now
3154           understands RapidCommit=.
3155
3156         * systemd-networkd's DHCPv6 support gained support for Prefix
3157           Delegation.
3158
3159         * sd-bus gained support for a ne