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