]> git.ipfire.org Git - thirdparty/systemd.git/blob - NEWS
NEWS: adjust indentation
[thirdparty/systemd.git] / NEWS
1 systemd System and Service Manager
2
3 CHANGES WITH 255 in spe:
4
5 Announcements of Future Feature Removals and Incompatible Changes:
6
7 * Support for split-usr (/usr/ mounted separately during late boot,
8 instead of being mounted by the initrd before switching to the rootfs)
9 and unmerged-usr (parallel directories /bin/ and /usr/bin/, /lib/ and
10 /usr/lib/, …) has been removed. For more details, see:
11 https://lists.freedesktop.org/archives/systemd-devel/2022-September/048352.html
12
13 * We intend to remove cgroup v1 support from a systemd release after
14 the end of 2023. If you run services that make explicit use of
15 cgroup v1 features (i.e. the "legacy hierarchy" with separate
16 hierarchies for each controller), please implement compatibility with
17 cgroup v2 (i.e. the "unified hierarchy") sooner rather than later.
18 Most of Linux userspace has been ported over already.
19
20 * Support for System V service scripts is now deprecated and will be
21 removed in a future release. Please make sure to update your software
22 *now* to include a native systemd unit file instead of a legacy
23 System V script to retain compatibility with future systemd releases.
24
25 * Support for the SystemdOptions EFI variable is deprecated.
26 'bootctl systemd-efi-options' will emit a warning when used. It seems
27 that this feature is little-used and it is better to use alternative
28 approaches like credentials and confexts. The plan is to drop support
29 altogether at a later point, but this might be revisited based on
30 user feedback.
31
32 * systemd-run's switch --expand-environment= which currently is disabled
33 by default when combined with --scope, will be changed in a future
34 release to be enabled by default.
35
36 * "systemctl switch-root" is now restricted to initrd transitions only.
37
38 Transitions between real systems should be done with
39 "systemctl soft-reboot" instead.
40
41 * The "ip=off" and "ip=none" kernel command line options interpreted by
42 systemd-network-generator will now result in IPv6RA + link-local
43 addressing being disabled, too. Previously DHCP was turned off, but
44 IPv6RA and IPv6 link-local addressing was left enabled.
45
46 * The NAMING_BRIDGE_MULTIFUNCTION_SLOT naming scheme has been deprecated
47 and is now disabled.
48
49 * SuspendMode=, HibernateState= and HybridSleepState= in the [Sleep]
50 section of systemd-sleep.conf are now deprecated and have no effect.
51 They did not (and could not) take any value other than the respective
52 default. HybridSleepMode= is also deprecated, and will now always use
53 the 'suspend' disk mode.
54
55 Service Manager:
56
57 * The way services are spawned has been overhauled. Previously, a
58 process was forked that shared all of the manager's memory (via
59 copy-on-write) while doing all the required setup (e.g.: mount
60 namespaces, CGroup configuration, etc.) before exec'ing the target
61 executable. This was problematic for various reasons: several glibc
62 APIs were called that are not supposed to be used after a fork but
63 before an exec, copy-on-write meant that if either process (the
64 manager or the child) touched a memory page a copy was triggered, and
65 also the memory footprint of the child process was that of the
66 manager, but with the memory limits of the service. From this version
67 onward, the new process is spawned using CLONE_VM and CLONE_VFORK
68 semantics via posix_spawn(3), and it immediately execs a new internal
69 binary, systemd-executor, that receives the configuration to apply
70 via memfd, and sets up the process before exec'ing the target
71 executable.
72
73 * Most of the internal process tracking is being changed to use PIDFDs
74 instead of PIDs when the kernel supports it, to improve robustness
75 and reliability.
76
77 * A new option SurviveFinalKillSignal= can be used to configure the
78 unit to be skipped in the final SIGTERM/SIGKILL spree on shutdown.
79 This is part of the required configuration to let a unit's processes
80 survive a soft-reboot operation.
81
82 * System extension images (sysext) can now set
83 EXTENSION_RELOAD_MANAGER=1 in their extension-release files to
84 automatically reload the service manager (PID 1) when
85 merging/refreshing/unmerging on boot. Generally, while this can be
86 used to ship services in system extension images it's recommended to
87 do that via portable services instead.
88
89 * The ExtensionImages= and ExtensionDirectories= options now support
90 confexts images/directories.
91
92 * A new option NFTSet= provides a method for integrating dynamic cgroup
93 IDs into firewall rules with NFT sets. The benefit of using this
94 setting is to be able to use control group as a selector in firewall
95 rules easily and this in turn allows more fine grained filtering.
96 Also, NFT rules for cgroup matching use numeric cgroup IDs, which
97 change every time a service is restarted, making them hard to use in
98 systemd environment.
99
100 * A new option CoredumpReceive= can be set for service and scope units,
101 together with Delegate=yes, to make systemd-coredump on the host
102 forward core files from processes crashing inside the delegated
103 CGroup subtree to systemd-coredump running in the container. This new
104 option is by default used by systemd-nspawn containers that use the
105 "--boot" switch.
106
107 * A new ConditionSecurity=measured-uki option is now available, to ensure
108 a unit can only run when the system has been booted from a measured UKI.
109
110 * MemoryAvailable= now considers physical memory if there are no CGroup
111 memory limits set anywhere in the tree.
112
113 * The $USER environment variable is now always set for services, while
114 previously it was only set if User= was specified. A new option
115 SetLoginEnvironment= is now supported to determine whether to also set
116 $HOME, $LOGNAME, and $SHELL.
117
118 * Socket units now support a new pair of
119 PollLimitBurst=/PollLimitInterval= options to configure a limit on
120 how often polling events on the file descriptors backing this unit
121 will be considered within a time window.
122
123 * Scope units can now be created using PIDFDs instead of PIDs to select
124 the processes they should include.
125
126 * Sending SIGRTMIN+18 with 0x500 as sigqueue() value will now cause the
127 manager to dump the list of currently pending jobs.
128
129 * If the kernel supports MOVE_MOUNT_BENEATH, the systemctl and
130 machinectl bind and mount-image verbs will now cause the new mount to
131 replace the old mount (if any), instead of overmounting it.
132
133 * Units now have MemoryPeak, MemorySwapPeak, MemorySwapCurrent and
134 MemoryZSwapCurrent properties, which respectively contain the values
135 of the cgroup v2's memory.peak, memory.swap.peak, memory.swap.current
136 and memory.zswap.current properties. This information is also show in
137 "systemctl status" output, if available.
138
139 TPM2 Support + Disk Encryption & Authentication:
140
141 * systemd-cryptenroll now allows specifying a PCR bank and explicit hash
142 value in the --tpm2-pcrs= option.
143
144 * systemd-cryptenroll now allows specifying a TPM2 key handle (nv
145 index) to be used instead of the default SRK via the new
146 --tpm2-seal-key-handle= option.
147
148 * systemd-cryptenroll now allows TPM2 enrollment using only a TPM2
149 public key (in TPM2B_PUBLIC format) – without access to the TPM2
150 device itself – which enables offline sealing of LUKS images for a
151 specific TPM2 chip, as long as the SRK public key is known. Pass the
152 public to the tool via the new --tpm2-device-key= switch.
153
154 * systemd-cryptsetup is now installed in /usr/bin/ and is no longer an
155 internal-only executable.
156
157 * The TPM2 Storage Root Key will now be set up, if not already present,
158 by a new systemd-tpm2-setup.service early boot service. The SRK will
159 be stored in PEM format and TPM2_PUBLIC format (the latter is useful
160 for systemd-cryptenroll --tpm2-device-key=, as mentioned above) for
161 easier access. A new "srk" verb has been added to systemd-analyze to
162 allow extracting it on demand if it is already set up.
163
164 * The internal systemd-pcrphase executable has been renamed to
165 systemd-pcrextend.
166
167 * The systemd-pcrextend tool gained a new --pcr= switch to override
168 which PCR to measure into.
169
170 * systemd-pcrextend now exposes a Varlink interface at
171 io.systemd.PCRExtend that can be used to do measurements and event
172 logging on demand.
173
174 * TPM measurements are now also written to an event log at
175 /run/log/systemd/tpm2-measure.log, using a derivative of the TCG
176 Canonical Event Log format. Previously we'd only log them to the
177 journal, where they however were subject to rotation and similar.
178
179 * A new component "systemd-pcrlock" has been added that allows managing
180 local TPM2 PCR policies for PCRs 0-7 and similar, which are hard to
181 predict by the OS vendor because of the inherently local nature of
182 what measurements they contain, such as firmware versions of the
183 system and extension cards and suchlike. pcrlock can predict PCR
184 measurements ahead of time based on various inputs, such as the local
185 TPM2 event log, GPT partition tables, PE binaries, UKI kernels, and
186 various other things. It can then pre-calculate a TPM2 policy from
187 this, which it stores in an TPM2 NV index. TPM2 objects (such as disk
188 encryption keys) can be locked against this NV index, so that they
189 are locked against a specific combination of system firmware and
190 state. Alternatives for each component are supported to allowlist
191 multiple kernel versions or boot loader version simultaneously
192 without losing access to the disk encryption keys. The tool can also
193 be used to analyze and validate the local TPM2 event log.
194 systemd-cryptsetup, systemd-cryptenroll, systemd-repart have all been
195 updated to support such policies. There's currently no support for
196 locking the system's root disk against a pcrlock policy, this will be
197 added soon. Moreover, it is currently not possible to combine a
198 pcrlock policy with a signed PCR policy. This component is
199 experimental and its public interface is subject to change.
200
201 systemd-boot, systemd-stub, ukify, bootctl, kernel-install:
202
203 * bootctl will now show whether the system was booted from a UKI in its
204 status output.
205
206 * systemd-boot and systemd-stub now use different project keys in their
207 respective SBAT sections, so that they can be revoked individually if
208 needed.
209
210 * systemd-boot will no longer load unverified Devicetree blobs when UEFI
211 SecureBoot is enabled. For more details see:
212 https://github.com/systemd/systemd/security/advisories/GHSA-6m6p-rjcq-334c
213
214 * systemd-boot gained new hotkeys to reboot and power off the system
215 from the boot menu ("B" and "O"). If the "auto-poweroff" and
216 "auto-reboot" options in loader.conf are set these entries are also
217 shown as menu items (which is useful on devices lacking a regular
218 keyboard).
219
220 * systemd-boot gained a new configuration value "menu-disabled" for the
221 set-timeout option, to allow completely disabling the boot menu,
222 including the hotkey.
223
224 * systemd-boot will now measure the content of loader.conf in TPM2
225 PCR 5.
226
227 * systemd-stub will now concatenate the content of all kernel
228 command-line addons before measuring them in TPM2 PCR 12, in a single
229 measurement, instead of measuring them individually.
230
231 * systemd-stub will now measure and load Devicetree Blob addons, which
232 are searched and loaded following the same model as the existing
233 kernel command-line addons.
234
235 * systemd-stub will now ignore unauthenticated kernel command line options
236 passed from systemd-boot when running inside Confidential VMs with UEFI
237 SecureBoot enabled.
238
239 * systemd-stub will now load a Devicetree blob even if the firmware did
240 not load any beforehand (e.g.: for ACPI systems).
241
242 * ukify is no longer considered experimental, and now ships in /usr/bin/.
243
244 * ukify gained a new verb inspect to describe the sections of a UKI and
245 print the contents of the well-known sections.
246
247 * ukify gained a new verb genkey to generate a set of of key pairs for
248 signing UKIs and their PCR data.
249
250 * The 90-loaderentry kernel-install hook now supports installing device
251 trees.
252
253 * kernel-install now supports the --json=, --root=, --image=, and
254 --image-policy= options for the inspect verb.
255
256 * kernel-install now supports new list and add-all verbs. The former
257 lists all installed kernel images (if those are available in
258 /usr/lib/modules/). The latter will install all the kernels it can
259 find to the ESP.
260
261 systemd-repart:
262
263 * A new option --copy-from= has been added that synthesizes partition
264 definitions from the given image, which are then applied by the
265 systemd-repart algorithm.
266
267 * A new option --copy-source= has been added, which can be used to specify
268 a directory to which CopyFiles= is considered relative to.
269
270 * New --make-ddi=confext, --make-ddi=sysext, and --make-ddi=portable
271 options have been added to make it easier to generate these types of
272 DDIs, without having to provide repart.d definitions for them.
273
274 * The dm-verity salt and UUID will now be derived from the specified
275 seed value.
276
277 * New VerityDataBlockSizeBytes= and VerityHashBlockSizeBytes= can now be
278 configured in repart.d/ configuration files.
279
280 * A new Subvolumes= setting is now supported in repart.d/ configuration
281 files, to indicate which directories in the target partition should be
282 btrfs subvolumes.
283
284 * A new --tpm2-device-key= option can be used to lock a disk against a
285 specific TPM2 public key. This matches the same switch the
286 systemd-cryptenroll tool now supports (see above).
287
288 Journal:
289
290 * The journalctl --lines= parameter now accepts +N to show the oldest N
291 entries instead of the newest.
292
293 * journald now ensures that sealing happens once per epoch, and sets a
294 new compatibility flag to distinguish old journal files that were
295 created before this change, for backward compatibility.
296
297 Device Management:
298
299 * udev will now create symlinks to loopback block devices in the
300 /dev/disk/by-loop-ref/ directory that are based on the .lo_file_name
301 string field selected during allocation. The systemd-dissect tool and
302 the util-linux losetup command now supports a complementing new switch
303 --loop-ref= for selecting the string. This means a loopback block
304 device may now be allocated under a caller-chosen reference and can
305 subsequently be referenced without first having to look up the block
306 device name the caller ended up with.
307
308 * udev also creates symlinks to loopback block devices in the
309 /dev/disk/by-loop-inode/ directory based on the .st_dev/st_ino fields
310 of the inode attached to the loopback block device. This means that
311 attaching a file to a loopback device will implicitly make a handle
312 available to be found via that file's inode information.
313
314 * udevadm info gained support for JSON output via a new --json= flag, and
315 for filtering output using the same mechanism that udevadm trigger
316 already implements.
317
318 * The predictable network interface naming logic is extended to include
319 the SR-IOV-R "representor" information in network interface names.
320 This feature was intended for v254, but even though the code was
321 merged, the part that actually enabled the feature was forgotten.
322 It is now enabled by default and is part of the new "v255" naming
323 scheme.
324
325 * A new hwdb/rules file has been added that sets the
326 ID_NET_AUTO_LINK_LOCAL_ONLY=1 udev property on all network interfaces
327 that should usually only be configured with link-local addressing
328 (IPv4LL + IPv6LL), i.e. for PC-to-PC cables ("laplink") or
329 Thunderbolt networking. systemd-networkd and NetworkManager (soon)
330 will make use of this information to apply an appropriate network
331 configuration by default.
332
333 * The ID_NET_DRIVER property on network interfaces is now set
334 relatively early in the udev rule set so that other rules may rely on
335 its use. This is implemented in a new "net-driver" udev built-in.
336
337 Network Management:
338
339 * The "duid-only" option for DHCPv4 client's ClientIdentifier= setting
340 is now dropped, as it never worked, hence it should not be used by
341 anyone.
342
343 * The 'prefixstable' ipv6 address generation mode now considers the SSID
344 when generating stable addresses, so that a different stable address
345 is used when roaming between wireless networks. If you already use
346 'prefixstable' addresses with wireless networks, the stable address
347 will be changed by the update.
348
349 * The DHCPv4 client gained a RapidCommit option, true by default, which
350 enables RFC4039 Rapid Commit behavior to obtain a lease in a
351 simplified 2-message exchange instead of the typical 4-message
352 exchange, if also supported by the DHCP server.
353
354 * The DHCPv4 client gained new InitialCongestionWindow= and
355 InitialAdvertisedReceiveWindow= options for route configurations.
356
357 * The DHCPv4 client gained a new RequestAddress= option that allows
358 to send a preferred IP address in the initial DHCPDISCOVER message.
359
360 * The DHCPv4 server and client gained support for IPv6-only mode
361 (RFC8925).
362
363 * The SendHostname= and Hostname= options are now available for the
364 DHCPv6 client, independently of the DHCPv4= option, so that these
365 configuration values can be set independently for each client.
366
367 * The DHCPv4 and DHCPv6 client state can now be queried via D-Bus,
368 including lease information.
369
370 * The DHCPv6 client can now be configured to use a custom DUID type.
371
372 * .network files gained a new IPv4ReversePathFilter= setting in the
373 [Network] section, to control sysctl's rp_filter setting.
374
375 * .network files gaiend a new HopLimit= setting in the [Route] section,
376 to configure a per-route hop limit.
377
378 * .network files gained a new TCPRetransmissionTimeoutSec= setting in
379 the [Route] section, to configure a per-route TCP retransmission
380 timeout.
381
382 * A new directive NFTSet= provides a method for integrating network
383 configuration into firewall rules with NFT sets. The benefit of using
384 this setting is that static network configuration or dynamically
385 obtained network addresses can be used in firewall rules with the
386 indirection of NFT set types.
387
388 * The [IPv6AcceptRA] section supports the following new options:
389 UsePREF64=, UseHopLimit=, UseICMP6RateLimit=, and NFTSet=.
390
391 * The [IPv6SendRA] section supports the following new options:
392 RetransmitSec=, HopLimit=, HomeAgent=, HomeAgentLifetimeSec=, and
393 HomeAgentPreference=.
394
395 * A new [IPv6PREF64Prefix] set of options, containing Prefix= and
396 LifetimeSec=, has been introduced to append pref64 options in router
397 advertisements (RFC8781).
398
399 * The network generator now configures the interfaces with only
400 link-local addressing if "ip=link-local" is specified on the kernel
401 command line.
402
403 * The prefix of the configuration files generated by the network
404 generator from the kernel command line is now prefixed with '70-',
405 to make them have higher precedence over the default configuration
406 files.
407
408 * Added a new -Ddefault-network=BOOL meson option, that causes more
409 .network files to be installed as enabled by default. These configuration
410 files will which match generic setups, e.g. 89-ethernet.network matches
411 all Ethernet interfaces and enables both DHCPv4 and DHCPv6 clients.
412
413 * If a ID_NET_MANAGED_BY= udev property is set on a network device and
414 it is any other string than "io.systemd.Network" then networkd will
415 not manage this device. This may be used to allow multiple network
416 management services to run in parallel and assign ownership of
417 specific devices explicitly. NetworkManager will soon implement a
418 similar logic.
419
420 systemctl:
421
422 * systemctl is-failed now checks the system state if no unit is
423 specified.
424
425 * systemctl will now automatically soft-reboot if a new root file system
426 is found under /run/nextroot/ when a reboot operation is invoked.
427
428 Login management:
429
430 * Wall messages now work even when utmp support is disabled, using
431 systemd-logind to query the necessary information.
432
433 * systemd-logind now sends a new PrepareForShutdownWithMetadata D-Bus
434 signal before shutdown/reboot/soft-reboot that includes additional
435 information compared to the PrepareForShutdown signal. Currently the
436 additional information is the type of operation that is about to be
437 executed.
438
439 Hibernation & Suspend:
440
441 * The kernel and OS versions will no longer be checked on resume from
442 hibernation.
443
444 * Hibernation into swap files backed by btrfs are now
445 supported. (Previously this was supported only for other file
446 systems.)
447
448 Other:
449
450 * A new systemd-vmspawn tool has been added, that aims to provide for VMs
451 the same interfaces and functionality that systemd-nspawn provides for
452 containers. For now it supports QEMU as a backend, and exposes some of
453 its options to the user. This component is experimental and its public
454 interface is subject to change.
455
456 * "systemd-analyze plot" has gained tooltips on each unit name with
457 related-unit information in its svg output, such as Before=,
458 Requires=, and similar properties.
459
460 * A new varlinkctl tool has been added to allow interfacing with
461 Varlink services, and introspection has been added to all such
462 services.
463
464 * systemd-sysext and systemd-confext now expose a Varlink service
465 at io.systemd.sysext.
466
467 * portable services now accept confexts as extensions.
468
469 * systemd-sysupdate now accepts directories in the MatchPattern= option.
470
471 * systemd-run will now output the invocation ID of the launched
472 transient unit and its peak memory usage.
473
474 * systemd-analyze, systemd-tmpfiles, systemd-sysusers, systemd-sysctl,
475 and systemd-binfmt gained a new --tldr option that can be used instead
476 of --cat-config to suppress uninteresting configuration lines, such as
477 comments and whitespace.
478
479 * resolvectl gained a new "show-server-state" command that shows
480 current statistics of the resolver. This is backed by a new
481 DumpStatistics() Varlink method provided by systemd-resolved.
482
483 * systemd-timesyncd will now emit a D-Bus signal when the LinkNTPServers
484 property changes.
485
486 * vconsole now supports KEYMAP=@kernel for preserving the kernel keymap
487 as-is.
488
489 * seccomp now supports the LoongArch64 architecture.
490
491 * seccomp may now be enabled for services running as a non-root User=
492 without NoNewPrivileges=yes.
493
494 * systemd-id128 now supports a new -P option to show only values. The
495 combination of -P and --app options is also supported.
496
497 * A new pam_systemd_loadkey.so PAM module is now available, which will
498 automatically fetch the passphrase used by cryptsetup to unlock the
499 root file system and set it as the PAM authtok. This enables, among
500 other things, configuring auto-unlock of the GNOME Keyring / KDE
501 Wallet when autologin is configured.
502
503 * Many meson options now use the 'feature' type, which means they
504 take enabled/disabled/auto as values.
505
506 * A new meson option -Dconfigfiledir= can be used to change where
507 configuration files with default values are installed to.
508
509 * Options and verbs in man pages are now tagged with the version they
510 were first introduced in.
511
512 * A new component "systemd-storagetm" has been added, which exposes all
513 local block devices as NVMe-TCP devices, fully automatically. It's
514 hooked into a new target unit storage-target-mode.target that is
515 suppsoed to be booted into via
516 rd.systemd.unit=storage-target-mode.target on the kernel command
517 line. This is intended to be used for installers and debugging to
518 quickly get access to the local disk. It's inspired by MacOS "target
519 disk mode".
520
521 * A new component "systemd-bsod" has been added, which can show logged
522 error messages full screen, if they have a log level of LOG_EMERG log
523 level.
524
525 * The systemd-dissect tool's --with command will now set the
526 $SYSTEMD_DISSECT_DEVICE environment variable to the block device it
527 operates on for the invoked process.
528
529 * The systemd-mount tool gained a new --tmpfs switch for mounting a new
530 'tmpfs' instance. This is useful since it does so via .mount units
531 and thus can be executed remotely or in containers.
532
533 * The various tools in systemd that take "verbs" (such as systemctl,
534 loginctl, machinectl, …) now will suggest a close verb name in case
535 the user specified an unrecognized one.
536
537 * libsystemd now exports a new function sd_id128_get_app_specific()
538 that generates "app-specific" 128bit IDs from any ID. It's similar to
539 sd_id128_get_machine_app_specific() and
540 sd_id128_get_boot_app_specific() but takes the ID to base calculation
541 on as input. This new functionality is also exposed in the
542 "systemd-id128" tool where you can now combine --app= with `show`.
543
544 * All tools that parse timestamps now can also parse RFC3339 style
545 timestamps that include the "T" and Z" characters.
546
547 * New documentation has been added:
548
549 https://systemd.io/FILE_DESCRIPTOR_STORE
550 https://systemd.io/TPM2_PCR_MEASUREMENTS
551 https://systemd.io/MOUNT_REQUIREMENTS
552
553 * The codebase now recognizes the suffix .confext.raw and .sysext.raw
554 as alternative to the .raw suffix generally accepted for DDIs. It is
555 recommended to name configuration extensions and system extensions
556 with such suffixes, to indicate their purpose in the name.
557
558 * The sd-device API gained a new function
559 sd_device_enumerator_add_match_property_required() which allows
560 configuring matches on properties that are strictly required. This is
561 different from the existing sd_device_enumerator_add_match_property()
562 matches of which one one needs to apply.
563
564 * The MAC address the veth side of an nspawn container shall get
565 assigned may now be controlled via the $SYSTEMD_NSPAWN_NETWORK_MAC
566 environment variable.
567
568 * The libiptc dependency is now implemented via dlopen(), so that tools
569 such as networkd and nspawn no longer have a hard dependency on the
570 shared library when compiled with support for libiptc.
571
572 * New rpm macros have been added: %systemd_user_daemon_reexec does
573 daemon-reexec for all user managers, and %systemd_postun_with_reload
574 and %systemd_user_postun_with_reload do a reload for system and user
575 units on upgrades.
576
577 * coredumpctl now propagates SIGTERM to the debugger process.
578
579 Contributions from: 김인수, Abderrahim Kitouni, Adam Williamson,
580 Alexandre Peixoto Ferreira, Alex Hudspith, Alvin Alvarado,
581 André Paiusco, Antonio Alvarez Feijoo, Anton Lundin,
582 Arseny Maslennikov, Arthur Shau, Balázs Úr, beh_10257,
583 Benjamin Peterson, Bertrand Jacquin, Brian Norris,
584 Cheng-Chia Tseng, Chris Patterson, Christian Hergert,
585 Christian Hesse, Christian Kirbach, Clayton Craft, commondservice,
586 Curtis Klein, cvlc12, Daan De Meyer, Daniele Medri,
587 Daniel P. Berrangé, Daniel Rusek, Dan Nicholson, Dan Streetman,
588 David Rheinsberg, David Santamaría Rogado, David Tardon,
589 dependabot[bot], Diego Viola, Dmitry V. Levin,
590 Emanuele Giuseppe Esposito, Emil Renner Berthing, Emil Velikov,
591 Etienne Dechamps, Fabian Vogt, felixdoerre, Felix Dörre,
592 Florian Schmaus, Franck Bui, Frantisek Sumsal, G2-Games,
593 Gioele Barabucci, Hugo Carvalho, huyubiao, Iago López Galeiras,
594 IllusionMan1212, Jade Lovelace, janana, Jan Janssen, Jan Kuparinen,
595 Jan Macku, Jeremy Fleischman, Jin Liu, jjimbo137, Joerg Behrmann,
596 Johannes Segitz, Jordan Rome, Jordan Williams, Julien Malka,
597 Juno Computers, Khem Raj, khm, Kingbom Dou, Kiran Vemula,
598 Laszlo Gombos, Lennart Poettering, Luca Boccassi,
599 Lucas Adriano Salles, Lukas, Lukáš Nykrýn, Maanya Goenka,
600 Maarten, Malte Poll, Marc Pervaz Boocha, Martin Beneš,
601 Martin Wilck, Mathieu Tortuyaux, Matthias Schiffer,
602 Maxim Mikityanskiy, Max Kellermann, Michael A Cassaniti,
603 Michael Biebl, Michael Kuhn, Michael Vasseur, Michal Koutný,
604 Michal Sekletár, Mike Yuan, Milton D. Miller II, mordner,
605 msizanoen, NAHO, Nandakumar Raghavan, Nick Rosbrook, NRK,
606 Oğuz Ersen, Omojola Joshua, pelaufer, Peter Hutterer, PhylLu,
607 Pierre GRASSER, Piotr Drąg, Priit Laes, Rahil Bhimjiani,
608 Raito Bezarius, Raul Cheleguini, Reto Schneider, Richard Maw,
609 Robby Red, RoepLuke, Roland Hieber, Ronan Pigott, Sam James,
610 Sam Leonard, Sergey A, Susant Sahani, Sven Joachim, Tad Fisher,
611 Takashi Sakamoto, Thorsten Kukuk, Tj, Tomasz Świątek,
612 Topi Miettinen, Valentin David, Valentin Lefebvre,
613 Victor Westerhuis, Vincent Haupert, Vishal Chillara Srinivas,
614 Vito Caputo, Warren, Xiaotian Wu, xinpeng wang, Yu Watanabe,
615 Zbigniew Jędrzejewski-Szmek, zeroskyx, наб
616
617 — Edinburgh, 2023-11-06
618
619 CHANGES WITH 254:
620
621 Announcements of Future Feature Removals and Incompatible Changes:
622
623 * The next release (v255) will remove support for split-usr (/usr/
624 mounted separately during late boot, instead of being mounted by the
625 initrd before switching to the rootfs) and unmerged-usr (parallel
626 directories /bin/ and /usr/bin/, /lib/ and /usr/lib/, …). For more
627 details, see:
628 https://lists.freedesktop.org/archives/systemd-devel/2022-September/048352.html
629
630 * We intend to remove cgroup v1 support from a systemd release after
631 the end of 2023. If you run services that make explicit use of
632 cgroup v1 features (i.e. the "legacy hierarchy" with separate
633 hierarchies for each controller), please implement compatibility with
634 cgroup v2 (i.e. the "unified hierarchy") sooner rather than later.
635 Most of Linux userspace has been ported over already.
636
637 * Support for System V service scripts is now deprecated and will be
638 removed in a future release. Please make sure to update your software
639 *now* to include a native systemd unit file instead of a legacy
640 System V script to retain compatibility with future systemd releases.
641
642 * Support for the SystemdOptions EFI variable is deprecated.
643 'bootctl systemd-efi-options' will emit a warning when used. It seems
644 that this feature is little-used and it is better to use alternative
645 approaches like credentials and confexts. The plan is to drop support
646 altogether at a later point, but this might be revisited based on
647 user feedback.
648
649 * EnvironmentFile= now treats the line following a comment line
650 trailing with escape as a non comment line. For details, see:
651 https://github.com/systemd/systemd/issues/27975
652
653 * PrivateNetwork=yes and NetworkNamespacePath= now imply
654 PrivateMounts=yes unless PrivateMounts=no is explicitly specified.
655
656 * Behaviour of sandboxing options for the per-user service manager
657 units has changed. They now imply PrivateUsers=yes, which means user
658 namespaces will be implicitly enabled when a sandboxing option is
659 enabled in a user unit. Enabling user namespaces has the drawback
660 that system users will no longer be visible (and processes/files will
661 appear as owned by 'nobody') in the user unit.
662
663 By definition a sandboxed user unit should run with reduced
664 privileges, so impact should be small. This will remove a great
665 source of confusion that has been reported by users over the years,
666 due to how these options require an extra setting to be manually
667 enabled when used in the per-user service manager, which is not
668 needed in the system service manager. For more details, see:
669 https://lists.freedesktop.org/archives/systemd-devel/2022-December/048682.html
670
671 * systemd-run's switch --expand-environment= which currently is disabled
672 by default when combined with --scope, will be changed in a future
673 release to be enabled by default.
674
675 Security Relevant Changes:
676
677 * pam_systemd will now by default pass the CAP_WAKE_ALARM ambient
678 process capability to invoked session processes of regular users on
679 local seats (as well as to systemd --user), unless configured
680 otherwise via data from JSON user records, or via the PAM module's
681 parameter list. This is useful in order allow desktop tools such as
682 GNOME's Alarm Clock application to set a timer for
683 CLOCK_REALTIME_ALARM that wakes up the system when it elapses. A
684 per-user service unit file may thus use AmbientCapability= to pass
685 the capability to invoked processes. Note that this capability is
686 relatively narrow in focus (in particular compared to other process
687 capabilities such as CAP_SYS_ADMIN) and we already — by default —
688 permit more impactful operations such as system suspend to local
689 users.
690
691 Service Manager:
692
693 * Memory limits that apply while the unit is activating are now
694 supported. Previously IO and CPU settings were already supported via
695 StartupCPUWeight= and similar. The same logic has been added for the
696 various manager and unit memory settings (DefaultStartupMemoryLow=,
697 StartupMemoryLow=, StartupMemoryHigh=, StartupMemoryMax=,
698 StartupMemorySwapMax=, StartupMemoryZSwapMax=).
699
700 * The service manager gained support for enqueuing POSIX signals to
701 services that carry an additional integer value, exposing the
702 sigqueue() system call. This is accessible via new D-Bus calls
703 org.freedesktop.systemd1.Manager.QueueSignalUnit() and
704 org.freedesktop.systemd1.Unit.QueueSignal(), as well as in systemctl
705 via the new --kill-value= option.
706
707 * systemctl gained a new "list-paths" verb, which shows all currently
708 active .path units, similarly to how "systemctl list-timers" shows
709 active timers, and "systemctl list-sockets" shows active sockets.
710
711 * systemctl gained a new --when= switch which is honoured by the various
712 forms of shutdown (i.e. reboot, kexec, poweroff, halt) and allows
713 scheduling these operations by time, similar in fashion to how this
714 has been supported by SysV shutdown.
715
716 * If MemoryDenyWriteExecute= is enabled for a service and the kernel
717 supports the new PR_SET_MDWE prctl() call, it is used instead of the
718 seccomp()-based system call filter to achieve the same effect.
719
720 * A new set of kernel command line options is now understood:
721 systemd.tty.term.<name>=, systemd.tty.rows.<name>=,
722 systemd.tty.columns.<name>= allow configuring the TTY type and
723 dimensions for the tty specified via <name>. When systemd invokes a
724 service on a tty (via TTYName=) it will look for these and configure
725 the TTY accordingly. This is particularly useful in VM environments
726 to propagate host terminal settings into the appropriate TTYs of the
727 guest.
728
729 * A new RootEphemeral= setting is now understood in service units. It
730 takes a boolean argument. If enabled for services that use RootImage=
731 or RootDirectory= an ephemeral copy of the disk image or directory
732 tree is made when the service is started. It is removed automatically
733 when the service is stopped. That ephemeral copy is made using
734 btrfs/xfs reflinks or btrfs snapshots, if available.
735
736 * The service activation logic gained new settings RestartSteps= and
737 RestartMaxDelaySec= which allow exponentially-growing restart
738 intervals for Restart=.
739
740 * The service activation logic gained a new setting RestartMode= which
741 can be set to 'direct' to skip the inactive/failed states when
742 restarting, so that dependent units are not notified until the service
743 converges to a final (successful or failed) state. For example, this
744 means that OnSuccess=/OnFailure= units will not be triggered until the
745 service state has converged.
746
747 * PID 1 will now automatically load the virtio_console kernel module
748 during early initialization if running in a suitable VM. This is done
749 so that early-boot logging can be written to the console if available.
750
751 * Similarly, virtio-vsock support is loaded early in suitable VM
752 environments. PID 1 will send sd_notify() notifications via AF_VSOCK
753 to the VMM if configured, thus loading this early is beneficial.
754
755 * A new verb "fdstore" has been added to systemd-analyze to show the
756 current contents of the file descriptor store of a unit. This is
757 backed by a new D-Bus call DumpUnitFileDescriptorStore() provided by
758 the service manager.
759
760 * The service manager will now set a new $FDSTORE environment variable
761 when invoking processes for services that have the file descriptor
762 store enabled.
763
764 * A new service option FileDescriptorStorePreserve= has been added that
765 allows tuning the lifecycle of the per-service file descriptor store.
766 If set to "yes", the entries in the fd store are retained even after
767 the service has been fully stopped.
768
769 * The "systemctl clean" command may now be used to clear the fdstore of
770 a service.
771
772 * Unit *.preset files gained a new directive "ignore", in addition to
773 the existing "enable" and "disable". As the name suggests, matching
774 units are left unchanged, i.e. neither enabled nor disabled.
775
776 * Service units gained a new setting DelegateSubgroup=. It takes the
777 name of a sub-cgroup to place any processes the service manager forks
778 off in. Previously, the service manager would place all service
779 processes directly in the top-level cgroup it created for the
780 service. This usually meant that main process in a service with
781 delegation enabled would first have to create a subgroup and move
782 itself down into it, in order to not conflict with the "no processes
783 in inner cgroups" rule of cgroup v2. With this option, this step is
784 now handled by PID 1.
785
786 * The service manager will now look for .upholds/ directories,
787 similarly to the existing support for .wants/ and .requires/
788 directories. Symlinks in this directory result in Upholds=
789 dependencies.
790
791 The [Install] section of unit files gained support for a new
792 UpheldBy= directive to generate .upholds/ symlinks automatically when
793 a unit is enabled.
794
795 * The service manager now supports a new kernel command line option
796 systemd.default_device_timeout_sec=, which may be used to override
797 the default timeout for .device units.
798
799 * A new "soft-reboot" mechanism has been added to the service manager.
800 A "soft reboot" is similar to a regular reboot, except that it
801 affects userspace only: the service manager shuts down any running
802 services and other units, then optionally switches into a new root
803 file system (mounted to /run/nextroot/), and then passes control to a
804 systemd instance in the new file system which then starts the system
805 up again. The kernel is not rebooted and neither is the hardware,
806 firmware or boot loader. This provides a fast, lightweight mechanism
807 to quickly reset or update userspace, without the latency that a full
808 system reset involves. Moreover, open file descriptors may be passed
809 across the soft reboot into the new system where they will be passed
810 back to the originating services. This allows pinning resources
811 across the reboot, thus minimizing grey-out time further. This new
812 reboot mechanism is accessible via the new "systemctl soft-reboot"
813 command.
814
815 * Services using RootDirectory= or RootImage= will now have read-only
816 access to a copy of the host's os-release file under
817 /run/host/os-release, which will be kept up-to-date on 'soft-reboot'.
818 This was already the case for Portable Services, and the feature has
819 now been extended to all services that do not run off the host's
820 root filesystem.
821
822 * A new service setting MemoryKSM= has been added to enable kernel
823 same-page merging individually for services.
824
825 * A new service setting ImportCredentials= has been added that augments
826 LoadCredential= and LoadCredentialEncrypted= and searches for
827 credentials to import from the system, and supports globbing.
828
829 * A new job mode "restart-dependencies" has been added to the service
830 manager (exposed via systemctl --job-mode=). It is only valid when
831 used with "start" jobs, and has the effect that the "start" job will
832 be propagated as "restart" jobs to currently running units that have
833 a BindsTo= or Requires= dependency on the started unit.
834
835 * A new verb "whoami" has been added to "systemctl" which determines as
836 part of which unit the command is being invoked. It writes the unit
837 name to standard output. If one or more PIDs are specified reports
838 the unit names the processes referenced by the PIDs belong to.
839
840 * The system and service credential logic has been improved: there's
841 now a clearly defined place where system provisioning tools running
842 in the initrd can place credentials that will be imported into the
843 system's set of credentials during the initrd → host transition: the
844 /run/credentials/@initrd/ directory. Once the credentials placed
845 there are imported into the system credential set they are deleted
846 from this directory, and the directory itself is deleted afterwards
847 too.
848
849 * A new kernel command line option systemd.set_credential_binary= has
850 been added, that is similar to the pre-existing
851 systemd.set_credential= but accepts arbitrary binary credential data,
852 encoded in Base64. Note that the kernel command line is not a
853 recommend way to transfer credentials into a system, since it is
854 world-readable from userspace.
855
856 * The default machine ID to use may now be configured via the
857 system.machine_id system credential. It will only be used if no
858 machine ID was set yet on the host.
859
860 * On Linux kernel 6.4 and newer system and service credentials will now
861 be placed in a tmpfs instance that has the "noswap" mount option
862 set. Previously, a "ramfs" instance was used. By switching to tmpfs
863 ACL support and overall size limits can now be enforced, without
864 compromising on security, as the memory is never paged out either
865 way.
866
867 * The service manager now can detect when it is running in a
868 'Confidential Virtual Machine', and a corresponding 'cvm' value is now
869 accepted by ConditionSecurity= for units that want to conditionalize
870 themselves on this. systemd-detect-virt gained new 'cvm' and
871 '--list-cvm' switches to respectively perform the detection or list
872 all known flavours of confidential VM, depending on the vendor. The
873 manager will publish a 'ConfidentialVirtualization' D-Bus property,
874 and will also set a SYSTEMD_CONFIDENTIAL_VIRTUALIZATION= environment
875 variable for unit generators. Finally, udev rules can match on a new
876 'cvm' key that will be set when in a confidential VM.
877 Additionally, when running in a 'Confidential Virtual Machine', SMBIOS
878 strings and QEMU's fw_cfg protocol will not be used to import
879 credentials and kernel command line parameters by the system manager,
880 systemd-boot and systemd-stub, because the hypervisor is considered
881 untrusted in this particular setting.
882
883 Journal:
884
885 * The sd-journal API gained a new call sd_journal_get_seqnum() to
886 retrieve the current log record's sequence number and sequence number
887 ID, which allows applications to order records the same way as
888 journal does internally. The sequence number is now also exported in
889 the JSON and "export" output of the journal.
890
891 * journalctl gained a new switch --truncate-newline. If specified
892 multi-line log records will be truncated at the first newline,
893 i.e. only the first line of each log message will be shown.
894
895 * systemd-journal-upload gained support for --namespace=, similar to
896 the switch of the same name of journalctl.
897
898 systemd-repart:
899
900 * systemd-repart's drop-in files gained a new ExcludeFiles= option which
901 may be used to exclude certain files from the effect of CopyFiles=.
902
903 * systemd-repart's Verity support now implements the Minimize= setting
904 to minimize the size of the resulting partition.
905
906 * systemd-repart gained a new --offline= switch, which may be used to
907 control whether images shall be built "online" or "offline",
908 i.e. whether to make use of kernel facilities such as loopback block
909 devices and device mapper or not.
910
911 * If systemd-repart is told to populate a newly created ESP or XBOOTLDR
912 partition with some files, it will now default to VFAT rather than
913 ext4.
914
915 * systemd-repart gained a new --architecture= switch. If specified, the
916 per-architecture GPT partition types (i.e. the root and /usr/
917 partitions) configured in the partition drop-in files are
918 automatically adjusted to match the specified CPU architecture, in
919 order to simplify cross-architecture DDI building.
920
921 * systemd-repart will now default to a minimum size of 300MB for XFS
922 filesystems if no size parameter is specified. This matches what the
923 XFS tools (xfsprogs) can support.
924
925 systemd-boot, systemd-stub, ukify, bootctl, kernel-install:
926
927 * gnu-efi is no longer required to build systemd-boot and systemd-stub.
928 Instead, pyelftools is now needed, and it will be used to perform the
929 ELF -> PE relocations at build time.
930
931 * bootctl gained a new switch --print-root-device/-R that prints the
932 block device the root file system is backed by. If specified twice,
933 it returns the whole disk block device (as opposed to partition block
934 device) the root file system is on. It's useful for invocations such
935 as "cfdisk $(bootctl -RR)" to quickly show the partition table of the
936 running OS.
937
938 * systemd-stub will now look for the SMBIOS Type 1 field
939 "io.systemd.stub.kernel-cmdline-extra" and append its value to the
940 kernel command line it invokes. This is useful for VMMs such as qemu
941 to pass additional kernel command lines into the system even when
942 booting via full UEFI. The contents of the field are measured into
943 TPM PCR 12.
944
945 * The KERNEL_INSTALL_LAYOUT= setting for kernel-install gained a new
946 value "auto". With this value, a kernel will be automatically
947 analyzed, and if it qualifies as UKI, it will be installed as if the
948 setting was to set to "uki", otherwise as "bls".
949
950 * systemd-stub can now optionally load UEFI PE "add-on" images that may
951 contain additional kernel command line information. These "add-ons"
952 superficially look like a regular UEFI executable, and are expected
953 to be signed via SecureBoot/shim. However, they do not actually
954 contain code, but instead a subset of the PE sections that UKIs
955 support. They are supposed to provide a way to extend UKIs with
956 additional resources in a secure and authenticated way. Currently,
957 only the .cmdline PE section may be used in add-ons, in which case
958 any specified string is appended to the command line embedded into
959 the UKI itself. A new 'addon<EFI-ARCH>.efi.stub' is now provided that
960 can be used to trivially create addons, via 'ukify' or 'objcopy'. In
961 the future we expect other sections to be made extensible like this as
962 well.
963
964 * ukify has been updated to allow building these UEFI PE "add-on"
965 images, using the new 'addon<EFI-ARCH>.efi.stub'.
966
967 * ukify now accepts SBAT information to place in the .sbat PE section
968 of UKIs and addons. If a UKI is built the SBAT information from the
969 inner kernel is merged with any SBAT information associated with
970 systemd-stub and the SBAT data specified on the ukify command line.
971
972 * The kernel-install script has been rewritten in C, and reuses much of
973 the infrastructure of existing tools such as bootctl. It also gained
974 --esp-path= and --boot-path= options to override the path to the ESP,
975 and the $BOOT partition. Options --make-entry-directory= and
976 --entry-token= have been added as well, similar to bootctl's options
977 of the same name.
978
979 * A new kernel-install plugin 60-ukify has been added which will
980 combine kernel/initrd locally into a UKI and optionally sign them
981 with a local key. This may be used to switch to UKI mode even on
982 systems where a local kernel or initrd is used. (Typically UKIs are
983 built and signed by the vendor.)
984
985 * The ukify tool now supports "pesign" in addition to the pre-existing
986 "sbsign" for signing UKIs.
987
988 * systemd-measure and systemd-stub now look for the .uname PE section
989 that should contain the kernel's "uname -r" string.
990
991 * systemd-measure and ukify now calculate expected PCR hashes for a UKI
992 "offline", i.e. without access to a TPM (physical or
993 software-emulated).
994
995 Memory Pressure & Control:
996
997 * The sd-event API gained new calls sd_event_add_memory_pressure(),
998 sd_event_source_set_memory_pressure_type(),
999 sd_event_source_set_memory_pressure_period() to create and configure
1000 an event source that is called whenever the OS signals memory
1001 pressure. Another call sd_event_trim_memory() is provided that
1002 compacts the process' memory use by releasing allocated but unused
1003 malloc() memory back to the kernel. Services can also provide their
1004 own custom callback to do memory trimming. This should improve system
1005 behaviour under memory pressure, as on Linux traditionally provided
1006 no mechanism to return process memory back to the kernel if the
1007 kernel was under memory pressure. This makes use of the kernel's PSI
1008 interface. Most long-running services in systemd have been hooked up
1009 with this, and in particular systems with low memory should benefit
1010 from this.
1011
1012 * Service units gained new settings MemoryPressureWatch= and
1013 MemoryPressureThresholdSec= to configure the PSI memory pressure
1014 logic individually. If these options are used, the
1015 $MEMORY_PRESSURE_WATCH and $MEMORY_PRESSURE_WRITE environment
1016 variables will be set for the invoked processes to inform them about
1017 the requested memory pressure behaviour. (This is used by the
1018 aforementioned sd-events API additions, if set.)
1019
1020 * systemd-analyze gained a new "malloc" verb that shows the output
1021 generated by glibc's malloc_info() on services that support it. Right
1022 now, only the service manager has been updated accordingly. This
1023 call requires privileges.
1024
1025 User & Session Management:
1026
1027 * The sd-login API gained a new call sd_session_get_username() to
1028 return the user name of the owner of a login session. It also gained
1029 a new call sd_session_get_start_time() to retrieve the time the login
1030 session started. A new call sd_session_get_leader() has been added to
1031 return the PID of the "leader" process of a session. A new call
1032 sd_uid_get_login_time() returns the time since the specified user has
1033 most recently been continuously logged in with at least one session.
1034
1035 * JSON user records gained a new set of fields capabilityAmbientSet and
1036 capabilityBoundingSet which contain a list of POSIX capabilities to
1037 set for the logged in users in the ambient and bounding sets,
1038 respectively. homectl gained the ability to configure these two sets
1039 for users via --capability-bounding-set=/--capability-ambient-set=.
1040
1041 * pam_systemd learnt two new module options
1042 default-capability-bounding-set= and default-capability-ambient-set=,
1043 which configure the default bounding sets for users as they are
1044 logging in, if the JSON user record doesn't specify this explicitly
1045 (see above). The built-in default for the ambient set now contains
1046 the CAP_WAKE_ALARM, thus allowing regular users who may log in
1047 locally to resume from a system suspend via a timer.
1048
1049 * The Session D-Bus objects systemd-logind gained a new SetTTY() method
1050 call to update the TTY of a session after it has been allocated. This
1051 is useful for SSH sessions which are typically allocated first, and
1052 for which a TTY is added later.
1053
1054 * The sd-login API gained a new call sd_pid_notifyf_with_fds() which
1055 combines the various other sd_pid_notify() flavours into one: takes a
1056 format string, an overriding PID, and a set of file descriptors to
1057 send. It also gained a new call sd_pid_notify_barrier() call which is
1058 equivalent to sd_notify_barrier() but allows the originating PID to
1059 be specified.
1060
1061 * "loginctl list-users" and "loginctl list-sessions" will now show the
1062 state of each logged in user/session in their tabular output. It will
1063 also show the current idle state of sessions.
1064
1065 DDIs:
1066
1067 * systemd-dissect will now show the intended CPU architecture of an
1068 inspected DDI.
1069
1070 * systemd-dissect will now install itself as mount helper for the "ddi"
1071 pseudo-file system type. This means you may now mount DDIs directly
1072 via /bin/mount or /etc/fstab, making full use of embedded Verity
1073 information and all other DDI features.
1074
1075 Example: mount -t ddi myimage.raw /some/where
1076
1077 * The systemd-dissect tool gained the new switches --attach/--detach to
1078 attach/detach a DDI to a loopback block device without mounting it.
1079 It will automatically derive the right sector size from the image
1080 and set up Verity and similar, but not mount the file systems in it.
1081
1082 * When systemd-gpt-auto-generator or the DDI mounting logic mount an
1083 ESP or XBOOTLDR partition the MS_NOSYMFOLLOW mount option is now
1084 implied. Given that these file systems are typically untrusted, this
1085 should make mounting them automatically have less of a security
1086 impact.
1087
1088 * All tools that parse DDIs (such as systemd-nspawn, systemd-dissect,
1089 systemd-tmpfiles, …) now understand a new switch --image-policy= which
1090 takes a string encoding image dissection policy. With this mechanism
1091 automatic discovery and use of specific partition types and the
1092 cryptographic requirements on the partitions (Verity, LUKS, …) can be
1093 restricted, permitting better control of the exposed attack surfaces
1094 when mounting disk images. systemd-gpt-auto-generator will honour such
1095 an image policy too, configurable via the systemd.image_policy= kernel
1096 command line option. Unit files gained the RootImagePolicy=,
1097 MountImagePolicy= and ExtensionImagePolicy= to configure the same for
1098 disk images a service runs off.
1099
1100 * systemd-analyze gained a new verb "image-policy" to validate and
1101 parse image policy strings.
1102
1103 * systemd-dissect gained support for a new --validate switch to
1104 superficially validate DDI structure, and check whether a specific
1105 image policy allows the DDI.
1106
1107 * systemd-dissect gained support for a new --mtree-hash switch to
1108 optionally disable calculating mtree hashes, which can be slow on
1109 large images.
1110
1111 * systemd-dissect --copy-to, --copy-from, --list and --mtree switches
1112 are now able to operate on directories too, other than images.
1113
1114 Network Management:
1115
1116 * networkd's GENEVE support as gained a new .network option
1117 InheritInnerProtocol=.
1118
1119 * The [Tunnel] section in .netdev files has gained a new setting
1120 IgnoreDontFragment for controlling the IPv4 "DF" flag of datagrams.
1121
1122 * A new global IPv6PrivacyExtensions= setting has been added that
1123 selects the default value of the per-network setting of the same
1124 name.
1125
1126 * The predictable network interface naming logic was extended to
1127 include SR-IOV-R "representor" information in network interface
1128 names. Unfortunately, this feature was not enabled by default and can
1129 only be enabled at compilation time by setting
1130 -Ddefault-net-naming-scheme=v254.
1131
1132 * The DHCPv4 + DHCPv6 + IPv6 RA logic in networkd gained support for
1133 the RFC8910 captive portal option.
1134
1135 Device Management:
1136
1137 * udevadm gained the new "verify" verb for validating udev rules files
1138 offline.
1139
1140 * udev gained a new tool "iocost" that can be used to configure QoS IO
1141 cost data based on hwdb information onto suitable block devices. Also
1142 see https://github.com/iocost-benchmark/iocost-benchmarks.
1143
1144 TPM2 Support + Disk Encryption & Authentication:
1145
1146 * systemd-cryptenroll/systemd-cryptsetup will now install a TPM2 SRK
1147 ("Storage Root Key") as first step in the TPM2, and then use that
1148 for binding FDE to, if TPM2 support is used. This matches
1149 recommendations of TCG (see
1150 https://trustedcomputinggroup.org/wp-content/uploads/TCG-TPM-v2.0-Provisioning-Guidance-Published-v1r1.pdf)
1151
1152 * systemd-cryptenroll and other tools that take TPM2 PCR parameters now
1153 understand textual identifiers for these PCRs.
1154
1155 * systemd-veritysetup + /etc/veritytab gained support for a series of
1156 new options: hash-offset=, superblock=, format=, data-block-size=,
1157 hash-block-size=, data-blocks=, salt=, uuid=, hash=, fec-device=,
1158 fec-offset=, fec-roots= to configure various aspects of a Verity
1159 volume.
1160
1161 * systemd-cryptsetup + /etc/crypttab gained support for a new
1162 veracrypt-pim= option for setting the Personal Iteration Multiplier
1163 of veracrypt volumes.
1164
1165 * systemd-integritysetup + /etc/integritytab gained support for a new
1166 mode= setting for controlling the dm-integrity mode (journal, bitmap,
1167 direct) for the volume.
1168
1169 * systemd-analyze gained a new verb "pcrs" that shows the known TPM PCR
1170 registers, their symbolic names and current values.
1171
1172 systemd-tmpfiles:
1173
1174 * The ACL support in tmpfiles.d/ has been updated: if an uppercase "X"
1175 access right is specified this is equivalent to "x" but only if the
1176 inode in question already has the executable bit set for at least
1177 some user/group. Otherwise the "x" bit will be turned off.
1178
1179 * tmpfiles.d/'s C line type now understands a new modifier "+": a line
1180 with C+ will result in a "merge" copy, i.e. all files of the source
1181 tree are copied into the target tree, even if that tree already
1182 exists, resulting in a combined tree of files already present in the
1183 target tree and those copied in.
1184
1185 * systemd-tmpfiles gained a new --graceful switch. If specified lines
1186 with unknown users/groups will silently be skipped.
1187
1188 systemd-notify:
1189
1190 * systemd-notify gained two new options --fd= and --fdname= for sending
1191 arbitrary file descriptors to the service manager (while specifying an
1192 explicit name for it).
1193
1194 * systemd-notify gained a new --exec switch, which makes it execute the
1195 specified command line after sending the requested messages. This is
1196 useful for sending out READY=1 first, and then continuing invocation
1197 without changing process ID, so that the tool can be nicely used
1198 within an ExecStart= line of a unit file that uses Type=notify.
1199
1200 sd-event + sd-bus APIs:
1201
1202 * The sd-event API gained a new call sd_event_source_leave_ratelimit()
1203 which may be used to explicitly end a rate-limit state an event
1204 source might be in, resetting all rate limiting counters.
1205
1206 * When the sd-bus library is used to make connections to AF_UNIX D-Bus
1207 sockets, it will now encode the "description" set via
1208 sd_bus_set_description() into the source socket address. It will also
1209 look for this information when accepting a connection. This is useful
1210 to track individual D-Bus connections on a D-Bus broker for debug
1211 purposes.
1212
1213 systemd-resolved:
1214
1215 * systemd-resolved gained a new resolved.conf setting
1216 StateRetentionSec= which may be used to retain cached DNS records
1217 even after their nominal TTL, and use them in case upstream DNS
1218 servers cannot be reached. This can be used to make name resolution
1219 more resilient in case of network problems.
1220
1221 * resolvectl gained a new verb "show-cache" to show the current cache
1222 contents of systemd-resolved. This verb communicates with the
1223 systemd-resolved daemon and requires privileges.
1224
1225 Other:
1226
1227 * Meson >= 0.60.0 is now required to build systemd.
1228
1229 * The default keymap to apply may now be chosen at build-time via the
1230 new -Ddefault-keymap= meson option.
1231
1232 * Most of systemd's long-running services now have a generic handler of
1233 the SIGRTMIN+18 signal handler which executes various operations
1234 depending on the sigqueue() parameter sent along. For example, values
1235 0x100…0x107 allow changing the maximum log level of such
1236 services. 0x200…0x203 allow changing the log target of such
1237 services. 0x300 make the services trim their memory similarly to the
1238 automatic PSI-triggered action, see above. 0x301 make the services
1239 output their malloc_info() data to the logs.
1240
1241 * machinectl gained new "edit" and "cat" verbs for editing .nspawn
1242 files, inspired by systemctl's verbs of the same name which edit unit
1243 files. Similarly, networkctl gained the same verbs for editing
1244 .network, .netdev, .link files.
1245
1246 * A new syscall filter group "@sandbox" has been added that contains
1247 syscalls for sandboxing system calls such as those for seccomp and
1248 Landlock.
1249
1250 * New documentation has been added:
1251
1252 https://systemd.io/COREDUMP
1253 https://systemd.io/MEMORY_PRESSURE
1254 smbios-type-11(7)
1255
1256 * systemd-firstboot gained a new --reset option. If specified, the
1257 settings in /etc/ it knows how to initialize are reset.
1258
1259 * systemd-sysext is now a multi-call binary and is also installed under
1260 the systemd-confext alias name (via a symlink). When invoked that way
1261 it will operate on /etc/ instead of /usr/ + /opt/. It thus becomes a
1262 powerful, atomic, secure configuration management of sorts, that
1263 locally can merge configuration from multiple confext configuration
1264 images into a single immutable tree.
1265
1266 * The --network-macvlan=, --network-ipvlan=, --network-interface=
1267 switches of systemd-nspawn may now optionally take the intended
1268 network interface inside the container.
1269
1270 * All our programs will now send an sd_notify() message with their exit
1271 status in the EXIT_STATUS= field when exiting, using the usual
1272 protocol, including PID 1. This is useful for VMMs and container
1273 managers to collect an exit status from a system as it shuts down, as
1274 set via "systemctl exit …". This is particularly useful in test cases
1275 and similar, as invocations via a VM can now nicely propagate an exit
1276 status to the host, similar to local processes.
1277
1278 * systemd-run gained a new switch --expand-environment=no to disable
1279 server-side environment variable expansion in specified command
1280 lines. Expansion defaults to enabled for all execution types except
1281 --scope, where it defaults to off (and prints a warning) for backward
1282 compatibility reasons. --scope will be flipped to enabled by default
1283 too in a future release. If you are using --scope and passing a '$'
1284 character in the payload you should start explicitly using
1285 --expand-environment=yes/no according to the use case.
1286
1287 * The systemd-system-update-generator has been updated to also look for
1288 the special flag file /etc/system-update in addition to the existing
1289 support for /system-update to decide whether to enter system update
1290 mode.
1291
1292 * The /dev/hugepages/ file system is now mounted with nosuid + nodev
1293 mount options by default.
1294
1295 * systemd-fstab-generator now understands two new kernel command line
1296 options systemd.mount-extra= and systemd.swap-extra=, which configure
1297 additional mounts or swaps in a format similar to /etc/fstab. 'fsck'
1298 will be ran on these block devices, like it already happens for
1299 'root='. It also now supports the new fstab.extra and
1300 fstab.extra.initrd credentials that may contain additional /etc/fstab
1301 lines to apply at boot.
1302
1303 * systemd-getty-generator now understands two new credentials
1304 getty.ttys.container and getty.ttys.serial. These credentials may
1305 contain a list of TTY devices – one per line – to instantiate
1306 container-getty@.service and serial-getty@.service on.
1307
1308 * The getty/serial-getty/container-getty units now import the 'agetty.*'
1309 and 'login.*' credentials, which are consumed by the 'login' and
1310 'agetty' programs starting from util-linux v2.40.
1311
1312 * systemd-sysupdate's sysupdate.d/ drop-ins gained a new setting
1313 PathRelativeTo=, which can be set to "esp", "xbootldr", "boot", in
1314 which case the Path= setting is taken relative to the ESP or XBOOTLDR
1315 partitions, rather than the system's root directory /. The relevant
1316 directories are automatically discovered.
1317
1318 * The systemd-ac-power tool gained a new switch --low, which reports
1319 whether the battery charge is considered "low", similar to how the
1320 s2h suspend logic checks this state to decide whether to enter system
1321 suspend or hibernation.
1322
1323 * The /etc/os-release file can now have two new optional fields
1324 VENDOR_NAME= and VENDOR_URL= to carry information about the vendor of
1325 the OS.
1326
1327 * When the system hibernates, information about the device and offset
1328 used is now written to a non-volatile EFI variable. On next boot the
1329 system will attempt to resume from the location indicated in this EFI
1330 variable. This should make hibernation a lot more robust, while
1331 requiring no manual configuration of the resume location.
1332
1333 * The $XDG_STATE_HOME environment variable (added in more recent
1334 versions of the XDG basedir specification) is now honoured to
1335 implement the StateDirectory= setting in user services.
1336
1337 * A new component "systemd-battery-check" has been added. It may run
1338 during early boot (usually in the initrd), and checks the battery
1339 charge level of the system. In case the charge level is very low the
1340 user is notified (graphically via Plymouth – if available – as well
1341 as in text form on the console), and the system is turned off after a
1342 10s delay. The feature can be disabled by passing
1343 systemd.battery-check=0 through the kernel command line.
1344
1345 * The 'passwdqc' library is now supported as an alternative to the
1346 'pwquality' library and can be selected at build time.
1347
1348 Contributions from: 김인수, 07416, Addison Snelling, Adrian Vovk,
1349 Aidan Dang, Alexander Krabler, Alfred Klomp, Anatoli Babenia,
1350 Andrei Stepanov, Andrew Baxter, Antonio Alvarez Feijoo,
1351 Arian van Putten, Arthur Shau, A S Alam,
1352 Asier Sarasua Garmendia, Balló György, Bastien Nocera,
1353 Benjamin Herrenschmidt, Benjamin Raison, Bill Peterson,
1354 Brad Fitzpatrick, Brett Holman, bri, Chen Qi, Chitoku,
1355 Christian Hesse, Christoph Anton Mitterer, Christopher Gurnee,
1356 Colin Walters, Cornelius Hoffmann, Cristian Rodríguez, cunshunxia,
1357 cvlc12, Cyril Roelandt, Daan De Meyer, Daniele Medri,
1358 Daniel P. Berrangé, Daniel Rusek, Dan Streetman, David Edmundson,
1359 David Schroeder, David Tardon, dependabot[bot],
1360 Dimitri John Ledkov, Dmitrii Fomchenkov, Dmitry V. Levin, dmkUK,
1361 Dominique Martinet, don bright, drosdeck, Edson Juliano Drosdeck,
1362 Egor Ignatov, EinBaum, Emanuele Giuseppe Esposito, Eric Curtin,
1363 Erik Sjölund, Evgeny Vereshchagin, Florian Klink, Franck Bui,
1364 François Rigault, Fran Diéguez, Franklin Yu, Frantisek Sumsal,
1365 Fuminobu TAKEYAMA, Gaël PORTAY, Gerd Hoffmann, Gertalitec,
1366 Gibeom Gwon, Gustavo Noronha Silva, Hannu Lounento,
1367 Hans de Goede, Haochen Tong, HATAYAMA Daisuke, Henrik Holst,
1368 Hoe Hao Cheng, Igor Tsiglyar, Ivan Vecera, James Hilliard,
1369 Jan Engelhardt, Jan Janssen, Jan Luebbe, Jan Macku, Janne Sirén,
1370 jcg, Jeidnx, Joan Bruguera, Joerg Behrmann, jonathanmetzman,
1371 Jordan Rome, Josef Miegl, Joshua Goins, Joyce, Joyce Brum,
1372 Juno Computers, Kai Lueke, Kevin P. Fleming, Kiran Vemula, Klaus,
1373 Klaus Zipfel, Lawrence Thorpe, Lennart Poettering, licunlong,
1374 Lily Foster, Luca Boccassi, Ludwig Nussel, Luna Jernberg,
1375 maanyagoenka, Maanya Goenka, Maksim Kliazovich, Malte Poll,
1376 Marko Korhonen, Masatake YAMATO, Mateusz Poliwczak, Matt Johnston,
1377 Miao Wang, Micah Abbott, Michael A Cassaniti, Michal Koutný,
1378 Michal Sekletár, Mike Yuan, mooo, Morten Linderud, msizanoen,
1379 Nick Rosbrook, nikstur, Olivier Gayot, Omojola Joshua,
1380 Paolo Velati, Paul Barker, Pavel Borecki, Petr Menšík,
1381 Philipp Kern, Philip Withnall, Piotr Drąg, Quintin Hill,
1382 Rene Hollander, Richard Phibel, Robert Meijers, Robert Scheck,
1383 Roger Gammans, Romain Geissler, Ronan Pigott, Russell Harmon,
1384 saikat0511, Samanta Navarro, Sam James, Sam Morris,
1385 Simon Braunschmidt, Sjoerd Simons, Sorah Fukumori,
1386 Stanislaw Gruszka, Stefan Roesch, Steven Luo, Steve Ramage,
1387 Susant Sahani, taniishkaaa, Tanishka, Temuri Doghonadze,
1388 Thierry Martin, Thomas Blume, Thomas Genty, Thomas Weißschuh,
1389 Thorsten Kukuk, Times-Z, Tobias Powalowski, tofylion,
1390 Topi Miettinen, Uwe Kleine-König, Velislav Ivanov,
1391 Vitaly Kuznetsov, Vít Zikmund, Weblate, Will Fancher,
1392 William Roberts, Winterhuman, Wolfgang Müller, Xeonacid,
1393 Xiaotian Wu, Xi Ruoyao, Yuri Chornoivan, Yu Watanabe, Yuxiang Zhu,
1394 Zbigniew Jędrzejewski-Szmek, zhmylove, ZjYwMj,
1395 Дамјан Георгиевски, наб
1396
1397 — Edinburgh, 2023-07-28
1398
1399 CHANGES WITH 253:
1400
1401 Announcements of Future Feature Removals and Incompatible Changes:
1402
1403 * We intend to remove cgroup v1 support from systemd release after the
1404 end of 2023. If you run services that make explicit use of cgroup v1
1405 features (i.e. the "legacy hierarchy" with separate hierarchies for
1406 each controller), please implement compatibility with cgroup v2 (i.e.
1407 the "unified hierarchy") sooner rather than later. Most of Linux
1408 userspace has been ported over already.
1409
1410 * We intend to remove support for split-usr (/usr mounted separately
1411 during boot) and unmerged-usr (parallel directories /bin and
1412 /usr/bin, /lib and /usr/lib, etc). This will happen in the second
1413 half of 2023, in the first release that falls into that time window.
1414 For more details, see:
1415 https://lists.freedesktop.org/archives/systemd-devel/2022-September/048352.html
1416
1417 * We intend to change behaviour w.r.t. units of the per-user service
1418 manager and sandboxing options, so that they work without having to
1419 manually enable PrivateUsers= as well, which is not required for
1420 system units. To make this work, we will implicitly enable user
1421 namespaces (PrivateUsers=yes) when a sandboxing option is enabled in a
1422 user unit. The drawback is that system users will no longer be visible
1423 (and appear as 'nobody') to the user unit when a sandboxing option is
1424 enabled. By definition a sandboxed user unit should run with reduced
1425 privileges, so impact should be small. This will remove a great source
1426 of confusion that has been reported by users over the years, due to
1427 how these options require an extra setting to be manually enabled when
1428 used in the per-user service manager, as opposed as to the system
1429 service manager. We plan to enable this change in the next release
1430 later this year. For more details, see:
1431 https://lists.freedesktop.org/archives/systemd-devel/2022-December/048682.html
1432
1433 Deprecations and incompatible changes:
1434
1435 * systemctl will now warn when invoked without /proc/ mounted
1436 (e.g. when invoked after chroot() into an directory tree without the
1437 API mount points like /proc/ being set up.) Operation in such an
1438 environment is not fully supported.
1439
1440 * The return value of 'systemctl is-active|is-enabled|is-failed' for
1441 unknown units is changed: previously 1 or 3 were returned, but now 4
1442 (EXIT_PROGRAM_OR_SERVICES_STATUS_UNKNOWN) is used as documented.
1443
1444 * 'udevadm hwdb' subcommand is deprecated and will emit a warning.
1445 systemd-hwdb (added in 2014) should be used instead.
1446
1447 * 'bootctl --json' now outputs a single JSON array, instead of a stream
1448 of newline-separated JSON objects.
1449
1450 * Udev rules in 60-evdev.rules have been changed to load hwdb
1451 properties for all modalias patterns. Previously only the first
1452 matching pattern was used. This could change what properties are
1453 assigned if the user has more and less specific patterns that could
1454 match the same device, but it is expected that the change will have
1455 no effect for most users.
1456
1457 * systemd-networkd-wait-online exits successfully when all interfaces
1458 are ready or unmanaged. Previously, if neither '--any' nor
1459 '--interface=' options were used, at least one interface had to be in
1460 configured state. This change allows the case where systemd-networkd
1461 is enabled, but no interfaces are configured, to be handled
1462 gracefully. It may occur in particular when a different network
1463 manager is also enabled and used.
1464
1465 * Some compatibility helpers were dropped: EmergencyAction= in the user
1466 manager, as well as measuring kernel command line into PCR 8 in
1467 systemd-stub, along with the -Defi-tpm-pcr-compat compile-time
1468 option.
1469
1470 * The '-Dupdate-helper-user-timeout=' build-time option has been
1471 renamed to '-Dupdate-helper-user-timeout-sec=', and now takes an
1472 integer as parameter instead of a string.
1473
1474 * The DDI image dissection logic (which backs RootImage= in service
1475 unit files, the --image= switch in various tools such as
1476 systemd-nspawn, as well as systemd-dissect) will now only mount file
1477 systems of types btrfs, ext4, xfs, erofs, squashfs, vfat. This list
1478 can be overridden via the $SYSTEMD_DISSECT_FILE_SYSTEMS environment
1479 variable. These file systems are fairly well supported and maintained
1480 in current kernels, while others are usually more niche, exotic or
1481 legacy and thus typically do not receive the same level of security
1482 support and fixes.
1483
1484 * The default per-link multicast DNS mode is changed to "yes"
1485 (that was previously "no"). As the default global multicast DNS mode
1486 has been "yes" (but can be changed by the build option), now the
1487 multicast DNS is enabled on all links by default. You can disable the
1488 multicast DNS on all links by setting MulticastDNS= in resolved.conf,
1489 or on an interface by calling "resolvectl mdns INTERFACE no".
1490
1491 New components:
1492
1493 * A tool 'ukify' tool to build, measure, and sign Unified Kernel Images
1494 (UKIs) has been added. This replaces functionality provided by
1495 'dracut --uefi' and extends it with automatic calculation of PE file
1496 offsets, insertion of signed PCR policies generated by
1497 systemd-measure, support for initrd concatenation, signing of the
1498 embedded Linux image and the combined image with sbsign, and
1499 heuristics to autodetect the kernel uname and verify the splash
1500 image.
1501
1502 Changes in systemd and units:
1503
1504 * A new service type Type=notify-reload is defined. When such a unit is
1505 reloaded a UNIX process signal (typically SIGHUP) is sent to the main
1506 service process. The manager will then wait until it receives a
1507 "RELOADING=1" followed by a "READY=1" notification from the unit as
1508 response (via sd_notify()). Otherwise, this type is the same as
1509 Type=notify. A new setting ReloadSignal= may be used to change the
1510 signal to send from the default of SIGHUP.
1511
1512 user@.service, systemd-networkd.service, systemd-udevd.service, and
1513 systemd-logind have been updated to this type.
1514
1515 * Initrd environments which are not on a pure memory file system (e.g.
1516 overlayfs combination as opposed to tmpfs) are now supported. With
1517 this change, during the initrd → host transition ("switch root")
1518 systemd will erase all files of the initrd only when the initrd is
1519 backed by a memory file system such as tmpfs.
1520
1521 * New per-unit MemoryZSwapMax= option has been added to configure
1522 memory.zswap.max cgroup properties (the maximum amount of zswap
1523 used).
1524
1525 * A new LogFilterPatterns= option has been added for units. It may be
1526 used to specify accept/deny regular expressions for log messages
1527 generated by the unit, that shall be enforced by systemd-journald.
1528 Rejected messages are neither stored in the journal nor forwarded.
1529 This option may be used to suppress noisy or uninteresting messages
1530 from units.
1531
1532 * The manager has a new
1533 org.freedesktop.systemd1.Manager.GetUnitByPIDFD() D-Bus method to
1534 query process ownership via a PIDFD, which is more resilient against
1535 PID recycling issues.
1536
1537 * Scope units now support OOMPolicy=. Login session scopes default to
1538 OOMPolicy=continue, allowing login scopes to survive the OOM killer
1539 terminating some processes in the scope.
1540
1541 * systemd-fstab-generator now supports x-systemd.makefs option for
1542 /sysroot/ (in the initrd).
1543
1544 * The maximum rate at which daemon reloads are executed can now be
1545 limited with the new ReloadLimitIntervalSec=/ReloadLimitBurst=
1546 options. (Or the equivalent on the kernel command line:
1547 systemd.reload_limit_interval_sec=/systemd.reload_limit_burst=). In
1548 addition, systemd now logs the originating unit and PID when a reload
1549 request is received over D-Bus.
1550
1551 * When enabling a swap device systemd will now reinitialize the device
1552 when the page size of the swap space does not match the page size of
1553 the running kernel. Note that this requires the 'swapon' utility to
1554 provide the '--fixpgsz' option, as implemented by util-linux, and it
1555 is not supported by busybox at the time of writing.
1556
1557 * systemd now executes generator programs in a mount namespace
1558 "sandbox" with most of the file system read-only and write access
1559 restricted to the output directories, and with a temporary /tmp/
1560 mount provided. This provides a safeguard against programming errors
1561 in the generators, but also fixes here-docs in shells, which
1562 previously didn't work in early boot when /tmp/ wasn't available
1563 yet. (This feature has no security implications, because the code is
1564 still privileged and can trivially exit the sandbox.)
1565
1566 * The system manager will now parse a new "vmm.notify_socket"
1567 system credential, which may be supplied to a VM via SMBIOS. If
1568 found, the manager will send a "READY=1" notification on the
1569 specified socket after boot is complete. This allows readiness
1570 notification to be sent from a VM guest to the VM host over a VSOCK
1571 socket.
1572
1573 * The sample PAM configuration file for systemd-user@.service now
1574 includes a call to pam_namespace. This puts children of user@.service
1575 in the expected namespace. (Many distributions replace their file
1576 with something custom, so this change has limited effect.)
1577
1578 * A new environment variable $SYSTEMD_DEFAULT_MOUNT_RATE_LIMIT_BURST
1579 can be used to override the mount units burst late limit for
1580 parsing '/proc/self/mountinfo', which was introduced in v249.
1581 Defaults to 5.
1582
1583 * Drop-ins for init.scope changing control group resource limits are
1584 now applied, while they were previously ignored.
1585
1586 * New build-time configuration options '-Ddefault-timeout-sec=' and
1587 '-Ddefault-user-timeout-sec=' have been added, to let distributions
1588 choose the default timeout for starting/stopping/aborting system and
1589 user units respectively.
1590
1591 * Service units gained a new setting OpenFile= which may be used to
1592 open arbitrary files in the file system (or connect to arbitrary
1593 AF_UNIX sockets in the file system), and pass the open file
1594 descriptor to the invoked process via the usual file descriptor
1595 passing protocol. This is useful to give unprivileged services access
1596 to select files which have restrictive access modes that would
1597 normally not allow this. It's also useful in case RootDirectory= or
1598 RootImage= is used to allow access to files from the host environment
1599 (which is after all not visible from the service if these two options
1600 are used.)
1601
1602 Changes in udev:
1603
1604 * The new net naming scheme "v253" has been introduced. In the new
1605 scheme, ID_NET_NAME_PATH is also set for USB devices not connected via
1606 a PCI bus. This extends the coverage of predictable interface names
1607 in some embedded systems.
1608
1609 The "amba" bus path is now included in ID_NET_NAME_PATH, resulting in
1610 a more informative path on some embedded systems.
1611
1612 * Partition block devices will now also get symlinks in
1613 /dev/disk/by-diskseq/<seq>-part<n>, which may be used to reference
1614 block device nodes via the kernel's "diskseq" value. Previously those
1615 symlinks were only created for the main block device.
1616
1617 * A new operator '-=' is supported for SYMLINK variables. This allows
1618 symlinks to be unconfigured even if an earlier rule added them.
1619
1620 * 'udevadm --trigger --settle' now also works for network devices
1621 that are being renamed.
1622
1623 Changes in sd-boot, bootctl, and the Boot Loader Specification:
1624
1625 * systemd-boot now passes its random seed directly to the kernel's RNG
1626 via the LINUX_EFI_RANDOM_SEED_TABLE_GUID configuration table, which
1627 means the RNG gets seeded very early in boot before userspace has
1628 started.
1629
1630 * systemd-boot will pass a disk-backed random seed – even when secure
1631 boot is enabled – if it can additionally get a random seed from EFI
1632 itself (via EFI's RNG protocol), or a prior seed in
1633 LINUX_EFI_RANDOM_SEED_TABLE_GUID from a preceding bootloader.
1634
1635 * systemd-boot-system-token.service was renamed to
1636 systemd-boot-random-seed.service and extended to always save a random
1637 seed to ESP on every boot when a compatible boot loader is used. This
1638 allows a refreshed random seed to be used in the boot loader.
1639
1640 * systemd-boot handles various seed inputs using a domain- and
1641 field-separated hashing scheme.
1642
1643 * systemd-boot's 'random-seed-mode' option has been removed. A system
1644 token is now always required to be present for random seeds to be
1645 used.
1646
1647 * systemd-boot now supports being loaded from other locations than the
1648 ESP, for example for direct kernel boot under QEMU or when embedded
1649 into the firmware.
1650
1651 * systemd-boot now parses SMBIOS information to detect
1652 virtualization. This information is used to skip some warnings which
1653 are not useful in a VM and to conditionalize other aspects of
1654 behaviour.
1655
1656 * systemd-boot now supports a new 'if-safe' mode that will perform UEFI
1657 Secure Boot automated certificate enrollment from the ESP only if it
1658 is considered 'safe' to do so. At the moment 'safe' means running in
1659 a virtual machine.
1660
1661 * systemd-stub now processes random seeds in the same way as
1662 systemd-boot already does, in case a unified kernel image is being
1663 used from a different bootloader than systemd-boot, or without any
1664 boot load at all.
1665
1666 * bootctl will now generate a system token on all EFI systems, even
1667 virtualized ones, and is activated in the case that the system token
1668 is missing from either sd-boot and sd-stub booted systems.
1669
1670 * bootctl now implements two new verbs: 'kernel-identify' prints the
1671 type of a kernel image file, and 'kernel-inspect' provides
1672 information about the embedded command line and kernel version of
1673 UKIs.
1674
1675 * bootctl now honours $KERNEL_INSTALL_CONF_ROOT with the same meaning
1676 as for kernel-install.
1677
1678 * The JSON output of "bootctl list" will now contain two more fields:
1679 isDefault and isSelected are boolean fields set to true on the
1680 default and currently booted boot menu entries.
1681
1682 * bootctl gained a new verb "unlink" for removing a boot loader entry
1683 type #1 file from disk in a safe and robust way.
1684
1685 * bootctl also gained a new verb "cleanup" that automatically removes
1686 all files from the ESP's and XBOOTLDR's "entry-token" directory, that
1687 is not referenced anymore by any installed Type #1 boot loader
1688 specification entry. This is particularly useful in environments where
1689 a large number of entries reference the same or partly the same
1690 resources (for example, for snapshot-based setups).
1691
1692 Changes in kernel-install:
1693
1694 * A new "installation layout" can be configured as layout=uki. With
1695 this setting, a Boot Loader Specification Type#1 entry will not be
1696 created. Instead, a new kernel-install plugin 90-uki-copy.install
1697 will copy any .efi files from the staging area into the boot
1698 partition. A plugin to generate the UKI .efi file must be provided
1699 separately.
1700
1701 Changes in systemctl:
1702
1703 * 'systemctl reboot' has dropped support for accepting a positional
1704 argument as the argument to the reboot(2) syscall. Please use the
1705 --reboot-argument= option instead.
1706
1707 * 'systemctl disable' will now warn when called on units without
1708 install information. A new --no-warn option has been added that
1709 silences this warning.
1710
1711 * New option '--drop-in=' can be used to tell 'systemctl edit' the name
1712 of the drop-in to edit. (Previously, 'override.conf' was always
1713 used.)
1714
1715 * 'systemctl list-dependencies' now respects --type= and --state=.
1716
1717 * 'systemctl kexec' now supports XEN VMM environments.
1718
1719 * 'systemctl edit' will now tell the invoked editor to jump into the
1720 first line with actual unit file data, skipping over synthesized
1721 comments.
1722
1723 Changes in systemd-networkd and related tools:
1724
1725 * The [DHCPv4] section in .network file gained new SocketPriority=
1726 setting that assigns the Linux socket priority used by the DHCPv4 raw
1727 socket. This may be used in conjunction with the
1728 EgressQOSMaps=setting in [VLAN] section of .netdev file to send the
1729 desired ethernet 802.1Q frame priority for DHCPv4 initial
1730 packets. This cannot be achieved with netfilter mangle tables because
1731 of the raw socket bypass.
1732
1733 * The [DHCPv4] and [IPv6AcceptRA] sections in .network file gained a
1734 new QuickAck= boolean setting that enables the TCP quick ACK mode for
1735 the routes configured by the acquired DHCPv4 lease or received router
1736 advertisements (RAs).
1737
1738 * The RouteMetric= option (for DHCPv4, DHCPv6, and IPv6 advertised
1739 routes) now accepts three values, for high, medium, and low preference
1740 of the router (which can be set with the RouterPreference=) setting.
1741
1742 * systemd-networkd-wait-online now supports matching via alternative
1743 interface names.
1744
1745 * The [DHCPv6] section in .network file gained new SendRelease=
1746 setting which enables the DHCPv6 client to send release when
1747 it stops. This is the analog of the [DHCPv4] SendRelease= setting.
1748 It is enabled by default.
1749
1750 * If the Address= setting in [Network] or [Address] sections in .network
1751 specified without its prefix length, then now systemd-networkd assumes
1752 /32 for IPv4 or /128 for IPv6 addresses.
1753
1754 * networkctl shows network and link file dropins in status output.
1755
1756 Changes in systemd-dissect:
1757
1758 * systemd-dissect gained a new option --list, to print the paths of
1759 all files and directories in a DDI.
1760
1761 * systemd-dissect gained a new option --mtree, to generate a file
1762 manifest compatible with BSD mtree(5) of a DDI
1763
1764 * systemd-dissect gained a new option --with, to execute a command with
1765 the specified DDI temporarily mounted and used as working
1766 directory. This is for example useful to convert a DDI to "tar"
1767 simply by running it within a "systemd-dissect --with" invocation.
1768
1769 * systemd-dissect gained a new option --discover, to search for
1770 Discoverable Disk Images (DDIs) in well-known directories of the
1771 system. This will list machine, portable service and system extension
1772 disk images.
1773
1774 * systemd-dissect now understands 2nd stage initrd images stored as a
1775 Discoverable Disk Image (DDI).
1776
1777 * systemd-dissect will now display the main UUID of GPT DDIs (i.e. the
1778 disk UUID stored in the GPT header) among the other data it can show.
1779
1780 * systemd-dissect gained a new --in-memory switch to operate on an
1781 in-memory copy of the specified DDI file. This is useful to access a
1782 DDI with write access without persisting any changes. It's also
1783 useful for accessing a DDI without keeping the originating file
1784 system busy.
1785
1786 * The DDI dissection logic will now automatically detect the intended
1787 sector size of disk images stored in files, based on the GPT
1788 partition table arrangement. Loopback block devices for such DDIs
1789 will then be configured automatically for the right sector size. This
1790 is useful to make dealing with modern 4K sector size DDIs fully
1791 automatic. The systemd-dissect tool will now show the detected sector
1792 size among the other DDI information in its output.
1793
1794 Changes in systemd-repart:
1795
1796 * systemd-repart gained new options --include-partitions= and
1797 --exclude-partitions= to filter operation on partitions by type UUID.
1798 This allows systemd-repart to be used to build images in which the
1799 type of one partition is set based on the contents of another
1800 partition (for example when the boot partition shall include a verity
1801 hash of the root partition).
1802
1803 * systemd-repart also gained a --defer-partitions= option that is
1804 similar to --exclude-partitions=, but the size of the partition is
1805 still taken into account when sizing partitions, but without
1806 populating it.
1807
1808 * systemd-repart gained a new --sector-size= option to specify what
1809 sector size should be used when an image is created.
1810
1811 * systemd-repart now supports generating erofs file systems via
1812 CopyFiles= (a read-only file system similar to squashfs).
1813
1814 * The Minimize= option was extended to accept "best" (which means the
1815 most minimal image possible, but may require multiple attempts) and
1816 "guess" (which means a reasonably small image).
1817
1818 * The systemd-growfs binary now comes with a regular unit file template
1819 systemd-growfs@.service which can be instantiated directly for any
1820 desired file system. (Previously, the unit was generated dynamically
1821 by various generators, but no regular unit file template was
1822 available.)
1823
1824 Changes in journal tools:
1825
1826 * Various systemd tools will append extra fields to log messages when
1827 in debug mode, or when SYSTEMD_ENABLE_LOG_CONTEXT=1 is set. Currently
1828 this includes information about D-Bus messages when sd-bus is used,
1829 e.g. DBUS_SENDER=, DBUS_DESTINATION=, and DBUS_PATH=, and information
1830 about devices when sd-device is used, e.g. DEVNAME= and DRIVER=.
1831 Details of what is logged and when are subject to change.
1832
1833 * The systemd-journald-audit.socket can now be disabled via the usual
1834 "systemctl disable" mechanism to stop collection of audit
1835 messages. Please note that it is not enabled statically anymore and
1836 must be handled by the preset/enablement logic in package
1837 installation scripts.
1838
1839 * New options MaxUse=, KeepFree=, MaxFileSize=, and MaxFiles= can
1840 be used to curtail disk use by systemd-journal-remote. This is
1841 similar to the options supported by systemd-journald.
1842
1843 Changes in systemd-cryptenroll, systemd-cryptsetup, and related
1844 components:
1845
1846 * When enrolling new keys systemd-cryptenroll now supports unlocking
1847 via FIDO2 tokens (option --unlock-fido2-device=). Previously, a
1848 password was strictly required to be specified.
1849
1850 * systemd-cryptsetup now supports pre-flight requests for FIDO2 tokens
1851 (except for tokens with user verification, UV) to identify tokens
1852 before authentication. Multiple FIDO2 tokens can now be enrolled at
1853 the same time, and systemd-cryptsetup will automatically select one
1854 that corresponds to one of the available LUKS key slots.
1855
1856 * systemd-cryptsetup now supports new options tpm2-measure-bank= and
1857 tpm2-measure-pcr= in crypttab(5). These allow specifying the TPM2 PCR
1858 bank and number into which the volume key should be measured. This is
1859 automatically enabled for the encrypted root volume discovered and
1860 activated by systemd-gpt-auto-generator.
1861
1862 * systemd-gpt-auto-generator mounts the ESP and XBOOTLDR partitions with
1863 "noexec,nosuid,nodev".
1864
1865 * systemd-gpt-auto-generator will now honour the rootfstype= and
1866 rootflags= kernel command line switches for root file systems it
1867 discovers, to match behaviour in case an explicit root fs is
1868 specified via root=.
1869
1870 * systemd-pcrphase gained new options --machine-id and --file-system=
1871 to measure the machine-id and mount point information into PCR 15.
1872 New service unit files systemd-pcrmachine.service and
1873 systemd-pcrfs@.service have been added that invoke the tool with
1874 these switches during early boot.
1875
1876 * systemd-pcrphase gained a --graceful switch will make it exit cleanly
1877 with a success exit code even if no TPM device is detected.
1878
1879 * systemd-cryptenroll now stores the user-supplied PIN with a salt,
1880 making it harder to brute-force.
1881
1882 Changes in other tools:
1883
1884 * systemd-homed gained support for luksPbkdfForceIterations (the
1885 intended number of iterations for the PBKDF operation on LUKS).
1886
1887 * Environment variables $SYSTEMD_HOME_MKFS_OPTIONS_BTRFS,
1888 $SYSTEMD_HOME_MKFS_OPTIONS_EXT4, and $SYSTEMD_HOME_MKFS_OPTIONS_XFS
1889 may now be used to specify additional arguments for mkfs when
1890 systemd-homed formats a file system.
1891
1892 * systemd-hostnamed now exports the contents of
1893 /sys/class/dmi/id/bios_vendor and /sys/class/dmi/id/bios_date via two
1894 new D-Bus properties: FirmwareVendor and FirmwareDate. This allows
1895 unprivileged code to access those values.
1896
1897 systemd-hostnamed also exports the SUPPORT_END= field from
1898 os-release(5) as OperatingSystemSupportEnd. hostnamectl make uses of
1899 this to show the status of the installed system.
1900
1901 * systemd-measure gained an --append= option to sign multiple phase
1902 paths with different signing keys. This allows secrets to be
1903 accessible only in certain parts of the boot sequence. Note that
1904 'ukify' provides similar functionality in a more accessible form.
1905
1906 * systemd-timesyncd will now write a structured log message with
1907 MESSAGE_ID set to SD_MESSAGE_TIME_BUMP when it bumps the clock based
1908 on a on-disk timestamp, similarly to what it did when reaching
1909 synchronization via NTP.
1910
1911 * systemd-timesyncd will now update the on-disk timestamp file on each
1912 boot at least once, making it more likely that the system time
1913 increases in subsequent boots.
1914
1915 * systemd-vconsole-setup gained support for system/service credentials:
1916 vconsole.keymap/vconsole.keymap_toggle and
1917 vconsole.font/vconsole.font_map/vconsole.font_unimap are analogous
1918 the similarly-named options in vconsole.conf.
1919
1920 * systemd-localed will now save the XKB keyboard configuration to
1921 /etc/vconsole.conf, and also read it from there with a higher
1922 preference than the /etc/X11/xorg.conf.d/00-keyboard.conf config
1923 file. Previously, this information was stored in the former file in
1924 converted form, and only in latter file in the original form. Tools
1925 which want to access keyboard configuration can now do so from a
1926 standard location.
1927
1928 * systemd-resolved gained support for configuring the nameservers and
1929 search domains via kernel command line (nameserver=, domain=) and
1930 credentials (network.dns, network.search_domains).
1931
1932 * systemd-resolved will now synthesize host names for the DNS stub
1933 addresses it supports. Specifically when "_localdnsstub" is resolved,
1934 127.0.0.53 is returned, and if "_localdnsproxy" is resolved
1935 127.0.0.54 is returned.
1936
1937 * systemd-notify will now send a "RELOADING=1" notification when called
1938 with --reloading, and "STOPPING=1" when called with --stopping. This
1939 can be used to implement notifications from units where it's easier
1940 to call a program than to use the sd-daemon library.
1941
1942 * systemd-analyze's 'plot' command can now output its information in
1943 JSON, controlled via the --json= switch. Also, new --table, and
1944 --no-legend options have been added.
1945
1946 * 'machinectl enable' will now automatically enable machines.target
1947 unit in addition to adding the machine unit to the target.
1948
1949 Similarly, 'machinectl start|stop' gained a --now option to enable or
1950 disable the machine unit when starting or stopping it.
1951
1952 * systemd-sysusers will now create /etc/ if it is missing.
1953
1954 * systemd-sleep 'HibernateDelaySec=' setting is changed back to
1955 pre-v252's behaviour, and a new 'SuspendEstimationSec=' setting is
1956 added to provide the new initial value for the new automated battery
1957 estimation functionality. If 'HibernateDelaySec=' is set to any value,
1958 the automated estimate (and thus the automated hibernation on low
1959 battery to avoid data loss) functionality will be disabled.
1960
1961 * Default tmpfiles.d/ configuration will now automatically create
1962 credentials storage directory '/etc/credstore/' with the appropriate,
1963 secure permissions. If '/run/credstore/' exists, its permissions will
1964 be fixed too in case they are not correct.
1965
1966 Changes in libsystemd and shared code:
1967
1968 * sd-bus gained new convenience functions sd_bus_emit_signal_to(),
1969 sd_bus_emit_signal_tov(), and sd_bus_message_new_signal_to().
1970
1971 * sd-id128 functions now return -EUCLEAN (instead of -EIO) when the
1972 128-bit ID in files such as /etc/machine-id has an invalid
1973 format. They also accept NULL as output parameter in more places,
1974 which is useful when the caller only wants to validate the inputs and
1975 does not need the output value.
1976
1977 * sd-login gained new functions sd_pidfd_get_session(),
1978 sd_pidfd_get_owner_uid(), sd_pidfd_get_unit(),
1979 sd_pidfd_get_user_unit(), sd_pidfd_get_slice(),
1980 sd_pidfd_get_user_slice(), sd_pidfd_get_machine_name(), and
1981 sd_pidfd_get_cgroup(), that are analogous to sd_pid_get_*(),
1982 but accept a PIDFD instead of a PID.
1983
1984 * sd-path (and systemd-path) now export four new paths:
1985 SD_PATH_SYSTEMD_SYSTEM_ENVIRONMENT_GENERATOR,
1986 SD_PATH_SYSTEMD_USER_ENVIRONMENT_GENERATOR,
1987 SD_PATH_SYSTEMD_SEARCH_SYSTEM_ENVIRONMENT_GENERATOR, and
1988 SD_PATH_SYSTEMD_SEARCH_USER_ENVIRONMENT_GENERATOR,
1989
1990 * sd_notify() now supports AF_VSOCK as transport for notification
1991 messages (in addition to the existing AF_UNIX support). This is
1992 enabled if $NOTIFY_SOCKET is set in a "vsock:CID:port" format.
1993
1994 * Detection of chroot() environments now works if /proc/ is not
1995 mounted. This affects systemd-detect-virt --chroot, but also means
1996 that systemd tools will silently skip various operations in such an
1997 environment.
1998
1999 * "Lockheed Martin Hardened Security for Intel Processors" (HS SRE)
2000 virtualization is now detected.
2001
2002 Changes in the build system:
2003
2004 * Standalone variants of systemd-repart and systemd-shutdown may now be
2005 built (if -Dstandalone=true).
2006
2007 * systemd-ac-power has been moved from /usr/lib/ to /usr/bin/, to, for
2008 example, allow scripts to conditionalize execution on AC power
2009 supply.
2010
2011 * The libp11kit library is now loaded through dlopen(3).
2012
2013 Changes in the documentation:
2014
2015 * Specifications that are not closely tied to systemd have moved to
2016 https://uapi-group.org/specifications/: the Boot Loader Specification
2017 and the Discoverable Partitions Specification.
2018
2019 Contributions from: 김인수, 13r0ck, Aidan Dang, Alberto Planas,
2020 Alvin Šipraga, Andika Triwidada, AndyChi, angus-p, Anita Zhang,
2021 Antonio Alvarez Feijoo, Arsen Arsenović, asavah, Benjamin Fogle,
2022 Benjamin Tissoires, berenddeschouwer, BerndAdameit,
2023 Bernd Steinhauser, blutch112, cake03, Callum Farmer, Carlo Teubner,
2024 Charles Hardin, chris, Christian Brauner, Christian Göttsche,
2025 Cristian Rodríguez, Daan De Meyer, Dan Streetman, DaPigGuy,
2026 Darrell Kavanagh, David Tardon, dependabot[bot], Dirk Su,
2027 Dmitry V. Levin, drosdeck, Edson Juliano Drosdeck, edupont,
2028 Eric DeVolder, Erik Moqvist, Evgeny Vereshchagin, Fabian Gurtner,
2029 Felix Riemann, Franck Bui, Frantisek Sumsal, Geert Lorang,
2030 Gerd Hoffmann, Gio, Hannoskaj, Hans de Goede, Hugo Carvalho,
2031 igo95862, Ilya Leoshkevich, Ivan Shapovalov, Jacek Migacz,
2032 Jade Lovelace, Jan Engelhardt, Jan Janssen, Jan Macku, January,
2033 Jason A. Donenfeld, jcg, Jean-Tiare Le Bigot, Jelle van der Waa,
2034 Jeremy Linton, Jian Zhang, Jiayi Chen, Jia Zhang, Joerg Behrmann,
2035 Jörg Thalheim, Joshua Goins, joshuazivkovic, Joshua Zivkovic,
2036 Kai-Chuan Hsieh, Khem Raj, Koba Ko, Lennart Poettering, lichao,
2037 Li kunyu, Luca Boccassi, Luca BRUNO, Ludwig Nussel,
2038 Łukasz Stelmach, Lycowolf, marcel151, Marcus Schäfer, Marek Vasut,
2039 Mark Laws, Michael Biebl, Michał Kotyla, Michal Koutný,
2040 Michal Sekletár, Mike Gilbert, Mike Yuan, MkfsSion, ml,
2041 msizanoen1, mvzlb, MVZ Ludwigsburg, Neil Moore, Nick Rosbrook,
2042 noodlejetski, Pasha Vorobyev, Peter Cai, p-fpv, Phaedrus Leeds,
2043 Philipp Jungkamp, Quentin Deslandes, Raul Tambre, Ray Strode,
2044 reuben olinsky, Richard E. van der Luit, Richard Phibel,
2045 Ricky Tigg, Robin Humble, rogg, Rudi Heitbaum, Sam James,
2046 Samuel Cabrero, Samuel Thibault, Siddhesh Poyarekar, Simon Brand,
2047 Space Meyer, Spindle Security, Steve Ramage, Takashi Sakamoto,
2048 Thomas Haller, Tonći Galić, Topi Miettinen, Torsten Hilbrich,
2049 Tuetuopay, uerdogan, Ulrich Ölmann, Valentin David,
2050 Vitaly Kuznetsov, Vito Caputo, Waltibaba, Will Fancher,
2051 William Roberts, wouter bolsterlee, Youfu Zhang, Yu Watanabe,
2052 Zbigniew Jędrzejewski-Szmek, Дамјан Георгиевски,
2053 наб
2054
2055 — Warsaw, 2023-02-15
2056
2057 CHANGES WITH 252 🎃:
2058
2059 Announcements of Future Feature Removals:
2060
2061 * We intend to remove cgroup v1 support from systemd release after the
2062 end of 2023. If you run services that make explicit use of cgroup v1
2063 features (i.e. the "legacy hierarchy" with separate hierarchies for
2064 each controller), please implement compatibility with cgroup v2 (i.e.
2065 the "unified hierarchy") sooner rather than later. Most of Linux
2066 userspace has been ported over already.
2067
2068 * We intend to remove support for split-usr (/usr mounted separately
2069 during boot) and unmerged-usr (parallel directories /bin and
2070 /usr/bin, /lib and /usr/lib, etc). This will happen in the second
2071 half of 2023, in the first release that falls into that time window.
2072 For more details, see:
2073 https://lists.freedesktop.org/archives/systemd-devel/2022-September/048352.html
2074
2075 Compatibility Breaks:
2076
2077 * ConditionKernelVersion= checks that use the '=' or '!=' operators
2078 will now do simple string comparisons (instead of version comparisons
2079 à la stverscmp()). Version comparisons are still done for the
2080 ordering operators '<', '>', '<=', '>='. Moreover, if no operator is
2081 specified, a shell-style glob match is now done. This creates a minor
2082 incompatibility compared to older systemd versions when the '*', '?',
2083 '[', ']' characters are used, as these will now match as shell globs
2084 instead of literally. Given that kernel version strings typically do
2085 not include these characters we expect little breakage through this
2086 change.
2087
2088 * The service manager will now read the SELinux label used for SELinux
2089 access checks from the unit file at the time it loads the file.
2090 Previously, the label would be read at the moment of the access
2091 check, which was problematic since at that time the unit file might
2092 already have been updated or removed.
2093
2094 New Features:
2095
2096 * systemd-measure is a new tool for calculating and signing expected
2097 TPM2 PCR values for a given unified kernel image (UKI) booted via
2098 sd-stub. The public key used for the signature and the signed
2099 expected PCR information can be embedded inside the UKI. This
2100 information can be extracted from the UKI by external tools and code
2101 in the image itself and is made available to userspace in the booted
2102 kernel.
2103
2104 systemd-cryptsetup, systemd-cryptenroll, and systemd-creds have been
2105 updated to make use of this information if available in the booted
2106 kernel: when locking an encrypted volume/credential to the TPM
2107 systemd-cryptenroll/systemd-creds will use the public key to bind the
2108 volume/credential to any kernel that carries PCR information signed
2109 by the same key pair. When unlocking such volumes/credentials
2110 systemd-cryptsetup/systemd-creds will use the signature embedded in
2111 the booted UKI to gain access.
2112
2113 Binding TPM-based disk encryption to public keys/signatures of PCR
2114 values — instead of literal PCR values — addresses the inherent
2115 "brittleness" of traditional PCR-bound TPM disk encryption schemes:
2116 disks remain accessible even if the UKI is updated, without any TPM
2117 specific preparation during the OS update — as long as each UKI
2118 carries the necessary PCR signature information.
2119
2120 Net effect: if you boot a properly prepared kernel, TPM-bound disk
2121 encryption now defaults to be locked to kernels which carry PCR
2122 signatures from the same key pair. Example: if a hypothetical distro
2123 FooOS prepares its UKIs like this, TPM-based disk encryption is now –
2124 by default – bound to only FooOS kernels, and encrypted volumes bound
2125 to the TPM cannot be unlocked on kernels from other sources. (But do
2126 note this behaviour requires preparation/enabling in the UKI, and of
2127 course users can always enroll non-TPM ways to unlock the volume.)
2128
2129 * systemd-pcrphase is a new tool that is invoked at six places during
2130 system runtime, and measures additional words into TPM2 PCR 11, to
2131 mark milestones of the boot process. This allows binding access to
2132 specific TPM2-encrypted secrets to specific phases of the boot
2133 process. (Example: LUKS2 disk encryption key only accessible in the
2134 initrd, but not later.)
2135
2136 Changes in systemd itself, i.e. the manager and units
2137
2138 * The cpu controller is delegated to user manager units by default, and
2139 CPUWeight= settings are applied to the top-level user slice units
2140 (app.slice, background.slice, session.slice). This provides a degree
2141 of resource isolation between different user services competing for
2142 the CPU.
2143
2144 * Systemd can optionally do a full preset in the "first boot" condition
2145 (instead of just enable-only). This behaviour is controlled by the
2146 compile-time option -Dfirst-boot-full-preset. Right now it defaults
2147 to 'false', but the plan is to switch it to 'true' for the subsequent
2148 release.
2149
2150 * Drop-ins are now allowed for transient units too.
2151
2152 * Systemd will set the taint flag 'support-ended' if it detects that
2153 the OS image is past its end-of-support date. This date is declared
2154 in a new /etc/os-release field SUPPORT_END= described below.
2155
2156 * Two new settings ConditionCredential= and AssertCredential= can be
2157 used to skip or fail units if a certain system credential is not
2158 provided.
2159
2160 * ConditionMemory= accepts size suffixes (K, M, G, T, …).
2161
2162 * DefaultSmackProcessLabel= can be used in system.conf and user.conf to
2163 specify the SMACK security label to use when not specified in a unit
2164 file.
2165
2166 * DefaultDeviceTimeoutSec= can be used in system.conf and user.conf to
2167 specify the default timeout when waiting for device units to
2168 activate.
2169
2170 * C.UTF-8 is used as the default locale if nothing else has been
2171 configured.
2172
2173 * [Condition|Assert]Firmware= have been extended to support certain
2174 SMBIOS fields. For example
2175
2176 ConditionFirmware=smbios-field(board_name = "Custom Board")
2177
2178 conditionalizes the unit to run only when
2179 /sys/class/dmi/id/board_name contains "Custom Board" (without the
2180 quotes).
2181
2182 * ConditionFirstBoot= now correctly evaluates as true only during the
2183 boot phase of the first boot. A unit executed later, after booting
2184 has completed, will no longer evaluate this condition as true.
2185
2186 * Socket units will now create sockets in the SELinuxContext= of the
2187 associated service unit, if any.
2188
2189 * Boot phase transitions (start initrd → exit initrd → boot complete →
2190 shutdown) will be measured into TPM2 PCR 11, so that secrets can be
2191 bound to a specific runtime phase. E.g.: a LUKS encryption key can be
2192 unsealed only in the initrd.
2193
2194 * Service credentials (i.e. SetCredential=/LoadCredential=/…) will now
2195 also be provided to ExecStartPre= processes.
2196
2197 * Various units are now correctly ordered against
2198 initrd-switch-root.target where previously a conflict without
2199 ordering was configured. A stop job for those units would be queued,
2200 but without the ordering it could be executed only after
2201 initrd-switch-root.service, leading to units not being restarted in
2202 the host system as expected.
2203
2204 * In order to fully support the IPMI watchdog driver, which has not yet
2205 been ported to the new common watchdog device interface,
2206 /dev/watchdog0 will be tried first and systemd will silently fallback
2207 to /dev/watchdog if it is not found.
2208
2209 * New watchdog-related D-Bus properties are now published by systemd:
2210 WatchdogDevice, WatchdogLastPingTimestamp,
2211 WatchdogLastPingTimestampMonotonic.
2212
2213 * At shutdown, API virtual files systems (proc, sys, etc.) will be
2214 unmounted lazily.
2215
2216 * At shutdown, systemd will now log about processes blocking unmounting
2217 of file systems.
2218
2219 * A new meson build option 'clock-valid-range-usec-max' was added to
2220 allow disabling system time correction if RTC returns a timestamp far
2221 in the future.
2222
2223 * Propagated restart jobs will no longer be discarded while a unit is
2224 activating.
2225
2226 * PID 1 will now import system credentials from SMBIOS Type 11 fields
2227 ("OEM vendor strings"), in addition to qemu_fwcfg. This provides a
2228 simple, fast and generic path for supplying credentials to a VM,
2229 without involving external tools such as cloud-init/ignition.
2230
2231 * The CPUWeight= setting of unit files now accepts a new special value
2232 "idle", which configures "idle" level scheduling for the unit.
2233
2234 * Service processes that are activated due to a .timer or .path unit
2235 triggering will now receive information about this via environment
2236 variables. Note that this is information is lossy, as activation
2237 might be coalesced and only one of the activating triggers will be
2238 reported. This is hence more suited for debugging or tracing rather
2239 than for behaviour decisions.
2240
2241 * The riscv_flush_icache(2) system call has been added to the list of
2242 system calls allowed by default when SystemCallFilter= is used.
2243
2244 * The selinux context derived from the target executable, instead of
2245 'init_t' used for the manager itself, is now used when creating
2246 listening sockets for units that specify SELinuxContextFromNet=yes.
2247
2248 Changes in sd-boot, bootctl, and the Boot Loader Specification:
2249
2250 * The Boot Loader Specification has been cleaned up and clarified.
2251 Various corner cases in version string comparisons have been fixed
2252 (e.g. comparisons for empty strings). Boot counting is now part of
2253 the main specification.
2254
2255 * New PCRs measurements are performed during boot: PCR 11 for the
2256 kernel+initrd combo, PCR 13 for any sysext images. If a measurement
2257 took place this is now reported to userspace via the new
2258 StubPcrKernelImage and StubPcrInitRDSysExts EFI variables.
2259
2260 * As before, systemd-stub will measure kernel parameters and system
2261 credentials into PCR 12. It will now report this fact via the
2262 StubPcrKernelParameters EFI variable to userspace.
2263
2264 * The UEFI monotonic boot counter is now included in the updated random
2265 seed file maintained by sd-boot, providing some additional entropy.
2266
2267 * sd-stub will use LoadImage/StartImage to execute the kernel, instead
2268 of arranging the image manually and jumping to the kernel entry
2269 point. sd-stub also installs a temporary UEFI SecurityOverride to
2270 allow the (unsigned) nested image to be booted. This is safe because
2271 the outer (signed) stub+kernel binary must have been verified before
2272 the stub was executed.
2273
2274 * Booting in EFI mixed mode (a 64-bit kernel over 32-bit UEFI firmware)
2275 is now supported by sd-boot.
2276
2277 * bootctl gained a bunch of new options: --all-architectures to install
2278 binaries for all supported EFI architectures, --root= and --image=
2279 options to operate on a directory or disk image, and
2280 --install-source= to specify the source for binaries to install,
2281 --efi-boot-option-description= to control the name of the boot entry.
2282
2283 * The sd-boot stub exports a StubFeatures flag, which is used by
2284 bootctl to show features supported by the stub that was used to boot.
2285
2286 * The PE section offsets that are used by tools that assemble unified
2287 kernel images have historically been hard-coded. This may lead to
2288 overlapping PE sections which may break on boot. The UKI will now try
2289 to detect and warn about this.
2290
2291 Any tools that assemble UKIs must update to calculate these offsets
2292 dynamically. Future sd-stub versions may use offsets that will not
2293 work with the currently used set of hard-coded offsets!
2294
2295 * sd-stub now accepts (and passes to the initrd and then to the full
2296 OS) new PE sections '.pcrsig' and '.pcrkey' that can be used to embed
2297 signatures of expected PCR values, to allow sealing secrets via the
2298 TPM2 against pre-calculated PCR measurements.
2299
2300 Changes in the hardware database:
2301
2302 * 'systemd-hwdb query' now supports the --root= option.
2303
2304 Changes in systemctl:
2305
2306 * systemctl now supports --state= and --type= options for the 'show'
2307 and 'status' verbs.
2308
2309 * systemctl gained a new verb 'list-automounts' to list automount
2310 points.
2311
2312 * systemctl gained support for a new --image= switch to be able to
2313 operate on the specified disk image (similar to the existing --root=
2314 which operates relative to some directory).
2315
2316 Changes in systemd-networkd:
2317
2318 * networkd can set Linux NetLabel labels for integration with the
2319 network control in security modules via a new NetLabel= option.
2320
2321 * The RapidCommit= is (re-)introduced to enable faster configuration
2322 via DHCPv6 (RFC 3315).
2323
2324 * networkd gained a new option TCPCongestionControlAlgorithm= that
2325 allows setting a per-route TCP algorithm.
2326
2327 * networkd gained a new option KeepFileDescriptor= to allow keeping a
2328 reference (file descriptor) open on TUN/TAP interfaces, which is
2329 useful to avoid link flaps while the underlying service providing the
2330 interface is being serviced.
2331
2332 * RouteTable= now also accepts route table names.
2333
2334 Changes in systemd-nspawn:
2335
2336 * The --bind= and --overlay= options now support relative paths.
2337
2338 * The --bind= option now supports a 'rootidmap' value, which will
2339 use id-mapped mounts to map the root user inside the container to the
2340 owner of the mounted directory on the host.
2341
2342 Changes in systemd-resolved:
2343
2344 * systemd-resolved now persists DNSOverTLS in its state file too. This
2345 fixes a problem when used in combination with NetworkManager, which
2346 sends the setting only once, causing it to be lost if resolved was
2347 restarted at any point.
2348
2349 * systemd-resolved now exposes a Varlink socket at
2350 /run/systemd/resolve/io.systemd.Resolve.Monitor, accessible only for
2351 root. Processed DNS requests in a JSON format will be published to
2352 any clients connected to this socket.
2353
2354 resolvectl gained a 'monitor' verb to make use of this.
2355
2356 * systemd-resolved now treats unsupported DNSSEC algorithms as INSECURE
2357 instead of returning SERVFAIL, as per RFC:
2358 https://datatracker.ietf.org/doc/html/rfc6840#section-5.2
2359
2360 * OpenSSL is the default crypto backend for systemd-resolved. (gnutls
2361 is still supported.)
2362
2363 Changes in libsystemd and other libraries:
2364
2365 * libsystemd now exports sd_bus_error_setfv() (a convenience function
2366 for setting bus errors), sd_id128_string_equal (a convenience
2367 function for 128-bit ID string comparisons), and
2368 sd_bus_message_read_strv_extend() (a function to incrementally read
2369 string arrays).
2370
2371 * libsystemd now exports sd_device_get_child_first()/_next() as a
2372 high-level interface for enumerating child devices. It also supports
2373 sd_device_new_child() for opening a child device given a device
2374 object.
2375
2376 * libsystemd now exports sd_device_monitor_set()/get_description()
2377 which allow setting a custom description that will be used in log
2378 messages by sd_device_monitor*.
2379
2380 * Private shared libraries (libsystemd-shared-nnn.so,
2381 libsystemd-core-nnn.so) are now installed into arch-specific
2382 directories to allow multi-arch installs.
2383
2384 * A new sd-gpt.h header is now published, listing GUIDs from the
2385 Discoverable Partitions specification. For more details see:
2386 https://systemd.io/DISCOVERABLE_PARTITIONS/
2387
2388 * A new function sd_hwdb_new_from_path() has been added to open a hwdb
2389 database given an explicit path to the file.
2390
2391 * The signal number argument to sd_event_add_signal() now can now be
2392 ORed with the SD_EVENT_SIGNAL_PROCMASK flag, causing sigprocmask() to
2393 be automatically invoked to block the specified signal. This is
2394 useful to simplify invocations as the caller doesn't have to do this
2395 manually.
2396
2397 * A new convenience call sd_event_set_signal_exit() has been added to
2398 sd-event to set up signal handling so that the event loop
2399 automatically terminates cleanly on SIGTERM/SIGINT.
2400
2401 Changes in other components:
2402
2403 * systemd-sysusers, systemd-tmpfiles, and systemd-sysctl configuration
2404 can now be provided via the credential mechanism.
2405
2406 * systemd-analyze gained a new verb 'compare-versions' that implements
2407 comparisons for versions strings (similarly to 'rpmdev-vercmp' and
2408 'dpkg --compare-versions').
2409
2410 * 'systemd-analyze dump' is extended to accept glob patterns for unit
2411 names to limit the output to matching units.
2412
2413 * tmpfiles.d/ lines can read file contents to write from a credential.
2414 The new modifier char '^' is used to specify that the argument is a
2415 credential name. This mechanism is used to automatically populate
2416 /etc/motd, /etc/issue, and /etc/hosts from credentials.
2417
2418 * tmpfiles.d/ may now be configured to avoid changing uid/gid/mode of
2419 an inode if the specification is prefixed with ':' and the inode
2420 already exists.
2421
2422 * Default tmpfiles.d/ configuration now carries a line to automatically
2423 use an 'ssh.authorized_keys.root' credential if provided to set up
2424 the SSH authorized_keys file for the root user.
2425
2426 * systemd-tmpfiles will now gracefully handle absent source of "C" copy
2427 lines.
2428
2429 * tmpfiles.d/ F/w lines now optionally permit encoding of the payload
2430 in base64. This is useful to write arbitrary binary data into files.
2431
2432 * The pkgconfig and rpm macros files now export the directory for user
2433 units as 'user_tmpfiles_dir' and '%_user_tmpfilesdir'.
2434
2435 * Detection of Apple Virtualization and detection of Parallels and
2436 KubeVirt virtualization on non-x86 archs have been added.
2437
2438 * os-release gained a new field SUPPORT_END=YYYY-MM-DD to inform the
2439 user when their system will become unsupported.
2440
2441 * When performing suspend-then-hibernate, the system will estimate the
2442 discharge rate and use that to set the delay until hibernation and
2443 hibernate immediately instead of suspending when running from a
2444 battery and the capacity is below 5%.
2445
2446 * systemd-sysctl gained a --strict option to fail when a sysctl
2447 setting is unknown to the kernel.
2448
2449 * machinectl supports --force for the 'copy-to' and 'copy-from'
2450 verbs.
2451
2452 * coredumpctl gained the --root and --image options to look for journal
2453 files under the specified root directory, image, or block device.
2454
2455 * 'journalctl -o' and similar commands now implement a new output mode
2456 "short-delta". It is similar to "short-monotonic", but also shows the
2457 time delta between subsequent messages.
2458
2459 * journalctl now respects the --quiet flag when verifying consistency
2460 of journal files.
2461
2462 * Journal log messages gained a new implicit field _RUNTIME_SCOPE= that
2463 will indicate whether a message was logged in the 'initrd' phase or
2464 in the 'system' phase of the boot process.
2465
2466 * Journal files gained a new compatibility flag
2467 'HEADER_INCOMPATIBLE_COMPACT'. Files with this flag implement changes
2468 to the storage format that allow reducing size on disk. As with other
2469 compatibility flags, older journalctl versions will not be able to
2470 read journal files using this new format. The environment variable
2471 'SYSTEMD_JOURNAL_COMPACT=0' can be passed to systemd-journald to
2472 disable this functionality. It is enabled by default.
2473
2474 * systemd-run's --working-directory= switch now works when used in
2475 combination with --scope.
2476
2477 * portablectl gained a --force flag to skip certain sanity checks. This
2478 is implemented using new flags accepted by systemd-portabled for the
2479 *WithExtensions() D-Bus methods: SD_SYSTEMD_PORTABLE_FORCE_ATTACH
2480 flag now means that the attach/detach checks whether the units are
2481 already present and running will be skipped. Similarly,
2482 SD_SYSTEMD_PORTABLE_FORCE_SYSEXT flag means that the check whether
2483 image name matches the name declared inside of the image will be
2484 skipped. Callers must be sure to do those checks themselves if
2485 appropriate.
2486
2487 * systemd-portabled will now use the original filename to check
2488 extension-release.NAME for correctness, in case it is passed a
2489 symlink.
2490
2491 * systemd-portabled now uses PrivateTmp=yes in the 'trusted' profile
2492 too.
2493
2494 * sysext's extension-release files now support '_any' as a special
2495 value for the ID= field, to allow distribution-independent extensions
2496 (e.g.: fully statically compiled binaries, scripts). It also gained
2497 support for a new ARCHITECTURE= field that may be used to explicitly
2498 restrict an image to hosts of a specific architecture.
2499
2500 * systemd-repart now supports creating squashfs partitions. This
2501 requires mksquashfs from squashfs-tools.
2502
2503 * systemd-repart gained a --split flag to also generate split
2504 artifacts, i.e. a separate file for each partition. This is useful in
2505 conjunction with systemd-sysupdate or other tools, or to generate
2506 split dm-verity artifacts.
2507
2508 * systemd-repart is now able to generate dm-verity partitions, including
2509 signatures.
2510
2511 * systemd-repart can now set a partition UUID to zero, allowing it to
2512 be filled in later, such as when using verity partitions.
2513
2514 * systemd-repart now supports drop-ins for its configuration files.
2515
2516 * Package metadata logged by systemd-coredump in the system journal is
2517 now more compact.
2518
2519 * xdg-autostart-service now expands 'tilde' characters in Exec lines.
2520
2521 * systemd-oomd now automatically links against libatomic, if available.
2522
2523 * systemd-oomd now sends out a 'Killed' D-Bus signal when a cgroup is
2524 killed.
2525
2526 * scope units now also provide oom-kill status.
2527
2528 * systemd-pstore will now try to load only the efi_pstore kernel module
2529 before running, ensuring that pstore can be used.
2530
2531 * systemd-logind gained a new StopIdleSessionSec= option to stop an idle
2532 session after a preconfigure timeout.
2533
2534 * systemd-homed will now wait up to 30 seconds for workers to terminate,
2535 rather than indefinitely.
2536
2537 * homectl gained a new '--luks-sector-size=' flag that allows users to
2538 select the preferred LUKS sector size. Must be a power of 2 between 512
2539 and 4096. systemd-userdbd records gained a corresponding field.
2540
2541 * systemd-sysusers will now respect the 'SOURCE_DATE_EPOCH' environment
2542 variable when generating the 'sp_lstchg' field, to ensure an image
2543 build can be reproducible.
2544
2545 * 'udevadm wait' will now listen to kernel uevents too when called with
2546 --initialized=no.
2547
2548 * When naming network devices udev will now consult the Devicetree
2549 "alias" fields for the device.
2550
2551 * systemd-udev will now create infiniband/by-path and
2552 infiniband/by-ibdev links for Infiniband verbs devices.
2553
2554 * systemd-udev-trigger.service will now also prioritize input devices.
2555
2556 * ConditionACPower= and systemd-ac-power will now assume the system is
2557 running on AC power if no battery can be found.
2558
2559 * All features and tools using the TPM2 will now communicate with it
2560 using a bind key. Beforehand, the tpm2 support used encrypted sessions
2561 by creating a primary key that was used to encrypt traffic. This
2562 creates a problem as the key created for encrypting the traffic could
2563 be faked by an active interposer on the bus. In cases when a pin is
2564 used, a bind key will be used. The pin is used as the auth value for
2565 the seal key, aka the disk encryption key, and that auth value will be
2566 used in the session establishment. An attacker would need the pin
2567 value to create the secure session and thus an active interposer
2568 without the pin cannot interpose on TPM2 traffic.
2569
2570 * systemd-growfs no longer requires udev to run.
2571
2572 * systemd-backlight now will better support systems with multiple
2573 graphic cards.
2574
2575 * systemd-cryptsetup's keyfile-timeout= option now also works when a
2576 device is used as a keyfile.
2577
2578 * systemd-cryptenroll gained a new --unlock-key-file= option to get the
2579 unlocking key from a key file (instead of prompting the user). Note
2580 that this is the key for unlocking the volume in order to be able to
2581 enroll a new key, but it is not the key that is enrolled.
2582
2583 * systemd-dissect gained a new --umount switch that will safely and
2584 synchronously unmount all partitions of an image previously mounted
2585 with 'systemd-dissect --mount'.
2586
2587 * When using gcrypt, all systemd tools and services will now configure
2588 it to prefer the OS random number generator if present.
2589
2590 * All example code shipped with documentation has been relicensed from CC0
2591 to MIT-0.
2592
2593 * Unit tests will no longer fail when running on a system without
2594 /etc/machine-id.
2595
2596 Experimental features:
2597
2598 * BPF programs can now be compiled with bpf-gcc (requires libbpf >= 1.0
2599 and bpftool >= 7.0).
2600
2601 * sd-boot can automatically enroll SecureBoot keys from files found on
2602 the ESP. This enrollment can be either automatic ('force' mode) or
2603 controlled by the user ('manual' mode). It is sufficient to place the
2604 SecureBoot keys in the right place in the ESP and they will be picked
2605 up by sd-boot and shown in the boot menu.
2606
2607 * The mkosi config in systemd gained support for automatically
2608 compiling a kernel with the configuration appropriate for testing
2609 systemd. This may be useful when developing or testing systemd in
2610 tandem with the kernel.
2611
2612 Contributions from: 김인수, Adam Williamson, adrian5, Aidan Dang,
2613 Akihiko Odaki, Alban Bedel, Albert Mikaelyan, Aleksey Vasenev,
2614 Alexander Graf, Alexander Shopov, Alexander Wilson,
2615 Alper Nebi Yasak, anarcat, Anders Jonsson, Andre Kalb,
2616 Andrew Stone, Andrey Albershteyn, Anita Zhang, Ansgar Burchardt,
2617 Antonio Alvarez Feijoo, Arnaud Ferraris, Aryan singh, asavah,
2618 Avamander, Avram Lubkin, Balázs Meskó, Bastien Nocera,
2619 Benjamin Franzke, BerndAdameit, bin456789, Celeste Liu,
2620 Chih-Hsuan Yen, Christian Brauner, Christian Göttsche,
2621 Christian Hesse, Clyde Byrd III, codefiles, Colin Walters,
2622 Cristian Rodríguez, Daan De Meyer, Daniel Braunwarth,
2623 Daniel Rusek, Dan Streetman, Darsey Litzenberger, David Edmundson,
2624 David Jaša, David Rheinsberg, David Seifert, David Tardon,
2625 dependabot[bot], Devendra Tewari, Dominique Martinet, drosdeck,
2626 Edson Juliano Drosdeck, Eduard Tolosa, eggfly, Einsler Lee,
2627 Elias Probst, Eli Schwartz, Evgeny Vereshchagin, exploide, Fei Li,
2628 Foster Snowhill, Franck Bui, Frank Dana, Frantisek Sumsal,
2629 Gerd Hoffmann, Gio, Goffredo Baroncelli, gtwang01,
2630 Guillaume W. Bres, H A, Hans de Goede, Heinrich Schuchardt,
2631 Hugo Carvalho, i-do-cpp, igo95862, j00512545, Jacek Migacz,
2632 Jade Bilkey, James Hilliard, Jan B, Janis Goldschmidt,
2633 Jan Janssen, Jan Kuparinen, Jan Luebbe, Jan Macku,
2634 Jason A. Donenfeld, Javkhlanbayar Khongorzul, Jeremy Soller,
2635 JeroenHD, jiangchuangang, João Loureiro,
2636 Joaquín Ignacio Aramendía, Jochen Sprickerhof,
2637 Johannes Schauer Marin Rodrigues, Jonas Kümmerlin,
2638 Jonas Witschel, Jonathan Kang, Jonathan Lebon, Joost Heitbrink,
2639 Jörg Thalheim, josh-gordon-fb, Joyce, Kai Lueke, lastkrick,
2640 Lennart Poettering, Leon M. George, licunlong, Li kunyu,
2641 LockBlock-dev, Loïc Collignon, Lubomir Rintel, Luca Boccassi,
2642 Luca BRUNO, Ludwig Nussel, Łukasz Stelmach, Maccraft123,
2643 Marc Kleine-Budde, Marius Vollmer, Martin Wilck, matoro,
2644 Matthias Lisin, Max Gautier, Maxim Mikityanskiy, Michael Biebl,
2645 Michal Koutný, Michal Sekletár, Michal Stanke, Mike Gilbert,
2646 Mitchell Freiderich, msizanoen1, Nick Rosbrook, nl6720, Oğuz Ersen,
2647 Oleg Solovyov, Olga Smirnova, Pablo Ceballos, Pavel Zhukov,
2648 Phaedrus Leeds, Philipp Gortan, Piotr Drąg, Pyfisch,
2649 Quentin Deslandes, Rahil Bhimjiani, Rene Hollander, Richard Huang,
2650 Richard Phibel, Rudi Heitbaum, Sam James, Sarah Brofeldt,
2651 Sean Anderson, Sebastian Scheibner, Shreenidhi Shedi,
2652 Sonali Srivastava, Steve Ramage, Suraj Krishnan, Swapnil Devesh,
2653 Takashi Sakamoto, Ted X. Toth, Temuri Doghonadze, Thomas Blume,
2654 Thomas Haller, Thomas Hebb, Tomáš Hnyk, Tomasz Paweł Gajc,
2655 Topi Miettinen, Ulrich Ölmann, undef, Uriel Corfa,
2656 Victor Westerhuis, Vincent Dagonneau, Vishal Chillara Srinivas,
2657 Vito Caputo, Weblate, Wenchao Hao, William Roberts, williamsumendap,
2658 wineway, xiaoyang, Yuri Chornoivan, Yu Watanabe,
2659 Zbigniew Jędrzejewski-Szmek, Zhaofeng Li, наб
2660
2661 – The Great Beyond, 2022-10-31 👻
2662
2663 CHANGES WITH 251:
2664
2665 Backwards-incompatible changes:
2666
2667 * The minimum kernel version required has been bumped from 3.13 to 4.15,
2668 and CLOCK_BOOTTIME is now assumed to always exist.
2669
2670 * C11 with GNU extensions (aka "gnu11") is now used to build our
2671 components. Public API headers are still restricted to ISO C89.
2672
2673 * In v250, a systemd-networkd feature that automatically configures
2674 routes to addresses specified in AllowedIPs= was added and enabled by
2675 default. However, this causes network connectivity issues in many
2676 existing setups. Hence, it has been disabled by default since
2677 systemd-stable 250.3. The feature can still be used by explicitly
2678 configuring RouteTable= setting in .netdev files.
2679
2680 * Jobs started via StartUnitWithFlags() will no longer return 'skipped'
2681 when a Condition*= check does not succeed, restoring the JobRemoved
2682 signal to the behaviour it had before v250.
2683
2684 * The org.freedesktop.portable1 methods GetMetadataWithExtensions() and
2685 GetImageMetadataWithExtensions() have been fixed to provide an extra
2686 return parameter, containing the actual extension release metadata.
2687 The current implementation was judged to be broken and unusable, and
2688 thus the usual procedure of adding a new set of methods was skipped,
2689 and backward compatibility broken instead on the assumption that
2690 nobody can be affected given the current state of this interface.
2691
2692 * All kernels supported by systemd mix bytes returned by RDRAND (or
2693 similar) into the entropy pool at early boot. This means that on
2694 those systems, even if /dev/urandom is not yet initialized, it still
2695 returns bytes that are of at least RDRAND quality. For that reason,
2696 we no longer have reason to invoke RDRAND from systemd itself, which
2697 has historically been a source of bugs. Furthermore, kernels ≥5.6
2698 provide the getrandom(GRND_INSECURE) interface for returning random
2699 bytes before the entropy pool is initialized without warning into
2700 kmsg, which is what we attempt to use if available. systemd's direct
2701 usage of RDRAND has been removed. x86 systems ≥Broadwell that are
2702 running an older kernel may experience kmsg warnings that were not
2703 seen with 250. For newer kernels, non-x86 systems, or older x86
2704 systems, there should be no visible changes.
2705
2706 * sd-boot will now measure the kernel command line into TPM PCR 12
2707 rather than PCR 8. This improves usefulness of the measurements on
2708 systems where sd-boot is chainloaded from Grub. Grub measures all
2709 commands its executes into PCR 8, which makes it very hard to use
2710 reasonably, hence separate ourselves from that and use PCR 12
2711 instead, which is what certain Ubuntu editions already do. To retain
2712 compatibility with systems running older systemd systems a new meson
2713 option 'efi-tpm-pcr-compat' has been added (which defaults to false).
2714 If enabled, the measurement is done twice: into the new-style PCR 12
2715 *and* the old-style PCR 8. It's strongly advised to migrate all users
2716 to PCR 12 for this purpose in the long run, as we intend to remove
2717 this compatibility feature in two years' time.
2718
2719 * busctl capture now writes output in the newer pcapng format instead
2720 of pcap.
2721
2722 * A udev rule that imported hwdb matches for USB devices with lowercase
2723 hexadecimal vendor/product ID digits was added in systemd 250. This
2724 has been reverted, since uppercase hexadecimal digits are supposed to
2725 be used, and we already had a rule with the appropriate match.
2726
2727 Users might need to adjust their local hwdb entries.
2728
2729 * arch_prctl(2) has been moved to the @default set in the syscall filters
2730 (as exposed via the SystemCallFilter= setting in service unit files).
2731 It is apparently used by the linker now.
2732
2733 * The tmpfiles entries that create the /run/systemd/netif directory and
2734 its subdirectories were moved from tmpfiles.d/systemd.conf to
2735 tmpfiles.d/systemd-network.conf.
2736
2737 Users might need to adjust their files that override tmpfiles.d/systemd.conf
2738 to account for this change.
2739
2740 * The requirement for Portable Services images to contain a well-formed
2741 os-release file (i.e.: contain at least an ID field) is now enforced.
2742 This applies to base images and extensions, and also to systemd-sysext.
2743
2744 Changes in the Boot Loader Specification, kernel-install and sd-boot:
2745
2746 * kernel-install's and bootctl's Boot Loader Specification Type #1
2747 entry generation logic has been reworked. The user may now pick
2748 explicitly by which "token" string to name the installation's boot
2749 entries, via the new /etc/kernel/entry-token file or the new
2750 --entry-token= switch to bootctl. By default — as before — the
2751 entries are named after the local machine ID. However, in "golden
2752 image" environments, where the machine ID shall be initialized on
2753 first boot (as opposed to at installation time before first boot) the
2754 machine ID will not be available at build time. In this case the
2755 --entry-token= switch to bootctl (or the /etc/kernel/entry-token
2756 file) may be used to override the "token" for the entries, for
2757 example the IMAGE_ID= or ID= fields from /etc/os-release. This will
2758 make the OS images independent of any machine ID, and ensure that the
2759 images will not carry any identifiable information before first boot,
2760 but on the other hand means that multiple parallel installations of
2761 the very same image on the same disk cannot be supported.
2762
2763 Summary: if you are building golden images that shall acquire
2764 identity information exclusively on first boot, make sure to both
2765 remove /etc/machine-id *and* to write /etc/kernel/entry-token to the
2766 value of the IMAGE_ID= or ID= field of /etc/os-release or another
2767 suitable identifier before deploying the image.
2768
2769 * The Boot Loader Specification has been extended with
2770 /loader/entries.srel file located in the EFI System Partition (ESP)
2771 that disambiguates the format of the entries in the /loader/entries/
2772 directory (in order to discern them from incompatible uses of this
2773 directory by other projects). For entries that follow the
2774 Specification, the string "type1" is stored in this file.
2775
2776 bootctl will now write this file automatically when installing the
2777 systemd-boot boot loader.
2778
2779 * kernel-install supports a new initrd_generator= setting in
2780 /etc/kernel/install.conf, that is exported as
2781 $KERNEL_INSTALL_INITRD_GENERATOR to kernel-install plugins. This
2782 allows choosing different initrd generators.
2783
2784 * kernel-install will now create a "staging area" (an initially-empty
2785 directory to gather files for a Boot Loader Specification Type #1
2786 entry). The path to this directory is exported as
2787 $KERNEL_INSTALL_STAGING_AREA to kernel-install plugins, which should
2788 drop files there instead of writing them directly to the final
2789 location. kernel-install will move them when all files have been
2790 prepared successfully.
2791
2792 * New option sort-key= has been added to the Boot Loader Specification
2793 to override the sorting order of the entries in the boot menu. It is
2794 read by sd-boot and bootctl, and will be written by kernel-install,
2795 with the default value of IMAGE_ID= or ID= fields from
2796 os-release. Together, this means that on multiboot installations,
2797 entries should be grouped and sorted in a predictable way.
2798
2799 * The sort order of boot entries has been updated: entries which have
2800 the new field sort-key= are sorted by it first, and all entries
2801 without it are ordered later. After that, entries are sorted by
2802 version so that newest entries are towards the beginning of the list.
2803
2804 * The kernel-install tool gained a new 'inspect' verb which shows the
2805 paths and other settings used.
2806
2807 * sd-boot can now optionally beep when the menu is shown and menu
2808 entries are selected, which can be useful on machines without a
2809 working display. (Controllable via a loader.conf setting.)
2810
2811 * The --make-machine-id-directory= switch to bootctl has been replaced
2812 by --make-entry-directory=, given that the entry directory is not
2813 necessarily named after the machine ID, but after some other suitable
2814 ID as selected via --entry-token= described above. The old name of
2815 the option is still understood to maximize compatibility.
2816
2817 * 'bootctl list' gained support for a new --json= switch to output boot
2818 menu entries in JSON format.
2819
2820 * 'bootctl is-installed' now supports the --graceful, and various verbs
2821 omit output with the new option --quiet.
2822
2823 Changes in systemd-homed:
2824
2825 * Starting with v250 systemd-homed uses UID/GID mapping on the mounts
2826 of activated home directories it manages (if the kernel and selected
2827 file systems support it). So far it mapped three UID ranges: the
2828 range from 0…60000, the user's own UID, and the range 60514…65534,
2829 leaving everything else unmapped (in other words, the 16-bit UID range
2830 is mapped almost fully, with the exception of the UID subrange used
2831 for systemd-homed users, with one exception: the user's own UID).
2832 Unmapped UIDs may not be used for file ownership in the home
2833 directory — any chown() attempts with them will fail. With this
2834 release a fourth range is added to these mappings:
2835 524288…1879048191. This range is the UID range intended for container
2836 uses, see:
2837
2838 https://systemd.io/UIDS-GIDS
2839
2840 This range may be used for container managers that place container OS
2841 trees in the home directory (which is a questionable approach, for
2842 quota, permission, SUID handling and network file system
2843 compatibility reasons, but nonetheless apparently commonplace). Note
2844 that this mapping is mapped 1:1 in a pass-through fashion, i.e. the
2845 UID assignments from the range are not managed or mapped by
2846 `systemd-homed`, and must be managed with other mechanisms, in the
2847 context of the local system.
2848
2849 Typically, a better approach to user namespacing in relevant
2850 container managers would be to leave container OS trees on disk at
2851 UID offset 0, but then map them to a dynamically allocated runtime
2852 UID range via another UID mount map at container invocation
2853 time. That way user namespace UID ranges become strictly a runtime
2854 concept, and do not leak into persistent file systems, persistent
2855 user databases or persistent configuration, thus greatly simplifying
2856 handling, and improving compatibility with home directories intended
2857 to be portable like the ones managed by systemd-homed.
2858
2859 Changes in shared libraries:
2860
2861 * A new libsystemd-core-<version>.so private shared library is
2862 installed under /usr/lib/systemd/system, mirroring the existing
2863 libsystemd-shared-<version>.so library. This allows the total
2864 installation size to be reduced by binary code reuse.
2865
2866 * The <version> tag used in the name of libsystemd-shared.so and
2867 libsystemd-core.so can be configured via the meson option
2868 'shared-lib-tag'. Distributions may build subsequent versions of the
2869 systemd package with unique tags (e.g. the full package version),
2870 thus allowing multiple installations of those shared libraries to be
2871 available at the same time. This is intended to fix an issue where
2872 programs that link to those libraries would fail to execute because
2873 they were installed earlier or later than the appropriate version of
2874 the library.
2875
2876 * The sd-id128 API gained a new call sd_id128_to_uuid_string() that is
2877 similar to sd_id128_to_string() but formats the ID in RFC 4122 UUID
2878 format instead of as a simple series of hex characters.
2879
2880 * The sd-device API gained two new calls sd_device_new_from_devname()
2881 and sd_device_new_from_path() which permit allocating an sd_device
2882 object from a device node name or file system path.
2883
2884 * sd-device also gained a new call sd_device_open() which will open the
2885 device node associated with a device for which an sd_device object
2886 has been allocated. The call is supposed to address races around
2887 device nodes being removed/recycled due to hotplug events, or media
2888 change events: the call checks internally whether the major/minor of
2889 the device node and the "diskseq" (in case of block devices) match
2890 with the metadata loaded in the sd_device object, thus ensuring that
2891 the device once opened really matches the provided sd_device object.
2892
2893 Changes in PID1, systemctl, and systemd-oomd:
2894
2895 * A new set of service monitor environment variables will be passed to
2896 OnFailure=/OnSuccess= handlers, but only if exactly one unit lists the
2897 handler unit as OnFailure=/OnSuccess=. The variables are:
2898 $MONITOR_SERVICE_RESULT, $MONITOR_EXIT_CODE, $MONITOR_EXIT_STATUS,
2899 $MONITOR_INVOCATION_ID and $MONITOR_UNIT. For cases when a single
2900 handler needs to watch multiple units, use a templated handler.
2901
2902 * A new ExtensionDirectories= setting in service unit files allows
2903 system extensions to be loaded from a directory. (It is similar to
2904 ExtensionImages=, but takes paths to directories, instead of
2905 disk image files.)
2906
2907 'portablectl attach --extension=' now also accepts directory paths.
2908
2909 * The user.delegate and user.invocation_id extended attributes on
2910 cgroups are used in addition to trusted.delegate and
2911 trusted.invocation_id. The latter pair requires privileges to set,
2912 but the former doesn't and can be also set by the unprivileged user
2913 manager.
2914
2915 (Only supported on kernels ≥5.6.)
2916
2917 * Units that were killed by systemd-oomd will now have a service result
2918 of 'oom-kill'. The number of times a service was killed is tallied
2919 in the 'user.oomd_ooms' extended attribute.
2920
2921 The OOMPolicy= unit file setting is now also honoured by
2922 systemd-oomd.
2923
2924 * In unit files the new %y/%Y specifiers can be used to refer to
2925 normalized unit file path, which is particularly useful for symlinked
2926 unit files.
2927
2928 The new %q specifier resolves to the pretty hostname
2929 (i.e. PRETTY_HOSTNAME= from /etc/machine-info).
2930
2931 The new %d specifier resolves to the credentials directory of a
2932 service (same as $CREDENTIALS_DIRECTORY).
2933
2934 * The RootDirectory=, MountAPIVFS=, ExtensionDirectories=,
2935 *Capabilities*=, ProtectHome=, *Directory=, TemporaryFileSystem=,
2936 PrivateTmp=, PrivateDevices=, PrivateNetwork=, NetworkNamespacePath=,
2937 PrivateIPC=, IPCNamespacePath=, PrivateUsers=, ProtectClock=,
2938 ProtectKernelTunables=, ProtectKernelModules=, ProtectKernelLogs=,
2939 MountFlags= service settings now also work in unprivileged user
2940 services, i.e. those run by the user's --user service manager, as long
2941 as user namespaces are enabled on the system.
2942
2943 * Services with Restart=always and a failing ExecCondition= will no
2944 longer be restarted, to bring ExecCondition= behaviour in line with
2945 Condition*= settings.
2946
2947 * LoadCredential= now accepts a directory as the argument; all files
2948 from the directory will be loaded as credentials.
2949
2950 * A new D-Bus property ControlGroupId is now exposed on service units,
2951 that encapsulates the service's numeric cgroup ID that newer kernels
2952 assign to each cgroup.
2953
2954 * PID 1 gained support for configuring the "pre-timeout" of watchdog
2955 devices and the associated governor, via the new
2956 RuntimeWatchdogPreSec= and RuntimeWatchdogPreGovernor= configuration
2957 options in /etc/systemd/system.conf.
2958
2959 * systemctl's --timestamp= option gained a new choice "unix", to show
2960 timestamp as unix times, i.e. seconds since 1970, Jan 1st.
2961
2962 * A new "taint" flag named "old-kernel" is introduced which is set when
2963 the kernel systemd runs on is older then the current baseline version
2964 (see above). The flag is shown in "systemctl status" output.
2965
2966 * Two additional taint flags "short-uid-range" and "short-gid-range"
2967 have been added as well, which are set when systemd notices it is run
2968 within a userns namespace that does not define the full 0…65535 UID
2969 range
2970
2971 * A new "unmerged-usr" taint flag has been added that is set whenever
2972 running on systems where /bin/ + /sbin/ are *not* symlinks to their
2973 counterparts in /usr/, i.e. on systems where the /usr/-merge has not
2974 been completed.
2975
2976 * Generators invoked by PID 1 will now have a couple of useful
2977 environment variables set describing the execution context a
2978 bit. $SYSTEMD_SCOPE encodes whether the generator is called from the
2979 system service manager, or from the per-user service
2980 manager. $SYSTEMD_IN_INITRD encodes whether the generator is invoked
2981 in initrd context or on the host. $SYSTEMD_FIRST_BOOT encodes whether
2982 systemd considers the current boot to be a "first"
2983 boot. $SYSTEMD_VIRTUALIZATION encode whether virtualization is
2984 detected and which type of hypervisor/container
2985 manager. $SYSTEMD_ARCHITECTURE indicates which architecture the
2986 kernel is built for.
2987
2988 * PID 1 will now automatically pick up system credentials from qemu's
2989 fw_cfg interface, thus allowing passing arbitrary data into VM
2990 systems similar to how this is already supported for passing them
2991 into `systemd-nspawn` containers. Credentials may now also be passed
2992 in via the new kernel command line option `systemd.set_credential=`
2993 (note that kernel command line options are world-readable during
2994 runtime, and only useful for credentials that require no
2995 confidentiality). The credentials that can be passed to unified
2996 kernels that use the `systemd-stub` UEFI stub are now similarly
2997 picked up automatically. Automatic importing of system credentials
2998 this way can be turned off via the new
2999 `systemd.import_credentials=no` kernel command line option.
3000
3001 * LoadCredential= will now automatically look for credentials in the
3002 /etc/credstore/, /run/credstore/, /usr/lib/credstore/ directories if
3003 the argument is not an absolute path. Similarly,
3004 LoadCredentialEncrypted= will check the same directories plus
3005 /etc/credstore.encrypted/, /run/credstore.encrypted/ and
3006 /usr/lib/credstore.encrypted/. The idea is to use those directories
3007 as the system-wide location for credentials that services should pick
3008 up automatically.
3009
3010 * System and service credentials are described in great detail in a new
3011 document:
3012
3013 https://systemd.io/CREDENTIALS
3014
3015 Changes in systemd-journald:
3016
3017 * The journal JSON export format has been added to listed of stable
3018 interfaces (https://systemd.io/PORTABILITY_AND_STABILITY/).
3019
3020 * journalctl --list-boots now supports JSON output and the --reverse option.
3021
3022 * Under docs/: JOURNAL_EXPORT_FORMATS was imported from the wiki and
3023 updated, BUILDING_IMAGES is new:
3024
3025 https://systemd.io/JOURNAL_EXPORT_FORMATS
3026 https://systemd.io/BUILDING_IMAGES
3027
3028 Changes in udev:
3029
3030 * Two new hwdb files have been added. One lists "handhelds" (PDAs,
3031 calculators, etc.), the other AV production devices (DJ tables,
3032 keypads, etc.) that should accessible to the seat owner user by
3033 default.
3034
3035 * udevadm trigger gained a new --prioritized-subsystem= option to
3036 process certain subsystems (and all their parent devices) earlier.
3037
3038 systemd-udev-trigger.service now uses this new option to trigger
3039 block and TPM devices first, hopefully making the boot a bit faster.
3040
3041 * udevadm trigger now implements --type=all, --initialized-match,
3042 --initialized-nomatch to trigger both subsystems and devices, only
3043 already-initialized devices, and only devices which haven't been
3044 initialized yet, respectively.
3045
3046 * udevadm gained a new "wait" command for safely waiting for a specific
3047 device to show up in the udev device database. This is useful in
3048 scripts that asynchronously allocate a block device (e.g. through
3049 repartitioning, or allocating a loopback device or similar) and need
3050 to synchronize on the creation to complete.
3051
3052 * udevadm gained a new "lock" command for locking one or more block
3053 devices while formatting it or writing a partition table to it. It is
3054 an implementation of https://systemd.io/BLOCK_DEVICE_LOCKING and
3055 usable in scripts dealing with block devices.
3056
3057 * udevadm info will show a couple of additional device fields in its
3058 output, and will not apply a limited set of coloring to line types.
3059
3060 * udevadm info --tree will now show a tree of objects (i.e. devices and
3061 suchlike) in the /sys/ hierarchy.
3062
3063 * Block devices will now get a new set of device symlinks in
3064 /dev/disk/by-diskseq/<nr>, which may be used to reference block
3065 device nodes via the kernel's "diskseq" value. Note that this does
3066 not guarantee that opening a device by a symlink like this will
3067 guarantee that the opened device actually matches the specified
3068 diskseq value. To be safe against races, the actual diskseq value of
3069 the opened device (BLKGETDISKSEQ ioctl()) must still be compred with
3070 the one in the symlink path.
3071
3072 * .link files gained support for setting MDI/MID-X on a link.
3073
3074 * .link files gained support for [Match] Firmware= setting to match on
3075 the device firmware description string. By mistake, it was previously
3076 only supported in .network files.
3077
3078 * .link files gained support for [Link] SR-IOVVirtualFunctions= setting
3079 and [SR-IOV] section to configure SR-IOV virtual functions.
3080
3081 Changes in systemd-networkd:
3082
3083 * The default scope for unicast routes configured through [Route]
3084 section is changed to "link", to make the behavior consistent with
3085 "ip route" command. The manual configuration of [Route] Scope= is
3086 still honored.
3087
3088 * A new unit systemd-networkd-wait-online@<interface>.service has been
3089 added that can be used to wait for a specific network interface to be
3090 up.
3091
3092 * systemd-networkd gained a new [Bridge] Isolated=true|false setting
3093 that configures the eponymous kernel attribute on the bridge.
3094
3095 * .netdev files now can be used to create virtual WLAN devices, and
3096 configure various settings on them, via the [WLAN] section.
3097
3098 * .link/.network files gained support for [Match] Kind= setting to match
3099 on device kind ("bond", "bridge", "gre", "tun", "veth", etc.)
3100
3101 This value is also shown by 'networkctl status'.
3102
3103 * The Local= setting in .netdev files for various virtual network
3104 devices gained support for specifying, in addition to the network
3105 address, the name of a local interface which must have the specified
3106 address.
3107
3108 * systemd-networkd gained a new [Tunnel] External= setting in .netdev
3109 files, to configure tunnels in external mode (a.k.a. collect metadata
3110 mode).
3111
3112 * [Network] L2TP= setting was removed. Please use interface specifier in
3113 Local= setting in .netdev files of corresponding L2TP interface.
3114
3115 * New [DHCPServer] BootServerName=, BootServerAddress=, and
3116 BootFilename= settings can be used to configure the server address,
3117 server name, and file name sent in the DHCP packet (e.g. to configure
3118 PXE boot).
3119
3120 Changes in systemd-resolved:
3121
3122 * systemd-resolved is started earlier (in sysinit.target), so it
3123 available earlier and will also be started in the initrd if installed
3124 there.
3125
3126 Changes in disk encryption:
3127
3128 * systemd-cryptenroll can now control whether to require the user to
3129 enter a PIN when using TPM-based unlocking of a volume via the new
3130 --tpm2-with-pin= option.
3131
3132 Option tpm2-pin= can be used in /etc/crypttab.
3133
3134 * When unlocking devices via TPM, TPM2 parameter encryption is now
3135 used, to ensure that communication between CPU and discrete TPM chips
3136 cannot be eavesdropped to acquire disk encryption keys.
3137
3138 * A new switch --fido2-credential-algorithm= has been added to
3139 systemd-cryptenroll allowing selection of the credential algorithm to
3140 use when binding encryption to FIDO2 tokens.
3141
3142 Changes in systemd-hostnamed:
3143
3144 * HARDWARE_VENDOR= and HARDWARE_MODEL= can be set in /etc/machine-info
3145 to override the values gleaned from the hwdb.
3146
3147 * A ID_CHASSIS property can be set in the hwdb (for the DMI device
3148 /sys/class/dmi/id) to override the chassis that is reported by
3149 hostnamed.
3150
3151 * hostnamed's D-Bus interface gained a new method GetHardwareSerial()
3152 for reading the hardware serial number, as reportd by DMI. It also
3153 exposes a new method D-Bus property FirmwareVersion that encode the
3154 firmware version of the system.
3155
3156 Changes in other components:
3157
3158 * /etc/locale.conf is now populated through tmpfiles.d factory /etc/
3159 handling with the values that were configured during systemd build
3160 (if /etc/locale.conf has not been created through some other
3161 mechanism). This means that /etc/locale.conf should always have
3162 reasonable contents and we avoid a potential mismatch in defaults.
3163
3164 * The userdbctl tool will now show UID range information as part of the
3165 list of known users.
3166
3167 * A new build-time configuration setting default-user-shell= can be
3168 used to set the default shell for user records and nspawn shell
3169 invocations (instead of the default /bin/bash).
3170
3171 * systemd-timesyncd now provides a D-Bus API for receiving NTP server
3172 information dynamically at runtime via IPC.
3173
3174 * The systemd-creds tool gained a new "has-tpm2" verb, which reports
3175 whether a functioning TPM2 infrastructure is available, i.e. if
3176 firmware, kernel driver and systemd all have TPM2 support enabled and
3177 a device found.
3178
3179 * The systemd-creds tool gained support for generating encrypted
3180 credentials that are using an empty encryption key. While this
3181 provides no integrity nor confidentiality it's useful to implement
3182 codeflows that work the same on TPM-ful and TPM2-less systems. The
3183 service manager will only accept credentials "encrypted" that way if
3184 a TPM2 device cannot be detected, to ensure that credentials
3185 "encrypted" like that cannot be used to trick TPM2 systems.
3186
3187 * When deciding whether to colorize output, all systemd programs now
3188 also check $COLORTERM (in addition to $NO_COLOR, $SYSTEMD_COLORS, and
3189 $TERM).
3190
3191 * Meson's new install_tag feature is now in use for several components,
3192 allowing to build and install select binaries only: pam, nss, devel
3193 (pkg-config files), systemd-boot, libsystemd, libudev. Example:
3194 $ meson build systemd-boot
3195 $ meson install --tags systemd-boot --no-rebuild
3196 https://mesonbuild.com/Installing.html#installation-tags
3197
3198 * A new build configuration option has been added, to allow selecting the
3199 default compression algorithm used by systemd-journald and systemd-coredump.
3200 This allows to build-in support for decompressing all supported formats,
3201 but choose a specific one for compression. E.g.:
3202 $ meson -Ddefault-compression=xz
3203
3204 Experimental features:
3205
3206 * sd-boot gained a new *experimental* setting "reboot-for-bitlocker" in
3207 loader.conf that implements booting Microsoft Windows from the
3208 sd-boot in a way that first reboots the system, to reset the TPM
3209 PCRs. This improves compatibility with BitLocker's TPM use, as the
3210 PCRs will only record the Windows boot process, and not sd-boot
3211 itself, thus retaining the PCR measurements not involving sd-boot.
3212 Note that this feature is experimental for now, and is likely going
3213 to be generalized and renamed in a future release, without retaining
3214 compatibility with the current implementation.
3215
3216 * A new systemd-sysupdate component has been added that automatically
3217 discovers, downloads, and installs A/B-style updates for the host
3218 installation itself, or container images, portable service images,
3219 and other assets. See the new systemd-sysupdate man page for updates.
3220
3221 Contributions from: 4piu, Adam Williamson, adrian5, Albert Brox,
3222 AlexCatze, Alex Henrie, Alfonso Sánchez-Beato, Alice S,
3223 Alvin Šipraga, amarjargal, Amarjargal, Andrea Pappacoda,
3224 Andreas Rammhold, Andy Chi, Anita Zhang, Antonio Alvarez Feijoo,
3225 Arfrever Frehtes Taifersar Arahesis, ash, Bastien Nocera, Be,
3226 bearhoney, Ben Efros, Benjamin Berg, Benjamin Franzke,
3227 Brett Holman, Christian Brauner, Clyde Byrd III, Curtis Klein,
3228 Daan De Meyer, Daniele Medri, Daniel Mack, Danilo Krummrich,
3229 David, David Bond, Davide Cavalca, David Tardon, davijosw,
3230 dependabot[bot], Donald Chan, Dorian Clay, Eduard Tolosa,
3231 Elias Probst, Eli Schwartz, Erik Sjölund, Evgeny Vereshchagin,
3232 Federico Ceratto, Franck Bui, Frantisek Sumsal, Gaël PORTAY,
3233 Georges Basile Stavracas Neto, Gibeom Gwon, Goffredo Baroncelli,
3234 Grigori Goronzy, Hans de Goede, Heiko Becker, Hugo Carvalho,
3235 Jakob Lell, James Hilliard, Jan Janssen, Jason A. Donenfeld,
3236 Joan Bruguera, Joerie de Gram, Josh Triplett, Julia Kartseva,
3237 Kazuo Moriwaka, Khem Raj, ksa678491784, Lance, Lan Tian,
3238 Laura Barcziova, Lennart Poettering, Leviticoh, licunlong,
3239 Lidong Zhong, lincoln auster, Lubomir Rintel, Luca Boccassi,
3240 Luca BRUNO, lucagoc, Ludwig Nussel, Marcel Hellwig, march1993,
3241 Marco Scardovi, Mario Limonciello, Mariusz Tkaczyk,
3242 Markus Weippert, Martin, Martin Liska, Martin Wilck, Matija Skala,
3243 Matthew Blythe, Matthias Lisin, Matthijs van Duin, Matt Walton,
3244 Max Gautier, Michael Biebl, Michael Olbrich, Michal Koutný,
3245 Michal Sekletár, Mike Gilbert, MkfsSion, Morten Linderud,
3246 Nick Rosbrook, Nikolai Grigoriev, Nikolai Kostrigin,
3247 Nishal Kulkarni, Noel Kuntze, Pablo Ceballos, Peter Hutterer,
3248 Peter Morrow, Pigmy-penguin, Piotr Drąg, prumian, Richard Neill,
3249 Rike-Benjamin Schuppner, rodin-ia, Romain Naour, Ruben Kerkhof,
3250 Ryan Hendrickson, Santa Wiryaman, Sebastian Pucilowski, Seth Falco,
3251 Simon Ellmann, Sonali Srivastava, Stefan Seering,
3252 Stephen Hemminger, tawefogo, techtino, Temuri Doghonadze,
3253 Thomas Batten, Thomas Haller, Thomas Weißschuh, Tobias Stoeckmann,
3254 Tomasz Pala, Tyson Whitehead, Vishal Chillara Srinivas,
3255 Vivien Didelot, w30023233, wangyuhang, Weblate, Xiaotian Wu,
3256 yangmingtai, YmrDtnJu, Yonathan Randolph, Yutsuten, Yu Watanabe,
3257 Zbigniew Jędrzejewski-Szmek, наб
3258
3259 — Edinburgh, 2022-05-21
3260
3261 CHANGES WITH 250:
3262
3263 * Support for encrypted and authenticated credentials has been added.
3264 This extends the credential logic introduced with v247 to support
3265 non-interactive symmetric encryption and authentication, based on a
3266 key that is stored on the /var/ file system or in the TPM2 chip (if
3267 available), or the combination of both (by default if a TPM2 chip
3268 exists the combination is used, otherwise the /var/ key only). The
3269 credentials are automatically decrypted at the moment a service is
3270 started, and are made accessible to the service itself in unencrypted
3271 form. A new tool 'systemd-creds' encrypts credentials for this
3272 purpose, and two new service file settings LoadCredentialEncrypted=
3273 and SetCredentialEncrypted= configure such credentials.
3274
3275 This feature is useful to store sensitive material such as SSL
3276 certificates, passwords and similar securely at rest and only decrypt
3277 them when needed, and in a way that is tied to the local OS
3278 installation or hardware.
3279
3280 * systemd-gpt-auto-generator can now automatically set up discoverable
3281 LUKS2 encrypted swap partitions.
3282
3283 * The GPT Discoverable Partitions Specification has been substantially
3284 extended with support for root and /usr/ partitions for the majority
3285 of architectures systemd supports. This includes platforms that do
3286 not natively support UEFI, because even though GPT is specified under
3287 UEFI umbrella, it is useful on other systems too. Specifically,
3288 systemd-nspawn, systemd-sysext, systemd-gpt-auto-generator and
3289 Portable Services use the concept without requiring UEFI.
3290
3291 * The GPT Discoverable Partitions Specifications has been extended with
3292 a new set of partitions that may carry PKCS#7 signatures for Verity
3293 partitions, encoded in a simple JSON format. This implements a simple
3294 mechanism for building disk images that are fully authenticated and
3295 can be tested against a set of cryptographic certificates. This is
3296 now implemented for the various systemd tools that can operate with
3297 disk images, such as systemd-nspawn, systemd-sysext, systemd-dissect,
3298 Portable services/RootImage=, systemd-tmpfiles, and systemd-sysusers.
3299 The PKCS#7 signatures are passed to the kernel (where they are
3300 checked against certificates from the kernel keyring), or can be
3301 verified against certificates provided in userspace (via a simple
3302 drop-in file mechanism).
3303
3304 * systemd-dissect's inspection logic will now report for which uses a
3305 disk image is intended. Specifically, it will display whether an
3306 image is suitable for booting on UEFI or in a container (using
3307 systemd-nspawn's --image= switch), whether it can be used as portable
3308 service, or attached as system extension.
3309
3310 * The system-extension.d/ drop-in files now support a new field
3311 SYSEXT_SCOPE= that may encode which purpose a system extension image
3312 is for: one of "initrd", "system" or "portable". This is useful to
3313 make images more self-descriptive, and to ensure system extensions
3314 cannot be attached in the wrong contexts.
3315
3316 * The os-release file learnt a new PORTABLE_PREFIXES= field which may
3317 be used in portable service images to indicate which unit prefixes
3318 are supported.
3319
3320 * The GPT image dissection logic in systemd-nspawn/systemd-dissect/…
3321 now is able to decode images for non-native architectures as well.
3322 This allows systemd-nspawn to boot images of non-native architectures
3323 if the corresponding user mode emulator is installed and
3324 systemd-binfmtd is running.
3325
3326 * systemd-logind gained new settings HandlePowerKeyLongPress=,
3327 HandleRebootKeyLongPress=, HandleSuspendKeyLongPress= and
3328 HandleHibernateKeyLongPress= which may be used to configure actions
3329 when the relevant keys are pressed for more than 5s. This is useful
3330 on devices that only have hardware for a subset of these keys. By
3331 default, if the reboot key is pressed long the poweroff operation is
3332 now triggered, and when the suspend key is pressed long the hibernate
3333 operation is triggered. Long pressing the other two keys currently
3334 does not trigger any operation by default.
3335
3336 * When showing unit status updates on the console during boot and
3337 shutdown, and a service is slow to start so that the cylon animation
3338 is shown, the most recent sd_notify() STATUS= text is now shown as
3339 well. Services may use this to make the boot/shutdown output easier
3340 to understand, and to indicate what precisely a service that is slow
3341 to start or stop is waiting for. In particular, the per-user service
3342 manager instance now reports what it is doing and which service it is
3343 waiting for this way to the system service manager.
3344
3345 * The service manager will now re-execute on reception of the
3346 SIGRTMIN+25 signal. It previously already did that on SIGTERM — but
3347 only when running as PID 1. There was no signal to request this when
3348 running as per-user service manager, i.e. as any other PID than 1.
3349 SIGRTMIN+25 works for both system and user managers.
3350
3351 * The hardware watchdog logic in PID 1 gained support for operating
3352 with the default timeout configured in the hardware, instead of
3353 insisting on re-configuring it. Set RuntimeWatchdogSec=default to
3354 request this behavior.
3355
3356 * A new kernel command line option systemd.watchdog_sec= is now
3357 understood which may be used to override the hardware watchdog
3358 time-out for the boot.
3359
3360 * A new setting DefaultOOMScoreAdjust= is now supported in
3361 /etc/systemd/system.conf and /etc/systemd/user.conf. It may be used
3362 to set the default process OOM score adjustment value for processes
3363 started by the service manager. For per-user service managers this
3364 now defaults to 100, but for per-system service managers is left as
3365 is. This means that by default now services forked off the user
3366 service manager are more likely to be killed by the OOM killer than
3367 system services or the managers themselves.
3368
3369 * A new per-service setting RestrictFileSystems= as been added that
3370 restricts the file systems a service has access to by their type.
3371 This is based on the new BPF LSM of the Linux kernel. It provides an
3372 effective way to make certain API file systems unavailable to
3373 services (and thus minimizing attack surface). A new command
3374 "systemd-analyze filesystems" has been added that lists all known
3375 file system types (and how they are grouped together under useful
3376 group handles).
3377
3378 * Services now support a new setting RestrictNetworkInterfaces= for
3379 restricting access to specific network interfaces.
3380
3381 * Service unit files gained new settings StartupAllowedCPUs= and
3382 StartupAllowedMemoryNodes=. These are similar to their counterparts
3383 without the "Startup" prefix and apply during the boot process
3384 only. This is useful to improve boot-time behavior of the system and
3385 assign resources differently during boot than during regular
3386 runtime. This is similar to the preexisting StartupCPUWeight=
3387 vs. CPUWeight.
3388
3389 * Related to this: the various StartupXYZ= settings
3390 (i.e. StartupCPUWeight=, StartupAllowedCPUs=, …) are now also applied
3391 during shutdown. The settings not prefixed with "Startup" hence apply
3392 during regular runtime, and those that are prefixed like that apply
3393 during boot and shutdown.
3394
3395 * A new per-unit set of conditions/asserts
3396 [Condition|Assert][Memory|CPU|IO]Pressure= have been added to make a
3397 unit skip/fail activation if the system's (or a slice's) memory/cpu/io
3398 pressure is above the configured threshold, using the kernel PSI
3399 feature. For more details see systemd.unit(5) and
3400 https://docs.kernel.org/accounting/psi.html
3401
3402 * The combination of ProcSubset=pid and ProtectKernelTunables=yes and/or
3403 ProtectKernelLogs=yes can now be used.
3404
3405 * The default maximum numbers of inodes have been raised from 64k to 1M
3406 for /dev/, and from 400k to 1M for /tmp/.
3407
3408 * The per-user service manager learnt support for communicating with
3409 systemd-oomd to acquire OOM kill information.
3410
3411 * A new service setting ExecSearchPath= has been added that allows
3412 changing the search path for executables for services. It affects
3413 where we look for the binaries specified in ExecStart= and similar,
3414 and the specified directories are also added the $PATH environment
3415 variable passed to invoked processes.
3416
3417 * A new setting RuntimeRandomizedExtraSec= has been added for service
3418 and scope units that allows extending the runtime time-out as
3419 configured by RuntimeMaxSec= with a randomized amount.
3420
3421 * The syntax of the service unit settings RuntimeDirectory=,
3422 StateDirectory=, CacheDirectory=, LogsDirectory= has been extended:
3423 if the specified value is now suffixed with a colon, followed by
3424 another filename, the latter will be created as symbolic link to the
3425 specified directory. This allows creating these service directories
3426 together with alias symlinks to make them available under multiple
3427 names.
3428
3429 * Service unit files gained two new settings TTYRows=/TTYColumns= for
3430 configuring rows/columns of the TTY device passed to
3431 stdin/stdout/stderr of the service. This is useful to propagate TTY
3432 dimensions to a virtual machine.
3433
3434 * A new service unit file setting ExitType= has been added that
3435 specifies when to assume a service has exited. By default systemd
3436 only watches the main process of a service. By setting
3437 ExitType=cgroup it can be told to wait for the last process in a
3438 cgroup instead.
3439
3440 * Automount unit files gained a new setting ExtraOptions= that can be
3441 used to configure additional mount options to pass to the kernel when
3442 mounting the autofs instance.
3443
3444 * "Urlification" (generation of ESC sequences that generate clickable
3445 hyperlinks in modern terminals) may now be turned off altogether
3446 during build-time.
3447
3448 * Path units gained new TriggerLimitBurst= and TriggerLimitIntervalSec=
3449 settings that default to 200 and 2 s respectively. The ratelimit
3450 ensures that a path unit cannot cause PID1 to busy-loop when it is
3451 trying to trigger a service that is skipped because of a Condition*=
3452 not being satisfied. This matches the configuration and behaviour of
3453 socket units.
3454
3455 * The TPM2/FIDO2/PKCS11 support in systemd-cryptsetup is now also built
3456 as a plug-in for cryptsetup. This means the plain cryptsetup command
3457 may now be used to unlock volumes set up this way.
3458
3459 * The TPM2 logic in cryptsetup will now automatically detect systems
3460 where the TPM2 chip advertises SHA256 PCR banks but the firmware only
3461 updates the SHA1 banks. In such a case PCR policies will be
3462 automatically bound to the latter, not the former. This makes the PCR
3463 policies reliable, but of course do not provide the same level of
3464 trust as SHA256 banks.
3465
3466 * The TPM2 logic in systemd-cryptsetup/systemd-cryptsetup now supports
3467 RSA primary keys in addition to ECC, improving compatibility with
3468 TPM2 chips that do not support ECC. RSA keys are much slower to use
3469 than ECC, and hence are only used if ECC is not available.
3470
3471 * /etc/crypttab gained support for a new token-timeout= setting for
3472 encrypted volumes that allows configuration of the maximum time to
3473 wait for PKCS#11/FIDO2 tokens to be plugged in. If the time elapses
3474 the logic will query the user for a regular passphrase/recovery key
3475 instead.
3476
3477 * Support for activating dm-integrity volumes at boot via a new file
3478 /etc/integritytab and the tool systemd-integritysetup have been
3479 added. This is similar to /etc/crypttab and /etc/veritytab, but deals
3480 with dm-integrity instead of dm-crypt/dm-verity.
3481
3482 * The systemd-veritysetup-generator now understands a new usrhash=
3483 kernel command line option for specifying the Verity root hash for
3484 the partition backing the /usr/ file system. A matching set of
3485 systemd.verity_usr_* kernel command line options has been added as
3486 well. These all work similar to the corresponding options for the
3487 root partition.
3488
3489 * The sd-device API gained a new API call sd_device_get_diskseq() to
3490 return the DISKSEQ property of a device structure. The "disk
3491 sequence" concept is a new feature recently introduced to the Linux
3492 kernel that allows detecting reuse cycles of block devices, i.e. can
3493 be used to recognize when loopback block devices are reused for a
3494 different purpose or CD-ROM drives get their media changed.
3495
3496 * A new unit systemd-boot-update.service has been added. If enabled
3497 (the default) and the sd-boot loader is detected to be installed, it
3498 is automatically updated to the newest version when out of date. This
3499 is useful to ensure the boot loader remains up-to-date, and updates
3500 automatically propagate from the OS tree in /usr/.
3501
3502 * sd-boot will now build with SBAT by default in order to facilitate
3503 working with recent versions of Shim that require it to be present.
3504
3505 * sd-boot can now parse Microsoft Windows' Boot Configuration Data.
3506 This is used to robustly generate boot entry titles for Windows.
3507
3508 * A new generic target unit factory-reset.target has been added. It is
3509 hooked into systemd-logind similar in fashion to
3510 reboot/poweroff/suspend/hibernate, and is supposed to be used to
3511 initiate a factory reset operation. What precisely this operation
3512 entails is up for the implementer to decide, the primary goal of the
3513 new unit is provide a framework where to plug in the implementation
3514 and how to trigger it.
3515
3516 * A new meson build-time option 'clock-valid-range-usec-max' has been
3517 added which takes a time in µs and defaults to 15 years. If the RTC
3518 time is noticed to be more than the specified time ahead of the
3519 built-in epoch of systemd (which by default is the release timestamp
3520 of systemd) it is assumed that the RTC is not working correctly, and
3521 the RTC is reset to the epoch. (It already is reset to the epoch when
3522 noticed to be before it.) This should increase the chance that time
3523 doesn't accidentally jump too far ahead due to faulty hardware or
3524 batteries.
3525
3526 * A new setting SaveIntervalSec= has been added to systemd-timesyncd,
3527 which may be used to automatically save the current system time to
3528 disk in regular intervals. This is useful to maintain a roughly
3529 monotonic clock even without RTC hardware and with some robustness
3530 against abnormal system shutdown.
3531
3532 * systemd-analyze verify gained support for a pair of new --image= +
3533 --root= switches for verifying units below a specific root
3534 directory/image instead of on the host.
3535
3536 * systemd-analyze verify gained support for verifying unit files under
3537 an explicitly specified unit name, independently of what the filename
3538 actually is.
3539
3540 * systemd-analyze verify gained a new switch --recursive-errors= which
3541 controls whether to only fail on errors found in the specified units
3542 or recursively any dependent units.
3543
3544 * systemd-analyze security now supports a new --offline mode for
3545 analyzing unit files stored on disk instead of loaded units. It may
3546 be combined with --root=/--image to analyze unit files under a root
3547 directory or disk image. It also learnt a new --threshold= parameter
3548 for specifying an exposure level threshold: if the exposure level
3549 exceeds the specified value the call will fail. It also gained a new
3550 --security-policy= switch for configuring security policies to
3551 enforce on the units. A policy is a JSON file that lists which tests
3552 shall be weighted how much to determine the overall exposure
3553 level. Altogether these new features are useful for fully automatic
3554 analysis and enforcement of security policies on unit files.
3555
3556 * systemd-analyze security gain a new --json= switch for JSON output.
3557
3558 * systemd-analyze learnt a new --quiet switch for reducing
3559 non-essential output. It's honored by the "dot", "syscall-filter",
3560 "filesystems" commands.
3561
3562 * systemd-analyze security gained a --profile= option that can be used
3563 to take into account a portable profile when analyzing portable
3564 services, since a lot of the security-related settings are enabled
3565 through them.
3566
3567 * systemd-analyze learnt a new inspect-elf verb that parses ELF core
3568 files, binaries and executables and prints metadata information,
3569 including the build-id and other info described on:
3570 https://systemd.io/COREDUMP_PACKAGE_METADATA/
3571
3572 * .network files gained a new UplinkInterface= in the [IPv6SendRA]
3573 section, for automatically propagating DNS settings from other
3574 interfaces.
3575
3576 * The static lease DHCP server logic in systemd-networkd may now serve
3577 IP addresses outside of the configured IP pool range for the server.
3578
3579 * CAN support in systemd-networkd gained four new settings Loopback=,
3580 OneShot=, PresumeAck=, ClassicDataLengthCode= for tweaking CAN
3581 control modes. It gained a number of further settings for tweaking
3582 CAN timing quanta.
3583
3584 * The [CAN] section in .network file gained new TimeQuantaNSec=,
3585 PropagationSegment=, PhaseBufferSegment1=, PhaseBufferSegment2=,
3586 SyncJumpWidth=, DataTimeQuantaNSec=, DataPropagationSegment=,
3587 DataPhaseBufferSegment1=, DataPhaseBufferSegment2=, and
3588 DataSyncJumpWidth= settings to control bit-timing processed by the
3589 CAN interface.
3590
3591 * DHCPv4 client support in systemd-networkd learnt a new Label= option
3592 for configuring the address label to apply to configure IPv4
3593 addresses.
3594
3595 * The [IPv6AcceptRA] section of .network files gained support for a new
3596 UseMTU= setting that may be used to control whether to apply the
3597 announced MTU settings to the local interface.
3598
3599 * The [DHCPv4] section in .network file gained a new Use6RD= boolean
3600 setting to control whether the DHCPv4 client request and process the
3601 DHCP 6RD option.
3602
3603 * The [DHCPv6PrefixDelegation] section in .network file is renamed to
3604 [DHCPPrefixDelegation], as now the prefix delegation is also supported
3605 with DHCPv4 protocol by enabling the Use6RD= setting.
3606
3607 * The [DHCPPrefixDelegation] section in .network file gained a new
3608 setting UplinkInterface= to specify the upstream interface.
3609
3610 * The [DHCPv6] section in .network file gained a new setting
3611 UseDelegatedPrefix= to control whether the delegated prefixes will be
3612 propagated to the downstream interfaces.
3613
3614 * The [IPv6AcceptRA] section of .network files now understands two new
3615 settings UseGateway=/UseRoutePrefix= for explicitly configuring
3616 whether to use the relevant fields from the IPv6 Router Advertisement
3617 records.
3618
3619 * The ForceDHCPv6PDOtherInformation= setting in the [DHCPv6] section
3620 has been removed. Please use the WithoutRA= and UseDelegatedPrefix=
3621 settings in the [DHCPv6] section and the DHCPv6Client= setting in the
3622 [IPv6AcceptRA] section to control when the DHCPv6 client is started
3623 and how the delegated prefixes are handled by the DHCPv6 client.
3624
3625 * The IPv6Token= section in the [Network] section is deprecated, and
3626 the [IPv6AcceptRA] section gained the Token= setting for its
3627 replacement. The [IPv6Prefix] section also gained the Token= setting.
3628 The Token= setting gained 'eui64' mode to explicitly configure an
3629 address with the EUI64 algorithm based on the interface MAC address.
3630 The 'prefixstable' mode can now optionally take a secret key. The
3631 Token= setting in the [DHCPPrefixDelegation] section now supports all
3632 algorithms supported by the same settings in the other sections.
3633
3634 * The [RoutingPolicyRule] section of .network file gained a new
3635 SuppressInterfaceGroup= setting.
3636
3637 * The IgnoreCarrierLoss= setting in the [Network] section of .network
3638 files now allows a duration to be specified, controlling how long to
3639 wait before reacting to carrier loss.
3640
3641 * The [DHCPServer] section of .network file gained a new Router=
3642 setting to specify the router address.
3643
3644 * The [CAKE] section of .network files gained various new settings
3645 AutoRateIngress=, CompensationMode=, FlowIsolationMode=, NAT=,
3646 MPUBytes=, PriorityQueueingPreset=, FirewallMark=, Wash=, SplitGSO=,
3647 and UseRawPacketSize= for configuring CAKE.
3648
3649 * systemd-networkd now ships with new default .network files:
3650 80-container-vb.network which matches host-side network bridge device
3651 created by systemd-nspawn's --network-bridge or --network-zone
3652 switch, and 80-6rd-tunnel.network which matches automatically created
3653 sit tunnel with 6rd prefix when the DHCP 6RD option is received.
3654
3655 * systemd-networkd's handling of Endpoint= resolution for WireGuard
3656 interfaces has been improved.
3657
3658 * systemd-networkd will now automatically configure routes to addresses
3659 specified in AllowedIPs=. This feature can be controlled via
3660 RouteTable= and RouteMetric= settings in [WireGuard] or
3661 [WireGuardPeer] sections.
3662
3663 * systemd-networkd will now once again automatically generate persistent
3664 MAC addresses for batadv and bridge interfaces. Users can disable this
3665 by using MACAddress=none in .netdev files.
3666
3667 * systemd-networkd and systemd-udevd now support IP over InfiniBand
3668 interfaces. The Kind= setting in .netdev file accepts "ipoib". And
3669 systemd.netdev files gained the [IPoIB] section.
3670
3671 * systemd-networkd and systemd-udevd now support net.ifname-policy=
3672 option on the kernel command-line. This is implemented through the
3673 systemd-network-generator service that automatically generates
3674 appropriate .link, .network, and .netdev files.
3675
3676 * The various systemd-udevd "ethtool" buffer settings now understand
3677 the special value "max" to configure the buffers to the maximum the
3678 hardware supports.
3679
3680 * systemd-udevd's .link files may now configure a large variety of
3681 NIC coalescing settings, plus more hardware offload settings.
3682
3683 * .link files gained a new WakeOnLanPassword= setting in the [Link]
3684 section that allows to specify a WoL "SecureOn" password on hardware
3685 that supports this.
3686
3687 * systemd-nspawn's --setenv= switch now supports an additional syntax:
3688 if only a variable name is specified (i.e. without being suffixed by
3689 a '=' character and a value) the current value of the environment
3690 variable is propagated to the container. e.g. --setenv=FOO will
3691 lookup the current value of $FOO in the environment, and pass it down
3692 to the container. Similar behavior has been added to homectl's,
3693 machinectl's and systemd-run's --setenv= switch.
3694
3695 * systemd-nspawn gained a new switch --suppress-sync= which may be used
3696 to optionally suppress the effect of the sync()/fsync()/fdatasync()
3697 system calls for the container payload. This is useful for build
3698 system environments where safety against abnormal system shutdown is
3699 not essential as all build artifacts can be regenerated any time, but
3700 the performance win is beneficial.
3701
3702 * systemd-nspawn will now raise the RLIMIT_NOFILE hard limit to the
3703 same value that PID 1 uses for most forked off processes.
3704
3705 * systemd-nspawn's --bind=/--bind-ro= switches now optionally take
3706 uidmap/nouidmap options as last parameter. If "uidmap" is used the
3707 bind mounts are created with UID mapping taking place that ensures
3708 the host's file ownerships are mapped 1:1 to container file
3709 ownerships, even if user namespacing is used. This way
3710 files/directories bound into containers will no longer show up as
3711 owned by the nobody user as they typically did if no special care was
3712 taken to shift them manually.
3713
3714 * When discovering Windows installations sd-boot will now attempt to
3715 show the Windows version.
3716
3717 * The color scheme to use in sd-boot may now be configured at
3718 build-time.
3719
3720 * sd-boot gained the ability to change screen resolution during
3721 boot-time, by hitting the "r" key. This will cycle through available
3722 resolutions and save the last selection.
3723
3724 * sd-boot learnt a new hotkey "f". When pressed the system will enter
3725 firmware setup. This is useful in environments where it is difficult
3726 to hit the right keys early enough to enter the firmware, and works
3727 on any firmware regardless which key it natively uses.
3728
3729 * sd-boot gained support for automatically booting into the menu item
3730 selected on the last boot (using the "@saved" identifier for menu
3731 items).
3732
3733 * sd-boot gained support for automatically loading all EFI drivers
3734 placed in the /EFI/systemd/drivers/ subdirectory of the EFI System
3735 Partition (ESP). These drivers are loaded before the menu entries are
3736 loaded. This is useful e.g. to load additional file system drivers
3737 for the XBOOTLDR partition.
3738
3739 * systemd-boot will now paint the input cursor on its own instead of
3740 relying on the firmware to do so, increasing compatibility with broken
3741 firmware that doesn't make the cursor reasonably visible.
3742
3743 * sd-boot now embeds a .osrel PE section like we expect from Boot
3744 Loader Specification Type #2 Unified Kernels. This means sd-boot
3745 itself may be used in place of a Type #2 Unified Kernel. This is
3746 useful for debugging purposes as it allows chain-loading one a
3747 (development) sd-boot instance from another.
3748
3749 * sd-boot now supports a new "devicetree" field in Boot Loader
3750 Specification Type #1 entries: if configured the specified device
3751 tree file is installed before the kernel is invoked. This is useful
3752 for installing/applying new devicetree files without updating the
3753 kernel image.
3754
3755 * Similarly, sd-stub now can read devicetree data from a PE section
3756 ".dtb" and apply it before invoking the kernel.
3757
3758 * sd-stub (the EFI stub that can be glued in front of a Linux kernel)
3759 gained the ability to pick up credentials and sysext files, wrap them
3760 in a cpio archive, and pass as an additional initrd to the invoked
3761 Linux kernel, in effect placing those files in the /.extra/ directory
3762 of the initrd environment. This is useful to implement trusted initrd
3763 environments which are fully authenticated but still can be extended
3764 (via sysexts) and parameterized (via encrypted/authenticated
3765 credentials, see above).
3766
3767 Credentials can be located next to the kernel image file (credentials
3768 specific to a single boot entry), or in one of the shared directories
3769 (credentials applicable to multiple boot entries).
3770
3771 * sd-stub now comes with a full man page, that explains its feature set
3772 and how to combine a kernel image, an initrd and the stub to build a
3773 complete EFI unified kernel image, implementing Boot Loader
3774 Specification Type #2.
3775
3776 * sd-stub may now provide the initrd to the executed kernel via the
3777 LINUX_EFI_INITRD_MEDIA_GUID EFI protocol, adding compatibility for
3778 non-x86 architectures.
3779
3780 * bootctl learnt new set-timeout and set-timeout-oneshot commands that
3781 may be used to set the boot menu time-out of the boot loader (for all
3782 or just the subsequent boot).
3783
3784 * bootctl and kernel-install will now read variables
3785 KERNEL_INSTALL_LAYOUT= from /etc/machine-info and layout= from
3786 /etc/kernel/install.conf. When set, it specifies the layout to use
3787 for installation directories on the boot partition, so that tools
3788 don't need to guess it based on the already-existing directories. The
3789 only value that is defined natively is "bls", corresponding to the
3790 layout specified in
3791 https://systemd.io/BOOT_LOADER_SPECIFICATION/. Plugins for
3792 kernel-install that implement a different layout can declare other
3793 values for this variable.
3794
3795 'bootctl install' will now write KERNEL_INSTALL_LAYOUT=bls, on the
3796 assumption that if the user installed sd-boot to the ESP, they intend
3797 to use the entry layout understood by sd-boot. It'll also write
3798 KERNEL_INSTALL_MACHINE_ID= if it creates any directories using the ID
3799 (and it wasn't specified in the config file yet). Similarly,
3800 kernel-install will now write KERNEL_INSTALL_MACHINE_ID= (if it
3801 wasn't specified in the config file yet). Effectively, those changes
3802 mean that the machine-id used for boot loader entry installation is
3803 "frozen" upon first use and becomes independent of the actual
3804 machine-id.
3805
3806 Configuring KERNEL_INSTALL_MACHINE_ID fixes the following problem:
3807 images created for distribution ("golden images") are built with no
3808 machine-id, so that a unique machine-id can be created on the first
3809 boot. But those images may contain boot loader entries with the
3810 machine-id used during build included in paths. Using a "frozen"
3811 value allows unambiguously identifying entries that match the
3812 specific installation, while still permitting parallel installations
3813 without conflict.
3814
3815 Configuring KERNEL_INSTALL_LAYOUT obviates the need for
3816 kernel-install to guess the installation layout. This fixes the
3817 problem where a (possibly empty) directory in the boot partition is
3818 created from a different layout causing kernel-install plugins to
3819 assume the wrong layout. A particular example of how this may happen
3820 is the grub2 package in Fedora which includes directories under /boot
3821 directly in its file list. Various other packages pull in grub2 as a
3822 dependency, so it may be installed even if unused, breaking
3823 installations that use the bls layout.
3824
3825 * bootctl and systemd-bless-boot can now be linked statically.
3826
3827 * systemd-sysext now optionally doesn't insist on extension-release.d/
3828 files being placed in the image under the image's file name. If the
3829 file system xattr user.extension-release.strict is set on the
3830 extension release file, it is accepted regardless of its name. This
3831 relaxes security restrictions a bit, as system extension may be
3832 attached under a wrong name this way.
3833
3834 * udevadm's test-builtin command learnt a new --action= switch for
3835 testing the built-in with the specified action (in place of the
3836 default 'add').
3837
3838 * udevadm info gained new switches --property=/--value for showing only
3839 specific udev properties/values instead of all.
3840
3841 * A new hwdb database has been added that contains matches for various
3842 types of signal analyzers (protocol analyzers, logic analyzers,
3843 oscilloscopes, multimeters, bench power supplies, etc.) that should
3844 be accessible to regular users.
3845
3846 * A new hwdb database entry has been added that carries information
3847 about types of cameras (regular or infrared), and in which direction
3848 they point (front or back).
3849
3850 * A new rule to allow console users access to rfkill by default has been
3851 added to hwdb.
3852
3853 * Device nodes for the Software Guard eXtension enclaves (sgx_vepc) are
3854 now also owned by the system group "sgx".
3855
3856 * A new build-time meson option "extra-net-naming-schemes=" has been
3857 added to define additional naming schemes for udev's network
3858 interface naming logic. This is useful for enterprise distributions
3859 and similar which want to pin the schemes of certain distribution
3860 releases under a specific name and previously had to patch the
3861 sources to introduce new named schemes.
3862
3863 * The predictable naming logic for network interfaces has been extended
3864 to generate stable names from Xen netfront device information.
3865
3866 * hostnamed's chassis property can now be sourced from chassis-type
3867 field encoded in devicetree (in addition to the existing DMI
3868 support).
3869
3870 * systemd-cgls now optionally displays cgroup IDs and extended
3871 attributes for each cgroup. (Controllable via the new --xattr= +
3872 --cgroup-id= switches.)
3873
3874 * coredumpctl gained a new --all switch for operating on all
3875 Journal files instead of just the local ones.
3876
3877 * systemd-coredump will now use libdw/libelf via dlopen() rather than
3878 directly linking, allowing users to easily opt-out of backtrace/metadata
3879 analysis of core files, and reduce image sizes when this is not needed.
3880
3881 * systemd-coredump will now analyze core files with libdw/libelf in a
3882 forked, sandboxed process.
3883
3884 * systemd-homed will now try to unmount an activate home area in
3885 regular intervals once the user logged out fully. Previously this was
3886 attempted exactly once but if the home directory was busy for some
3887 reason it was not tried again.
3888
3889 * systemd-homed's LUKS2 home area backend will now create a BSD file
3890 system lock on the image file while the home area is active
3891 (i.e. mounted). If a home area is found to be locked, logins are
3892 politely refused. This should improve behavior when using home areas
3893 images that are accessible via the network from multiple clients, and
3894 reduce the chance of accidental file system corruption in that case.
3895
3896 * Optionally, systemd-homed will now drop the kernel buffer cache once
3897 a user has fully logged out, configurable via the new --drop-caches=
3898 homectl switch.
3899
3900 * systemd-homed now makes use of UID mapped mounts for the home areas.
3901 If the kernel and used file system support it, files are now
3902 internally owned by the "nobody" user (i.e. the user typically used
3903 for indicating "this ownership is not mapped"), and dynamically
3904 mapped to the UID used locally on the system via the UID mapping
3905 mount logic of recent kernels. This makes migrating home areas
3906 between different systems cheaper because recursively chown()ing file
3907 system trees is no longer necessary.
3908
3909 * systemd-homed's CIFS backend now optionally supports CIFS service
3910 names with a directory suffix, in order to place home directories in
3911 a subdirectory of a CIFS share, instead of the top-level directory.
3912
3913 * systemd-homed's CIFS backend gained support for specifying additional
3914 mount options in the JSON user record (cifsExtraMountOptions field,
3915 and --cifs-extra-mount-options= homectl switch). This is for example
3916 useful for configuring mount options such as "noserverino" that some
3917 SMB3 services require (use that to run a homed home directory from a
3918 FritzBox SMB3 share this way).
3919
3920 * systemd-homed will now default to btrfs' zstd compression for home
3921 areas. This is inspired by Fedora's recent decision to switch to zstd
3922 by default.
3923
3924 * Additional mount options to use when mounting the file system of
3925 LUKS2 volumes in systemd-homed has been added. Via the
3926 $SYSTEMD_HOME_MOUNT_OPTIONS_BTRFS, $SYSTEMD_HOME_MOUNT_OPTIONS_EXT4,
3927 $SYSTEMD_HOME_MOUNT_OPTIONS_XFS environment variables to
3928 systemd-homed or via the luksExtraMountOptions user record JSON
3929 property. (Exposed via homectl --luks-extra-mount-options)
3930
3931 * homectl's resize command now takes the special size specifications
3932 "min" and "max" to shrink/grow the home area to the minimum/maximum
3933 size possible, taking disk usage/space constraints and file system
3934 limitations into account. Resizing is now generally graceful: the
3935 logic will try to get as close to the specified size as possible, but
3936 not consider it a failure if the request couldn't be fulfilled
3937 precisely.
3938
3939 * systemd-homed gained the ability to automatically shrink home areas
3940 on logout to their minimal size and grow them again on next
3941 login. This ensures that while inactive, a home area only takes up
3942 the minimal space necessary, but once activated, it provides
3943 sufficient space for the user's needs. This behavior is only
3944 supported if btrfs is used as file system inside the home area
3945 (because only for btrfs online growing/shrinking is implemented in
3946 the kernel). This behavior is now enabled by default, but may be
3947 controlled via the new --auto-resize-mode= setting of homectl.
3948
3949 * systemd-homed gained support for automatically re-balancing free disk
3950 space among active home areas, in case the LUKS2 backends are used,
3951 and no explicit disk size was requested. This way disk space is
3952 automatically managed and home areas resized in regular intervals and
3953 manual resizing when disk space becomes scarce should not be
3954 necessary anymore. This behavior is only supported if btrfs is used
3955 within the home areas (as only then online shrinking and growing is
3956 supported), and may be configured via the new rebalanceWeight JSON
3957 user record field (as exposed via the new --rebalance-weight= homectl
3958 setting). Re-balancing is mostly automatic, but can also be requested
3959 explicitly via "homectl rebalance", which is synchronous, and thus
3960 may be used to wait until the rebalance run is complete.
3961
3962 * userdbctl gained a --json= switch for configured the JSON formatting
3963 to use when outputting user or group records.
3964
3965 * userdbctl gained a new --multiplexer= switch for explicitly
3966 configuring whether to use the systemd-userdbd server side user
3967 record resolution logic.
3968
3969 * userdbctl's ssh-authorized-keys command learnt a new --chain switch,
3970 for chaining up another command to execute after completing the
3971 look-up. Since the OpenSSH's AuthorizedKeysCommand only allows
3972 configuration of a single command to invoke, this maybe used to
3973 invoke multiple: first userdbctl's own implementation, and then any
3974 other also configured in the command line.
3975
3976 * The sd-event API gained a new function sd_event_add_inotify_fd() that
3977 is similar to sd_event_add_inotify() but accepts a file descriptor
3978 instead of a path in the file system for referencing the inode to
3979 watch.
3980
3981 * The sd-event API gained a new function
3982 sd_event_source_set_ratelimit_expire_callback() that may be used to
3983 define a callback function that is called whenever an event source
3984 leaves the rate limiting phase.
3985
3986 * New documentation has been added explaining which steps are necessary
3987 to port systemd to a new architecture:
3988
3989 https://systemd.io/PORTING_TO_NEW_ARCHITECTURES
3990
3991 * The x-systemd.makefs option in /etc/fstab now explicitly supports
3992 ext2, ext3, and f2fs file systems.
3993
3994 * Mount units and units generated from /etc/fstab entries with 'noauto'
3995 are now ordered the same as other units. Effectively, they will be
3996 started earlier (if something actually pulled them in) and stopped
3997 later, similarly to normal mount units that are part of
3998 fs-local.target. This change should be invisible to users, but
3999 should prevent those units from being stopped too early during
4000 shutdown.
4001
4002 * The systemd-getty-generator now honors a new kernel command line
4003 argument systemd.getty_auto= and a new environment variable
4004 $SYSTEMD_GETTY_AUTO that allows turning it off at boot. This is for
4005 example useful to turn off gettys inside of containers or similar
4006 environments.
4007
4008 * systemd-resolved now listens on a second DNS stub address: 127.0.0.54
4009 (in addition to 127.0.0.53, as before). If DNS requests are sent to
4010 this address they are propagated in "bypass" mode only, i.e. are
4011 almost not processed locally, but mostly forwarded as-is to the
4012 current upstream DNS servers. This provides a stable DNS server
4013 address that proxies all requests dynamically to the right upstream
4014 DNS servers even if these dynamically change. This stub does not do
4015 mDNS/LLMNR resolution. However, it will translate look-ups to
4016 DNS-over-TLS if necessary. This new stub is particularly useful in
4017 container/VM environments, or for tethering setups: use DNAT to
4018 redirect traffic to any IP address to this stub.
4019
4020 * systemd-importd now honors new environment variables
4021 $SYSTEMD_IMPORT_BTRFS_SUBVOL, $SYSTEMD_IMPORT_BTRFS_QUOTA,
4022 $SYSTEMD_IMPORT_SYNC, which may be used disable btrfs subvolume
4023 generation, btrfs quota setup and disk synchronization.
4024
4025 * systemd-importd and systemd-resolved can now be optionally built with
4026 OpenSSL instead of libgcrypt.
4027
4028 * systemd-repart no longer requires OpenSSL.
4029
4030 * systemd-sysusers will no longer create the redundant 'nobody' group
4031 by default, as the 'nobody' user is already created with an
4032 appropriate primary group.
4033
4034 * If a unit uses RuntimeMaxSec, systemctl show will now display it.
4035
4036 * systemctl show-environment gained support for --output=json.
4037
4038 * pam_systemd will now first try to use the X11 abstract socket, and
4039 fallback to the socket file in /tmp/.X11-unix/ only if that does not
4040 work.
4041
4042 * systemd-journald will no longer go back to volatile storage
4043 regardless of configuration when its unit is restarted.
4044
4045 * Initial support for the LoongArch architecture has been added (system
4046 call lists, GPT partition table UUIDs, etc).
4047
4048 * systemd-journald's own logging messages are now also logged to the
4049 journal itself when systemd-journald logs to /dev/kmsg.
4050
4051 * systemd-journald now re-enables COW for archived journal files on
4052 filesystems that support COW. One benefit of this change is that
4053 archived journal files will now get compressed on btrfs filesystems
4054 that have compression enabled.
4055
4056 * systemd-journald now deduplicates fields in a single log message
4057 before adding it to the journal. In archived journal files, it will
4058 also punch holes for unused parts and truncate the file as
4059 appropriate, leading to reductions in disk usage.
4060
4061 * journalctl --verify was extended with more informative error
4062 messages.
4063
4064 * More of sd-journal's functions are now resistant against journal file
4065 corruption.
4066
4067 * The shutdown command learnt a new option --show, to display the
4068 scheduled shutdown.
4069
4070 * A LICENSES/ directory is now included in the git tree. It contains a
4071 README.md file that explains the licenses used by source files in
4072 this repository. It also contains the text of all applicable
4073 licenses as they appear on spdx.org.
4074
4075 Contributions from: Aakash Singh, acsfer, Adolfo Jayme Barrientos,
4076 Adrian Vovk, Albert Brox, Alberto Mardegan, Alexander Kanavin,
4077 alexlzhu, Alfonso Sánchez-Beato, Alvin Šipraga, Alyssa Ross,
4078 Amir Omidi, Anatol Pomozov, Andika Triwidada, Andreas Rammhold,
4079 Andreas Valder, Andrej Lajovic, Andrew Soutar, Andrew Stone, Andy Chi,
4080 Anita Zhang, Anssi Hannula, Antonio Alvarez Feijoo,
4081 Antony Deepak Thomas, Arnaud Ferraris, Arvid E. Picciani,
4082 Bastien Nocera, Benjamin Berg, Benjamin Herrenschmidt, Ben Stockett,
4083 Bogdan Seniuc, Boqun Feng, Carl Lei, chlorophyll-zz, Chris Packham,
4084 Christian Brauner, Christian Göttsche, Christian Wehrli,
4085 Christoph Anton Mitterer, Cristian Rodríguez, Daan De Meyer,
4086 Daniel Maixner, Dann Frazier, Dan Streetman, Davide Cavalca,
4087 David Seifert, David Tardon, dependabot[bot], Dimitri John Ledkov,
4088 Dimitri Papadopoulos, Dimitry Ishenko, Dmitry Khlebnikov,
4089 Dominique Martinet, duament, Egor, Egor Ignatov, Emil Renner Berthing,
4090 Emily Gonyer, Ettore Atalan, Evgeny Vereshchagin, Florian Klink,
4091 Franck Bui, Frantisek Sumsal, Geass-LL, Gibeom Gwon, GnunuX,
4092 Gogo Gogsi, gregzuro, Greg Zuro, Gustavo Costa, Hans de Goede,
4093 Hela Basa, Henri Chain, hikigaya58, Hugo Carvalho,
4094 Hugo Osvaldo Barrera, Iago Lopez Galeiras, Iago López Galeiras,
4095 I-dont-need-name, igo95862, Jack Dähn, James Hilliard, Jan Janssen,
4096 Jan Kuparinen, Jan Macku, Jan Palus, Jarkko Sakkinen, Jayce Fayne,
4097 jiangchuangang, jlempen, John Lindgren, Jonas Dreßler, Jonas Jelten,
4098 Jonas Witschel, Joris Hartog, José Expósito, Julia Kartseva,
4099 Kai-Heng Feng, Kai Wohlfahrt, Kay Siver Bø, KennthStailey,
4100 Kevin Kuehler, Kevin Orr, Khem Raj, Kristian Klausen, Kyle Laker,
4101 lainahai, LaserEyess, Lennart Poettering, Lia Lenckowski, longpanda,
4102 Luca Boccassi, Luca BRUNO, Ludwig Nussel, Lukas Senionis,
4103 Maanya Goenka, Maciek Borzecki, Marcel Menzel, Marco Scardovi,
4104 Marcus Harrison, Mark Boudreau, Matthijs van Duin, Mauricio Vásquez,
4105 Maxime de Roucy, Max Resch, MertsA, Michael Biebl, Michael Catanzaro,
4106 Michal Koutný, Michal Sekletár, Miika Karanki, Mike Gilbert,
4107 Milo Turner, ml, monosans, Nacho Barrientos, nassir90, Nishal Kulkarni,
4108 nl6720, Ondrej Kozina, Paulo Neves, Pavel Březina, pedro martelletto,
4109 Peter Hutterer, Peter Morrow, Piotr Drąg, Rasmus Villemoes, ratijas,
4110 Raul Tambre, rene, Riccardo Schirone, Robert-L-Turner, Robert Scheck,
4111 Ross Jennings, saikat0511, Scott Lamb, Scott Worley,
4112 Sergei Trofimovich, Sho Iizuka, Slava Bacherikov, Slimane Selyan Amiri,
4113 StefanBruens, Steven Siloti, svonohr, Taiki Sugawara, Takashi Sakamoto,
4114 Takuro Onoue, Thomas Blume, Thomas Haller, Thomas Mühlbacher,
4115 Tianlu Shao, Toke Høiland-Jørgensen, Tom Yan, Tony Asleson,
4116 Topi Miettinen, Ulrich Ölmann, Urs Ritzmann, Vincent Bernat,
4117 Vito Caputo, Vladimir Panteleev, WANG Xuerui, Wind/owZ, Wu Xiaotian,
4118 xdavidwu, Xiaotian Wu, xujing, yangmingtai, Yao Wei, Yao Wei (魏銘廷),
4119 Yegor Alexeyev, Yu Watanabe, Zbigniew Jędrzejewski-Szmek,
4120 Дамјан Георгиевски, наб
4121
4122 — Warsaw, 2021-12-23
4123
4124 CHANGES WITH 249:
4125
4126 * When operating on disk images via the --image= switch of various
4127 tools (such as systemd-nspawn or systemd-dissect), or when udev finds
4128 no 'root=' parameter on the kernel command line, and multiple
4129 suitable root or /usr/ partitions exist in the image, then a simple
4130 comparison inspired by strverscmp() is done on the GPT partition
4131 label, and the newest partition is picked. This permits a simple and
4132 generic whole-file-system A/B update logic where new operating system
4133 versions are dropped into partitions whose label is then updated with
4134 a matching version identifier.
4135
4136 * systemd-sysusers now supports querying the passwords to set for the
4137 users it creates via the "credentials" logic introduced in v247: the
4138 passwd.hashed-password.<user> and passwd.plaintext-password.<user>
4139 credentials are consulted for the password to use (either in UNIX
4140 hashed form, or literally). By default these credentials are inherited
4141 down from PID1 (which in turn imports it from a container manager if
4142 there is one). This permits easy configuration of user passwords
4143 during first boot. Example:
4144
4145 # systemd-nspawn -i foo.raw --volatile=yes --set-credential=passwd.plaintext-password.root:foo
4146
4147 Note that systemd-sysusers operates in purely additive mode: it
4148 executes no operation if the declared users already exist, and hence
4149 doesn't set any passwords as effect of the command line above if the
4150 specified root user exists already in the image. (Note that
4151 --volatile=yes ensures it doesn't, though.)
4152
4153 * systemd-firstboot now also supports querying various system
4154 parameters via the credential subsystems. Thus, as above this may be
4155 used to initialize important system parameters on first boot of
4156 previously unprovisioned images (i.e. images with a mostly empty
4157 /etc/).
4158
4159 * PID 1 may now show both the unit name and the unit description
4160 strings in its status output during boot. This may be configured with
4161 StatusUnitFormat=combined in system.conf or
4162 systemd.status-unit-format=combined on the kernel command line.
4163
4164 * The systemd-machine-id-setup tool now supports a --image= switch for
4165 provisioning a machine ID file into an OS disk image, similar to how
4166 --root= operates on an OS file tree. This matches the existing switch
4167 of the same name for systemd-tmpfiles, systemd-firstboot, and
4168 systemd-sysusers tools.
4169
4170 * Similarly, systemd-repart gained support for the --image= switch too.
4171 In combination with the existing --size= option, this makes the tool
4172 particularly useful for easily growing disk images in a single
4173 invocation, following the declarative rules included in the image
4174 itself.
4175
4176 * systemd-repart's partition configuration files gained support for a
4177 new switch MakeDirectories= which may be used to create arbitrary
4178 directories inside file systems that are created, before registering
4179 them in the partition table. This is useful in particular for root
4180 partitions to create mount point directories for other partitions
4181 included in the image. For example, a disk image that contains a
4182 root, /home/, and /var/ partitions, may set MakeDirectories=yes to
4183 create /home/ and /var/ as empty directories in the root file system
4184 on its creation, so that the resulting image can be mounted
4185 immediately, even in read-only mode.
4186
4187 * systemd-repart's CopyBlocks= setting gained support for the special
4188 value "auto". If used, a suitable matching partition on the booted OS
4189 is found as source to copy blocks from. This is useful when
4190 implementing replicating installers, that are booted from one medium
4191 and then stream their own root partition onto the target medium.
4192
4193 * systemd-repart's partition configuration files gained support for a
4194 Flags=, a ReadOnly= and a NoAuto= setting, allowing control of these
4195 GPT partition flags for the created partitions: this is useful for
4196 marking newly created partitions as read-only, or as not being
4197 subject for automatic mounting from creation on.
4198
4199 * The /etc/os-release file has been extended with two new (optional)
4200 variables IMAGE_VERSION= and IMAGE_ID=, carrying identity and version
4201 information for OS images that are updated comprehensively and
4202 atomically as one image. Two new specifiers %M, %A now resolve to
4203 these two fields in the various configuration options that resolve
4204 specifiers.
4205
4206 * portablectl gained a new switch --extension= for enabling portable
4207 service images with extensions that follow the extension image
4208 concept introduced with v248, and thus allows layering multiple
4209 images when setting up the root filesystem of the service.
4210
4211 * systemd-coredump will now extract ELF build-id information from
4212 processes dumping core and include it in the coredump report.
4213 Moreover, it will look for ELF .note.package sections with
4214 distribution packaging meta-information about the crashing process.
4215 This is useful to directly embed the rpm or deb (or any other)
4216 package name and version in ELF files, making it easy to match
4217 coredump reports with the specific package for which the software was
4218 compiled. This is particularly useful on environments with ELF files
4219 from multiple vendors, different distributions and versions, as is
4220 common today in our containerized and sand-boxed world. For further
4221 information, see:
4222
4223 https://systemd.io/COREDUMP_PACKAGE_METADATA
4224
4225 * A new udev hardware database has been added for FireWire devices
4226 (IEEE 1394).
4227
4228 * The "net_id" built-in of udev has been updated with three
4229 backwards-incompatible changes:
4230
4231 - PCI hotplug slot names on s390 systems are now parsed as
4232 hexadecimal numbers. They were incorrectly parsed as decimal
4233 previously, or ignored if the name was not a valid decimal
4234 number.
4235
4236 - PCI onboard indices up to 65535 are allowed. Previously, numbers
4237 above 16383 were rejected. This primarily impacts s390 systems,
4238 where values up to 65535 are used.
4239
4240 - Invalid characters in interface names are replaced with "_".
4241
4242 The new version of the net naming scheme is "v249". The previous
4243 scheme can be selected via the "net.naming-scheme=v247" kernel
4244 command line parameter.
4245
4246 * sd-bus' sd_bus_is_ready() and sd_bus_is_open() calls now accept a
4247 NULL bus object, for which they will return false. Or in other words,
4248 an unallocated bus connection is neither ready nor open.
4249
4250 * The sd-device API acquired a new API function
4251 sd_device_get_usec_initialized() that returns the monotonic time when
4252 the udev device first appeared in the database.
4253
4254 * sd-device gained a new APIs sd_device_trigger_with_uuid() and
4255 sd_device_get_trigger_uuid(). The former is similar to
4256 sd_device_trigger() but returns a randomly generated UUID that is
4257 associated with the synthetic uevent generated by the call. This UUID
4258 may be read from the sd_device object a monitor eventually receives,
4259 via the sd_device_get_trigger_uuid(). This interface requires kernel
4260 4.13 or above to work, and allows tracking a synthetic uevent through
4261 the entire device management stack. The "udevadm trigger --settle"
4262 logic has been updated to make use of this concept if available to
4263 wait precisely for the uevents it generates. "udevadm trigger" also
4264 gained a new parameter --uuid that prints the UUID for each generated
4265 uevent.
4266
4267 * sd-device also gained new APIs sd_device_new_from_ifname() and
4268 sd_device_new_from_ifindex() for allocating an sd-device object for
4269 the specified network interface. The former accepts an interface name
4270 (either a primary or an alternative name), the latter an interface
4271 index.
4272
4273 * The native Journal protocol has been documented. Clients may talk
4274 this as alternative to the classic BSD syslog protocol for locally
4275 delivering log records to the Journal. The protocol has been stable
4276 for a long time and in fact been implemented already in a variety
4277 of alternative client libraries. This documentation makes the support
4278 for that official:
4279
4280 https://systemd.io/JOURNAL_NATIVE_PROTOCOL
4281
4282 * A new BPFProgram= setting has been added to service files. It may be
4283 set to a path to a loaded kernel BPF program, i.e. a path to a bpffs
4284 file, or a bind mount or symlink to one. This may be used to upload
4285 and manage BPF programs externally and then hook arbitrary systemd
4286 services into them.
4287
4288 * The "home.arpa" domain that has been officially declared as the
4289 choice for domain for local home networks per RFC 8375 has been added
4290 to the default NTA list of resolved, since DNSSEC is generally not
4291 available on private domains.
4292
4293 * The CPUAffinity= setting of unit files now resolves "%" specifiers.
4294
4295 * A new ManageForeignRoutingPolicyRules= setting has been added to
4296 .network files which may be used to exclude foreign-created routing
4297 policy rules from systemd-networkd management.
4298
4299 * systemd-network-wait-online gained two new switches -4 and -6 that
4300 may be used to tweak whether to wait for only IPv4 or only IPv6
4301 connectivity.
4302
4303 * .network files gained a new RequiredFamilyForOnline= setting to
4304 fine-tune whether to require an IPv4 or IPv6 address in order to
4305 consider an interface "online".
4306
4307 * networkctl will now show an over-all "online" state in the per-link
4308 information.
4309
4310 * In .network files a new OutgoingInterface= setting has been added to
4311 specify the output interface in bridge FDB setups.
4312
4313 * In .network files the Multipath group ID may now be configured for
4314 [NextHop] entries, via the new Group= setting.
4315
4316 * The DHCP server logic configured in .network files gained a new
4317 setting RelayTarget= that turns the server into a DHCP server relay.
4318 The RelayAgentCircuitId= and RelayAgentRemoteId= settings may be used
4319 to further tweak the DHCP relay behaviour.
4320
4321 * The DHCP server logic also gained a new ServerAddress= setting in
4322 .network files that explicitly specifies the server IP address to
4323 use. If not specified, the address is determined automatically, as
4324 before.
4325
4326 * The DHCP server logic in systemd-networkd gained support for static
4327 DHCP leases, configurable via the [DHCPServerStaticLease]
4328 section. This allows explicitly mapping specific MAC addresses to
4329 fixed IP addresses and vice versa.
4330
4331 * The RestrictAddressFamilies= setting in service files now supports a
4332 new special value "none". If specified sockets of all address
4333 families will be made unavailable to services configured that way.
4334
4335 * systemd-fstab-generator and systemd-repart have been updated to
4336 support booting from disks that carry only a /usr/ partition but no
4337 root partition yet, and where systemd-repart can add it in on the
4338 first boot. This is useful for implementing systems that ship with a
4339 single /usr/ file system, and whose root file system shall be set up
4340 and formatted on a LUKS-encrypted volume whose key is generated
4341 locally (and possibly enrolled in the TPM) during the first boot.
4342
4343 * The [Address] section of .network files now accepts a new
4344 RouteMetric= setting that configures the routing metric to use for
4345 the prefix route created as effect of the address configuration.
4346 Similarly, the [DHCPv6PrefixDelegation] and [IPv6Prefix] sections
4347 gained matching settings for their prefix routes. (The option of the
4348 same name in the [DHCPv6] section is moved to [IPv6AcceptRA], since
4349 it conceptually belongs there; the old option is still understood for
4350 compatibility.)
4351
4352 * The DHCPv6 IAID and DUID are now explicitly configurable in .network
4353 files.
4354
4355 * A new udev property ID_NET_DHCP_BROADCAST on network interface
4356 devices is now honoured by systemd-networkd, controlling whether to
4357 issue DHCP offers via broadcasting. This is used to ensure that s390
4358 layer 3 network interfaces work out-of-the-box with systemd-networkd.
4359
4360 * nss-myhostname and systemd-resolved will now synthesize address
4361 records for a new special hostname "_outbound". The name will always
4362 resolve to the local IP addresses most likely used for outbound
4363 connections towards the default routes. On multi-homed hosts this is
4364 useful to have a stable handle referring to "the" local IP address
4365 that matters most, to the point where this is defined.
4366
4367 * The Discoverable Partition Specification has been updated with a new
4368 GPT partition flag "grow-file-system" defined for its partition
4369 types. Whenever partitions with this flag set are automatically
4370 mounted (i.e. via systemd-gpt-auto-generator or the --image= switch
4371 of systemd-nspawn or other tools; and as opposed to explicit mounting
4372 via /etc/fstab), the file system within the partition is
4373 automatically grown to the full size of the partition. If the file
4374 system size already matches the partition size this flag has no
4375 effect. Previously, this functionality has been available via the
4376 explicit x-systemd.growfs mount option, and this new flag extends
4377 this to automatically discovered mounts. A new GrowFileSystem=
4378 setting has been added to systemd-repart drop-in files that allows
4379 configuring this partition flag. This new flag defaults to on for
4380 partitions automatically created by systemd-repart, except if they
4381 are marked read-only. See the specification for further details:
4382
4383 https://systemd.io/DISCOVERABLE_PARTITIONS
4384
4385 * .network files gained a new setting RoutesToNTP= in the [DHCPv4]
4386 section. If enabled (which is the default), and an NTP server address
4387 is acquired through a DHCP lease on this interface an explicit route
4388 to this address is created on this interface to ensure that NTP
4389 traffic to the NTP server acquired on an interface is also routed
4390 through that interface. The pre-existing RoutesToDNS= setting that
4391 implements the same for DNS servers is now enabled by default.
4392
4393 * A pair of service settings SocketBindAllow= + SocketBindDeny= have
4394 been added that may be used to restrict the network interfaces
4395 sockets created by the service may be bound to. This is implemented
4396 via BPF.
4397
4398 * A new ConditionFirmware= setting has been added to unit files to
4399 conditionalize on certain firmware features. At the moment it may
4400 check whether running on a UEFI system, a device.tree system, or if
4401 the system is compatible with some specified device-tree feature.
4402
4403 * A new ConditionOSRelease= setting has been added to unit files to
4404 check os-release(5) fields. The "=", "!=", "<", "<=", ">=", ">"
4405 operators may be used to check if some field has some specific value
4406 or do an alphanumerical comparison. Equality comparisons are useful
4407 for fields like ID, but relative comparisons for fields like
4408 VERSION_ID or IMAGE_VERSION.
4409
4410 * hostnamed gained a new Describe() D-Bus method that returns a JSON
4411 serialization of the host data it exposes. This is exposed via
4412 "hostnamectl --json=" to acquire a host identity description in JSON.
4413 It's our intention to add a similar features to most services and
4414 objects systemd manages, in order to simplify integration with
4415 program code that can consume JSON.
4416
4417 * Similarly, networkd gained a Describe() method on its Manager and
4418 Link bus objects. This is exposed via "networkctl --json=".
4419
4420 * hostnamectl's various "get-xyz"/"set-xyz" verb pairs
4421 (e.g. "hostnamectl get-hostname", "hostnamectl "set-hostname") have
4422 been replaced by a single "xyz" verb (e.g. "hostnamectl hostname")
4423 that is used both to get the value (when no argument is given), and
4424 to set the value (when an argument is specified). The old names
4425 continue to be supported for compatibility.
4426
4427 * systemd-detect-virt and ConditionVirtualization= are now able to
4428 correctly identify Amazon EC2 environments.
4429
4430 * The LogLevelMax= setting of unit files now applies not only to log
4431 messages generated *by* the service, but also to log messages
4432 generated *about* the service by PID 1. To suppress logs concerning a
4433 specific service comprehensively, set this option to a high log
4434 level.
4435
4436 * bootctl gained support for a new --make-machine-id-directory= switch
4437 that allows precise control on whether to create the top-level
4438 per-machine directory in the boot partition that typically contains
4439 Type 1 boot loader entries.
4440
4441 * During build SBAT data to include in the systemd-boot EFI PE binaries
4442 may be specified now.
4443
4444 * /etc/crypttab learnt a new option "headless". If specified any
4445 requests to query the user interactively for passwords or PINs will
4446 be skipped. This is useful on systems that are headless, i.e. where
4447 an interactive user is generally not present.
4448
4449 * /etc/crypttab also learnt a new option "password-echo=" that allows
4450 configuring whether the encryption password prompt shall echo the
4451 typed password and if so, do so literally or via asterisks. (The
4452 default is the same behaviour as before: provide echo feedback via
4453 asterisks.)
4454
4455 * FIDO2 support in systemd-cryptenroll/systemd-cryptsetup and
4456 systemd-homed has been updated to allow explicit configuration of the
4457 "user presence" and "user verification" checks, as well as whether a
4458 PIN is required for authentication, via the new switches
4459 --fido2-with-user-presence=, --fido2-with-user-verification=,
4460 --fido2-with-client-pin= to systemd-cryptenroll and homectl. Which
4461 features are available, and may be enabled or disabled depends on the
4462 used FIDO2 token.
4463
4464 * systemd-nspawn's --private-user= switch now accepts the special value
4465 "identity" which configures a user namespacing environment with an
4466 identity mapping of 65535 UIDs. This means the container UID 0 is
4467 mapped to the host UID 0, and the UID 1 to host UID 1. On first look
4468 this doesn't appear to be useful, however it does reduce the attack
4469 surface a bit, since the resulting container will possess process
4470 capabilities only within its namespace and not on the host.
4471
4472 * systemd-nspawn's --private-user-chown switch has been replaced by a
4473 more generic --private-user-ownership= switch that accepts one of
4474 three values: "chown" is equivalent to the old --private-user-chown,
4475 and "off" is equivalent to the absence of the old switch. The value
4476 "map" uses the new UID mapping mounts of Linux 5.12 to map ownership
4477 of files and directories of the underlying image to the chosen UID
4478 range for the container. "auto" is equivalent to "map" if UID mapping
4479 mount are supported, otherwise it is equivalent to "chown". The short
4480 -U switch systemd-nspawn now implies --private-user-ownership=auto
4481 instead of the old --private-user-chown. Effectively this means: if
4482 the backing file system supports UID mapping mounts the feature is
4483 now used by default if -U is used. Generally, it's a good idea to use
4484 UID mapping mounts instead of recursive chown()ing, since it allows
4485 running containers off immutable images (since no modifications of
4486 the images need to take place), and share images between multiple
4487 instances. Moreover, the recursive chown()ing operation is slow and
4488 can be avoided. Conceptually it's also a good thing if transient UID
4489 range uses do not leak into persistent file ownership anymore. TLDR:
4490 finally, the last major drawback of user namespacing has been
4491 removed, and -U should always be used (unless you use btrfs, where
4492 UID mapped mounts do not exist; or your container actually needs
4493 privileges on the host).
4494
4495 * nss-systemd now synthesizes user and group shadow records in addition
4496 to the main user and group records. Thus, hashed passwords managed by
4497 systemd-homed are now accessible via the shadow database.
4498
4499 * The userdb logic (and thus nss-systemd, and so on) now read
4500 additional user/group definitions in JSON format from the drop-in
4501 directories /etc/userdb/, /run/userdb/, /run/host/userdb/ and
4502 /usr/lib/userdb/. This is a simple and powerful mechanism for making
4503 additional users available to the system, with full integration into
4504 NSS including the shadow databases. Since the full JSON user/group
4505 record format is supported this may also be used to define users with
4506 resource management settings and other runtime settings that
4507 pam_systemd and systemd-logind enforce at login.
4508
4509 * The userdbctl tool gained two new switches --with-dropin= and
4510 --with-varlink= which can be used to fine-tune the sources used for
4511 user database lookups.
4512
4513 * systemd-nspawn gained a new switch --bind-user= for binding a host
4514 user account into the container. This does three things: the user's
4515 home directory is bind mounted from the host into the container,
4516 below the /run/userdb/home/ hierarchy. A free UID is picked in the
4517 container, and a user namespacing UID mapping to the host user's UID
4518 installed. And finally, a minimal JSON user and group record (along
4519 with its hashed password) is dropped into /run/host/userdb/. These
4520 records are picked up automatically by the userdb drop-in logic
4521 describe above, and allow the user to login with the same password as
4522 on the host. Effectively this means: if host and container run new
4523 enough systemd versions making a host user available to the container
4524 is trivially simple.
4525
4526 * systemd-journal-gatewayd now supports the switches --user, --system,
4527 --merge, --file= that are equivalent to the same switches of
4528 journalctl, and permit exposing only the specified subset of the
4529 Journal records.
4530
4531 * The OnFailure= dependency between units is now augmented with a
4532 implicit reverse dependency OnFailureOf= (this new dependency cannot
4533 be configured directly it's only created as effect of an OnFailure=
4534 dependency in the reverse order — it's visible in "systemctl show"
4535 however). Similar, Slice= now has an reverse dependency SliceOf=,
4536 that is also not configurable directly, but useful to determine all
4537 units that are members of a slice.
4538
4539 * A pair of new dependency types between units PropagatesStopTo= +
4540 StopPropagatedFrom= has been added, that allows propagation of unit
4541 stop events between two units. It operates similar to the existing
4542 PropagatesReloadTo= + ReloadPropagatedFrom= dependencies.
4543
4544 * A new dependency type OnSuccess= has been added (plus the reverse
4545 dependency OnSuccessOf=, which cannot be configured directly, but
4546 exists only as effect of the reverse OnSuccess=). It is similar to
4547 OnFailure=, but triggers in the opposite case: when a service exits
4548 cleanly. This allows "chaining up" of services where one or more
4549 services are started once another service has successfully completed.
4550
4551 * A new dependency type Upholds= has been added (plus the reverse
4552 dependency UpheldBy=, which cannot be configured directly, but exists
4553 only as effect of Upholds=). This dependency type is a stronger form
4554 of Wants=: if a unit has an UpHolds= dependency on some other unit
4555 and the former is active then the latter is started whenever it is
4556 found inactive (and no job is queued for it). This is an alternative
4557 to Restart= inside service units, but less configurable, and the
4558 request to uphold a unit is not encoded in the unit itself but in
4559 another unit that intends to uphold it.
4560
4561 * The systemd-ask-password tool now also supports reading passwords
4562 from the credentials subsystem, via the new --credential= switch.
4563
4564 * The systemd-ask-password tool learnt a new switch --emoji= which may
4565 be used to explicit control whether the lock and key emoji (🔐) is
4566 shown in the password prompt on suitable TTYs.
4567
4568 * The --echo switch of systemd-ask-password now optionally takes a
4569 parameter that controls character echo. It may either show asterisks
4570 (default, as before), turn echo off entirely, or echo the typed
4571 characters literally.
4572
4573 * The systemd-ask-password tool also gained a new -n switch for
4574 suppressing output of a trailing newline character when writing the
4575 acquired password to standard output, similar to /bin/echo's -n
4576 switch.
4577
4578 * New documentation has been added that describes the organization of
4579 the systemd source code tree:
4580
4581 https://systemd.io/ARCHITECTURE
4582
4583 * Units using ConditionNeedsUpdate= will no longer be activated in
4584 the initrd.
4585
4586 * It is now possible to list a template unit in the WantedBy= or
4587 RequiredBy= settings of the [Install] section of another template
4588 unit, which will be instantiated using the same instance name.
4589
4590 * A new MemoryAvailable property is available for units. If the unit,
4591 or the slices it is part of, have a memory limit set via MemoryMax=/
4592 MemoryHigh=, MemoryAvailable will indicate how much more memory the
4593 unit can claim before hitting the limits.
4594
4595 * systemd-coredump will now try to stay below the cgroup memory limit
4596 placed on itself or one of the slices it runs under, if the storage
4597 area for core files (/var/lib/systemd/coredump/) is placed on a tmpfs,
4598 since files written on such filesystems count toward the cgroup memory
4599 limit. If there is not enough available memory in such cases to store
4600 the core file uncompressed, systemd-coredump will skip to compressed
4601 storage directly (if enabled) and it will avoid analyzing the core file
4602 to print backtrace and metadata in the journal.
4603
4604 * tmpfiles.d/ drop-ins gained a new '=' modifier to check if the type
4605 of a path matches the configured expectations, and remove it if not.
4606
4607 * tmpfiles.d/'s 'Age' now accepts an 'age-by' argument, which allows to
4608 specify which of the several available filesystem timestamps (access
4609 time, birth time, change time, modification time) to look at when
4610 deciding whether a path has aged enough to be cleaned.
4611
4612 * A new IPv6StableSecretAddress= setting has been added to .network
4613 files, which takes an IPv6 address to use as secret for IPv6 address
4614 generation.
4615
4616 * The [DHCPServer] logic in .network files gained support for a new
4617 UplinkInterface= setting that permits configuration of the uplink
4618 interface name to propagate DHCP lease information from.
4619
4620 * The WakeOnLan= setting in .link files now accepts a list of flags
4621 instead of a single one, to configure multiple wake-on-LAN policies.
4622
4623 * User-space defined tracepoints (USDT) have been added to udev at
4624 strategic locations. This is useful for tracing udev behaviour and
4625 performance with bpftrace and similar tools.
4626
4627 * systemd-journald-upload gained a new NetworkTimeoutSec= option for
4628 setting a network timeout time.
4629
4630 * If a system service is running in a new mount namespace (RootDirectory=
4631 and friends), all file systems will be mounted with MS_NOSUID by
4632 default, unless the system is running with SELinux enabled.
4633
4634 * When enumerating time zones the timedatectl tool will now consult the
4635 'tzdata.zi' file shipped by the IANA time zone database package, in
4636 addition to 'zone1970.tab', as before. This makes sure time zone
4637 aliases are now correctly supported. Some distributions so far did
4638 not install this additional file, most do however. If you
4639 distribution does not install it yet, it might make sense to change
4640 that.
4641
4642 * Intel HID rfkill event is no longer masked, since it's the only
4643 source of rfkill event on newer HP laptops. To have both backward and
4644 forward compatibility, userspace daemon needs to debounce duplicated
4645 events in a short time window.
4646
4647 Contributions from: Aakash Singh, adrian5, Albert Brox,
4648 Alexander Sverdlin, Alexander Tsoy, Alexey Rubtsov, alexlzhu,
4649 Allen Webb, Alvin Šipraga, Alyssa Ross, Anders Wenhaug,
4650 Andrea Pappacoda, Anita Zhang, asavah, Balint Reczey, Bertrand Jacquin,
4651 borna-blazevic, caoxia2008cxx, Carlo Teubner, Christian Göttsche,
4652 Christian Hesse, Daniel Schaefer, Dan Streetman,
4653 David Santamaría Rogado, David Tardon, Deepak Rawat, dgcampea,
4654 Dimitri John Ledkov, ei-ke, Emilio Herrera, Emil Renner Berthing,
4655 Eric Cook, Flos Lonicerae, Franck Bui, Francois Gervais,
4656 Frantisek Sumsal, Gibeom Gwon, gitm0, Hamish Moffatt, Hans de Goede,
4657 Harsh Barsaiyan, Henri Chain, Hristo Venev, Icenowy Zheng, Igor Zhbanov,
4658 imayoda, Jakub Warczarek, James Buren, Jan Janssen, Jan Macku,
4659 Jan Synacek, Jason Francis, Jayanth Ananthapadmanaban, Jeremy Szu,
4660 Jérôme Carretero, Jesse Stricker, jiangchuangang, Joerg Behrmann,
4661 Jóhann B. Guðmundsson, Jörg Deckert, Jörg Thalheim, Juergen Hoetzel,
4662 Julia Kartseva, Kai-Heng Feng, Khem Raj, KoyamaSohei, laineantti,
4663 Lennart Poettering, LetzteInstanz, Luca Adrian L, Luca Boccassi,
4664 Lucas Magasweran, Mantas Mikulėnas, Marco Antonio Mauro, Mark Wielaard,
4665 Masahiro Matsuya, Matt Johnston, Michael Catanzaro, Michal Koutný,
4666 Michal Sekletár, Mike Crowe, Mike Kazantsev, Milan, milaq,
4667 Miroslav Suchý, Morten Linderud, nerdopolis, nl6720, Noah Meyerhans,
4668 Oleg Popov, Olle Lundberg, Ondrej Kozina, Paweł Marciniak, Perry.Yuan,
4669 Peter Hutterer, Peter Kjellerstedt, Peter Morrow, Phaedrus Leeds,
4670 plattrap, qhill, Raul Tambre, Roman Beranek, Roshan Shariff,
4671 Ryan Hendrickson, Samuel BF, scootergrisen, Sebastian Blunt,
4672 Seong-ho Cho, Sergey Bugaev, Sevan Janiyan, Sibo Dong, simmon,
4673 Simon Watts, Srinidhi Kaushik, Štěpán Němec, Steve Bonds, Susant Sahani,
4674 sverdlin, syyhao1994, Takashi Sakamoto, Topi Miettinen, tramsay,
4675 Trent Piepho, Uwe Kleine-König, Viktor Mihajlovski, Vincent Dechenaux,
4676 Vito Caputo, William A. Kennington III, Yangyang Shen, Yegor Alexeyev,
4677 Yi Gao, Yu Watanabe, Zbigniew Jędrzejewski-Szmek, zsien, наб
4678
4679 — Edinburgh, 2021-07-07
4680
4681 CHANGES WITH 248:
4682
4683 * A concept of system extension images is introduced. Such images may
4684 be used to extend the /usr/ and /opt/ directory hierarchies at
4685 runtime with additional files (even if the file system is read-only).
4686 When a system extension image is activated, its /usr/ and /opt/
4687 hierarchies and os-release information are combined via overlayfs
4688 with the file system hierarchy of the host OS.
4689
4690 A new systemd-sysext tool can be used to merge, unmerge, list, and
4691 refresh system extension hierarchies. See
4692 https://www.freedesktop.org/software/systemd/man/systemd-sysext.html.
4693
4694 The systemd-sysext.service automatically merges installed system
4695 extensions during boot (before basic.target, but not in very early
4696 boot, since various file systems have to be mounted first).
4697
4698 The SYSEXT_LEVEL= field in os-release(5) may be used to specify the
4699 supported system extension level.
4700
4701 * A new ExtensionImages= unit setting can be used to apply the same
4702 system extension image concept from systemd-sysext to the namespaced
4703 file hierarchy of specific services, following the same rules and
4704 constraints.
4705
4706 * Support for a new special "root=tmpfs" kernel command-line option has
4707 been added. When specified, a tmpfs is mounted on /, and mount.usr=
4708 should be used to point to the operating system implementation.
4709
4710 * A new configuration file /etc/veritytab may be used to configure
4711 dm-verity integrity protection for block devices. Each line is in the
4712 format "volume-name data-device hash-device roothash options",
4713 similar to /etc/crypttab.
4714
4715 * A new kernel command-line option systemd.verity.root_options= may be
4716 used to configure dm-verity behaviour for the root device.
4717
4718 * The key file specified in /etc/crypttab (the third field) may now
4719 refer to an AF_UNIX/SOCK_STREAM socket in the file system. The key is
4720 acquired by connecting to that socket and reading from it. This
4721 allows the implementation of a service to provide key information
4722 dynamically, at the moment when it is needed.
4723
4724 * When the hostname is set explicitly to "localhost", systemd-hostnamed
4725 will respect this. Previously such a setting would be mostly silently
4726 ignored. The goal is to honour configuration as specified by the
4727 user.
4728
4729 * The fallback hostname that will be used by the system manager and
4730 systemd-hostnamed can now be configured in two new ways: by setting
4731 DEFAULT_HOSTNAME= in os-release(5), or by setting
4732 $SYSTEMD_DEFAULT_HOSTNAME in the environment block. As before, it can
4733 also be configured during compilation. The environment variable is
4734 intended for testing and local overrides, the os-release(5) field is
4735 intended to allow customization by different variants of a
4736 distribution that share the same compiled packages.
4737
4738 * The environment block of the manager itself may be configured through
4739 a new ManagerEnvironment= setting in system.conf or user.conf. This
4740 complements existing ways to set the environment block (the kernel
4741 command line for the system manager, the inherited environment and
4742 user@.service unit file settings for the user manager).
4743
4744 * systemd-hostnamed now exports the default hostname and the source of
4745 the configured hostname ("static", "transient", or "default") as
4746 D-Bus properties.
4747
4748 * systemd-hostnamed now exports the "HardwareVendor" and
4749 "HardwareModel" D-Bus properties, which are supposed to contain a
4750 pair of cleaned up, human readable strings describing the system's
4751 vendor and model. It's typically sourced from the firmware's DMI
4752 tables, but may be augmented from a new hwdb database. hostnamectl
4753 shows this in the status output.
4754
4755 * Support has been added to systemd-cryptsetup for extracting the
4756 PKCS#11 token URI and encrypted key from the LUKS2 JSON embedded
4757 metadata header. This allows the information how to open the
4758 encrypted device to be embedded directly in the device and obviates
4759 the need for configuration in an external file.
4760
4761 * systemd-cryptsetup gained support for unlocking LUKS2 volumes using
4762 TPM2 hardware, as well as FIDO2 security tokens (in addition to the
4763 pre-existing support for PKCS#11 security tokens).
4764
4765 * systemd-repart may enroll encrypted partitions using TPM2
4766 hardware. This may be useful for example to create an encrypted /var
4767 partition bound to the machine on first boot.
4768
4769 * A new systemd-cryptenroll tool has been added to enroll TPM2, FIDO2
4770 and PKCS#11 security tokens to LUKS volumes, list and destroy
4771 them. See:
4772
4773 https://0pointer.net/blog/unlocking-luks2-volumes-with-tpm2-fido2-pkcs11-security-hardware-on-systemd-248.html
4774
4775 It also supports enrolling "recovery keys" and regular passphrases.
4776
4777 * The libfido2 dependency is now based on dlopen(), so that the library
4778 is used at runtime when installed, but is not a hard runtime
4779 dependency.
4780
4781 * systemd-cryptsetup gained support for two new options in
4782 /etc/crypttab: "no-write-workqueue" and "no-read-workqueue" which
4783 request synchronous processing of encryption/decryption IO.
4784
4785 * The manager may be configured at compile time to use the fexecve()
4786 instead of the execve() system call when spawning processes. Using
4787 fexecve() closes a window between checking the security context of an
4788 executable and spawning it, but unfortunately the kernel displays
4789 stale information in the process' "comm" field, which impacts ps
4790 output and such.
4791
4792 * The configuration option -Dcompat-gateway-hostname has been dropped.
4793 "_gateway" is now the only supported name.
4794
4795 * The ConditionSecurity=tpm2 unit file setting may be used to check if
4796 the system has at least one TPM2 (tpmrm class) device.
4797
4798 * A new ConditionCPUFeature= has been added that may be used to
4799 conditionalize units based on CPU features. For example,
4800 ConditionCPUFeature=rdrand will condition a unit so that it is only
4801 run when the system CPU supports the RDRAND opcode.
4802
4803 * The existing ConditionControlGroupController= setting has been
4804 extended with two new values "v1" and "v2". "v2" means that the
4805 unified v2 cgroup hierarchy is used, and "v1" means that legacy v1
4806 hierarchy or the hybrid hierarchy are used.
4807
4808 * A new PrivateIPC= setting on a unit file allows executed processes to
4809 be moved into a private IPC namespace, with separate System V IPC
4810 identifiers and POSIX message queues.
4811
4812 A new IPCNamespacePath= allows the unit to be joined to an existing
4813 IPC namespace.
4814
4815 * The tables of system calls in seccomp filters are now automatically
4816 generated from kernel lists exported on
4817 https://fedora.juszkiewicz.com.pl/syscalls.html.
4818
4819 The following architectures should now have complete lists:
4820 alpha, arc, arm64, arm, i386, ia64, m68k, mips64n32, mips64, mipso32,
4821 powerpc, powerpc64, s390, s390x, tilegx, sparc, x86_64, x32.
4822
4823 * The MountAPIVFS= service file setting now additionally mounts a tmpfs
4824 on /run/ if it is not already a mount point. A writable /run/ has
4825 always been a requirement for a functioning system, but this was not
4826 guaranteed when using a read-only image.
4827
4828 Users can always specify BindPaths= or InaccessiblePaths= as
4829 overrides, and they will take precedence. If the host's root mount
4830 point is used, there is no change in behaviour.
4831
4832 * New bind mounts and file system image mounts may be injected into the
4833 mount namespace of a service (without restarting it). This is exposed
4834 respectively as 'systemctl bind <unit> <path>…' and
4835 'systemctl mount-image <unit> <image>…'.
4836
4837 * The StandardOutput= and StandardError= settings can now specify files
4838 to be truncated for output (as "truncate:<path>").
4839
4840 * The ExecPaths= and NoExecPaths= settings may be used to specify
4841 noexec for parts of the file system.
4842
4843 * sd-bus has a new function sd_bus_open_user_machine() to open a
4844 connection to the session bus of a specific user in a local container
4845 or on the local host. This is exposed in the existing -M switch to
4846 systemctl and similar tools:
4847
4848 systemctl --user -M lennart@foobar start foo
4849
4850 This will connect to the user bus of a user "lennart" in container
4851 "foobar". If no container name is specified, the specified user on
4852 the host itself is connected to
4853
4854 systemctl --user -M lennart@ start quux
4855
4856 * sd-bus also gained a convenience function sd_bus_message_send() to
4857 simplify invocations of sd_bus_send(), taking only a single
4858 parameter: the message to send.
4859
4860 * sd-event allows rate limits to be set on event sources, for dealing
4861 with high-priority event sources that might starve out others. See
4862 the new man page sd_event_source_set_ratelimit(3) for details.
4863
4864 * systemd.link files gained a [Link] Promiscuous= switch, which allows
4865 the device to be raised in promiscuous mode.
4866
4867 New [Link] TransmitQueues= and ReceiveQueues= settings allow the
4868 number of TX and RX queues to be configured.
4869
4870 New [Link] TransmitQueueLength= setting allows the size of the TX
4871 queue to be configured.
4872
4873 New [Link] GenericSegmentOffloadMaxBytes= and
4874 GenericSegmentOffloadMaxSegments= allow capping the packet size and
4875 the number of segments accepted in Generic Segment Offload.
4876
4877 * systemd-networkd gained support for the "B.A.T.M.A.N. advanced"
4878 wireless routing protocol that operates on ISO/OSI Layer 2 only and
4879 uses ethernet frames to route/bridge packets. This encompasses a new
4880 "batadv" netdev Type=, a new [BatmanAdvanced] section with a bunch of
4881 new settings in .netdev files, and a new BatmanAdvanced= setting in
4882 .network files.
4883
4884 * systemd.network files gained a [Network] RouteTable= configuration
4885 switch to select the routing policy table.
4886
4887 systemd.network files gained a [RoutingPolicyRule] Type=
4888 configuration switch (one of "blackhole, "unreachable", "prohibit").
4889
4890 systemd.network files gained a [IPv6AcceptRA] RouteDenyList= and
4891 RouteAllowList= settings to ignore/accept route advertisements from
4892 routers matching specified prefixes. The DenyList= setting has been
4893 renamed to PrefixDenyList= and a new PrefixAllowList= option has been
4894 added.
4895
4896 systemd.network files gained a [DHCPv6] UseAddress= setting to
4897 optionally ignore the address provided in the lease.
4898
4899 systemd.network files gained a [DHCPv6PrefixDelegation]
4900 ManageTemporaryAddress= switch.
4901
4902 systemd.network files gained a new ActivationPolicy= setting which
4903 allows configuring how the UP state of an interface shall be managed,
4904 i.e. whether the interface is always upped, always downed, or may be
4905 upped/downed by the user using "ip link set dev".
4906
4907 * The default for the Broadcast= setting in .network files has slightly
4908 changed: the broadcast address will not be configured for wireguard
4909 devices.
4910
4911 * systemd.netdev files gained a [VLAN] Protocol=, IngressQOSMaps=,
4912 EgressQOSMaps=, and [MACVLAN] BroadcastMulticastQueueLength=
4913 configuration options for VLAN packet handling.
4914
4915 * udev rules may now set log_level= option. This allows debug logs to
4916 be enabled for select events, e.g. just for a specific subsystem or
4917 even a single device.
4918
4919 * udev now exports the VOLUME_ID, LOGICAL_VOLUME_ID, VOLUME_SET_ID, and
4920 DATA_PREPARED_ID properties for block devices with ISO9660 file
4921 systems.
4922
4923 * udev now exports decoded DMI information about installed memory slots
4924 as device properties under the /sys/class/dmi/id/ pseudo device.
4925
4926 * /dev/ is not mounted noexec anymore. This didn't provide any
4927 significant security benefits and would conflict with the executable
4928 mappings used with /dev/sgx device nodes. The previous behaviour can
4929 be restored for individual services with NoExecPaths=/dev (or by allow-
4930 listing and excluding /dev from ExecPaths=).
4931
4932 * Permissions for /dev/vsock are now set to 0o666, and /dev/vhost-vsock
4933 and /dev/vhost-net are owned by the kvm group.
4934
4935 * The hardware database has been extended with a list of fingerprint
4936 readers that correctly support USB auto-suspend using data from
4937 libfprint.
4938
4939 * systemd-resolved can now answer DNSSEC questions through the stub
4940 resolver interface in a way that allows local clients to do DNSSEC
4941 validation themselves. For a question with DO+CD set, it'll proxy the
4942 DNS query and respond with a mostly unmodified packet received from
4943 the upstream server.
4944
4945 * systemd-resolved learnt a new boolean option CacheFromLocalhost= in
4946 resolved.conf. If true the service will provide caching even for DNS
4947 lookups made to an upstream DNS server on the 127.0.0.1/::1
4948 addresses. By default (and when the option is false) systemd-resolved
4949 will not cache such lookups, in order to avoid duplicate local
4950 caching, under the assumption the local upstream server caches
4951 anyway.
4952
4953 * systemd-resolved now implements RFC5001 NSID in its local DNS
4954 stub. This may be used by local clients to determine whether they are
4955 talking to the DNS resolver stub or a different DNS server.
4956
4957 * When resolving host names and other records resolvectl will now
4958 report where the data was acquired from (i.e. the local cache, the
4959 network, locally synthesized, …) and whether the network traffic it
4960 effected was encrypted or not. Moreover the tool acquired a number of
4961 new options --cache=, --synthesize=, --network=, --zone=,
4962 --trust-anchor=, --validate= that take booleans and may be used to
4963 tweak a lookup, i.e. whether it may be answered from cached
4964 information, locally synthesized information, information acquired
4965 through the network, the local mDNS/LLMNR zone, the DNSSEC trust
4966 anchor, and whether DNSSEC validation shall be executed for the
4967 lookup.
4968
4969 * systemd-nspawn gained a new --ambient-capability= setting
4970 (AmbientCapability= in .nspawn files) to configure ambient
4971 capabilities passed to the container payload.
4972
4973 * systemd-nspawn gained the ability to configure the firewall using the
4974 nftables subsystem (in addition to the existing iptables
4975 support). Similarly, systemd-networkd's IPMasquerade= option now
4976 supports nftables as back-end, too. In both cases NAT on IPv6 is now
4977 supported too, in addition to IPv4 (the iptables back-end still is
4978 IPv4-only).
4979
4980 "IPMasquerade=yes", which was the same as "IPMasquerade=ipv4" before,
4981 retains its meaning, but has been deprecated. Please switch to either
4982 "ivp4" or "both" (if covering IPv6 is desired).
4983
4984 * systemd-importd will now download .verity and .roothash.p7s files
4985 along with the machine image (as exposed via machinectl pull-raw).
4986
4987 * systemd-oomd now gained a new DefaultMemoryPressureDurationSec=
4988 setting to configure the time a unit's cgroup needs to exceed memory
4989 pressure limits before action will be taken, and a new
4990 ManagedOOMPreference=none|avoid|omit setting to avoid killing certain
4991 units.
4992
4993 systemd-oomd is now considered fully supported (the usual
4994 backwards-compatibility promises apply). Swap is not required for
4995 operation, but it is still recommended.
4996
4997 * systemd-timesyncd gained a new ConnectionRetrySec= setting which
4998 configures the retry delay when trying to contact servers.
4999
5000 * systemd-stdio-bridge gained --system/--user options to connect to the
5001 system bus (previous default) or the user session bus.
5002
5003 * systemd-localed may now call locale-gen to generate missing locales
5004 on-demand (UTF-8-only). This improves integration with Debian-based
5005 distributions (Debian/Ubuntu/PureOS/Tanglu/...) and Arch Linux.
5006
5007 * systemctl --check-inhibitors=true may now be used to obey inhibitors
5008 even when invoked non-interactively. The old --ignore-inhibitors
5009 switch is now deprecated and replaced by --check-inhibitors=false.
5010
5011 * systemctl import-environment will now emit a warning when called
5012 without any arguments (i.e. to import the full environment block of
5013 the called program). This command will usually be invoked from a
5014 shell, which means that it'll inherit a bunch of variables which are
5015 specific to that shell, and usually to the TTY the shell is connected
5016 to, and don't have any meaning in the global context of the system or
5017 user service manager. Instead, only specific variables should be
5018 imported into the manager environment block.
5019
5020 Similarly, programs which update the manager environment block by
5021 directly calling the D-Bus API of the manager, should also push
5022 specific variables, and not the full inherited environment.
5023
5024 * systemctl's status output now shows unit state with a more careful
5025 choice of Unicode characters: units in maintenance show a "○" symbol
5026 instead of the usual "●", failed units show "×", and services being
5027 reloaded "↻".
5028
5029 * coredumpctl gained a --debugger-arguments= switch to pass arguments
5030 to the debugger. It also gained support for showing coredump info in
5031 a simple JSON format.
5032
5033 * systemctl/loginctl/machinectl's --signal= option now accept a special
5034 value "list", which may be used to show a brief table with known
5035 process signals and their numbers.
5036
5037 * networkctl now shows the link activation policy in status.
5038
5039 * Various tools gained --pager/--no-pager/--json= switches to
5040 enable/disable the pager and provide JSON output.
5041
5042 * Various tools now accept two new values for the SYSTEMD_COLORS
5043 environment variable: "16" and "256", to configure how many terminal
5044 colors are used in output.
5045
5046 * less 568 or newer is now required for the auto-paging logic of the
5047 various tools. Hyperlink ANSI sequences in terminal output are now
5048 used even if a pager is used, and older versions of less are not able
5049 to display these sequences correctly. SYSTEMD_URLIFY=0 may be used to
5050 disable this output again.
5051
5052 * Builds with support for separate / and /usr/ hierarchies ("split-usr"
5053 builds, non-merged-usr builds) are now officially deprecated. A
5054 warning is emitted during build. Support is slated to be removed in
5055 about a year (when the Debian Bookworm release development starts).
5056
5057 * Systems with the legacy cgroup v1 hierarchy are now marked as
5058 "tainted", to make it clearer that using the legacy hierarchy is not
5059 recommended.
5060
5061 * systemd-localed will now refuse to configure a keymap which is not
5062 installed in the file system. This is intended as a bug fix, but
5063 could break cases where systemd-localed was used to configure the
5064 keymap in advanced of it being installed. It is necessary to install
5065 the keymap file first.
5066
5067 * The main git development branch has been renamed to 'main'.
5068
5069 * mmcblk[0-9]boot[0-9] devices will no longer be probed automatically
5070 for partitions, as in the vast majority of cases they contain none
5071 and are used internally by the bootloader (eg: uboot).
5072
5073 * systemd will now set the $SYSTEMD_EXEC_PID environment variable for
5074 spawned processes to the PID of the process itself. This may be used
5075 by programs for detecting whether they were forked off by the service
5076 manager itself or are a process forked off further down the tree.
5077
5078 * The sd-device API gained four new calls: sd_device_get_action() to
5079 determine the uevent add/remove/change/… action the device object has
5080 been seen for, sd_device_get_seqno() to determine the uevent sequence
5081 number, sd_device_new_from_stat_rdev() to allocate a new sd_device
5082 object from stat(2) data of a device node, and sd_device_trigger() to
5083 write to the 'uevent' attribute of a device.
5084
5085 * For most tools the --no-legend= switch has been replaced by
5086 --legend=no and --legend=yes, to force whether tables are shown with
5087 headers/legends.
5088
5089 * Units acquired a new property "Markers" that takes a list of zero,
5090 one or two of the following strings: "needs-reload" and
5091 "needs-restart". These markers may be set via "systemctl
5092 set-property". Once a marker is set, "systemctl reload-or-restart
5093 --marked" may be invoked to execute the operation the units are
5094 marked for. This is useful for package managers that want to mark
5095 units for restart/reload while updating, but effect the actual
5096 operations at a later step at once.
5097
5098 * The sd_bus_message_read_strv() API call of sd-bus may now also be
5099 used to parse arrays of D-Bus signatures and D-Bus paths, in addition
5100 to regular strings.
5101
5102 * bootctl will now report whether the UEFI firmware used a TPM2 device
5103 and measured the boot process into it.
5104
5105 * systemd-tmpfiles learnt support for a new environment variable
5106 $SYSTEMD_TMPFILES_FORCE_SUBVOL which takes a boolean value. If true
5107 the v/q/Q lines in tmpfiles.d/ snippets will create btrfs subvolumes
5108 even if the root fs of the system is not itself a btrfs volume.
5109
5110 * systemd-detect-virt/ConditionVirtualization= will now explicitly
5111 detect Docker/Podman environments where possible. Moreover, they
5112 should be able to generically detect any container manager as long as
5113 it assigns the container a cgroup.
5114
5115 * portablectl gained a new "reattach" verb for detaching/reattaching a
5116 portable service image, useful for updating images on-the-fly.
5117
5118 * Intel SGX enclave device nodes (which expose a security feature of
5119 newer Intel CPUs) will now be owned by a new system group "sgx".
5120
5121 Contributions from: Adam Nielsen, Adrian Vovk, AJ Jordan, Alan Perry,
5122 Alastair Pharo, Alexander Batischev, Ali Abdallah, Andrew Balmos,
5123 Anita Zhang, Annika Wickert, Ansgar Burchardt, Antonio Terceiro,
5124 Antonius Frie, Ardy, Arian van Putten, Ariel Fermani, Arnaud T,
5125 A S Alam, Bastien Nocera, Benjamin Berg, Benjamin Robin, Björn Daase,
5126 caoxia, Carlo Wood, Charles Lee, ChopperRob, chri2, Christian Ehrhardt,
5127 Christian Hesse, Christopher Obbard, clayton craft, corvusnix, cprn,
5128 Daan De Meyer, Daniele Medri, Daniel Rusek, Dan Sanders, Dan Streetman,
5129 Darren Ng, David Edmundson, David Tardon, Deepak Rawat, Devon Pringle,
5130 Dmitry Borodaenko, dropsignal, Einsler Lee, Endre Szabo,
5131 Evgeny Vereshchagin, Fabian Affolter, Fangrui Song, Felipe Borges,
5132 feliperodriguesfr, Felix Stupp, Florian Hülsmann, Florian Klink,
5133 Florian Westphal, Franck Bui, Frantisek Sumsal, Gablegritule,
5134 Gaël PORTAY, Gaurav, Giedrius Statkevičius, Greg Depoire-Ferrer,
5135 Gustavo Costa, Hans de Goede, Hela Basa, heretoenhance, hide,
5136 Iago López Galeiras, igo95862, Ilya Dmitrichenko, Jameer Pathan,
5137 Jan Tojnar, Jiehong, Jinyuan Si, Joerg Behrmann, John Slade,
5138 Jonathan G. Underwood, Jonathan McDowell, Josh Triplett, Joshua Watt,
5139 Julia Cartwright, Julien Humbert, Kairui Song, Karel Zak,
5140 Kevin Backhouse, Kevin P. Fleming, Khem Raj, Konomi, krissgjeng,
5141 l4gfcm, Lajos Veres, Lennart Poettering, Lincoln Ramsay, Luca Boccassi,
5142 Luca BRUNO, Lucas Werkmeister, Luka Kudra, Luna Jernberg,
5143 Marc-André Lureau, Martin Wilck, Matthias Klumpp, Matt Turner,
5144 Michael Gisbers, Michael Marley, Michael Trapp, Michal Fabik,
5145 Michał Kopeć, Michal Koutný, Michal Sekletár, Michele Guerini Rocco,
5146 Mike Gilbert, milovlad, moson-mo, Nick, nihilix-melix, Oğuz Ersen,
5147 Ondrej Mosnacek, pali, Pavel Hrdina, Pavel Sapezhko, Perry Yuan,
5148 Peter Hutterer, Pierre Dubouilh, Piotr Drąg, Pjotr Vertaalt,
5149 Richard Laager, RussianNeuroMancer, Sam Lunt, Sebastiaan van Stijn,
5150 Sergey Bugaev, shenyangyang4, simmon, Simonas Kazlauskas,
5151 Slimane Selyan Amiri, Stefan Agner, Steve Ramage, Susant Sahani,
5152 Sven Mueller, Tad Fisher, Takashi Iwai, Thomas Haller, Tom Shield,
5153 Topi Miettinen, Torsten Hilbrich, tpgxyz, Tyler Hicks, ulf-f,
5154 Ulrich Ölmann, Vincent Pelletier, Vinnie Magro, Vito Caputo, Vlad,
5155 walbit-de, Whired Planck, wouter bolsterlee, Xℹ Ruoyao, Yangyang Shen,
5156 Yuri Chornoivan, Yu Watanabe, Zach Smith, Zbigniew Jędrzejewski-Szmek,
5157 Zmicer Turok, Дамјан Георгиевски
5158
5159 — Berlin, 2021-03-30
5160
5161 CHANGES WITH 247:
5162
5163 * KERNEL API INCOMPATIBILITY: Linux 4.14 introduced two new uevents
5164 "bind" and "unbind" to the Linux device model. When this kernel
5165 change was made, systemd-udevd was only minimally updated to handle
5166 and propagate these new event types. The introduction of these new
5167 uevents (which are typically generated for USB devices and devices
5168 needing a firmware upload before being functional) resulted in a
5169 number of issues which we so far didn't address. We hoped the kernel
5170 maintainers would themselves address these issues in some form, but
5171 that did not happen. To handle them properly, many (if not most) udev
5172 rules files shipped in various packages need updating, and so do many
5173 programs that monitor or enumerate devices with libudev or sd-device,
5174 or otherwise process uevents. Please note that this incompatibility
5175 is not fault of systemd or udev, but caused by an incompatible kernel
5176 change that happened back in Linux 4.14, but is becoming more and
5177 more visible as the new uevents are generated by more kernel drivers.
5178
5179 To minimize issues resulting from this kernel change (but not avoid
5180 them entirely) starting with systemd-udevd 247 the udev "tags"
5181 concept (which is a concept for marking and filtering devices during
5182 enumeration and monitoring) has been reworked: udev tags are now
5183 "sticky", meaning that once a tag is assigned to a device it will not
5184 be removed from the device again until the device itself is removed
5185 (i.e. unplugged). This makes sure that any application monitoring
5186 devices that match a specific tag is guaranteed to both see uevents
5187 where the device starts being relevant, and those where it stops
5188 being relevant (the latter now regularly happening due to the new
5189 "unbind" uevent type). The udev tags concept is hence now a concept
5190 tied to a *device* instead of a device *event* — unlike for example
5191 udev properties whose lifecycle (as before) is generally tied to a
5192 device event, meaning that the previously determined properties are
5193 forgotten whenever a new uevent is processed.
5194
5195 With the newly redefined udev tags concept, sometimes it's necessary
5196 to determine which tags are the ones applied by the most recent
5197 uevent/database update, in order to discern them from those
5198 originating from earlier uevents/database updates of the same
5199 device. To accommodate for this a new automatic property CURRENT_TAGS
5200 has been added that works similar to the existing TAGS property but
5201 only lists tags set by the most recent uevent/database
5202 update. Similarly, the libudev/sd-device API has been updated with
5203 new functions to enumerate these 'current' tags, in addition to the
5204 existing APIs that now enumerate the 'sticky' ones.
5205
5206 To properly handle "bind"/"unbind" on Linux 4.14 and newer it is
5207 essential that all udev rules files and applications are updated to
5208 handle the new events. Specifically:
5209
5210 • All rule files that currently use a header guard similar to
5211 ACTION!="add|change",GOTO="xyz_end" should be updated to use
5212 ACTION=="remove",GOTO="xyz_end" instead, so that the
5213 properties/tags they add are also applied whenever "bind" (or
5214 "unbind") is seen. (This is most important for all physical device
5215 types — those for which "bind" and "unbind" are currently
5216 generated, for all other device types this change is still
5217 recommended but not as important — but certainly prepares for
5218 future kernel uevent type additions).
5219
5220 • Similarly, all code monitoring devices that contains an 'if' branch
5221 discerning the "add" + "change" uevent actions from all other
5222 uevents actions (i.e. considering devices only relevant after "add"
5223 or "change", and irrelevant on all other events) should be reworked
5224 to instead negatively check for "remove" only (i.e. considering
5225 devices relevant after all event types, except for "remove", which
5226 invalidates the device). Note that this also means that devices
5227 should be considered relevant on "unbind", even though conceptually
5228 this — in some form — invalidates the device. Since the precise
5229 effect of "unbind" is not generically defined, devices should be
5230 considered relevant even after "unbind", however I/O errors
5231 accessing the device should then be handled gracefully.
5232
5233 • Any code that uses device tags for deciding whether a device is
5234 relevant or not most likely needs to be updated to use the new
5235 udev_device_has_current_tag() API (or sd_device_has_current_tag()
5236 in case sd-device is used), to check whether the tag is set at the
5237 moment an uevent is seen (as opposed to the existing
5238 udev_device_has_tag() API which checks if the tag ever existed on
5239 the device, following the API concept redefinition explained
5240 above).
5241
5242 We are very sorry for this breakage and the requirement to update
5243 packages using these interfaces. We'd again like to underline that
5244 this is not caused by systemd/udev changes, but result of a kernel
5245 behaviour change.
5246
5247 * UPCOMING INCOMPATIBILITY: So far most downstream distribution
5248 packages have not retriggered devices once the udev package (or any
5249 auxiliary package installing additional udev rules) is updated. We
5250 intend to work with major distributions to change this, so that
5251 "udevadm trigger -c change" is issued on such upgrades, ensuring that
5252 the updated ruleset is applied to the devices already discovered, so
5253 that (asynchronously) after the upgrade completed the udev database
5254 is consistent with the updated rule set. This means udev rules must
5255 be ready to be retriggered with a "change" action any time, and
5256 result in correct and complete udev database entries. While the
5257 majority of udev rule files known to us currently get this right,
5258 some don't. Specifically, there are udev rules files included in
5259 various packages that only set udev properties on the "add" action,
5260 but do not handle the "change" action. If a device matching those
5261 rules is retriggered with the "change" action (as is intended here)
5262 it would suddenly lose the relevant properties. This always has been
5263 problematic, but as soon as all udev devices are triggered on relevant
5264 package upgrades this will become particularly so. It is strongly
5265 recommended to fix offending rules so that they can handle a "change"
5266 action at any time, and acquire all necessary udev properties even
5267 then. Or in other words: the header guard mentioned above
5268 (ACTION=="remove",GOTO="xyz_end") is the correct approach to handle
5269 this, as it makes sure rules are rerun on "change" correctly, and
5270 accumulate the correct and complete set of udev properties. udev rule
5271 definitions that cannot handle "change" events being triggered at
5272 arbitrary times should be considered buggy.
5273
5274 * The MountAPIVFS= service file setting now defaults to on if
5275 RootImage= and RootDirectory= are used, which means that with those
5276 two settings /proc/, /sys/ and /dev/ are automatically properly set
5277 up for services. Previous behaviour may be restored by explicitly
5278 setting MountAPIVFS=off.
5279
5280 * Since PAM 1.2.0 (2015) configuration snippets may be placed in
5281 /usr/lib/pam.d/ in addition to /etc/pam.d/. If a file exists in the
5282 latter it takes precedence over the former, similar to how most of
5283 systemd's own configuration is handled. Given that PAM stack
5284 definitions are primarily put together by OS vendors/distributions
5285 (though possibly overridden by users), this systemd release moves its
5286 own PAM stack configuration for the "systemd-user" PAM service (i.e.
5287 for the PAM session invoked by the per-user user@.service instance)
5288 from /etc/pam.d/ to /usr/lib/pam.d/. We recommend moving all
5289 packages' vendor versions of their PAM stack definitions from
5290 /etc/pam.d/ to /usr/lib/pam.d/, but if such OS-wide migration is not
5291 desired the location to which systemd installs its PAM stack
5292 configuration may be changed via the -Dpamconfdir Meson option.
5293
5294 * The runtime dependencies on libqrencode, libpcre2, libidn/libidn2,
5295 libpwquality and libcryptsetup have been changed to be based on
5296 dlopen(): instead of regular dynamic library dependencies declared in
5297 the binary ELF headers, these libraries are now loaded on demand
5298 only, if they are available. If the libraries cannot be found the
5299 relevant operations will fail gracefully, or a suitable fallback
5300 logic is chosen. This is supposed to be useful for general purpose
5301 distributions, as it allows minimizing the list of dependencies the
5302 systemd packages pull in, permitting building of more minimal OS
5303 images, while still making use of these "weak" dependencies should
5304 they be installed. Since many package managers automatically
5305 synthesize package dependencies from ELF shared library dependencies,
5306 some additional manual packaging work has to be done now to replace
5307 those (slightly downgraded from "required" to "recommended" or
5308 whatever is conceptually suitable for the package manager). Note that
5309 this change does not alter build-time behaviour: as before the
5310 build-time dependencies have to be installed during build, even if
5311 they now are optional during runtime.
5312
5313 * sd-event.h gained a new call sd_event_add_time_relative() for
5314 installing timers relative to the current time. This is mostly a
5315 convenience wrapper around the pre-existing sd_event_add_time() call
5316 which installs absolute timers.
5317
5318 * sd-event event sources may now be placed in a new "exit-on-failure"
5319 mode, which may be controlled via the new
5320 sd_event_source_get_exit_on_failure() and
5321 sd_event_source_set_exit_on_failure() functions. If enabled, any
5322 failure returned by the event source handler functions will result in
5323 exiting the event loop (unlike the default behaviour of just
5324 disabling the event source but continuing with the event loop). This
5325 feature is useful to set for all event sources that define "primary"
5326 program behaviour (where failure should be fatal) in contrast to
5327 "auxiliary" behaviour (where failure should remain local).
5328
5329 * Most event source types sd-event supports now accept a NULL handler
5330 function, in which case the event loop is exited once the event
5331 source is to be dispatched, using the userdata pointer — converted to
5332 a signed integer — as exit code of the event loop. Previously this
5333 was supported for IO and signal event sources already. Exit event
5334 sources still do not support this (simply because it makes little
5335 sense there, as the event loop is already exiting when they are
5336 dispatched).
5337
5338 * A new per-unit setting RootImageOptions= has been added which allows
5339 tweaking the mount options for any file system mounted as effect of
5340 the RootImage= setting.
5341
5342 * Another new per-unit setting MountImages= has been added, that allows
5343 mounting additional disk images into the file system tree accessible
5344 to the service.
5345
5346 * Timer units gained a new FixedRandomDelay= boolean setting. If
5347 enabled, the random delay configured with RandomizedDelaySec= is
5348 selected in a way that is stable on a given system (though still
5349 different for different units).
5350
5351 * Socket units gained a new setting Timestamping= that takes "us", "ns"
5352 or "off". This controls the SO_TIMESTAMP/SO_TIMESTAMPNS socket
5353 options.
5354
5355 * systemd-repart now generates JSON output when requested with the new
5356 --json= switch.
5357
5358 * systemd-machined's OpenMachineShell() bus call will now pass
5359 additional policy metadata data fields to the PolicyKit
5360 authentication request.
5361
5362 * systemd-tmpfiles gained a new -E switch, which is equivalent to
5363 --exclude-prefix=/dev --exclude-prefix=/proc --exclude=/run
5364 --exclude=/sys. It's particularly useful in combination with --root=,
5365 when operating on OS trees that do not have any of these four runtime
5366 directories mounted, as this means no files below these subtrees are
5367 created or modified, since those mount points should probably remain
5368 empty.
5369
5370 * systemd-tmpfiles gained a new --image= switch which is like --root=,
5371 but takes a disk image instead of a directory as argument. The
5372 specified disk image is mounted inside a temporary mount namespace
5373 and the tmpfiles.d/ drop-ins stored in the image are executed and
5374 applied to the image. systemd-sysusers similarly gained a new
5375 --image= switch, that allows the sysusers.d/ drop-ins stored in the
5376 image to be applied onto the image.
5377
5378 * Similarly, the journalctl command also gained an --image= switch,
5379 which is a quick one-step solution to look at the log data included
5380 in OS disk images.
5381
5382 * journalctl's --output=cat option (which outputs the log content
5383 without any metadata, just the pure text messages) will now make use
5384 of terminal colors when run on a suitable terminal, similarly to the
5385 other output modes.
5386
5387 * JSON group records now support a "description" string that may be
5388 used to add a human-readable textual description to such groups. This
5389 is supposed to match the user's GECOS field which traditionally
5390 didn't have a counterpart for group records.
5391
5392 * The "systemd-dissect" tool that may be used to inspect OS disk images
5393 and that was previously installed to /usr/lib/systemd/ has now been
5394 moved to /usr/bin/, reflecting its updated status of an officially
5395 supported tool with a stable interface. It gained support for a new
5396 --mkdir switch which when combined with --mount has the effect of
5397 creating the directory to mount the image to if it is missing
5398 first. It also gained two new commands --copy-from and --copy-to for
5399 copying files and directories in and out of an OS image without the
5400 need to manually mount it. It also acquired support for a new option
5401 --json= to generate JSON output when inspecting an OS image.
5402
5403 * The cgroup2 file system is now mounted with the
5404 "memory_recursiveprot" mount option, supported since kernel 5.7. This
5405 means that the MemoryLow= and MemoryMin= unit file settings now apply
5406 recursively to whole subtrees.
5407
5408 * systemd-homed now defaults to using the btrfs file system — if
5409 available — when creating home directories in LUKS volumes. This may
5410 be changed with the DefaultFileSystemType= setting in homed.conf.
5411 It's now the default file system in various major distributions and
5412 has the major benefit for homed that it can be grown and shrunk while
5413 mounted, unlike the other contenders ext4 and xfs, which can both be
5414 grown online, but not shrunk (in fact xfs is the technically most
5415 limited option here, as it cannot be shrunk at all).
5416
5417 * JSON user records managed by systemd-homed gained support for
5418 "recovery keys". These are basically secondary passphrases that can
5419 unlock user accounts/home directories. They are computer-generated
5420 rather than user-chosen, and typically have greater entropy.
5421 homectl's --recovery-key= option may be used to add a recovery key to
5422 a user account. The generated recovery key is displayed as a QR code,
5423 so that it can be scanned to be kept in a safe place. This feature is
5424 particularly useful in combination with systemd-homed's support for
5425 FIDO2 or PKCS#11 authentication, as a secure fallback in case the
5426 security tokens are lost. Recovery keys may be entered wherever the
5427 system asks for a password.
5428
5429 * systemd-homed now maintains a "dirty" flag for each LUKS encrypted
5430 home directory which indicates that a home directory has not been
5431 deactivated cleanly when offline. This flag is useful to identify
5432 home directories for which the offline discard logic did not run when
5433 offlining, and where it would be a good idea to log in again to catch
5434 up.
5435
5436 * systemctl gained a new parameter --timestamp= which may be used to
5437 change the style in which timestamps are output, i.e. whether to show
5438 them in local timezone or UTC, or whether to show µs granularity.
5439
5440 * Alibaba's "pouch" container manager is now detected by
5441 systemd-detect-virt, ConditionVirtualization= and similar
5442 constructs. Similar, they now also recognize IBM PowerVM machine
5443 virtualization.
5444
5445 * systemd-nspawn has been reworked to use the /run/host/incoming/ as
5446 place to use for propagating external mounts into the
5447 container. Similarly /run/host/notify is now used as the socket path
5448 for container payloads to communicate with the container manager
5449 using sd_notify(). The container manager now uses the
5450 /run/host/inaccessible/ directory to place "inaccessible" file nodes
5451 of all relevant types which may be used by the container payload as
5452 bind mount source to over-mount inodes to make them inaccessible.
5453 /run/host/container-manager will now be initialized with the same
5454 string as the $container environment variable passed to the
5455 container's PID 1. /run/host/container-uuid will be initialized with
5456 the same string as $container_uuid. This means the /run/host/
5457 hierarchy is now the primary way to make host resources available to
5458 the container. The Container Interface documents these new files and
5459 directories:
5460
5461 https://systemd.io/CONTAINER_INTERFACE
5462
5463 * Support for the "ConditionNull=" unit file condition has been
5464 deprecated and undocumented for 6 years. systemd started to warn
5465 about its use 1.5 years ago. It has now been removed entirely.
5466
5467 * sd-bus.h gained a new API call sd_bus_error_has_names(), which takes
5468 a sd_bus_error struct and a list of error names, and checks if the
5469 error matches one of these names. It's a convenience wrapper that is
5470 useful in cases where multiple errors shall be handled the same way.
5471
5472 * A new system call filter list "@known" has been added, that contains
5473 all system calls known at the time systemd was built.
5474
5475 * Behaviour of system call filter allow lists has changed slightly:
5476 system calls that are contained in @known will result in EPERM by
5477 default, while those not contained in it result in ENOSYS. This
5478 should improve compatibility because known system calls will thus be
5479 communicated as prohibited, while unknown (and thus newer ones) will
5480 be communicated as not implemented, which hopefully has the greatest
5481 chance of triggering the right fallback code paths in client
5482 applications.
5483
5484 * "systemd-analyze syscall-filter" will now show two separate sections
5485 at the bottom of the output: system calls known during systemd build
5486 time but not included in any of the filter groups shown above, and
5487 system calls defined on the local kernel but known during systemd
5488 build time.
5489
5490 * If the $SYSTEMD_LOG_SECCOMP=1 environment variable is set for
5491 systemd-nspawn all system call filter violations will be logged by
5492 the kernel (audit). This is useful for tracking down system calls
5493 invoked by container payloads that are prohibited by the container's
5494 system call filter policy.
5495
5496 * If the $SYSTEMD_SECCOMP=0 environment variable is set for
5497 systemd-nspawn (and other programs that use seccomp) all seccomp
5498 filtering is turned off.
5499
5500 * Two new unit file settings ProtectProc= and ProcSubset= have been
5501 added that expose the hidepid= and subset= mount options of procfs.
5502 All processes of the unit will only see processes in /proc that are
5503 are owned by the unit's user. This is an important new sandboxing
5504 option that is recommended to be set on all system services. All
5505 long-running system services that are included in systemd itself set
5506 this option now. This option is only supported on kernel 5.8 and
5507 above, since the hidepid= option supported on older kernels was not a
5508 per-mount option but actually applied to the whole PID namespace.
5509
5510 * Socket units gained a new boolean setting FlushPending=. If enabled
5511 all pending socket data/connections are flushed whenever the socket
5512 unit enters the "listening" state, i.e. after the associated service
5513 exited.
5514
5515 * The unit file setting NUMAMask= gained a new "all" value: when used,
5516 all existing NUMA nodes are added to the NUMA mask.
5517
5518 * A new "credentials" logic has been added to system services. This is
5519 a simple mechanism to pass privileged data to services in a safe and
5520 secure way. It's supposed to be used to pass per-service secret data
5521 such as passwords or cryptographic keys but also associated less
5522 private information such as user names, certificates, and similar to
5523 system services. Each credential is identified by a short user-chosen
5524 name and may contain arbitrary binary data. Two new unit file
5525 settings have been added: SetCredential= and LoadCredential=. The
5526 former allows setting a credential to a literal string, the latter
5527 sets a credential to the contents of a file (or data read from a
5528 user-chosen AF_UNIX stream socket). Credentials are passed to the
5529 service via a special credentials directory, one file for each
5530 credential. The path to the credentials directory is passed in a new
5531 $CREDENTIALS_DIRECTORY environment variable. Since the credentials
5532 are passed in the file system they may be easily referenced in
5533 ExecStart= command lines too, thus no explicit support for the
5534 credentials logic in daemons is required (though ideally daemons
5535 would look for the bits they need in $CREDENTIALS_DIRECTORY
5536 themselves automatically, if set). The $CREDENTIALS_DIRECTORY is
5537 backed by unswappable memory if privileges allow it, immutable if
5538 privileges allow it, is accessible only to the service's UID, and is
5539 automatically destroyed when the service stops.
5540
5541 * systemd-nspawn supports the same credentials logic. It can both
5542 consume credentials passed to it via the aforementioned
5543 $CREDENTIALS_DIRECTORY protocol as well as pass these credentials on
5544 to its payload. The service manager/PID 1 has been updated to match
5545 this: it can also accept credentials from the container manager that
5546 invokes it (in fact: any process that invokes it), and passes them on
5547 to its services. Thus, credentials can be propagated recursively down
5548 the tree: from a system's service manager to a systemd-nspawn
5549 service, to the service manager that runs as container payload and to
5550 the service it runs below. Credentials may also be added on the
5551 systemd-nspawn command line, using new --set-credential= and
5552 --load-credential= command line switches that match the
5553 aforementioned service settings.
5554
5555 * systemd-repart gained new settings Format=, Encrypt=, CopyFiles= in
5556 the partition drop-ins which may be used to format/LUKS
5557 encrypt/populate any created partitions. The partitions are
5558 encrypted/formatted/populated before they are registered in the
5559 partition table, so that they appear atomically: either the
5560 partitions do not exist yet or they exist fully encrypted, formatted,
5561 and populated — there is no time window where they are
5562 "half-initialized". Thus the system is robust to abrupt shutdown: if
5563 the tool is terminated half-way during its operations on next boot it
5564 will start from the beginning.
5565
5566 * systemd-repart's --size= operation gained a new "auto" value. If
5567 specified, and operating on a loopback file it is automatically sized
5568 to the minimal size the size constraints permit. This is useful to
5569 use "systemd-repart" as an image builder for minimally sized images.
5570
5571 * systemd-resolved now gained a third IPC interface for requesting name
5572 resolution: besides D-Bus and local DNS to 127.0.0.53 a Varlink
5573 interface is now supported. The nss-resolve NSS module has been
5574 modified to use this new interface instead of D-Bus. Using Varlink
5575 has a major benefit over D-Bus: it works without a broker service,
5576 and thus already during earliest boot, before the dbus daemon has
5577 been started. This means name resolution via systemd-resolved now
5578 works at the same time systemd-networkd operates: from earliest boot
5579 on, including in the initrd.
5580
5581 * systemd-resolved gained support for a new DNSStubListenerExtra=
5582 configuration file setting which may be used to specify additional IP
5583 addresses the built-in DNS stub shall listen on, in addition to the
5584 main one on 127.0.0.53:53.
5585
5586 * Name lookups issued via systemd-resolved's D-Bus and Varlink
5587 interfaces (and thus also via glibc NSS if nss-resolve is used) will
5588 now honour a trailing dot in the hostname: if specified the search
5589 path logic is turned off. Thus "resolvectl query foo." is now
5590 equivalent to "resolvectl query --search=off foo.".
5591
5592 * systemd-resolved gained a new D-Bus property "ResolvConfMode" that
5593 exposes how /etc/resolv.conf is currently managed: by resolved (and
5594 in which mode if so) or another subsystem. "resolvctl" will display
5595 this property in its status output.
5596
5597 * The resolv.conf snippets systemd-resolved provides will now set "."
5598 as the search domain if no other search domain is known. This turns
5599 off the derivation of an implicit search domain by nss-dns for the
5600 hostname, when the hostname is set to an FQDN. This change is done to
5601 make nss-dns using resolv.conf provided by systemd-resolved behave
5602 more similarly to nss-resolve.
5603
5604 * systemd-tmpfiles' file "aging" logic (i.e. the automatic clean-up of
5605 /tmp/ and /var/tmp/ based on file timestamps) now looks at the
5606 "birth" time (btime) of a file in addition to the atime, mtime, and
5607 ctime.
5608
5609 * systemd-analyze gained a new verb "capability" that lists all known
5610 capabilities by the systemd build and by the kernel.
5611
5612 * If a file /usr/lib/clock-epoch exists, PID 1 will read its mtime and
5613 advance the system clock to it at boot if it is noticed to be before
5614 that time. Previously, PID 1 would only advance the time to an epoch
5615 time that is set during build-time. With this new file OS builders
5616 can change this epoch timestamp on individual OS images without
5617 having to rebuild systemd.
5618
5619 * systemd-logind will now listen to the KEY_RESTART key from the Linux
5620 input layer and reboot the system if it is pressed, similarly to how
5621 it already handles KEY_POWER, KEY_SUSPEND or KEY_SLEEP. KEY_RESTART
5622 was originally defined in the Multimedia context (to restart playback
5623 of a song or film), but is now primarily used in various embedded
5624 devices for "Reboot" buttons. Accordingly, systemd-logind will now
5625 honour it as such. This may configured in more detail via the new
5626 HandleRebootKey= and RebootKeyIgnoreInhibited=.
5627
5628 * systemd-nspawn/systemd-machined will now reconstruct hardlinks when
5629 copying OS trees, for example in "systemd-nspawn --ephemeral",
5630 "systemd-nspawn --template=", "machinectl clone" and similar. This is
5631 useful when operating with OSTree images, which use hardlinks heavily
5632 throughout, and where such copies previously resulting in "exploding"
5633 hardlinks.
5634
5635 * systemd-nspawn's --console= setting gained support for a new
5636 "autopipe" value, which is identical to "interactive" when invoked on
5637 a TTY, and "pipe" otherwise.
5638
5639 * systemd-networkd's .network files gained support for explicitly
5640 configuring the multicast membership entries of bridge devices in the
5641 [BridgeMDB] section. It also gained support for the PIE queuing
5642 discipline in the [FlowQueuePIE] sections.
5643
5644 * systemd-networkd's .netdev files may now be used to create "BareUDP"
5645 tunnels, configured in the new [BareUDP] setting.
5646
5647 * systemd-networkd's Gateway= setting in .network files now accepts the
5648 special values "_dhcp4" and "_ipv6ra" to configure additional,
5649 locally defined, explicit routes to the gateway acquired via DHCP or
5650 IPv6 Router Advertisements. The old setting "_dhcp" is deprecated,
5651 but still accepted for backwards compatibility.
5652
5653 * systemd-networkd's [IPv6PrefixDelegation] section and
5654 IPv6PrefixDelegation= options have been renamed as [IPv6SendRA] and
5655 IPv6SendRA= (the old names are still accepted for backwards
5656 compatibility).
5657
5658 * systemd-networkd's .network files gained the DHCPv6PrefixDelegation=
5659 boolean setting in [Network] section. If enabled, the delegated prefix
5660 gained by another link will be configured, and an address within the
5661 prefix will be assigned.
5662
5663 * systemd-networkd's .network files gained the Announce= boolean setting
5664 in [DHCPv6PrefixDelegation] section. When enabled, the delegated
5665 prefix will be announced through IPv6 router advertisement (IPv6 RA).
5666 The setting is enabled by default.
5667
5668 * VXLAN tunnels may now be marked as independent of any underlying
5669 network interface via the new Independent= boolean setting.
5670
5671 * systemctl gained support for two new verbs: "service-log-level" and
5672 "service-log-target" may be used on services that implement the
5673 generic org.freedesktop.LogControl1 D-Bus interface to dynamically
5674 adjust the log level and target. All of systemd's long-running
5675 services support this now, but ideally all system services would
5676 implement this interface to make the system more uniformly
5677 debuggable.
5678
5679 * The SystemCallErrorNumber= unit file setting now accepts the new
5680 "kill" and "log" actions, in addition to arbitrary error number
5681 specifications as before. If "kill" the processes are killed on the
5682 event, if "log" the offending system call is audit logged.
5683
5684 * A new SystemCallLog= unit file setting has been added that accepts a
5685 list of system calls that shall be logged about (audit).
5686
5687 * The OS image dissection logic (as used by RootImage= in unit files or
5688 systemd-nspawn's --image= switch) has gained support for identifying
5689 and mounting explicit /usr/ partitions, which are now defined in the
5690 discoverable partition specification. This should be useful for
5691 environments where the root file system is
5692 generated/formatted/populated dynamically on first boot and combined
5693 with an immutable /usr/ tree that is supplied by the vendor.
5694
5695 * In the final phase of shutdown, within the systemd-shutdown binary
5696 we'll now try to detach MD devices (i.e software RAID) in addition to
5697 loopback block devices and DM devices as before. This is supposed to
5698 be a safety net only, in order to increase robustness if things go
5699 wrong. Storage subsystems are expected to properly detach their
5700 storage volumes during regular shutdown already (or in case of
5701 storage backing the root file system: in the initrd hook we return to
5702 later).
5703
5704 * If the SYSTEMD_LOG_TID environment variable is set all systemd tools
5705 will now log the thread ID in their log output. This is useful when
5706 working with heavily threaded programs.
5707
5708 * If the SYSTEMD_RDRAND environment variable is set to "0", systemd will
5709 not use the RDRAND CPU instruction. This is useful in environments
5710 such as replay debuggers where non-deterministic behaviour is not
5711 desirable.
5712
5713 * The autopaging logic in systemd's various tools (such as systemctl)
5714 has been updated to turn on "secure" mode in "less"
5715 (i.e. $LESSECURE=1) if execution in a "sudo" environment is
5716 detected. This disables invoking external programs from the pager,
5717 via the pipe logic. This behaviour may be overridden via the new
5718 $SYSTEMD_PAGERSECURE environment variable.
5719
5720 * Units which have resource limits (.service, .mount, .swap, .slice,
5721 .socket, and .slice) gained new configuration settings
5722 ManagedOOMSwap=, ManagedOOMMemoryPressure=, and
5723 ManagedOOMMemoryPressureLimitPercent= that specify resource pressure
5724 limits and optional action taken by systemd-oomd.
5725
5726 * A new service systemd-oomd has been added. It monitors resource
5727 contention for selected parts of the unit hierarchy using the PSI
5728 information reported by the kernel, and kills processes when memory
5729 or swap pressure is above configured limits. This service is only
5730 enabled by default in developer mode (see below) and should be
5731 considered a preview in this release. Behaviour details and option
5732 names are subject to change without the usual backwards-compatibility
5733 promises.
5734
5735 * A new helper oomctl has been added to introspect systemd-oomd state.
5736 It is only enabled by default in developer mode and should be
5737 considered a preview without the usual backwards-compatibility
5738 promises.
5739
5740 * New meson option -Dcompat-mutable-uid-boundaries= has been added. If
5741 enabled, systemd reads the system UID boundaries from /etc/login.defs
5742 at runtime, instead of using the built-in values selected during
5743 build. This is an option to improve compatibility for upgrades from
5744 old systems. It's strongly recommended not to make use of this
5745 functionality on new systems (or even enable it during build), as it
5746 makes something runtime-configurable that is mostly an implementation
5747 detail of the OS, and permits avoidable differences in deployments
5748 that create all kinds of problems in the long run.
5749
5750 * New meson option '-Dmode=developer|release' has been added. When
5751 'developer', additional checks and features are enabled that are
5752 relevant during upstream development, e.g. verification that
5753 semi-automatically-generated documentation has been properly updated
5754 following API changes. Those checks are considered hints for
5755 developers and are not actionable in downstream builds. In addition,
5756 extra features that are not ready for general consumption may be
5757 enabled in developer mode. It is thus recommended to set
5758 '-Dmode=release' in end-user and distro builds.
5759
5760 * systemd-cryptsetup gained support for processing detached LUKS
5761 headers specified on the kernel command line via the header=
5762 parameter of the luks.options= kernel command line option. The same
5763 device/path syntax as for key files is supported for header files
5764 like this.
5765
5766 * The "net_id" built-in of udev has been updated to ignore ACPI _SUN
5767 slot index data for devices that are connected through a PCI bridge
5768 where the _SUN index is associated with the bridge instead of the
5769 network device itself. Previously this would create ambiguous device
5770 naming if multiple network interfaces were connected to the same PCI
5771 bridge. Since this is a naming scheme incompatibility on systems that
5772 possess hardware like this it has been introduced as new naming
5773 scheme "v247". The previous scheme can be selected via the
5774 "net.naming-scheme=v245" kernel command line parameter.
5775
5776 * ConditionFirstBoot= semantics have been modified to be safe towards
5777 abnormal system power-off during first boot. Specifically, the
5778 "systemd-machine-id-commit.service" service now acts as boot
5779 milestone indicating when the first boot process is sufficiently
5780 complete in order to not consider the next following boot also a
5781 first boot. If the system is reset before this unit is reached the
5782 first time, the next boot will still be considered a first boot; once
5783 it has been reached, no further boots will be considered a first
5784 boot. The "first-boot-complete.target" unit now acts as official hook
5785 point to order against this. If a service shall be run on every boot
5786 until the first boot fully succeeds it may thus be ordered before
5787 this target unit (and pull it in) and carry ConditionFirstBoot=
5788 appropriately.
5789
5790 * bootctl's set-default and set-oneshot commands now accept the three
5791 special strings "@default", "@oneshot", "@current" in place of a boot
5792 entry id. These strings are resolved to the current default and
5793 oneshot boot loader entry, as well as the currently booted one. Thus
5794 a command "bootctl set-default @current" may be used to make the
5795 currently boot menu item the new default for all subsequent boots.
5796
5797 * "systemctl edit" has been updated to show the original effective unit
5798 contents in commented form in the text editor.
5799
5800 * Units in user mode are now segregated into three new slices:
5801 session.slice (units that form the core of graphical session),
5802 app.slice ("normal" user applications), and background.slice
5803 (low-priority tasks). Unless otherwise configured, user units are
5804 placed in app.slice. The plan is to add resource limits and
5805 protections for the different slices in the future.
5806
5807 * New GPT partition types for RISCV32/64 for the root and /usr
5808 partitions, and their associated Verity partitions have been defined,
5809 and are now understood by systemd-gpt-auto-generator, and the OS
5810 image dissection logic.
5811
5812 Contributions from: Adolfo Jayme Barrientos, afg, Alec Moskvin, Alyssa
5813 Ross, Amitanand Chikorde, Andrew Hangsleben, Anita Zhang, Ansgar
5814 Burchardt, Arian van Putten, Aurelien Jarno, Axel Rasmussen, bauen1,
5815 Beniamino Galvani, Benjamin Berg, Bjørn Mork, brainrom, Chandradeep
5816 Dey, Charles Lee, Chris Down, Christian Göttsche, Christof Efkemann,
5817 Christoph Ruegge, Clemens Gruber, Daan De Meyer, Daniele Medri, Daniel
5818 Mack, Daniel Rusek, Dan Streetman, David Tardon, Dimitri John Ledkov,
5819 Dmitry Borodaenko, Elias Probst, Elisei Roca, ErrantSpore, Etienne
5820 Doms, Fabrice Fontaine, fangxiuning, Felix Riemann, Florian Klink,
5821 Franck Bui, Frantisek Sumsal, fwSmit, George Rawlinson, germanztz,
5822 Gibeom Gwon, Glen Whitney, Gogo Gogsi, Göran Uddeborg, Grant Mathews,
5823 Hans de Goede, Hans Ulrich Niedermann, Haochen Tong, Harald Seiler,
5824 huangyong, Hubert Kario, igo95862, Ikey Doherty, Insun Pyo, Jan Chren,
5825 Jan Schlüter, Jérémy Nouhaud, Jian-Hong Pan, Joerg Behrmann, Jonathan
5826 Lebon, Jörg Thalheim, Josh Brobst, Juergen Hoetzel, Julien Humbert,
5827 Kai-Chuan Hsieh, Kairui Song, Kamil Dudka, Kir Kolyshkin, Kristijan
5828 Gjoshev, Kyle Huey, Kyle Russell, Lee Whalen, Lennart Poettering,
5829 lichangze, Luca Boccassi, Lucas Werkmeister, Luca Weiss, Marc
5830 Kleine-Budde, Marco Wang, Martin Wilck, Marti Raudsepp, masmullin2000,
5831 Máté Pozsgay, Matt Fenwick, Michael Biebl, Michael Scherer, Michal
5832 Koutný, Michal Sekletár, Michal Suchanek, Mikael Szreder, Milo
5833 Casagrande, mirabilos, Mitsuha_QuQ, mog422, Muhammet Kara, Nazar
5834 Vinnichuk, Nicholas Narsing, Nicolas Fella, Njibhu, nl6720, Oğuz Ersen,
5835 Olivier Le Moal, Ondrej Kozina, onlybugreports, Pass Automated Testing
5836 Suite, Pat Coulthard, Pavel Sapezhko, Pedro Ruiz, perry_yuan, Peter
5837 Hutterer, Phaedrus Leeds, PhoenixDiscord, Piotr Drąg, Plan C,
5838 Purushottam choudhary, Rasmus Villemoes, Renaud Métrich, Robert Marko,
5839 Roman Beranek, Ronan Pigott, Roy Chen (陳彥廷), RussianNeuroMancer,
5840 Samanta Navarro, Samuel BF, scootergrisen, Sorin Ionescu, Steve Dodd,
5841 Susant Sahani, Timo Rothenpieler, Tobias Hunger, Tobias Kaufmann, Topi
5842 Miettinen, vanou, Vito Caputo, Weblate, Wen Yang, Whired Planck,
5843 williamvds, Yu, Li-Yu, Yuri Chornoivan, Yu Watanabe, Zbigniew
5844 Jędrzejewski-Szmek, Zmicer Turok, Дамјан Георгиевски
5845
5846 – Warsaw, 2020-11-26
5847
5848 CHANGES WITH 246:
5849
5850 * The service manager gained basic support for cgroup v2 freezer. Units
5851 can now be suspended or resumed either using new systemctl verbs,
5852 freeze and thaw respectively, or via D-Bus.
5853
5854 * PID 1 may now automatically load pre-compiled AppArmor policies from
5855 /etc/apparmor/earlypolicy during early boot.
5856
5857 * The CPUAffinity= setting in service unit files now supports a new
5858 special value "numa" that causes the CPU affinity masked to be set
5859 based on the NUMA mask.
5860
5861 * systemd will now log about all left-over processes remaining in a
5862 unit when the unit is stopped. It will now warn about services using
5863 KillMode=none, as this is generally an unsafe thing to make use of.
5864
5865 * Two new unit file settings
5866 ConditionPathIsEncrypted=/AssertPathIsEncrypted= have been
5867 added. They may be used to check whether a specific file system path
5868 resides on a block device that is encrypted on the block level
5869 (i.e. using dm-crypt/LUKS).
5870
5871 * Another pair of new settings ConditionEnvironment=/AssertEnvironment=
5872 has been added that may be used for simple environment checks. This
5873 is particularly useful when passing in environment variables from a
5874 container manager (or from PAM in case of the systemd --user
5875 instance).
5876
5877 * .service unit files now accept a new setting CoredumpFilter= which
5878 allows configuration of the memory sections coredumps of the
5879 service's processes shall include.
5880
5881 * .mount units gained a new ReadWriteOnly= boolean option. If set
5882 it will not be attempted to mount a file system read-only if mounting
5883 in read-write mode doesn't succeed. An option x-systemd.rw-only is
5884 available in /etc/fstab to control the same.
5885
5886 * .socket units gained a new boolean setting PassPacketInfo=. If
5887 enabled, the kernel will attach additional per-packet metadata to all
5888 packets read from the socket, as an ancillary message. This controls
5889 the IP_PKTINFO, IPV6_RECVPKTINFO, NETLINK_PKTINFO socket options,
5890 depending on socket type.
5891
5892 * .service units gained a new setting RootHash= which may be used to
5893 specify the root hash for verity enabled disk images which are
5894 specified in RootImage=. RootVerity= may be used to specify a path to
5895 the Verity data matching a RootImage= file system. (The latter is
5896 only useful for images that do not contain the Verity data embedded
5897 into the same image that carries a GPT partition table following the
5898 Discoverable Partition Specification). Similarly, systemd-nspawn
5899 gained a new switch --verity-data= that takes a path to a file with
5900 the verity data of the disk image supplied in --image=, if the image
5901 doesn't contain the verity data itself.
5902
5903 * .service units gained a new setting RootHashSignature= which takes
5904 either a base64 encoded PKCS#7 signature of the root hash specified
5905 with RootHash=, or a path to a file to read the signature from. This
5906 allows validation of the root hash against public keys available in
5907 the kernel keyring, and is only supported on recent kernels
5908 (>= 5.4)/libcryptsetup (>= 2.30). A similar switch has been added to
5909 systemd-nspawn and systemd-dissect (--root-hash-sig=). Support for
5910 this mechanism has also been added to systemd-veritysetup.
5911
5912 * .service unit files gained two new options
5913 TimeoutStartFailureMode=/TimeoutStopFailureMode= that may be used to
5914 tune behaviour if a start or stop timeout is hit, i.e. whether to
5915 terminate the service with SIGTERM, SIGABRT or SIGKILL.
5916
5917 * Most options in systemd that accept hexadecimal values prefixed with
5918 0x in additional to the usual decimal notation now also support octal
5919 notation when the 0o prefix is used and binary notation if the 0b
5920 prefix is used.
5921
5922 * Various command line parameters and configuration file settings that
5923 configure key or certificate files now optionally take paths to
5924 AF_UNIX sockets in the file system. If configured that way a stream
5925 connection is made to the socket and the required data read from
5926 it. This is a simple and natural extension to the existing regular
5927 file logic, and permits other software to provide keys or
5928 certificates via simple IPC services, for example when unencrypted
5929 storage on disk is not desired. Specifically, systemd-networkd's
5930 Wireguard and MACSEC key file settings as well as
5931 systemd-journal-gatewayd's and systemd-journal-remote's PEM
5932 key/certificate parameters support this now.
5933
5934 * Unit files, tmpfiles.d/ snippets, sysusers.d/ snippets and other
5935 configuration files that support specifier expansion learnt six new
5936 specifiers: %a resolves to the current architecture, %o/%w/%B/%W
5937 resolve to the various ID fields from /etc/os-release, %l resolves to
5938 the "short" hostname of the system, i.e. the hostname configured in
5939 the kernel truncated at the first dot.
5940
5941 * Support for the .include syntax in unit files has been removed. The
5942 concept has been obsolete for 6 years and we started warning about
5943 its pending removal 2 years ago (also see NEWS file below). It's
5944 finally gone now.
5945
5946 * StandardError= and StandardOutput= in unit files no longer support
5947 the "syslog" and "syslog-console" switches. They were long removed
5948 from the documentation, but will now result in warnings when used,
5949 and be converted to "journal" and "journal+console" automatically.
5950
5951 * If the service setting User= is set to the "nobody" user, a warning
5952 message is now written to the logs (but the value is nonetheless
5953 accepted). Setting User=nobody is unsafe, since the primary purpose
5954 of the "nobody" user is to own all files whose owner cannot be mapped
5955 locally. It's in particular used by the NFS subsystem and in user
5956 namespacing. By running a service under this user's UID it might get
5957 read and even write access to all these otherwise unmappable files,
5958 which is quite likely a major security problem.
5959
5960 * tmpfs mounts automatically created by systemd (/tmp, /run, /dev/shm,
5961 and others) now have a size and inode limits applied (50% of RAM for
5962 /tmp and /dev/shm, 10% of RAM for other mounts, etc.). Please note
5963 that the implicit kernel default is 50% too, so there is no change
5964 in the size limit for /tmp and /dev/shm.
5965
5966 * nss-mymachines lost support for resolution of users and groups, and
5967 now only does resolution of hostnames. This functionality is now
5968 provided by nss-systemd. Thus, the 'mymachines' entry should be
5969 removed from the 'passwd:' and 'group:' lines in /etc/nsswitch.conf
5970 (and 'systemd' added if it is not already there).
5971
5972 * A new kernel command line option systemd.hostname= has been added
5973 that allows controlling the hostname that is initialized early during
5974 boot.
5975
5976 * A kernel command line option "udev.blockdev_read_only" has been
5977 added. If specified all hardware block devices that show up are
5978 immediately marked as read-only by udev. This option is useful for
5979 making sure that a specific boot under no circumstances modifies data
5980 on disk. Use "blockdev --setrw" to undo the effect of this, per
5981 device.
5982
5983 * A new boolean kernel command line option systemd.swap= has been
5984 added, which may be used to turn off automatic activation of swap
5985 devices listed in /etc/fstab.
5986
5987 * New kernel command line options systemd.condition-needs-update= and
5988 systemd.condition-first-boot= have been added, which override the
5989 result of the ConditionNeedsUpdate= and ConditionFirstBoot=
5990 conditions.
5991
5992 * A new kernel command line option systemd.clock-usec= has been added
5993 that allows setting the system clock to the specified time in µs
5994 since Jan 1st, 1970 early during boot. This is in particular useful
5995 in order to make test cases more reliable.
5996
5997 * The fs.suid_dumpable sysctl is set to 2 / "suidsafe". This allows
5998 systemd-coredump to save core files for suid processes. When saving
5999 the core file, systemd-coredump will use the effective uid and gid of
6000 the process that faulted.
6001
6002 * The /sys/module/kernel/parameters/crash_kexec_post_notifiers file is
6003 now automatically set to "Y" at boot, in order to enable pstore
6004 generation for collection with systemd-pstore.
6005
6006 * We provide a set of udev rules to enable auto-suspend on PCI and USB
6007 devices that were tested to correctly support it. Previously, this
6008 was distributed as a set of udev rules, but has now been replaced by
6009 by a set of hwdb entries (and a much shorter udev rule to take action
6010 if the device modalias matches one of the new hwdb entries).
6011
6012 As before, entries are periodically imported from the database
6013 maintained by the ChromiumOS project. If you have a device that
6014 supports auto-suspend correctly and where it should be enabled by
6015 default, please submit a patch that adds it to the database (see
6016 /usr/lib/udev/hwdb.d/60-autosuspend.hwdb).
6017
6018 * systemd-udevd gained the new configuration option timeout_signal= as well
6019 as a corresponding kernel command line option udev.timeout_signal=.
6020 The option can be used to configure the UNIX signal that the main
6021 daemon sends to the worker processes on timeout. Setting the signal
6022 to SIGABRT is useful for debugging.
6023
6024 * .link files managed by systemd-udevd gained options RxFlowControl=,
6025 TxFlowControl=, AutoNegotiationFlowControl= in the [Link] section, in
6026 order to configure various flow control parameters. They also gained
6027 RxMiniBufferSize= and RxJumboBufferSize= in order to configure jumbo
6028 frame ring buffer sizes.
6029
6030 * networkd.conf gained a new boolean setting ManageForeignRoutes=. If
6031 enabled systemd-networkd manages all routes configured by other tools.
6032
6033 * .network files managed by systemd-networkd gained a new section
6034 [SR-IOV], in order to configure SR-IOV capable network devices.
6035
6036 * systemd-networkd's [IPv6Prefix] section in .network files gained a
6037 new boolean setting Assign=. If enabled an address from the prefix is
6038 automatically assigned to the interface.
6039
6040 * systemd-networkd gained a new section [DHCPv6PrefixDelegation] which
6041 controls delegated prefixes assigned by DHCPv6 client. The section
6042 has three settings: SubnetID=, Assign=, and Token=. The setting
6043 SubnetID= allows explicit configuration of the preferred subnet that
6044 systemd-networkd's Prefix Delegation logic assigns to interfaces. If
6045 Assign= is enabled (which is the default) an address from any acquired
6046 delegated prefix is automatically chosen and assigned to the
6047 interface. The setting Token= specifies an optional address generation
6048 mode for Assign=.
6049
6050 * systemd-networkd's [Network] section gained a new setting
6051 IPv4AcceptLocal=. If enabled the interface accepts packets with local
6052 source addresses.
6053
6054 * systemd-networkd gained support for configuring the HTB queuing
6055 discipline in the [HierarchyTokenBucket] and
6056 [HierarchyTokenBucketClass] sections. Similar the "pfifo" qdisc may
6057 be configured in the [PFIFO] section, "GRED" in
6058 [GenericRandomEarlyDetection], "SFB" in [StochasticFairBlue], "cake"
6059 in [CAKE], "PIE" in [PIE], "DRR" in [DeficitRoundRobinScheduler] and
6060 [DeficitRoundRobinSchedulerClass], "BFIFO" in [BFIFO],
6061 "PFIFOHeadDrop" in [PFIFOHeadDrop], "PFIFOFast" in [PFIFOFast], "HHF"
6062 in [HeavyHitterFilter], "ETS" in [EnhancedTransmissionSelection] and
6063 "QFQ" in [QuickFairQueueing] and [QuickFairQueueingClass].
6064
6065 * systemd-networkd gained support for a new Termination= setting in the
6066 [CAN] section for configuring the termination resistor. It also
6067 gained a new ListenOnly= setting for controlling whether to only
6068 listen on CAN interfaces, without interfering with traffic otherwise
6069 (which is useful for debugging/monitoring CAN network
6070 traffic). DataBitRate=, DataSamplePoint=, FDMode=, FDNonISO= have
6071 been added to configure various CAN-FD aspects.
6072
6073 * systemd-networkd's [DHCPv6] section gained a new option WithoutRA=.
6074 When enabled, DHCPv6 will be attempted right-away without requiring an
6075 Router Advertisement packet suggesting it first (i.e. without the 'M'
6076 or 'O' flags set). The [IPv6AcceptRA] section gained a boolean option
6077 DHCPv6Client= that may be used to turn off the DHCPv6 client even if
6078 the RA packets suggest it.
6079
6080 * systemd-networkd's [DHCPv4] section gained a new setting UseGateway=
6081 which may be used to turn off use of the gateway information provided
6082 by the DHCP lease. A new FallbackLeaseLifetimeSec= setting may be
6083 used to configure how to process leases that lack a lifetime option.
6084
6085 * systemd-networkd's [DHCPv4] and [DHCPServer] sections gained a new
6086 setting SendVendorOption= allowing configuration of additional vendor
6087 options to send in the DHCP requests/responses. The [DHCPv6] section
6088 gained a new SendOption= setting for sending arbitrary DHCP
6089 options. RequestOptions= has been added to request arbitrary options
6090 from the server. UserClass= has been added to set the DHCP user class
6091 field.
6092
6093 * systemd-networkd's [DHCPServer] section gained a new set of options
6094 EmitPOP3=/POP3=, EmitSMTP=/SMTP=, EmitLPR=/LPR= for including server
6095 information about these three protocols in the DHCP lease. It also
6096 gained support for including "MUD" URLs ("Manufacturer Usage
6097 Description"). Support for "MUD" URLs was also added to the LLDP
6098 stack, configurable in the [LLDP] section in .network files.
6099
6100 * The Mode= settings in [MACVLAN] and [MACVTAP] now support 'source'
6101 mode. Also, the sections now support a new setting SourceMACAddress=.
6102
6103 * systemd-networkd's .netdev files now support a new setting
6104 VLANProtocol= in the [Bridge] section that allows configuration of
6105 the VLAN protocol to use.
6106
6107 * systemd-networkd supports a new Group= setting in the [Link] section
6108 of the .network files, to control the link group.
6109
6110 * systemd-networkd's [Network] section gained a new
6111 IPv6LinkLocalAddressGenerationMode= setting, which specifies how IPv6
6112 link local address is generated.
6113
6114 * A new default .network file is now shipped that matches TUN/TAP
6115 devices that begin with "vt-" in their name. Such interfaces will
6116 have IP routing onto the host links set up automatically. This is
6117 supposed to be used by VM managers to trivially acquire a network
6118 interface which is fully set up for host communication, simply by
6119 carefully picking an interface name to use.
6120
6121 * systemd-networkd's [DHCPv6] section gained a new setting RouteMetric=
6122 which sets the route priority for routes specified by the DHCP server.
6123
6124 * systemd-networkd's [DHCPv6] section gained a new setting VendorClass=
6125 which configures the vendor class information sent to DHCP server.
6126
6127 * The BlackList= settings in .network files' [DHCPv4] and
6128 [IPv6AcceptRA] sections have been renamed DenyList=. The old names
6129 are still understood to provide compatibility.
6130
6131 * networkctl gained the new "forcerenew" command for forcing all DHCP
6132 server clients to renew their lease. The interface "status" output
6133 will now show numerous additional fields of information about an
6134 interface. There are new "up" and "down" commands to bring specific
6135 interfaces up or down.
6136
6137 * systemd-resolved's DNS= configuration option now optionally accepts a
6138 port number (after ":") and a host name (after "#"). When the host
6139 name is specified, the DNS-over-TLS certificate is validated to match
6140 the specified hostname. Additionally, in case of IPv6 addresses, an
6141 interface may be specified (after "%").
6142
6143 * systemd-resolved may be configured to forward single-label DNS names.
6144 This is not standard-conformant, but may make sense in setups where
6145 public DNS servers are not used.
6146
6147 * systemd-resolved's DNS-over-TLS support gained SNI validation.
6148
6149 * systemd-nspawn's --resolv-conf= switch gained a number of new
6150 supported values. Specifically, options starting with "replace-" are
6151 like those prefixed "copy-" but replace any existing resolv.conf
6152 file. And options ending in "-uplink" and "-stub" can now be used to
6153 propagate other flavours of resolv.conf into the container (as
6154 defined by systemd-resolved).
6155
6156 * The various programs included in systemd can now optionally output
6157 their log messages on stderr prefixed with a timestamp, controlled by
6158 the $SYSTEMD_LOG_TIME environment variable.
6159
6160 * systemctl gained a new "-P" switch that is a shortcut for "--value
6161 --property=…".
6162
6163 * "systemctl list-units" and "systemctl list-machines" no longer hide
6164 their first output column with --no-legend. To hide the first column,
6165 use --plain.
6166
6167 * "systemctl reboot" takes the option "--reboot-argument=".
6168 The optional positional argument to "systemctl reboot" is now
6169 being deprecated in favor of this option.
6170
6171 * systemd-run gained a new switch --slice-inherit. If specified the
6172 unit it generates is placed in the same slice as the systemd-run
6173 process itself.
6174
6175 * systemd-journald gained support for zstd compression of large fields
6176 in journal files. The hash tables in journal files have been hardened
6177 against hash collisions. This is an incompatible change and means
6178 that journal files created with new systemd versions are not readable
6179 with old versions. If the $SYSTEMD_JOURNAL_KEYED_HASH boolean
6180 environment variable for systemd-journald.service is set to 0 this
6181 new hardening functionality may be turned off, so that generated
6182 journal files remain compatible with older journalctl
6183 implementations.
6184
6185 * journalctl will now include a clickable link in the default output for
6186 each log message for which a URL with further documentation is
6187 known. This is only supported on terminal emulators that support
6188 clickable hyperlinks, and is turned off if a pager is used (since
6189 "less" still doesn't support hyperlinks,
6190 unfortunately). Documentation URLs may be included in log messages
6191 either by including a DOCUMENTATION= journal field in it, or by
6192 associating a journal message catalog entry with the log message's
6193 MESSAGE_ID, which then carries a "Documentation:" tag.
6194
6195 * journald.conf gained a new boolean setting Audit= that may be used to
6196 control whether systemd-journald will enable audit during
6197 initialization.
6198
6199 * when systemd-journald's log stream is broken up into multiple lines
6200 because the PID of the sender changed this is indicated in the
6201 generated log records via the _LINE_BREAK=pid-change field.
6202
6203 * journalctl's "-o cat" output mode will now show one or more journal
6204 fields specified with --output-fields= instead of unconditionally
6205 MESSAGE=. This is useful to retrieve a very specific set of fields
6206 without any decoration.
6207
6208 * The sd-journal.h API gained two new functions:
6209 sd_journal_enumerate_available_unique() and
6210 sd_journal_enumerate_available_data() that operate like their
6211 counterparts that lack the _available_ in the name, but skip items
6212 that cannot be read and processed by the local implementation
6213 (i.e. are compressed in an unsupported format or such),
6214
6215 * coredumpctl gained a new --file= switch, matching the same one in
6216 journalctl: a specific journal file may be specified to read the
6217 coredump data from.
6218
6219 * coredumps collected by systemd-coredump may now be compressed using
6220 the zstd algorithm.
6221
6222 * systemd-binfmt gained a new switch --unregister for unregistering all
6223 registered entries at once. This is now invoked automatically at
6224 shutdown, so that binary formats registered with the "F" flag will
6225 not block clean file system unmounting.
6226
6227 * systemd-notify's --pid= switch gained new values: "parent", "self",
6228 "auto" for controlling which PID to send to the service manager: the
6229 systemd-notify process' PID, or the one of the process invoking it.
6230
6231 * systemd-logind's Session bus object learnt a new method call
6232 SetType() for temporarily updating the session type of an already
6233 allocated session. This is useful for upgrading tty sessions to
6234 graphical ones once a compositor is invoked.
6235
6236 * systemd-socket-proxy gained a new switch --exit-idle-time= for
6237 configuring an exit-on-idle time.
6238
6239 * systemd-repart's --empty= setting gained a new value "create". If
6240 specified a new empty regular disk image file is created under the
6241 specified name. Its size may be specified with the new --size=
6242 option. The latter is also supported without the "create" mode, in
6243 order to grow existing disk image files to the specified size. These
6244 two new options are useful when creating or manipulating disk images
6245 instead of operating on actual block devices.
6246
6247 * systemd-repart drop-ins now support a new UUID= setting to control
6248 the UUID to assign to a newly created partition.
6249
6250 * systemd-repart's SizeMin= per-partition parameter now defaults to 10M
6251 instead of 0.
6252
6253 * systemd-repart's Label= setting now support the usual, simple
6254 specifier expansion.
6255
6256 * systemd-homed's LUKS backend gained the ability to discard empty file
6257 system blocks automatically when the user logs out. This is enabled
6258 by default to ensure that home directories take minimal space when
6259 logged out but get full size guarantees when logged in. This may be
6260 controlled with the new --luks-offline-discard= switch to homectl.
6261
6262 * If systemd-homed detects that /home/ is encrypted as a whole it will
6263 now default to the directory or subvolume backends instead of the
6264 LUKS backend, in order to avoid double encryption. The default
6265 storage and file system may now be configured explicitly, too, via
6266 the new /etc/systemd/homed.conf configuration file.
6267
6268 * systemd-homed now supports unlocking home directories with FIDO2
6269 security tokens that support the 'hmac-secret' extension, in addition
6270 to the existing support for PKCS#11 security token unlocking
6271 support. Note that many recent hardware security tokens support both
6272 interfaces. The FIDO2 support is accessible via homectl's
6273 --fido2-device= option.
6274
6275 * homectl's --pkcs11-uri= setting now accepts two special parameters:
6276 if "auto" is specified and only one suitable PKCS#11 security token
6277 is plugged in, its URL is automatically determined and enrolled for
6278 unlocking the home directory. If "list" is specified a brief table of
6279 suitable PKCS#11 security tokens is shown. Similar, the new
6280 --fido2-device= option also supports these two special values, for
6281 automatically selecting and listing suitable FIDO2 devices.
6282
6283 * The /etc/crypttab tmp option now optionally takes an argument
6284 selecting the file system to use. Moreover, the default is now
6285 changed from ext2 to ext4.
6286
6287 * There's a new /etc/crypttab option "keyfile-erase". If specified the
6288 key file listed in the same line is removed after use, regardless if
6289 volume activation was successful or not. This is useful if the key
6290 file is only acquired transiently at runtime and shall be erased
6291 before the system continues to boot.
6292
6293 * There's also a new /etc/crypttab option "try-empty-password". If
6294 specified, before asking the user for a password it is attempted to
6295 unlock the volume with an empty password. This is useful for
6296 installing encrypted images whose password shall be set on first boot
6297 instead of at installation time.
6298
6299 * systemd-cryptsetup will now attempt to load the keys to unlock
6300 volumes with automatically from files in
6301 /etc/cryptsetup-keys.d/<volume>.key and
6302 /run/cryptsetup-keys.d/<volume>.key, if any of these files exist.
6303
6304 * systemd-cryptsetup may now activate Microsoft BitLocker volumes via
6305 /etc/crypttab, during boot.
6306
6307 * logind.conf gained a new RuntimeDirectoryInodesMax= setting to
6308 control the inode limit for the per-user $XDG_RUNTIME_DIR tmpfs
6309 instance.
6310
6311 * A new generator systemd-xdg-autostart-generator has been added. It
6312 generates systemd unit files from XDG autostart .desktop files, and
6313 may be used to let the systemd user instance manage services that are
6314 started automatically as part of the desktop session.
6315
6316 * "bootctl" gained a new verb "reboot-to-firmware" that may be used
6317 to query and change the firmware's 'Reboot Into Firmware Interface'
6318 setup flag.
6319
6320 * systemd-firstboot gained a new switch --kernel-command-line= that may
6321 be used to initialize the /etc/kernel/cmdline file of the image. It
6322 also gained a new switch --root-password-hashed= which is like
6323 --root-password= but accepts a pre-hashed UNIX password as
6324 argument. The new option --delete-root-password may be used to unset
6325 any password for the root user (dangerous!). The --root-shell= switch
6326 may be used to control the shell to use for the root account. A new
6327 --force option may be used to override any already set settings with
6328 the parameters specified on the command line (by default, the tool
6329 will not override what has already been set before, i.e. is purely
6330 incremental).
6331
6332 * systemd-firstboot gained support for a new --image= switch, which is
6333 similar to --root= but accepts the path to a disk image file, on
6334 which it then operates.
6335
6336 * A new sd-path.h API has been added to libsystemd. It provides a
6337 simple API for retrieving various search paths and primary
6338 directories for various resources.
6339
6340 * A new call sd_notify_barrier() has been added to the sd-daemon.h
6341 API. The call will block until all previously sent sd_notify()
6342 messages have been processed by the service manager. This is useful
6343 to remove races caused by a process already having disappeared at the
6344 time a notification message is processed by the service manager,
6345 making correct attribution impossible. The systemd-notify tool will
6346 now make use of this call implicitly, but this can be turned off again
6347 via the new --no-block switch.
6348
6349 * When sending a file descriptor (fd) to the service manager to keep
6350 track of, using the sd_notify() mechanism, a new parameter FDPOLL=0
6351 may be specified. If passed the service manager will refrain from
6352 poll()ing on the file descriptor. Traditionally (and when the
6353 parameter is not specified), the service manager will poll it for
6354 POLLHUP or POLLERR events, and immediately close the fds in that
6355 case.
6356
6357 * The service manager (PID1) gained a new D-Bus method call
6358 SetShowStatus() which may be used to control whether it shall show
6359 boot-time status output on the console. This method has a similar
6360 effect to sending SIGRTMIN+20/SIGRTMIN+21 to PID 1.
6361
6362 * The sd-bus API gained a number of convenience functions that take
6363 va_list arguments rather than "...". For example, there's now
6364 sd_bus_call_methodv() to match sd_bus_call_method(). Those calls make
6365 it easier to build wrappers that accept variadic arguments and want
6366 to pass a ready va_list structure to sd-bus.
6367
6368 * sd-bus vtable entries can have a new SD_BUS_VTABLE_ABSOLUTE_OFFSET
6369 flag which alters how the userdata pointer to pass to the callbacks
6370 is determined. When the flag is set, the offset field is converted
6371 as-is into a pointer, without adding it to the object pointer the
6372 vtable is associated with.
6373
6374 * sd-bus now exposes four new functions:
6375 sd_bus_interface_name_is_valid() + sd_bus_service_name_is_valid() +
6376 sd_bus_member_name_is_valid() + sd_bus_object_path_is_valid() will
6377 validate strings to check if they qualify as various D-Bus concepts.
6378
6379 * The sd-bus API gained the SD_BUS_METHOD_WITH_ARGS(),
6380 SD_BUS_METHOD_WITH_ARGS_OFFSET() and SD_BUS_SIGNAL_WITH_ARGS() macros
6381 that simplify adding argument names to D-Bus methods and signals.
6382
6383 * The man pages for the sd-bus and sd-hwdb APIs have been completed.
6384
6385 * Various D-Bus APIs of systemd daemons now have man pages that
6386 document the methods, signals and properties.
6387
6388 * The expectations on user/group name syntax are now documented in
6389 detail; documentation on how classic home directories may be
6390 converted into home directories managed by homed has been added;
6391 documentation regarding integration of homed/userdb functionality in
6392 desktops has been added:
6393
6394 https://systemd.io/USER_NAMES
6395 https://systemd.io/CONVERTING_TO_HOMED
6396 https://systemd.io/USERDB_AND_DESKTOPS
6397
6398 * Documentation for the on-disk Journal file format has been updated
6399 and has now moved to:
6400
6401 https://systemd.io/JOURNAL_FILE_FORMAT
6402
6403 * The interface for containers (https://systemd.io/CONTAINER_INTERFACE)
6404 has been extended by a set of environment variables that expose
6405 select fields from the host's os-release file to the container
6406 payload. Similarly, host's os-release files can be mounted into the
6407 container underneath /run/host. Together, those mechanisms provide a
6408 standardized way to expose information about the host to the
6409 container payload. Both interfaces are implemented in systemd-nspawn.
6410
6411 * All D-Bus services shipped in systemd now implement the generic
6412 LogControl1 D-Bus API which allows clients to change log level +
6413 target of the service during runtime.
6414
6415 * Only relevant for developers: the mkosi.default symlink has been
6416 dropped from version control. Please create a symlink to one of the
6417 distribution-specific defaults in .mkosi/ based on your preference.
6418
6419 Contributions from: 24bisquitz, Adam Nielsen, Alan Perry, Alexander
6420 Malafeev, Amitanand.Chikorde, Alin Popa, Alvin Šipraga, Amos Bird,
6421 Andreas Rammhold, AndreRH, Andrew Doran, Anita Zhang, Ankit Jain,
6422 antznin, Arnaud Ferraris, Arthur Moraes do Lago, Arusekk, Balaji
6423 Punnuru, Balint Reczey, Bastien Nocera, bemarek, Benjamin Berg,
6424 Benjamin Dahlhoff, Benjamin Robin, Chris Down, Chris Kerr, Christian
6425 Göttsche, Christian Hesse, Christian Oder, Ciprian Hacman, Clinton Roy,
6426 codicodi, Corey Hinshaw, Daan De Meyer, Dana Olson, Dan Callaghan,
6427 Daniel Fullmer, Daniel Rusek, Dan Streetman, Dave Reisner, David
6428 Edmundson, David Wood, Denis Pronin, Diego Escalante Urrelo, Dimitri
6429 John Ledkov, dolphrundgren, duguxy, Einsler Lee, Elisei Roca, Emmanuel
6430 Garette, Eric Anderson, Eric DeVolder, Evgeny Vereshchagin,
6431 ExtinctFire, fangxiuning, Ferran Pallarès Roca, Filipe Brandenburger,
6432 Filippo Falezza, Finn, Florian Klink, Florian Mayer, Franck Bui,
6433 Frantisek Sumsal, gaurav, Georg Müller, Gergely Polonkai, Giedrius
6434 Statkevičius, Gigadoc2, gogogogi, Gaurav Singh, gzjsgdsb, Hans de
6435 Goede, Haochen Tong, ianhi, ignapk, Jakov Smolic, James T. Lee, Jan
6436 Janssen, Jan Klötzke, Jan Palus, Jay Burger, Jeremy Cline, Jérémy
6437 Rosen, Jian-Hong Pan, Jiri Slaby, Joel Shapiro, Joerg Behrmann, Jörg
6438 Thalheim, Jouke Witteveen, Kai-Heng Feng, Kenny Levinsen, Kevin
6439 Kuehler, Kumar Kartikeya Dwivedi, layderv, laydervus, Lénaïc Huard,
6440 Lennart Poettering, Lidong Zhong, Luca Boccassi, Luca BRUNO, Lucas
6441 Werkmeister, Lukas Klingsbo, Lukáš Nykrýn, Łukasz Stelmach, Maciej
6442 S. Szmigiero, MadMcCrow, Marc-André Lureau, Marcel Holtmann, Marc
6443 Kleine-Budde, Martin Hundebøll, Matthew Leeds, Matt Ranostay, Maxim
6444 Fomin, MaxVerevkin, Michael Biebl, Michael Chapman, Michael Gubbels,
6445 Michael Marley, Michał Bartoszkiewicz, Michal Koutný, Michal Sekletár,
6446 Mike Gilbert, Mike Kazantsev, Mikhail Novosyolov, ml, Motiejus Jakštys,
6447 nabijaczleweli, nerdopolis, Niccolò Maggioni, Niklas Hambüchen, Norbert
6448 Lange, Paul Cercueil, pelzvieh, Peter Hutterer, Piero La Terza, Pieter
6449 Lexis, Piotr Drąg, Rafael Fontenelle, Richard Petri, Ronan Pigott, Ross
6450 Lagerwall, Rubens Figueiredo, satmandu, Sean-StarLabs, Sebastian
6451 Jennen, sterlinghughes, Surhud More, Susant Sahani, szb512, Thomas
6452 Haller, Tobias Hunger, Tom, Tomáš Pospíšek, Tomer Shechner, Tom Hughes,
6453 Topi Miettinen, Tudor Roman, Uwe Kleine-König, Valery0xff, Vito Caputo,
6454 Vladimir Panteleev, Vladyslav Tronko, Wen Yang, Yegor Vialov, Yigal
6455 Korman, Yi Gao, YmrDtnJu, Yuri Chornoivan, Yu Watanabe, Zbigniew
6456 Jędrzejewski-Szmek, Zhu Li, Дамјан Георгиевски, наб
6457
6458 – Warsaw, 2020-07-30
6459
6460 CHANGES WITH 245:
6461
6462 * A new tool "systemd-repart" has been added, that operates as an
6463 idempotent declarative repartitioner for GPT partition tables.
6464 Specifically, a set of partitions that must or may exist can be
6465 configured via drop-in files, and during every boot the partition
6466 table on disk is compared with these files, creating missing
6467 partitions or growing existing ones based on configurable relative
6468 and absolute size constraints. The tool is strictly incremental,
6469 i.e. does not delete, shrink or move partitions, but only adds and
6470 grows them. The primary use-case is OS images that ship in minimized
6471 form, that on first boot are grown to the size of the underlying
6472 block device or augmented with additional partitions. For example,
6473 the root partition could be extended to cover the whole disk, or a
6474 swap or /home partitions could be added on first boot. It can also be
6475 used for systems that use an A/B update scheme but ship images with
6476 just the A partition, with B added on first boot. The tool is
6477 primarily intended to be run in the initrd, shortly before
6478 transitioning into the host OS, but can also be run after the
6479 transition took place. It automatically discovers the disk backing
6480 the root file system, and should hence not require any additional
6481 configuration besides the partition definition drop-ins. If no
6482 configuration drop-ins are present, no action is taken.
6483
6484 * A new component "userdb" has been added, along with a small daemon
6485 "systemd-userdbd.service" and a client tool "userdbctl". The framework
6486 allows defining rich user and group records in a JSON format,
6487 extending on the classic "struct passwd" and "struct group"
6488 structures. Various components in systemd have been updated to
6489 process records in this format, including systemd-logind and
6490 pam-systemd. The user records are intended to be extensible, and
6491 allow setting various resource management, security and runtime
6492 parameters that shall be applied to processes and sessions of the
6493 user as they log in. This facility is intended to allow associating
6494 such metadata directly with user/group records so that they can be
6495 produced, extended and consumed in unified form. We hope that
6496 eventually frameworks such as sssd will generate records this way, so
6497 that for the first time resource management and various other
6498 per-user settings can be configured in LDAP directories and then
6499 provided to systemd (specifically to systemd-logind and pam-system)
6500 to apply on login. For further details see:
6501
6502 https://systemd.io/USER_RECORD
6503 https://systemd.io/GROUP_RECORD
6504 https://systemd.io/USER_GROUP_API
6505
6506 * A small new service systemd-homed.service has been added, that may be
6507 used to securely manage home directories with built-in encryption.
6508 The complete user record data is unified with the home directory,
6509 thus making home directories naturally migratable. Its primary
6510 back-end is based on LUKS volumes, but fscrypt, plain directories,
6511 and other storage schemes are also supported. This solves a couple of
6512 problems we saw with traditional ways to manage home directories, in
6513 particular when it comes to encryption. For further discussion of
6514 this, see the video of Lennart's talk at AllSystemsGo! 2019:
6515
6516 https://media.ccc.de/v/ASG2019-164-reinventing-home-directories
6517
6518 For further details about the format and expectations on home
6519 directories this new daemon makes, see:
6520
6521 https://systemd.io/HOME_DIRECTORY
6522
6523 * systemd-journald is now multi-instantiable. In addition to the main
6524 instance systemd-journald.service there's now a template unit
6525 systemd-journald@.service, with each instance defining a new named
6526 log 'namespace' (whose name is specified via the instance part of the
6527 unit name). A new unit file setting LogNamespace= has been added,
6528 taking such a namespace name, that assigns services to the specified
6529 log namespaces. As each log namespace is serviced by its own
6530 independent journal daemon, this functionality may be used to improve
6531 performance and increase isolation of applications, at the price of
6532 losing global message ordering. Each instance of journald has a
6533 separate set of configuration files, with possibly different disk
6534 usage limitations and other settings.
6535
6536 journalctl now takes a new option --namespace= to show logs from a
6537 specific log namespace. The sd-journal.h API gained
6538 sd_journal_open_namespace() for opening the log stream of a specific
6539 log namespace. systemd-journald also gained the ability to exit on
6540 idle, which is useful in the context of log namespaces, as this means
6541 log daemons for log namespaces can be activated automatically on
6542 demand and will stop automatically when no longer used, minimizing
6543 resource usage.
6544
6545 * When systemd-tmpfiles copies a file tree using the 'C' line type it
6546 will now label every copied file according to the SELinux database.
6547
6548 * When systemd/PID 1 detects it is used in the initrd it will now boot
6549 into initrd.target rather than default.target by default. This should
6550 make it simpler to build initrds with systemd as for many cases the
6551 only difference between a host OS image and an initrd image now is
6552 the presence of the /etc/initrd-release file.
6553
6554 * A new kernel command line option systemd.cpu_affinity= is now
6555 understood. It's equivalent to the CPUAffinity= option in
6556 /etc/systemd/system.conf and allows setting the CPU mask for PID 1
6557 itself and the default for all other processes.
6558
6559 * When systemd/PID 1 is reloaded (with systemctl daemon-reload or
6560 equivalent), the SELinux database is now reloaded, ensuring that
6561 sockets and other file system objects are generated taking the new
6562 database into account.
6563
6564 * systemd/PID 1 accepts a new "systemd.show-status=error" setting, and
6565 "quiet" has been changed to imply that instead of
6566 "systemd.show-status=auto". In this mode, only messages about errors
6567 and significant delays in boot are shown on the console.
6568
6569 * The sd-event.h API gained native support for the new Linux "pidfd"
6570 concept. This permits watching processes using file descriptors
6571 instead of PID numbers, which fixes a number of races and makes
6572 process supervision more robust and efficient. All of systemd's
6573 components will now use pidfds if the kernel supports it for process
6574 watching, with the exception of PID 1 itself, unfortunately. We hope
6575 to move PID 1 to exclusively using pidfds too eventually, but this
6576 requires some more kernel work first. (Background: PID 1 watches
6577 processes using waitid() with the P_ALL flag, and that does not play
6578 together nicely with pidfds yet.)
6579
6580 * Closely related to this, the sd-event.h API gained two new calls
6581 sd_event_source_send_child_signal() (for sending a signal to a
6582 watched process) and sd_event_source_get_child_process_own() (for
6583 marking a process so that it is killed automatically whenever the
6584 event source watching it is freed).
6585
6586 * systemd-networkd gained support for configuring Token Bucket Filter
6587 (TBF) parameters in its qdisc configuration support. Similarly,
6588 support for Stochastic Fairness Queuing (SFQ), Controlled-Delay
6589 Active Queue Management (CoDel), and Fair Queue (FQ) has been added.
6590
6591 * systemd-networkd gained support for Intermediate Functional Block
6592 (IFB) network devices.
6593
6594 * systemd-networkd gained support for configuring multi-path IP routes,
6595 using the new MultiPathRoute= setting in the [Route] section.
6596
6597 * systemd-networkd's DHCPv4 client has been updated to support a new
6598 SendDecline= option. If enabled, duplicate address detection is done
6599 after a DHCP offer is received from the server. If a conflict is
6600 detected, the address is declined. The DHCPv4 client also gained
6601 support for a new RouteMTUBytes= setting that allows to configure the
6602 MTU size to be used for routes generated from DHCPv4 leases.
6603
6604 * The PrefixRoute= setting in systemd-networkd's [Address] section of
6605 .network files has been deprecated, and replaced by AddPrefixRoute=,
6606 with its sense inverted.
6607
6608 * The Gateway= setting of [Route] sections of .network files gained
6609 support for a special new value "_dhcp". If set, the configured
6610 static route uses the gateway host configured via DHCP.
6611
6612 * New User= and SuppressPrefixLength= settings have been implemented
6613 for the [RoutingPolicyRule] section of .network files to configure
6614 source routing based on UID ranges and prefix length, respectively.
6615
6616 * The Type= match property of .link files has been generalized to
6617 always match the device type shown by 'networkctl status', even for
6618 devices where udev does not set DEVTYPE=. This allows e.g. Type=ether
6619 to be used.
6620
6621 * sd-bus gained a new API call sd_bus_message_sensitive() that marks a
6622 D-Bus message object as "sensitive". Those objects are erased from
6623 memory when they are freed. This concept is intended to be used for
6624 messages that contain security sensitive data. A new flag
6625 SD_BUS_VTABLE_SENSITIVE has been introduced as well to mark methods
6626 in sd-bus vtables, causing any incoming and outgoing messages of
6627 those methods to be implicitly marked as "sensitive".
6628
6629 * sd-bus gained a new API call sd_bus_message_dump() for dumping the
6630 contents of a message (or parts thereof) to standard output for
6631 debugging purposes.
6632
6633 * systemd-sysusers gained support for creating users with the primary
6634 group named differently than the user.
6635
6636 * systemd-growfs (i.e. the x-systemd.growfs mount option in /etc/fstab)
6637 gained support for growing XFS partitions. Previously it supported
6638 only ext4 and btrfs partitions.
6639
6640 * The support for /etc/crypttab gained a new x-initrd.attach option. If
6641 set, the specified encrypted volume is unlocked already in the
6642 initrd. This concept corresponds to the x-initrd.mount option in
6643 /etc/fstab.
6644
6645 * systemd-cryptsetup gained native support for unlocking encrypted
6646 volumes utilizing PKCS#11 smartcards, i.e. for example to bind
6647 encryption of volumes to YubiKeys. This is exposed in the new
6648 pkcs11-uri= option in /etc/crypttab.
6649
6650 * The /etc/fstab support in systemd now supports two new mount options
6651 x-systemd.{required,wanted}-by=, for explicitly configuring the units
6652 that the specified mount shall be pulled in by, in place of
6653 the usual local-fs.target/remote-fs.target.
6654
6655 * The https://systemd.io/ web site has been relaunched, directly
6656 populated with most of the documentation included in the systemd
6657 repository. systemd also acquired a new logo, thanks to Tobias
6658 Bernard.
6659
6660 * systemd-udevd gained support for managing "alternative" network
6661 interface names, as supported by new Linux kernels. For the first
6662 time this permits assigning multiple (and longer!) names to a network
6663 interface. systemd-udevd will now by default assign the names
6664 generated via all supported naming schemes to each interface. This
6665 may be further tweaked with .link files and the AlternativeName= and
6666 AlternativeNamesPolicy= settings. Other components of systemd have
6667 been updated to support the new alternative names wherever
6668 appropriate. For example, systemd-nspawn will now generate
6669 alternative interface names for the host-facing side of container
6670 veth links based on the full container name without truncation.
6671
6672 * systemd-nspawn interface naming logic has been updated in another way
6673 too: if the main interface name (i.e. as opposed to new-style
6674 "alternative" names) based on the container name is truncated, a
6675 simple hashing scheme is used to give different interface names to
6676 multiple containers whose names all begin with the same prefix. Since
6677 this changes the primary interface names pointing to containers if
6678 truncation happens, the old scheme may still be requested by
6679 selecting an older naming scheme, via the net.naming-scheme= kernel
6680 command line option.
6681
6682 * PrivateUsers= in service files now works in services run by the
6683 systemd --user per-user instance of the service manager.
6684
6685 * A new per-service sandboxing option ProtectClock= has been added that
6686 locks down write access to the system clock. It takes away device
6687 node access to /dev/rtc as well as the system calls that set the
6688 system clock and the CAP_SYS_TIME and CAP_WAKE_ALARM capabilities.
6689 Note that this option does not affect access to auxiliary services
6690 that allow changing the clock, for example access to
6691 systemd-timedated.
6692
6693 * The systemd-id128 tool gained a new "show" verb for listing or
6694 resolving a number of well-known UUIDs/128-bit IDs, currently mostly
6695 GPT partition table types.
6696
6697 * The Discoverable Partitions Specification has been updated to support
6698 /var and /var/tmp partition discovery. Support for this has been
6699 added to systemd-gpt-auto-generator. For details see:
6700
6701 https://systemd.io/DISCOVERABLE_PARTITIONS
6702
6703 * "systemctl list-unit-files" has been updated to show a new column
6704 with the suggested enablement state based on the vendor preset files
6705 for the respective units.
6706
6707 * "systemctl" gained a new option "--with-dependencies". If specified
6708 commands such as "systemctl status" or "systemctl cat" will now show
6709 all specified units along with all units they depend on.
6710
6711 * networkctl gained support for showing per-interface logs in its
6712 "status" output.
6713
6714 * systemd-networkd-wait-online gained support for specifying the maximum
6715 operational state to wait for, and to wait for interfaces to
6716 disappear.
6717
6718 * The [Match] section of .link and .network files now supports a new
6719 option PermanentMACAddress= which may be used to check against the
6720 permanent MAC address of a network device even if a randomized MAC
6721 address is used.
6722
6723 * The [TrafficControlQueueingDiscipline] section in .network files has
6724 been renamed to [NetworkEmulator] with the "NetworkEmulator" prefix
6725 dropped from the individual setting names.
6726
6727 * Any .link and .network files that have an empty [Match] section (this
6728 also includes empty and commented-out files) will now be
6729 rejected. systemd-udev and systemd-networkd started warning about
6730 such files in version 243.
6731
6732 * systemd-logind will now validate access to the operation of changing
6733 the virtual terminal via a polkit action. By default, only users
6734 with at least one session on a local VT are granted permission.
6735
6736 * When systemd sets up PAM sessions that invoked service processes
6737 shall run in, the pam_setcred() API is now invoked, thus permitting
6738 PAM modules to set additional credentials for the processes.
6739
6740 * portablectl attach/detach verbs now accept --now and --enable options
6741 to combine attachment with enablement and invocation, or detachment
6742 with stopping and disablement.
6743
6744 * UPGRADE ISSUE: a bug where some jobs were trimmed as redundant was
6745 fixed, which in turn exposed bugs in unit configuration of services
6746 which have Type=oneshot and should only run once, but do not have
6747 RemainAfterExit=yes set. Without RemainAfterExit=yes, a one-shot
6748 service may be started again after exiting successfully, for example
6749 as a dependency in another transaction. Affected services included
6750 some internal systemd services (most notably
6751 systemd-vconsole-setup.service, which was updated to have
6752 RemainAfterExit=yes), and plymouth-start.service. Please ensure that
6753 plymouth has been suitably updated or patched before upgrading to
6754 this systemd release. See
6755 https://bugzilla.redhat.com/show_bug.cgi?id=1807771 for some
6756 additional discussion.
6757
6758 Contributions from: AJ Bagwell, Alin Popa, Andreas Rammhold, Anita
6759 Zhang, Ansgar Burchardt, Antonio Russo, Arian van Putten, Ashley Davis,
6760 Balint Reczey, Bart Willems, Bastien Nocera, Benjamin Dahlhoff, Charles
6761 (Chas) Williams, cheese1, Chris Down, Chris Murphy, Christian Ehrhardt,
6762 Christian Göttsche, cvoinf, Daan De Meyer, Daniele Medri, Daniel Rusek,
6763 Daniel Shahaf, Dann Frazier, Dan Streetman, Dariusz Gadomski, David
6764 Michael, Dimitri John Ledkov, Emmanuel Bourg, Evgeny Vereshchagin,
6765 ezst036, Felipe Sateler, Filipe Brandenburger, Florian Klink, Franck
6766 Bui, Fran Dieguez, Frantisek Sumsal, Greg "GothAck" Miell, Guilhem
6767 Lettron, Guillaume Douézan-Grard, Hans de Goede, HATAYAMA Daisuke, Iain
6768 Lane, James Buren, Jan Alexander Steffens (heftig), Jérémy Rosen, Jin
6769 Park, Jun'ichi Nomura, Kai Krakow, Kevin Kuehler, Kevin P. Fleming,
6770 Lennart Poettering, Leonid Bloch, Leonid Evdokimov, lothrond, Luca
6771 Boccassi, Lukas K, Lynn Kirby, Mario Limonciello, Mark Deneen, Matthew
6772 Leeds, Michael Biebl, Michal Koutný, Michal Sekletár, Mike Auty, Mike
6773 Gilbert, mtron, nabijaczleweli, Naïm Favier, Nate Jones, Norbert Lange,
6774 Oliver Giles, Paul Davey, Paul Menzel, Peter Hutterer, Piotr Drąg, Rafa
6775 Couto, Raphael, rhn, Robert Scheck, Rocka, Romain Naour, Ryan Attard,
6776 Sascha Dewald, Shengjing Zhu, Slava Kardakov, Spencer Michaels, Sylvain
6777 Plantefeve, Stanislav Angelovič, Susant Sahani, Thomas Haller, Thomas
6778 Schmitt, Timo Schlüßler, Timo Wilken, Tobias Bernard, Tobias Klauser,
6779 Tobias Stoeckmann, Topi Miettinen, tsia, WataruMatsuoka, Wieland
6780 Hoffmann, Wilhelm Schuster, Will Fleming, xduugu, Yong Cong Sin, Yuri
6781 Chornoivan, Yu Watanabe, Zach Smith, Zbigniew Jędrzejewski-Szmek, Zeyu
6782 DONG
6783
6784 – Warsaw, 2020-03-06
6785
6786 CHANGES WITH 244:
6787
6788 * Support for the cpuset cgroups v2 controller has been added.
6789 Processes may be restricted to specific CPUs using the new
6790 AllowedCPUs= setting, and to specific memory NUMA nodes using the new
6791 AllowedMemoryNodes= setting.
6792
6793 * The signal used in restart jobs (as opposed to e.g. stop jobs) may
6794 now be configured using a new RestartKillSignal= setting. This
6795 allows units which signals to request termination to implement
6796 different behaviour when stopping in preparation for a restart.
6797
6798 * "systemctl clean" may now be used also for socket, mount, and swap
6799 units.
6800
6801 * systemd will also read configuration options from the EFI variable
6802 SystemdOptions. This may be used to configure systemd behaviour when
6803 modifying the kernel command line is inconvenient, but configuration
6804 on disk is read too late, for example for the options related to
6805 cgroup hierarchy setup. 'bootctl systemd-efi-options' may be used to
6806 set the EFI variable.
6807
6808 * systemd will now disable printk ratelimits in early boot. This should
6809 allow us to capture more logs from the early boot phase where normal
6810 storage is not available and the kernel ring buffer is used for
6811 logging. Configuration on the kernel command line has higher priority
6812 and overrides the systemd setting.
6813
6814 systemd programs which log to /dev/kmsg directly use internal
6815 ratelimits to prevent runaway logging. (Normally this is only used
6816 during early boot, so in practice this change has very little
6817 effect.)
6818
6819 * Unit files now support top level dropin directories of the form
6820 <unit_type>.d/ (e.g. service.d/) that may be used to add configuration
6821 that affects all corresponding unit files.
6822
6823 * systemctl gained support for 'stop --job-mode=triggering' which will
6824 stop the specified unit and any units which could trigger it.
6825
6826 * Unit status display now includes units triggering and triggered by
6827 the unit being shown.
6828
6829 * The RuntimeMaxSec= setting is now supported by scopes, not just
6830 .service units. This is particularly useful for PAM sessions which
6831 create a scope unit for the user login. systemd.runtime_max_sec=
6832 setting may used with the pam_systemd module to limit the duration
6833 of the PAM session, for example for time-limited logins.
6834
6835 * A new @pkey system call group is now defined to make it easier to
6836 allow-list memory protection syscalls for containers and services
6837 which need to use them.
6838
6839 * systemd-udevd: removed the 30s timeout for killing stale workers on
6840 exit. systemd-udevd now waits for workers to finish. The hard-coded
6841 exit timeout of 30s was too short for some large installations, where
6842 driver initialization could be prematurely interrupted during initrd
6843 processing if the root file system had been mounted and init was
6844 preparing to switch root. If udevd is run without systemd and workers
6845 are hanging while udevd receives an exit signal, udevd will now exit
6846 when udev.event_timeout is reached for the last hanging worker. With
6847 systemd, the exit timeout can additionally be configured using
6848 TimeoutStopSec= in systemd-udevd.service.
6849
6850 * udev now provides a program (fido_id) that identifies FIDO CTAP1
6851 ("U2F")/CTAP2 security tokens based on the usage declared in their
6852 report and descriptor and outputs suitable environment variables.
6853 This replaces the externally maintained allow lists of all known
6854 security tokens that were used previously.
6855
6856 * Automatically generated autosuspend udev rules for allow-listed
6857 devices have been imported from the Chromium OS project. This should
6858 improve power saving with many more devices.
6859
6860 * udev gained a new "CONST{key}=value" setting that allows matching
6861 against system-wide constants without forking a helper binary.
6862 Currently "arch" and "virt" keys are supported.
6863
6864 * udev now opens CDROMs in non-exclusive mode when querying their
6865 capabilities. This should fix issues where other programs trying to
6866 use the CDROM cannot gain access to it, but carries a risk of
6867 interfering with programs writing to the disk, if they did not open
6868 the device in exclusive mode as they should.
6869
6870 * systemd-networkd does not create a default route for IPv4 link local
6871 addressing anymore. The creation of the route was unexpected and was
6872 breaking routing in various cases, but people who rely on it being
6873 created implicitly will need to adjust. Such a route may be requested
6874 with DefaultRouteOnDevice=yes.
6875
6876 Similarly, systemd-networkd will not assign a link-local IPv6 address
6877 when IPv6 link-local routing is not enabled.
6878
6879 * Receive and transmit buffers may now be configured on links with
6880 the new RxBufferSize= and TxBufferSize= settings.
6881
6882 * systemd-networkd may now advertise additional IPv6 routes. A new
6883 [IPv6RoutePrefix] section with Route= and LifetimeSec= options is
6884 now supported.
6885
6886 * systemd-networkd may now configure "next hop" routes using the
6887 [NextHop] section and Gateway= and Id= settings.
6888
6889 * systemd-networkd will now retain DHCP config on restarts by default
6890 (but this may be overridden using the KeepConfiguration= setting).
6891 The default for SendRelease= has been changed to true.
6892
6893 * The DHCPv4 client now uses the OPTION_INFORMATION_REFRESH_TIME option
6894 received from the server.
6895
6896 The client will use the received SIP server list if UseSIP=yes is
6897 set.
6898
6899 The client may be configured to request specific options from the
6900 server using a new RequestOptions= setting.
6901
6902 The client may be configured to send arbitrary options to the server
6903 using a new SendOption= setting.
6904
6905 A new IPServiceType= setting has been added to configure the "IP
6906 service type" value used by the client.
6907
6908 * The DHCPv6 client learnt a new PrefixDelegationHint= option to
6909 request prefix hints in the DHCPv6 solicitation.
6910
6911 * The DHCPv4 server may be configured to send arbitrary options using
6912 a new SendOption= setting.
6913
6914 * The DHCPv4 server may now be configured to emit SIP server list using
6915 the new EmitSIP= and SIP= settings.
6916
6917 * systemd-networkd and networkctl may now renew DHCP leases on demand.
6918 networkctl has a new 'networkctl renew' verb.
6919
6920 * systemd-networkd may now reconfigure links on demand. networkctl
6921 gained two new verbs: "reload" will reload the configuration, and
6922 "reconfigure DEVICE…" will reconfigure one or more devices.
6923
6924 * .network files may now match on SSID and BSSID of a wireless network,
6925 i.e. the access point name and hardware address using the new SSID=
6926 and BSSID= options. networkctl will display the current SSID and
6927 BSSID for wireless links.
6928
6929 .network files may also match on the wireless network type using the
6930 new WLANInterfaceType= option.
6931
6932 * systemd-networkd now includes default configuration that enables
6933 link-local addressing when connected to an ad-hoc wireless network.
6934
6935 * systemd-networkd may configure the Traffic Control queueing
6936 disciplines in the kernel using the new
6937 [TrafficControlQueueingDiscipline] section and Parent=,
6938 NetworkEmulatorDelaySec=, NetworkEmulatorDelayJitterSec=,
6939 NetworkEmulatorPacketLimit=, NetworkEmulatorLossRate=,
6940 NetworkEmulatorDuplicateRate= settings.
6941
6942 * systemd-tmpfiles gained a new w+ setting to append to files.
6943
6944 * systemd-analyze dump will now report when the memory configuration in
6945 the kernel does not match what systemd has configured (usually,
6946 because some external program has modified the kernel configuration
6947 on its own).
6948
6949 * systemd-analyze gained a new --base-time= switch instructs the
6950 'calendar' verb to resolve times relative to that timestamp instead
6951 of the present time.
6952
6953 * journalctl --update-catalog now produces deterministic output (making
6954 reproducible image builds easier).
6955
6956 * A new devicetree-overlay setting is now documented in the Boot Loader
6957 Specification.
6958
6959 * The default value of the WatchdogSec= setting used in systemd
6960 services (the ones bundled with the project itself) may be set at
6961 configuration time using the -Dservice-watchdog= setting. If set to
6962 empty, the watchdogs will be disabled.
6963
6964 * systemd-resolved validates IP addresses in certificates now when GnuTLS
6965 is being used.
6966
6967 * libcryptsetup >= 2.0.1 is now required.
6968
6969 * A configuration option -Duser-path= may be used to override the $PATH
6970 used by the user service manager. The default is again to use the same
6971 path as the system manager.
6972
6973 * The systemd-id128 tool gained a new switch "-u" (or "--uuid") for
6974 outputting the 128-bit IDs in UUID format (i.e. in the "canonical
6975 representation").
6976
6977 * Service units gained a new sandboxing option ProtectKernelLogs= which
6978 makes sure the program cannot get direct access to the kernel log
6979 buffer anymore, i.e. the syslog() system call (not to be confused
6980 with the API of the same name in libc, which is not affected), the
6981 /proc/kmsg and /dev/kmsg nodes and the CAP_SYSLOG capability are made
6982 inaccessible to the service. It's recommended to enable this setting
6983 for all services that should not be able to read from or write to the
6984 kernel log buffer, which are probably almost all.
6985
6986 Contributions from: Aaron Plattner, Alcaro, Anita Zhang, Balint Reczey,
6987 Bastien Nocera, Baybal Ni, Benjamin Bouvier, Benjamin Gilbert, Carlo
6988 Teubner, cbzxt, Chen Qi, Chris Down, Christian Rebischke, Claudio
6989 Zumbo, ClydeByrdIII, crashfistfight, Cyprien Laplace, Daniel Edgecumbe,
6990 Daniel Gorbea, Daniel Rusek, Daniel Stuart, Dan Streetman, David
6991 Pedersen, David Tardon, Dimitri John Ledkov, Dominique Martinet, Donald
6992 A. Cupp Jr, Evgeny Vereshchagin, Fabian Henneke, Filipe Brandenburger,
6993 Franck Bui, Frantisek Sumsal, Georg Müller, Hans de Goede, Haochen
6994 Tong, HATAYAMA Daisuke, Iwan Timmer, Jan Janssen, Jan Kundrát, Jan
6995 Synacek, Jan Tojnar, Jay Strict, Jérémy Rosen, Jóhann B. Guðmundsson,
6996 Jonas Jelten, Jonas Thelemann, Justin Trudell, J. Xing, Kai-Heng Feng,
6997 Kenneth D'souza, Kevin Becker, Kevin Kuehler, Lennart Poettering,
6998 Léonard Gérard, Lorenz Bauer, Luca Boccassi, Maciej Stanczew, Mario
6999 Limonciello, Marko Myllynen, Mark Stosberg, Martin Wilck, matthiasroos,
7000 Michael Biebl, Michael Olbrich, Michael Tretter, Michal Sekletar,
7001 Michal Sekletár, Michal Suchanek, Mike Gilbert, Mike Kazantsev, Nicolas
7002 Douma, nikolas, Norbert Lange, pan93412, Pascal de Bruijn, Paul Menzel,
7003 Pavel Hrdina, Peter Wu, Philip Withnall, Piotr Drąg, Rafael Fontenelle,
7004 Renaud Métrich, Riccardo Schirone, RoadrunnerWMC, Ronan Pigott, Ryan
7005 Attard, Sebastian Wick, Serge, Siddharth Chandrasekara, Steve Ramage,
7006 Steve Traylen, Susant Sahani, Thibault Nélis, Tim Teichmann, Tom
7007 Fitzhenry, Tommy J, Torsten Hilbrich, Vito Caputo, ypf791, Yu Watanabe,
7008 Zach Smith, Zbigniew Jędrzejewski-Szmek
7009
7010 – Warsaw, 2019-11-29
7011
7012 CHANGES WITH 243:
7013
7014 * This release enables unprivileged programs (i.e. requiring neither
7015 setuid nor file capabilities) to send ICMP Echo (i.e. ping) requests
7016 by turning on the "net.ipv4.ping_group_range" sysctl of the Linux
7017 kernel for the whole UNIX group range, i.e. all processes. This
7018 change should be reasonably safe, as the kernel support for it was
7019 specifically implemented to allow safe access to ICMP Echo for
7020 processes lacking any privileges. If this is not desirable, it can be
7021 disabled again by setting the parameter to "1 0".
7022
7023 * Previously, filters defined with SystemCallFilter= would have the
7024 effect that any calling of an offending system call would terminate
7025 the calling thread. This behaviour never made much sense, since
7026 killing individual threads of unsuspecting processes is likely to
7027 create more problems than it solves. With this release the default
7028 action changed from killing the thread to killing the whole
7029 process. For this to work correctly both a kernel version (>= 4.14)
7030 and a libseccomp version (>= 2.4.0) supporting this new seccomp
7031 action is required. If an older kernel or libseccomp is used the old
7032 behaviour continues to be used. This change does not affect any
7033 services that have no system call filters defined, or that use
7034 SystemCallErrorNumber= (and thus see EPERM or another error instead
7035 of being killed when calling an offending system call). Note that
7036 systemd documentation always claimed that the whole process is
7037 killed. With this change behaviour is thus adjusted to match the
7038 documentation.
7039
7040 * On 64 bit systems, the "kernel.pid_max" sysctl is now bumped to
7041 4194304 by default, i.e. the full 22bit range the kernel allows, up
7042 from the old 16-bit range. This should improve security and
7043 robustness, as PID collisions are made less likely (though certainly
7044 still possible). There are rumours this might create compatibility
7045 problems, though at this moment no practical ones are known to
7046 us. Downstream distributions are hence advised to undo this change in
7047 their builds if they are concerned about maximum compatibility, but
7048 for everybody else we recommend leaving the value bumped. Besides
7049 improving security and robustness this should also simplify things as
7050 the maximum number of allowed concurrent tasks was previously bounded
7051 by both "kernel.pid_max" and "kernel.threads-max" and now effectively
7052 only a single knob is left ("kernel.threads-max"). There have been
7053 concerns that usability is affected by this change because larger PID
7054 numbers are harder to type, but we believe the change from 5 digits
7055 to 7 digits doesn't hamper usability.
7056
7057 * MemoryLow= and MemoryMin= gained hierarchy-aware counterparts,
7058 DefaultMemoryLow= and DefaultMemoryMin=, which can be used to
7059 hierarchically set default memory protection values for a particular
7060 subtree of the unit hierarchy.
7061
7062 * Memory protection directives can now take a value of zero, allowing
7063 explicit opting out of a default value propagated by an ancestor.
7064
7065 * systemd now defaults to the "unified" cgroup hierarchy setup during
7066 build-time, i.e. -Ddefault-hierarchy=unified is now the build-time
7067 default. Previously, -Ddefault-hierarchy=hybrid was the default. This
7068 change reflects the fact that cgroupsv2 support has matured
7069 substantially in both systemd and in the kernel, and is clearly the
7070 way forward. Downstream production distributions might want to
7071 continue to use -Ddefault-hierarchy=hybrid (or even =legacy) for
7072 their builds as unfortunately the popular container managers have not
7073 caught up with the kernel API changes.
7074
7075 * Man pages are not built by default anymore (html pages were already
7076 disabled by default), to make development builds quicker. When
7077 building systemd for a full installation with documentation, meson
7078 should be called with -Dman=true and/or -Dhtml=true as appropriate.
7079 The default was changed based on the assumption that quick one-off or
7080 repeated development builds are much more common than full optimized
7081 builds for installation, and people need to pass various other
7082 options to when doing "proper" builds anyway, so the gain from making
7083 development builds quicker is bigger than the one time disruption for
7084 packagers.
7085
7086 Two scripts are created in the *build* directory to generate and
7087 preview man and html pages on demand, e.g.:
7088
7089 build/man/man systemctl
7090 build/man/html systemd.index
7091
7092 * libidn2 is used by default if both libidn2 and libidn are installed.
7093 Please use -Dlibidn=true if libidn is preferred.
7094
7095 * The D-Bus "wire format" of the CPUAffinity= attribute is changed on
7096 big-endian machines. Before, bytes were written and read in native
7097 machine order as exposed by the native libc __cpu_mask interface.
7098 Now, little-endian order is always used (CPUs 0–7 are described by
7099 bits 0–7 in byte 0, CPUs 8–15 are described by byte 1, and so on).
7100 This change fixes D-Bus calls that cross endianness boundary.
7101
7102 The presentation format used for CPUAffinity= by "systemctl show" and
7103 "systemd-analyze dump" is changed to present CPU indices instead of
7104 the raw __cpu_mask bitmask. For example, CPUAffinity=0-1 would be
7105 shown as CPUAffinity=03000000000000000000000000000… (on
7106 little-endian) or CPUAffinity=00000000000000300000000000000… (on
7107 64-bit big-endian), and is now shown as CPUAffinity=0-1, matching the
7108 input format. The maximum integer that will be printed in the new
7109 format is 8191 (four digits), while the old format always used a very
7110 long number (with the length varying by architecture), so they can be
7111 unambiguously distinguished.
7112
7113 * /usr/sbin/halt.local is no longer supported. Implementation in
7114 distributions was inconsistent and it seems this functionality was
7115 very rarely used.
7116
7117 To replace this functionality, users should:
7118 - either define a new unit and make it a dependency of final.target
7119 (systemctl add-wants final.target my-halt-local.service)
7120 - or move the shutdown script to /usr/lib/systemd/system-shutdown/
7121 and ensure that it accepts "halt", "poweroff", "reboot", and
7122 "kexec" as an argument, see the description in systemd-shutdown(8).
7123
7124 * When a [Match] section in .link or .network file is empty (contains
7125 no match patterns), a warning will be emitted. Please add any "match
7126 all" pattern instead, e.g. OriginalName=* or Name=* in case all
7127 interfaces should really be matched.
7128
7129 * A new setting NUMAPolicy= may be used to set process memory
7130 allocation policy. This setting can be specified in
7131 /etc/systemd/system.conf and hence will set the default policy for
7132 PID1. The default policy can be overridden on a per-service
7133 basis. The related setting NUMAMask= is used to specify NUMA node
7134 mask that should be associated with the selected policy.
7135
7136 * PID 1 will now listen to Out-Of-Memory (OOM) events the kernel
7137 generates when processes it manages are reaching their memory limits,
7138 and will place their units in a special state, and optionally kill or
7139 stop the whole unit.
7140
7141 * The service manager will now expose bus properties for the IO
7142 resources used by units. This information is also shown in "systemctl
7143 status" now (for services that have IOAccounting=yes set). Moreover,
7144 the IO accounting data is included in the resource log message
7145 generated whenever a unit stops.
7146
7147 * Units may now configure an explicit timeout to wait for when killed
7148 with SIGABRT, for example when a service watchdog is hit. Previously,
7149 the regular TimeoutStopSec= timeout was applied in this case too —
7150 now a separate timeout may be set using TimeoutAbortSec=.
7151
7152 * Services may now send a special WATCHDOG=trigger message with
7153 sd_notify() to trigger an immediate "watchdog missed" event, and thus
7154 trigger service termination. This is useful both for testing watchdog
7155 handling, but also for defining error paths in services, that shall
7156 be handled the same way as watchdog events.
7157
7158 * There are two new per-unit settings IPIngressFilterPath= and
7159 IPEgressFilterPath= which allow configuration of a BPF program
7160 (usually by specifying a path to a program uploaded to /sys/fs/bpf/)
7161 to apply to the IP packet ingress/egress path of all processes of a
7162 unit. This is useful to allow running systemd services with BPF
7163 programs set up externally.
7164
7165 * systemctl gained a new "clean" verb for removing the state, cache,
7166 runtime or logs directories of a service while it is terminated. The
7167 new verb may also be used to remove the state maintained on disk for
7168 timer units that have Persistent= configured.
7169
7170 * During the last phase of shutdown systemd will now automatically
7171 increase the log level configured in the "kernel.printk" sysctl so
7172 that any relevant loggable events happening during late shutdown are
7173 made visible. Previously, loggable events happening so late during
7174 shutdown were generally lost if the "kernel.printk" sysctl was set to
7175 high thresholds, as regular logging daemons are terminated at that
7176 time and thus nothing is written to disk.
7177
7178 * If processes terminated during the last phase of shutdown do not exit
7179 quickly systemd will now show their names after a short time, to make
7180 debugging easier. After a longer timeout they are forcibly killed,
7181 as before.
7182
7183 * journalctl (and the other tools that display logs) will now highlight
7184 warnings in yellow (previously, both LOG_NOTICE and LOG_WARNING where
7185 shown in bright bold, now only LOG_NOTICE is). Moreover, audit logs
7186 are now shown in blue color, to separate them visually from regular
7187 logs. References to configuration files are now turned into clickable
7188 links on terminals that support that.
7189
7190 * systemd-journald will now stop logging to /var/log/journal during
7191 shutdown when /var/ is on a separate mount, so that it can be
7192 unmounted safely during shutdown.
7193
7194 * systemd-resolved gained support for a new 'strict' DNS-over-TLS mode.
7195
7196 * systemd-resolved "Cache=" configuration option in resolved.conf has
7197 been extended to also accept the 'no-negative' value. Previously,
7198 only a boolean option was allowed (yes/no), having yes as the
7199 default. If this option is set to 'no-negative', negative answers are
7200 not cached while the old cache heuristics are used positive answers.
7201 The default remains unchanged.
7202
7203 * The predictable naming scheme for network devices now supports
7204 generating predictable names for "netdevsim" devices.
7205
7206 Moreover, the "en" prefix was dropped from the ID_NET_NAME_ONBOARD
7207 udev property.
7208
7209 Those two changes form a new net.naming-policy-scheme= entry.
7210 Distributions which want to preserve naming stability may want to set
7211 the -Ddefault-net-naming-scheme= configuration option.
7212
7213 * systemd-networkd now supports MACsec, nlmon, IPVTAP and Xfrm
7214 interfaces natively.
7215
7216 * systemd-networkd's bridge FDB support now allows configuration of a
7217 destination address for each entry (Destination=), as well as the
7218 VXLAN VNI (VNI=), as well as an option to declare what an entry is
7219 associated with (AssociatedWith=).
7220
7221 * systemd-networkd's DHCPv4 support now understands a new MaxAttempts=
7222 option for configuring the maximum number of DHCP lease requests. It
7223 also learnt a new BlackList= option for deny-listing DHCP servers (a
7224 similar setting has also been added to the IPv6 RA client), as well
7225 as a SendRelease= option for configuring whether to send a DHCP
7226 RELEASE message when terminating.
7227
7228 * systemd-networkd's DHCPv4 and DHCPv6 stacks can now be configured
7229 separately in the [DHCPv4] and [DHCPv6] sections.
7230
7231 * systemd-networkd's DHCP support will now optionally create an
7232 implicit host route to the DNS server specified in the DHCP lease, in
7233 addition to the routes listed explicitly in the lease. This should
7234 ensure that in multi-homed systems DNS traffic leaves the systems on
7235 the interface that acquired the DNS server information even if other
7236 routes such as default routes exist. This behaviour may be turned on
7237 with the new RoutesToDNS= option.
7238
7239 * systemd-networkd's VXLAN support gained a new option
7240 GenericProtocolExtension= for enabling VXLAN Generic Protocol
7241 Extension support, as well as IPDoNotFragment= for setting the IP
7242 "Don't fragment" bit on outgoing packets. A similar option has been
7243 added to the GENEVE support.
7244
7245 * In systemd-networkd's [Route] section you may now configure
7246 FastOpenNoCookie= for configuring per-route TCP fast-open support, as
7247 well as TTLPropagate= for configuring Label Switched Path (LSP) TTL
7248 propagation. The Type= setting now supports local, broadcast,
7249 anycast, multicast, any, xresolve routes, too.
7250
7251 * systemd-networkd's [Network] section learnt a new option
7252 DefaultRouteOnDevice= for automatically configuring a default route
7253 onto the network device.
7254
7255 * systemd-networkd's bridging support gained two new options ProxyARP=
7256 and ProxyARPWifi= for configuring proxy ARP behaviour as well as
7257 MulticastRouter= for configuring multicast routing behaviour. A new
7258 option MulticastIGMPVersion= may be used to change bridge's multicast
7259 Internet Group Management Protocol (IGMP) version.
7260
7261 * systemd-networkd's FooOverUDP support gained the ability to configure
7262 local and peer IP addresses via Local= and Peer=. A new option
7263 PeerPort= may be used to configure the peer's IP port.
7264
7265 * systemd-networkd's TUN support gained a new setting VnetHeader= for
7266 tweaking Generic Segment Offload support.
7267
7268 * The address family for policy rules may be specified using the new
7269 Family= option in the [RoutingPolicyRule] section.
7270
7271 * networkctl gained a new "delete" command for removing virtual network
7272 devices, as well as a new "--stats" switch for showing device
7273 statistics.
7274
7275 * networkd.conf gained a new setting SpeedMeter= and
7276 SpeedMeterIntervalSec=, to measure bitrate of network interfaces. The
7277 measured speed may be shown by 'networkctl status'.
7278
7279 * "networkctl status" now displays MTU and queue lengths, and more
7280 detailed information about VXLAN and bridge devices.
7281
7282 * systemd-networkd's .network and .link files gained a new Property=
7283 setting in the [Match] section, to match against devices with
7284 specific udev properties.
7285
7286 * systemd-networkd's tunnel support gained a new option
7287 AssignToLoopback= for selecting whether to use the loopback device
7288 "lo" as underlying device.
7289
7290 * systemd-networkd's MACAddress= setting in the [Neighbor] section has
7291 been renamed to LinkLayerAddress=, and it now allows configuration of
7292 IP addresses, too.
7293
7294 * systemd-networkd's handling of the kernel's disable_ipv6 sysctl is
7295 simplified: systemd-networkd will disable the sysctl (enable IPv6) if
7296 IPv6 configuration (static or DHCPv6) was found for a given
7297 interface. It will not touch the sysctl otherwise.
7298
7299 * The order of entries is $PATH used by the user manager instance was
7300 changed to put bin/ entries before the corresponding sbin/ entries.
7301 It is recommended to not rely on this order, and only ever have one
7302 binary with a given name in the system paths under /usr.
7303
7304 * A new tool systemd-network-generator has been added that may generate
7305 .network, .netdev and .link files from IP configuration specified on
7306 the kernel command line in the format used by Dracut.
7307
7308 * The CriticalConnection= setting in .network files is now deprecated,
7309 and replaced by a new KeepConfiguration= setting which allows more
7310 detailed configuration of the IP configuration to keep in place.
7311
7312 * systemd-analyze gained a few new verbs:
7313
7314 - "systemd-analyze timestamp" parses and converts timestamps. This is
7315 similar to the existing "systemd-analyze calendar" command which
7316 does the same for recurring calendar events.
7317
7318 - "systemd-analyze timespan" parses and converts timespans (i.e.
7319 durations as opposed to points in time).
7320
7321 - "systemd-analyze condition" will parse and test ConditionXYZ=
7322 expressions.
7323
7324 - "systemd-analyze exit-status" will parse and convert exit status
7325 codes to their names and back.
7326
7327 - "systemd-analyze unit-files" will print a list of all unit
7328 file paths and unit aliases.
7329
7330 * SuccessExitStatus=, RestartPreventExitStatus=, and
7331 RestartForceExitStatus= now accept exit status names (e.g. "DATAERR"
7332 is equivalent to "65"). Those exit status name mappings may be
7333 displayed with the systemd-analyze exit-status verb describe above.
7334
7335 * systemd-logind now exposes a per-session SetBrightness() bus call,
7336 which may be used to securely change the brightness of a kernel
7337 brightness device, if it belongs to the session's seat. By using this
7338 call unprivileged clients can make changes to "backlight" and "leds"
7339 devices securely with strict requirements on session membership.
7340 Desktop environments may use this to generically make brightness
7341 changes to such devices without shipping private SUID binaries or
7342 udev rules for that purpose.
7343
7344 * "udevadm info" gained a --wait-for-initialization switch to wait for
7345 a device to be initialized.
7346
7347 * systemd-hibernate-resume-generator will now look for resumeflags= on
7348 the kernel command line, which is similar to rootflags= and may be
7349 used to configure device timeout for the hibernation device.
7350
7351 * sd-event learnt a new API call sd_event_source_disable_unref() for
7352 disabling and unref'ing an event source in a single function. A
7353 related call sd_event_source_disable_unrefp() has been added for use
7354 with gcc's cleanup extension.
7355
7356 * The sd-id128.h public API gained a new definition
7357 SD_ID128_UUID_FORMAT_STR for formatting a 128-bit ID in UUID format
7358 with printf().
7359
7360 * "busctl introspect" gained a new switch --xml-interface for dumping
7361 XML introspection data unmodified.
7362
7363 * PID 1 may now show the unit name instead of the unit description
7364 string in its status output during boot. This may be configured in
7365 the StatusUnitFormat= setting in /etc/systemd/system.conf or the
7366 kernel command line option systemd.status_unit_format=.
7367
7368 * PID 1 now understands a new option KExecWatchdogSec= in
7369 /etc/systemd/system.conf to set a watchdog timeout for kexec reboots.
7370 Previously watchdog functionality was only available for regular
7371 reboots. The new setting defaults to off, because we don't know in
7372 the general case if the watchdog will be reset after kexec (some
7373 drivers do reset it, but not all), and the new userspace might not be
7374 configured to handle the watchdog.
7375
7376 Moreover, the old ShutdownWatchdogSec= setting has been renamed to
7377 RebootWatchdogSec= to more clearly communicate what it is about. The
7378 old name is still accepted for compatibility.
7379
7380 * The systemd.debug_shell kernel command line option now optionally
7381 takes a tty name to spawn the debug shell on, which allows a
7382 different tty to be selected than the built-in default.
7383
7384 * Service units gained a new ExecCondition= setting which will run
7385 before ExecStartPre= and either continue execution of the unit (for
7386 clean exit codes), stop execution without marking the unit failed
7387 (for exit codes 1 through 254), or stop execution and fail the unit
7388 (for exit code 255 or abnormal termination).
7389
7390 * A new service systemd-pstore.service has been added that pulls data
7391 from /sys/fs/pstore/ and saves it to /var/lib/pstore for later
7392 review.
7393
7394 * timedatectl gained new verbs for configuring per-interface NTP
7395 service configuration for systemd-timesyncd.
7396
7397 * "localectl list-locales" won't list non-UTF-8 locales anymore. It's
7398 2019. (You can set non-UTF-8 locales though, if you know their name.)
7399
7400 * If variable assignments in sysctl.d/ files are prefixed with "-" any
7401 failures to apply them are now ignored.
7402
7403 * systemd-random-seed.service now optionally credits entropy when
7404 applying the seed to the system. Set $SYSTEMD_RANDOM_SEED_CREDIT to
7405 true for the service to enable this behaviour, but please consult the
7406 documentation first, since this comes with a couple of caveats.
7407
7408 * systemd-random-seed.service is now a synchronization point for full
7409 initialization of the kernel's entropy pool. Services that require
7410 /dev/urandom to be correctly initialized should be ordered after this
7411 service.
7412
7413 * The systemd-boot boot loader has been updated to optionally maintain
7414 a random seed file in the EFI System Partition (ESP). During the boot
7415 phase, this random seed is read and updated with a new seed
7416 cryptographically derived from it. Another derived seed is passed to
7417 the OS. The latter seed is then credited to the kernel's entropy pool
7418 very early during userspace initialization (from PID 1). This allows
7419 systems to boot up with a fully initialized kernel entropy pool from
7420 earliest boot on, and thus entirely removes all entropy pool
7421 initialization delays from systems using systemd-boot. Special care
7422 is taken to ensure different seeds are derived on system images
7423 replicated to multiple systems. "bootctl status" will show whether
7424 a seed was received from the boot loader.
7425
7426 * bootctl gained two new verbs:
7427
7428 - "bootctl random-seed" will generate the file in ESP and an EFI
7429 variable to allow a random seed to be passed to the OS as described
7430 above.
7431
7432 - "bootctl is-installed" checks whether systemd-boot is currently
7433 installed.
7434
7435 * bootctl will warn if it detects that boot entries are misconfigured
7436 (for example if the kernel image was removed without purging the
7437 bootloader entry).
7438
7439 * A new document has been added describing systemd's use and support
7440 for the kernel's entropy pool subsystem:
7441
7442 https://systemd.io/RANDOM_SEEDS
7443
7444 * When the system is hibernated the swap device to write the
7445 hibernation image to is now automatically picked from all available
7446 swap devices, preferring the swap device with the highest configured
7447 priority over all others, and picking the device with the most free
7448 space if there are multiple devices with the highest priority.
7449
7450 * /etc/crypttab support has learnt a new keyfile-timeout= per-device
7451 option that permits selecting the timeout how long to wait for a
7452 device with an encryption key before asking for the password.
7453
7454 * IOWeight= has learnt to properly set the IO weight when using the
7455 BFQ scheduler officially found in kernels 5.0+.
7456
7457 * A new mailing list has been created for reporting of security issues:
7458 systemd-security@redhat.com. For mode details, see
7459 https://systemd.io/CONTRIBUTING#security-vulnerability-reports.
7460
7461 Contributions from: Aaron Barany, Adrian Bunk, Alan Jenkins, Albrecht
7462 Lohofener, Andrej Valek, Anita Zhang, Arian van Putten, Balint Reczey,
7463 Bastien Nocera, Ben Boeckel, Benjamin Robin, camoz, Chen Qi, Chris
7464 Chiu, Chris Down, Christian Göttsche, Christian Kellner, Clinton Roy,
7465 Connor Reeder, Daniel Black, Daniel Lublin, Daniele Medri, Dan
7466 Streetman, Dave Reisner, Dave Ross, David Art, David Tardon, Debarshi
7467 Ray, Dimitri John Ledkov, Dominick Grift, Donald Buczek, Douglas
7468 Christman, Eric DeVolder, EtherGraf, Evgeny Vereshchagin, Feldwor,
7469 Felix Riemann, Florian Dollinger, Francesco Pennica, Franck Bui,
7470 Frantisek Sumsal, Franz Pletz, frederik, Hans de Goede, Iago López
7471 Galeiras, Insun Pyo, Ivan Shapovalov, Iwan Timmer, Jack, Jakob
7472 Unterwurzacher, Jan Chren, Jan Klötzke, Jan Losinski, Jan Pokorný, Jan
7473 Synacek, Jan-Michael Brummer, Jeka Pats, Jeremy Soller, Jérémy Rosen,
7474 Jiri Pirko, Joe Lin, Joerg Behrmann, Joe Richey, Jóhann B. Guðmundsson,
7475 Johannes Christ, Johannes Schmitz, Jonathan Rouleau, Jorge Niedbalski,
7476 Jörg Thalheim, Kai Krakow, Kai Lüke, Karel Zak, Kashyap Chamarthy,
7477 Krayushkin Konstantin, Lennart Poettering, Lubomir Rintel, Luca
7478 Boccassi, Luís Ferreira, Marc-André Lureau, Markus Felten, Martin Pitt,
7479 Matthew Leeds, Mattias Jernberg, Michael Biebl, Michael Olbrich,
7480 Michael Prokop, Michael Stapelberg, Michael Zhivich, Michal Koutný,
7481 Michal Sekletar, Mike Gilbert, Milan Broz, Miroslav Lichvar, mpe85,
7482 Mr-Foo, Network Silence, Oliver Harley, pan93412, Paul Menzel, pEJipE,
7483 Peter A. Bigot, Philip Withnall, Piotr Drąg, Rafael Fontenelle, Robert
7484 Scheck, Roberto Santalla, Ronan Pigott, root, RussianNeuroMancer,
7485 Sebastian Jennen, shinygold, Shreyas Behera, Simon Schricker, Susant
7486 Sahani, Thadeu Lima de Souza Cascardo, Theo Ouzhinski, Thiebaud
7487 Weksteen, Thomas Haller, Thomas Weißschuh, Tomas Mraz, Tommi Rantala,
7488 Topi Miettinen, VD-Lycos, ven, Vladimir Yerilov, Wieland Hoffmann,
7489 William A. Kennington III, William Wold, Xi Ruoyao, Yuri Chornoivan,
7490 Yu Watanabe, Zach Smith, Zbigniew Jędrzejewski-Szmek, Zhang Xianwei
7491
7492 – Camerino, 2019-09-03
7493
7494 CHANGES WITH 242:
7495
7496 * In .link files, MACAddressPolicy=persistent (the default) is changed
7497 to cover more devices. For devices like bridges, tun, tap, bond, and
7498 similar interfaces that do not have other identifying information,
7499 the interface name is used as the basis for persistent seed for MAC
7500 and IPv4LL addresses. The way that devices that were handled
7501 previously is not changed, and this change is about covering more
7502 devices then previously by the "persistent" policy.
7503
7504 MACAddressPolicy=random may be used to force randomized MACs and
7505 IPv4LL addresses for a device if desired.
7506
7507 Hint: the log output from udev (at debug level) was enhanced to
7508 clarify what policy is followed and which attributes are used.
7509 `SYSTEMD_LOG_LEVEL=debug udevadm test-builtin net_setup_link /sys/class/net/<name>`
7510 may be used to view this.
7511
7512 Hint: if a bridge interface is created without any slaves, and gains
7513 a slave later, then now the bridge does not inherit slave's MAC.
7514 To inherit slave's MAC, for example, create the following file:
7515 ```
7516 # /etc/systemd/network/98-bridge-inherit-mac.link
7517 [Match]
7518 Type=bridge
7519
7520 [Link]
7521 MACAddressPolicy=none
7522 ```
7523
7524 * The .device units generated by systemd-fstab-generator and other
7525 generators do not automatically pull in the corresponding .mount unit
7526 as a Wants= dependency. This means that simply plugging in the device
7527 will not cause the mount unit to be started automatically. But please
7528 note that the mount unit may be started for other reasons, in
7529 particular if it is part of local-fs.target, and any unit which
7530 (transitively) depends on local-fs.target is started.
7531
7532 * networkctl list/status/lldp now accept globbing wildcards for network
7533 interface names to match against all existing interfaces.
7534
7535 * The $PIDFILE environment variable is set to point the absolute path
7536 configured with PIDFile= for processes of that service.
7537
7538 * The fallback DNS server list was augmented with Cloudflare public DNS
7539 servers. Use `-Ddns-servers=` to set a different fallback.
7540
7541 * A new special target usb-gadget.target will be started automatically
7542 when a USB Device Controller is detected (which means that the system
7543 is a USB peripheral).
7544
7545 * A new unit setting CPUQuotaPeriodSec= assigns the time period
7546 relatively to which the CPU time quota specified by CPUQuota= is
7547 measured.
7548
7549 * A new unit setting ProtectHostname= may be used to prevent services
7550 from modifying hostname information (even if they otherwise would
7551 have privileges to do so).
7552
7553 * A new unit setting NetworkNamespacePath= may be used to specify a
7554 namespace for service or socket units through a path referring to a
7555 Linux network namespace pseudo-file.
7556
7557 * The PrivateNetwork= setting and JoinsNamespaceOf= dependencies now
7558 have an effect on .socket units: when used the listening socket is
7559 created within the configured network namespace instead of the host
7560 namespace.
7561
7562 * ExecStart= command lines in unit files may now be prefixed with ':'
7563 in which case environment variable substitution is
7564 disabled. (Supported for the other ExecXYZ= settings, too.)
7565
7566 * .timer units gained two new boolean settings OnClockChange= and
7567 OnTimezoneChange= which may be used to also trigger a unit when the
7568 system clock is changed or the local timezone is
7569 modified. systemd-run has been updated to make these options easily
7570 accessible from the command line for transient timers.
7571
7572 * Two new conditions for units have been added: ConditionMemory= may be
7573 used to conditionalize a unit based on installed system
7574 RAM. ConditionCPUs= may be used to conditionalize a unit based on
7575 installed CPU cores.
7576
7577 * The @default system call filter group understood by SystemCallFilter=
7578 has been updated to include the new rseq() system call introduced in
7579 kernel 4.15.
7580
7581 * A new time-set.target has been added that indicates that the system
7582 time has been set from a local source (possibly imprecise). The
7583 existing time-sync.target is stronger and indicates that the time has
7584 been synchronized with a precise external source. Services where
7585 approximate time is sufficient should use the new target.
7586
7587 * "systemctl start" (and related commands) learnt a new
7588 --show-transaction option. If specified brief information about all
7589 jobs queued because of the requested operation is shown.
7590
7591 * systemd-networkd recognizes a new operation state 'enslaved', used
7592 (instead of 'degraded' or 'carrier') for interfaces which form a
7593 bridge, bond, or similar, and an new 'degraded-carrier' operational
7594 state used for the bond or bridge master interface when one of the
7595 enslaved devices is not operational.
7596
7597 * .network files learnt the new IgnoreCarrierLoss= option for leaving
7598 networks configured even if the carrier is lost.
7599
7600 * The RequiredForOnline= setting in .network files may now specify a
7601 minimum operational state required for the interface to be considered
7602 "online" by systemd-networkd-wait-online. Related to this
7603 systemd-networkd-wait-online gained a new option --operational-state=
7604 to configure the same, and its --interface= option was updated to
7605 optionally also take an operational state specific for an interface.
7606
7607 * systemd-networkd-wait-online gained a new setting --any for waiting
7608 for only one of the requested interfaces instead of all of them.
7609
7610 * systemd-networkd now implements L2TP tunnels.
7611
7612 * Two new .network settings UseAutonomousPrefix= and UseOnLinkPrefix=
7613 may be used to cause autonomous and onlink prefixes received in IPv6
7614 Router Advertisements to be ignored.
7615
7616 * New MulticastFlood=, NeighborSuppression=, and Learning= .network
7617 file settings may be used to tweak bridge behaviour.
7618
7619 * The new TripleSampling= option in .network files may be used to
7620 configure CAN triple sampling.
7621
7622 * A new .netdev settings PrivateKeyFile= and PresharedKeyFile= may be
7623 used to point to private or preshared key for a WireGuard interface.
7624
7625 * /etc/crypttab now supports the same-cpu-crypt and
7626 submit-from-crypt-cpus options to tweak encryption work scheduling
7627 details.
7628
7629 * systemd-tmpfiles will now take a BSD file lock before operating on a
7630 contents of directory. This may be used to temporarily exclude
7631 directories from aging by taking the same lock (useful for example
7632 when extracting a tarball into /tmp or /var/tmp as a privileged user,
7633 which might create files with really old timestamps, which
7634 nevertheless should not be deleted). For further details, see:
7635
7636 https://systemd.io/TEMPORARY_DIRECTORIES
7637
7638 * systemd-tmpfiles' h line type gained support for the
7639 FS_PROJINHERIT_FL ('P') file attribute (introduced in kernel 4.5),
7640 controlling project quota inheritance.
7641
7642 * sd-boot and bootctl now implement support for an Extended Boot Loader
7643 (XBOOTLDR) partition, that is intended to be mounted to /boot, in
7644 addition to the ESP partition mounted to /efi or /boot/efi.
7645 Configuration file fragments, kernels, initrds and other EFI images
7646 to boot will be loaded from both the ESP and XBOOTLDR partitions.
7647 The XBOOTLDR partition was previously described by the Boot Loader
7648 Specification, but implementation was missing in sd-boot. Support for
7649 this concept allows using the sd-boot boot loader in more
7650 conservative scenarios where the boot loader itself is placed in the
7651 ESP but the kernels to boot (and their metadata) in a separate
7652 partition.
7653
7654 * A system may now be booted with systemd.volatile=overlay on the
7655 kernel command line, which causes the root file system to be set up
7656 an overlayfs mount combining the root-only root directory with a
7657 writable tmpfs. In this setup, the underlying root device is not
7658 modified, and any changes are lost at reboot.
7659
7660 * Similar, systemd-nspawn can now boot containers with a volatile
7661 overlayfs root with the new --volatile=overlay switch.
7662
7663 * systemd-nspawn can now consume OCI runtime bundles using a new
7664 --oci-bundle= option. This implementation is fully usable, with most
7665 features in the specification implemented, but since this a lot of
7666 new code and functionality, this feature should most likely not
7667 be used in production yet.
7668
7669 * systemd-nspawn now supports various options described by the OCI
7670 runtime specification on the command-line and in .nspawn files:
7671 --inaccessible=/Inaccessible= may be used to mask parts of the file
7672 system tree, --console=/--pipe may be used to configure how standard
7673 input, output, and error are set up.
7674
7675 * busctl learned the `emit` verb to generate D-Bus signals.
7676
7677 * systemd-analyze cat-config may be used to gather and display
7678 configuration spread over multiple files, for example system and user
7679 presets, tmpfiles.d, sysusers.d, udev rules, etc.
7680
7681 * systemd-analyze calendar now takes an optional new parameter
7682 --iterations= which may be used to show a maximum number of iterations
7683 the specified expression will elapse next.
7684
7685 * The sd-bus C API gained support for naming method parameters in the
7686 introspection data.
7687
7688 * systemd-logind gained D-Bus APIs to specify the "reboot parameter"
7689 the reboot() system call expects.
7690
7691 * journalctl learnt a new --cursor-file= option that points to a file
7692 from which a cursor should be loaded in the beginning and to which
7693 the updated cursor should be stored at the end.
7694
7695 * ACRN hypervisor and Windows Subsystem for Linux (WSL) are now
7696 detected by systemd-detect-virt (and may also be used in
7697 ConditionVirtualization=).
7698
7699 * The behaviour of systemd-logind may now be modified with environment
7700 variables $SYSTEMD_REBOOT_TO_FIRMWARE_SETUP,
7701 $SYSTEMD_REBOOT_TO_BOOT_LOADER_MENU, and
7702 $SYSTEMD_REBOOT_TO_BOOT_LOADER_ENTRY. They cause logind to either
7703 skip the relevant operation completely (when set to false), or to
7704 create a flag file in /run/systemd (when set to true), instead of
7705 actually commencing the real operation when requested. The presence
7706 of /run/systemd/reboot-to-firmware-setup,
7707 /run/systemd/reboot-to-boot-loader-menu, and
7708 /run/systemd/reboot-to-boot-loader-entry, may be used by alternative
7709 boot loader implementations to replace some steps logind performs
7710 during reboot with their own operations.
7711
7712 * systemctl can be used to request a reboot into the boot loader menu
7713 or a specific boot loader entry with the new --boot-load-menu= and
7714 --boot-loader-entry= options to a reboot command. (This requires a
7715 boot loader that supports this, for example sd-boot.)
7716
7717 * kernel-install will no longer unconditionally create the output
7718 directory (e.g. /efi/<machine-id>/<kernel-version>) for boot loader
7719 snippets, but will do only if the machine-specific parent directory
7720 (i.e. /efi/<machine-id>/) already exists. bootctl has been modified
7721 to create this parent directory during sd-boot installation.
7722
7723 This makes it easier to use kernel-install with plugins which support
7724 a different layout of the bootloader partitions (for example grub2).
7725
7726 * During package installation (with `ninja install`), we would create
7727 symlinks for getty@tty1.service, systemd-networkd.service,
7728 systemd-networkd.socket, systemd-resolved.service,
7729 remote-cryptsetup.target, remote-fs.target,
7730 systemd-networkd-wait-online.service, and systemd-timesyncd.service
7731 in /etc, as if `systemctl enable` was called for those units, to make
7732 the system usable immediately after installation. Now this is not
7733 done anymore, and instead calling `systemctl preset-all` is
7734 recommended after the first installation of systemd.
7735
7736 * A new boolean sandboxing option RestrictSUIDSGID= has been added that
7737 is built on seccomp. When turned on creation of SUID/SGID files is
7738 prohibited.
7739
7740 * The NoNewPrivileges= and the new RestrictSUIDSGID= options are now
7741 implied if DynamicUser= is turned on for a service. This hardens
7742 these services, so that they neither can benefit from nor create
7743 SUID/SGID executables. This is a minor compatibility breakage, given
7744 that when DynamicUser= was first introduced SUID/SGID behaviour was
7745 unaffected. However, the security benefit of these two options is
7746 substantial, and the setting is still relatively new, hence we opted
7747 to make it mandatory for services with dynamic users.
7748
7749 Contributions from: Adam Jackson, Alexander Tsoy, Andrey Yashkin,
7750 Andrzej Pietrasiewicz, Anita Zhang, Balint Reczey, Beniamino Galvani,
7751 Ben Iofel, Benjamin Berg, Benjamin Dahlhoff, Chris, Chris Morin,
7752 Christopher Wong, Claudius Ellsel, Clemens Gruber, dana, Daniel Black,
7753 Davide Cavalca, David Michael, David Rheinsberg, emersion, Evgeny
7754 Vereshchagin, Filipe Brandenburger, Franck Bui, Frantisek Sumsal,
7755 Giacinto Cifelli, Hans de Goede, Hugo Kindel, Ignat Korchagin, Insun
7756 Pyo, Jan Engelhardt, Jonas Dorel, Jonathan Lebon, Jonathon Kowalski,
7757 Jörg Sommer, Jörg Thalheim, Jussi Pakkanen, Kai-Heng Feng, Lennart
7758 Poettering, Lubomir Rintel, Luís Ferreira, Martin Pitt, Matthias
7759 Klumpp, Michael Biebl, Michael Niewöhner, Michael Olbrich, Michal
7760 Sekletar, Mike Lothian, Paul Menzel, Piotr Drąg, Riccardo Schirone,
7761 Robin Elvedi, Roman Kulikov, Ronald Tschalär, Ross Burton, Ryan
7762 Gonzalez, Sebastian Krzyszkowiak, Stephane Chazelas, StKob, Susant
7763 Sahani, Sylvain Plantefève, Szabolcs Fruhwald, Taro Yamada, Theo
7764 Ouzhinski, Thomas Haller, Tobias Jungel, Tom Yan, Tony Asleson, Topi
7765 Miettinen, unixsysadmin, Van Laser, Vesa Jääskeläinen, Yu, Li-Yu,
7766 Yu Watanabe, Zbigniew Jędrzejewski-Szmek
7767
7768 — Warsaw, 2019-04-11
7769
7770 CHANGES WITH 241:
7771
7772 * The default locale can now be configured at compile time. Otherwise,
7773 a suitable default will be selected automatically (one of C.UTF-8,
7774 en_US.UTF-8, and C).
7775
7776 * The version string shown by systemd and other tools now includes the
7777 git commit hash when built from git. An override may be specified
7778 during compilation, which is intended to be used by distributions to
7779 include the package release information.
7780
7781 * systemd-cat can now filter standard input and standard error streams
7782 for different syslog priorities using the new --stderr-priority=
7783 option.
7784
7785 * systemd-journald and systemd-journal-remote reject entries which
7786 contain too many fields (CVE-2018-16865) and set limits on the
7787 process' command line length (CVE-2018-16864).
7788
7789 * $DBUS_SESSION_BUS_ADDRESS environment variable is set by pam_systemd
7790 again.
7791
7792 * A new network device NamePolicy "keep" is implemented for link files,
7793 and used by default in 99-default.link (the fallback configuration
7794 provided by systemd). With this policy, if the network device name
7795 was already set by userspace, the device will not be renamed again.
7796 This matches the naming scheme that was implemented before
7797 systemd-240. If naming-scheme < 240 is specified, the "keep" policy
7798 is also enabled by default, even if not specified. Effectively, this
7799 means that if naming-scheme >= 240 is specified, network devices will
7800 be renamed according to the configuration, even if they have been
7801 renamed already, if "keep" is not specified as the naming policy in
7802 the .link file. The 99-default.link file provided by systemd includes
7803 "keep" for backwards compatibility, but it is recommended for user
7804 installed .link files to *not* include it.
7805
7806 The "kernel" policy, which keeps kernel names declared to be
7807 "persistent", now works again as documented.
7808
7809 * kernel-install script now optionally takes the paths to one or more
7810 initrd files, and passes them to all plugins.
7811
7812 * The mincore() system call has been dropped from the @system-service
7813 system call filter group, as it is pretty exotic and may potentially
7814 used for side-channel attacks.
7815
7816 * -fPIE is dropped from compiler and linker options. Please specify
7817 -Db_pie=true option to meson to build position-independent
7818 executables. Note that the meson option is supported since meson-0.49.
7819
7820 * The fs.protected_regular and fs.protected_fifos sysctls, which were
7821 added in Linux 4.19 to make some data spoofing attacks harder, are
7822 now enabled by default. While this will hopefully improve the
7823 security of most installations, it is technically a backwards
7824 incompatible change; to disable these sysctls again, place the
7825 following lines in /etc/sysctl.d/60-protected.conf or a similar file:
7826
7827 fs.protected_regular = 0
7828 fs.protected_fifos = 0
7829
7830 Note that the similar hardlink and symlink protection has been
7831 enabled since v199, and may be disabled likewise.
7832
7833 * The files read from the EnvironmentFile= setting in unit files now
7834 parse backslashes inside quotes literally, matching the behaviour of
7835 POSIX shells.
7836
7837 * udevadm trigger, udevadm control, udevadm settle and udevadm monitor
7838 now automatically become NOPs when run in a chroot() environment.
7839
7840 * The tmpfiles.d/ "C" line type will now copy directory trees not only
7841 when the destination is so far missing, but also if it already exists
7842 as a directory and is empty. This is useful to cater for systems
7843 where directory trees are put together from multiple separate mount
7844 points but otherwise empty.
7845
7846 * A new function sd_bus_close_unref() (and the associated
7847 sd_bus_close_unrefp()) has been added to libsystemd, that combines
7848 sd_bus_close() and sd_bus_unref() in one.
7849
7850 * udevadm control learnt a new option for --ping for testing whether a
7851 systemd-udevd instance is running and reacting.
7852
7853 * udevadm trigger learnt a new option for --wait-daemon for waiting
7854 systemd-udevd daemon to be initialized.
7855
7856 Contributions from: Aaron Plattner, Alberts Muktupāvels, Alex Mayer,
7857 Ayman Bagabas, Beniamino Galvani, Burt P, Chris Down, Chris Lamb, Chris
7858 Morin, Christian Hesse, Claudius Ellsel, dana, Daniel Axtens, Daniele
7859 Medri, Dave Reisner, David Santamaría Rogado, Diego Canuhe, Dimitri
7860 John Ledkov, Evgeny Vereshchagin, Fabrice Fontaine, Filipe
7861 Brandenburger, Franck Bui, Frantisek Sumsal, govwin, Hans de Goede,
7862 James Hilliard, Jan Engelhardt, Jani Uusitalo, Jan Janssen, Jan
7863 Synacek, Jonathan McDowell, Jonathan Roemer, Jonathon Kowalski, Joost
7864 Heitbrink, Jörg Thalheim, Lance, Lennart Poettering, Louis Taylor,
7865 Lucas Werkmeister, Mantas Mikulėnas, Marc-Antoine Perennou,
7866 marvelousblack, Michael Biebl, Michael Sloan, Michal Sekletar, Mike
7867 Auty, Mike Gilbert, Mikhail Kasimov, Neil Brown, Niklas Hambüchen,
7868 Patrick Williams, Paul Seyfert, Peter Hutterer, Philip Withnall, Roger
7869 James, Ronnie P. Thomas, Ryan Gonzalez, Sam Morris, Stephan Edel,
7870 Stephan Gerhold, Susant Sahani, Taro Yamada, Thomas Haller, Topi
7871 Miettinen, YiFei Zhu, YmrDtnJu, YunQiang Su, Yu Watanabe, Zbigniew
7872 Jędrzejewski-Szmek, zsergeant77, Дамјан Георгиевски
7873
7874 — Berlin, 2019-02-14
7875
7876 CHANGES WITH 240:
7877
7878 * NoNewPrivileges=yes has been set for all long-running services
7879 implemented by systemd. Previously, this was problematic due to
7880 SELinux (as this would also prohibit the transition from PID1's label
7881 to the service's label). This restriction has since been lifted, but
7882 an SELinux policy update is required.
7883 (See e.g. https://github.com/fedora-selinux/selinux-policy/pull/234.)
7884
7885 * DynamicUser=yes is dropped from systemd-networkd.service,
7886 systemd-resolved.service and systemd-timesyncd.service, which was
7887 enabled in v239 for systemd-networkd.service and systemd-resolved.service,
7888 and since v236 for systemd-timesyncd.service. The users and groups
7889 systemd-network, systemd-resolve and systemd-timesync are created
7890 by systemd-sysusers again. Distributors or system administrators
7891 may need to create these users and groups if they not exist (or need
7892 to re-enable DynamicUser= for those units) while upgrading systemd.
7893 Also, the clock file for systemd-timesyncd may need to move from
7894 /var/lib/private/systemd/timesync/clock to /var/lib/systemd/timesync/clock.
7895
7896 * When unit files are loaded from disk, previously systemd would
7897 sometimes (depending on the unit loading order) load units from the
7898 target path of symlinks in .wants/ or .requires/ directories of other
7899 units. This meant that unit could be loaded from different paths
7900 depending on whether the unit was requested explicitly or as a
7901 dependency of another unit, not honouring the priority of directories
7902 in search path. It also meant that it was possible to successfully
7903 load and start units which are not found in the unit search path, as
7904 long as they were requested as a dependency and linked to from
7905 .wants/ or .requires/. The target paths of those symlinks are not
7906 used for loading units anymore and the unit file must be found in
7907 the search path.
7908
7909 * A new service type has been added: Type=exec. It's very similar to
7910 Type=simple but ensures the service manager will wait for both fork()
7911 and execve() of the main service binary to complete before proceeding
7912 with follow-up units. This is primarily useful so that the manager
7913 propagates any errors in the preparation phase of service execution
7914 back to the job that requested the unit to be started. For example,
7915 consider a service that has ExecStart= set to a file system binary
7916 that doesn't exist. With Type=simple starting the unit would be
7917 considered instantly successful, as only fork() has to complete
7918 successfully and the manager does not wait for execve(), and hence
7919 its failure is seen "too late". With the new Type=exec service type
7920 starting the unit will fail, as the manager will wait for the
7921 execve() and notice its failure, which is then propagated back to the
7922 start job.
7923
7924 NOTE: with the next release 241 of systemd we intend to change the
7925 systemd-run tool to default to Type=exec for transient services
7926 started by it. This should be mostly safe, but in specific corner
7927 cases might result in problems, as the systemd-run tool will then
7928 block on NSS calls (such as user name look-ups due to User=) done
7929 between the fork() and execve(), which under specific circumstances
7930 might cause problems. It is recommended to specify "-p Type=simple"
7931 explicitly in the few cases where this applies. For regular,
7932 non-transient services (i.e. those defined with unit files on disk)
7933 we will continue to default to Type=simple.
7934
7935 * The Linux kernel's current default RLIMIT_NOFILE resource limit for
7936 userspace processes is set to 1024 (soft) and 4096
7937 (hard). Previously, systemd passed this on unmodified to all
7938 processes it forked off. With this systemd release the hard limit
7939 systemd passes on is increased to 512K, overriding the kernel's
7940 defaults and substantially increasing the number of simultaneous file
7941 descriptors unprivileged userspace processes can allocate. Note that
7942 the soft limit remains at 1024 for compatibility reasons: the
7943 traditional UNIX select() call cannot deal with file descriptors >=
7944 1024 and increasing the soft limit globally might thus result in
7945 programs unexpectedly allocating a high file descriptor and thus
7946 failing abnormally when attempting to use it with select() (of
7947 course, programs shouldn't use select() anymore, and prefer
7948 poll()/epoll, but the call unfortunately remains undeservedly popular
7949 at this time). This change reflects the fact that file descriptor
7950 handling in the Linux kernel has been optimized in more recent
7951 kernels and allocating large numbers of them should be much cheaper
7952 both in memory and in performance than it used to be. Programs that
7953 want to take benefit of the increased limit have to "opt-in" into
7954 high file descriptors explicitly by raising their soft limit. Of
7955 course, when they do that they must acknowledge that they cannot use
7956 select() anymore (and neither can any shared library they use — or
7957 any shared library used by any shared library they use and so on).
7958 Which default hard limit is most appropriate is of course hard to
7959 decide. However, given reports that ~300K file descriptors are used
7960 in real-life applications we believe 512K is sufficiently high as new
7961 default for now. Note that there are also reports that using very
7962 high hard limits (e.g. 1G) is problematic: some software allocates
7963 large arrays with one element for each potential file descriptor
7964 (Java, …) — a high hard limit thus triggers excessively large memory
7965 allocations in these applications. Hopefully, the new default of 512K
7966 is a good middle ground: higher than what real-life applications
7967 currently need, and low enough for avoid triggering excessively large
7968 allocations in problematic software. (And yes, somebody should fix
7969 Java.)
7970
7971 * The fs.nr_open and fs.file-max sysctls are now automatically bumped
7972 to the highest possible values, as separate accounting of file
7973 descriptors is no longer necessary, as memcg tracks them correctly as
7974 part of the memory accounting anyway. Thus, from the four limits on
7975 file descriptors currently enforced (fs.file-max, fs.nr_open,
7976 RLIMIT_NOFILE hard, RLIMIT_NOFILE soft) we turn off the first two,
7977 and keep only the latter two. A set of build-time options
7978 (-Dbump-proc-sys-fs-file-max=false and -Dbump-proc-sys-fs-nr-open=false)
7979 has been added to revert this change in behaviour, which might be
7980 an option for systems that turn off memcg in the kernel.
7981
7982 * When no /etc/locale.conf file exists (and hence no locale settings
7983 are in place), systemd will now use the "C.UTF-8" locale by default,
7984 and set LANG= to it. This locale is supported by various
7985 distributions including Fedora, with clear indications that upstream
7986 glibc is going to make it available too. This locale enables UTF-8
7987 mode by default, which appears appropriate for 2018.
7988
7989 * The "net.ipv4.conf.all.rp_filter" sysctl will now be set to 2 by
7990 default. This effectively switches the RFC3704 Reverse Path filtering
7991 from Strict mode to Loose mode. This is more appropriate for hosts
7992 that have multiple links with routes to the same networks (e.g.
7993 a client with a Wi-Fi and Ethernet both connected to the internet).
7994
7995 Consult the kernel documentation for details on this sysctl:
7996 https://docs.kernel.org/networking/ip-sysctl.html
7997
7998 * The v239 change to turn on "net.ipv4.tcp_ecn" by default has been
7999 reverted.
8000
8001 * CPUAccounting=yes no longer enables the CPU controller when using
8002 kernel 4.15+ and the unified cgroup hierarchy, as required accounting
8003 statistics are now provided independently from the CPU controller.
8004
8005 * Support for disabling a particular cgroup controller within a sub-tree
8006 has been added through the DisableControllers= directive.
8007
8008 * cgroup_no_v1=all on the kernel command line now also implies
8009 using the unified cgroup hierarchy, unless one explicitly passes
8010 systemd.unified_cgroup_hierarchy=0 on the kernel command line.
8011
8012 * The new "MemoryMin=" unit file property may now be used to set the
8013 memory usage protection limit of processes invoked by the unit. This
8014 controls the cgroup v2 memory.min attribute. Similarly, the new
8015 "IODeviceLatencyTargetSec=" property has been added, wrapping the new
8016 cgroup v2 io.latency cgroup property for configuring per-service I/O
8017 latency.
8018
8019 * systemd now supports the cgroup v2 devices BPF logic, as counterpart
8020 to the cgroup v1 "devices" cgroup controller.
8021
8022 * systemd-escape now is able to combine --unescape with --template. It
8023 also learnt a new option --instance for extracting and unescaping the
8024 instance part of a unit name.
8025
8026 * sd-bus now provides the sd_bus_message_readv() which is similar to
8027 sd_bus_message_read() but takes a va_list object. The pair
8028 sd_bus_set_method_call_timeout() and sd_bus_get_method_call_timeout()
8029 has been added for configuring the default method call timeout to
8030 use. sd_bus_error_move() may be used to efficiently move the contents
8031 from one sd_bus_error structure to another, invalidating the
8032 source. sd_bus_set_close_on_exit() and sd_bus_get_close_on_exit() may
8033 be used to control whether a bus connection object is automatically
8034 flushed when an sd-event loop is exited.
8035
8036 * When processing classic BSD syslog log messages, journald will now
8037 save the original time-stamp string supplied in the new
8038 SYSLOG_TIMESTAMP= journal field. This permits consumers to
8039 reconstruct the original BSD syslog message more correctly.
8040
8041 * StandardOutput=/StandardError= in service files gained support for
8042 new "append:…" parameters, for connecting STDOUT/STDERR of a service
8043 to a file, and appending to it.
8044
8045 * The signal to use as last step of killing of unit processes is now
8046 configurable. Previously it was hard-coded to SIGKILL, which may now
8047 be overridden with the new KillSignal= setting. Note that this is the
8048 signal used when regular termination (i.e. SIGTERM) does not suffice.
8049 Similarly, the signal used when aborting a program in case of a
8050 watchdog timeout may now be configured too (WatchdogSignal=).
8051
8052 * The XDG_SESSION_DESKTOP environment variable may now be configured in
8053 the pam_systemd argument line, using the new desktop= switch. This is
8054 useful to initialize it properly from a display manager without
8055 having to touch C code.
8056
8057 * Most configuration options that previously accepted percentage values
8058 now also accept permille values with the '‰' suffix (instead of '%').
8059
8060 * systemd-resolved may now optionally use OpenSSL instead of GnuTLS for
8061 DNS-over-TLS.
8062
8063 * systemd-resolved's configuration file resolved.conf gained a new
8064 option ReadEtcHosts= which may be used to turn off processing and
8065 honoring /etc/hosts entries.
8066
8067 * The "--wait" switch may now be passed to "systemctl
8068 is-system-running", in which case the tool will synchronously wait
8069 until the system finished start-up.
8070
8071 * hostnamed gained a new bus call to determine the DMI product UUID.
8072
8073 * On x86-64 systemd will now prefer using the RDRAND processor
8074 instruction over /dev/urandom whenever it requires randomness that
8075 neither has to be crypto-grade nor should be reproducible. This
8076 should substantially reduce the amount of entropy systemd requests
8077 from the kernel during initialization on such systems, though not
8078 reduce it to zero. (Why not zero? systemd still needs to allocate
8079 UUIDs and such uniquely, which require high-quality randomness.)
8080
8081 * networkd gained support for Foo-Over-UDP, ERSPAN and ISATAP
8082 tunnels. It also gained a new option ForceDHCPv6PDOtherInformation=
8083 for forcing the "Other Information" bit in IPv6 RA messages. The
8084 bonding logic gained four new options AdActorSystemPriority=,
8085 AdUserPortKey=, AdActorSystem= for configuring various 802.3ad
8086 aspects, and DynamicTransmitLoadBalancing= for enabling dynamic
8087 shuffling of flows. The tunnel logic gained a new
8088 IPv6RapidDeploymentPrefix= option for configuring IPv6 Rapid
8089 Deployment. The policy rule logic gained four new options IPProtocol=,
8090 SourcePort= and DestinationPort=, InvertRule=. The bridge logic gained
8091 support for the MulticastToUnicast= option. networkd also gained
8092 support for configuring static IPv4 ARP or IPv6 neighbor entries.
8093
8094 * .preset files (as read by 'systemctl preset') may now be used to
8095 instantiate services.
8096
8097 * /etc/crypttab now understands the sector-size= option to configure
8098 the sector size for an encrypted partition.
8099
8100 * Key material for encrypted disks may now be placed on a formatted
8101 medium, and referenced from /etc/crypttab by the UUID of the file
8102 system, followed by "=" suffixed by the path to the key file.
8103
8104 * The "collect" udev component has been removed without replacement, as
8105 it is neither used nor maintained.
8106
8107 * When the RuntimeDirectory=, StateDirectory=, CacheDirectory=,
8108 LogsDirectory=, ConfigurationDirectory= settings are used in a
8109 service the executed processes will now receive a set of environment
8110 variables containing the full paths of these directories.
8111 Specifically, RUNTIME_DIRECTORY=, STATE_DIRECTORY, CACHE_DIRECTORY,
8112 LOGS_DIRECTORY, CONFIGURATION_DIRECTORY are now set if these options
8113 are used. Note that these options may be used multiple times per
8114 service in which case the resulting paths will be concatenated and
8115 separated by colons.
8116
8117 * Predictable interface naming has been extended to cover InfiniBand
8118 NICs. They will be exposed with an "ib" prefix.
8119
8120 * tmpfiles.d/ line types may now be suffixed with a '-' character, in
8121 which case the respective line failing is ignored.
8122
8123 * .link files may now be used to configure the equivalent to the
8124 "ethtool advertise" commands.
8125
8126 * The sd-device.h and sd-hwdb.h APIs are now exported, as an
8127 alternative to libudev.h. Previously, the latter was just an internal
8128 wrapper around the former, but now these two APIs are exposed
8129 directly.
8130
8131 * sd-id128.h gained a new function sd_id128_get_boot_app_specific()
8132 which calculates an app-specific boot ID similar to how
8133 sd_id128_get_machine_app_specific() generates an app-specific machine
8134 ID.
8135
8136 * A new tool systemd-id128 has been added that can be used to determine
8137 and generate various 128-bit IDs.
8138
8139 * /etc/os-release gained two new standardized fields DOCUMENTATION_URL=
8140 and LOGO=.
8141
8142 * systemd-hibernate-resume-generator will now honor the "noresume"
8143 kernel command line option, in which case it will bypass resuming
8144 from any hibernated image.
8145
8146 * The systemd-sleep.conf configuration file gained new options
8147 AllowSuspend=, AllowHibernation=, AllowSuspendThenHibernate=,
8148 AllowHybridSleep= for prohibiting specific sleep modes even if the
8149 kernel exports them.
8150
8151 * portablectl is now officially supported and has thus moved to
8152 /usr/bin/.
8153
8154 * bootctl learnt the two new commands "set-default" and "set-oneshot"
8155 for setting the default boot loader item to boot to (either
8156 persistently or only for the next boot). This is currently only
8157 compatible with sd-boot, but may be implemented on other boot loaders
8158 too, that follow the boot loader interface. The updated interface is
8159 now documented here:
8160
8161 https://systemd.io/BOOT_LOADER_INTERFACE
8162
8163 * A new kernel command line option systemd.early_core_pattern= is now
8164 understood which may be used to influence the core_pattern PID 1
8165 installs during early boot.
8166
8167 * busctl learnt two new options -j and --json= for outputting method
8168 call replies, properties and monitoring output in JSON.
8169
8170 * journalctl's JSON output now supports simple ANSI coloring as well as
8171 a new "json-seq" mode for generating RFC7464 output.
8172
8173 * Unit files now support the %g/%G specifiers that resolve to the UNIX
8174 group/GID of the service manager runs as, similar to the existing
8175 %u/%U specifiers that resolve to the UNIX user/UID.
8176
8177 * systemd-logind learnt a new global configuration option
8178 UserStopDelaySec= that may be set in logind.conf. It specifies how
8179 long the systemd --user instance shall remain started after a user
8180 logs out. This is useful to speed up repetitive re-connections of the
8181 same user, as it means the user's service manager doesn't have to be
8182 stopped/restarted on each iteration, but can be reused between
8183 subsequent options. This setting defaults to 10s. systemd-logind also
8184 exports two new properties on its Manager D-Bus objects indicating
8185 whether the system's lid is currently closed, and whether the system
8186 is on AC power.
8187
8188 * systemd gained support for a generic boot counting logic, which
8189 generically permits automatic reverting to older boot loader entries
8190 if newer updated ones don't work. The boot loader side is implemented
8191 in sd-boot, but is kept open for other boot loaders too. For details
8192 see:
8193
8194 https://systemd.io/AUTOMATIC_BOOT_ASSESSMENT
8195
8196 * The SuccessAction=/FailureAction= unit file settings now learnt two
8197 new parameters: "exit" and "exit-force", which result in immediate
8198 exiting of the service manager, and are only useful in systemd --user
8199 and container environments.
8200
8201 * Unit files gained support for a pair of options
8202 FailureActionExitStatus=/SuccessActionExitStatus= for configuring the
8203 exit status to use as service manager exit status when
8204 SuccessAction=/FailureAction= is set to exit or exit-force.
8205
8206 * A pair of LogRateLimitIntervalSec=/LogRateLimitBurst= per-service
8207 options may now be used to configure the log rate limiting applied by
8208 journald per-service.
8209
8210 * systemd-analyze gained a new verb "timespan" for parsing and
8211 normalizing time span values (i.e. strings like "5min 7s 8us").
8212
8213 * systemd-analyze also gained a new verb "security" for analyzing the
8214 security and sand-boxing settings of services in order to determine an
8215 "exposure level" for them, indicating whether a service would benefit
8216 from more sand-boxing options turned on for them.
8217
8218 * "systemd-analyze syscall-filter" will now also show system calls
8219 supported by the local kernel but not included in any of the defined
8220 groups.
8221
8222 * .nspawn files now understand the Ephemeral= setting, matching the
8223 --ephemeral command line switch.
8224
8225 * sd-event gained the new APIs sd_event_source_get_floating() and
8226 sd_event_source_set_floating() for controlling whether a specific
8227 event source is "floating", i.e. destroyed along with the even loop
8228 object itself.
8229
8230 * Unit objects on D-Bus gained a new "Refs" property that lists all
8231 clients that currently have a reference on the unit (to ensure it is
8232 not unloaded).
8233
8234 * The JoinControllers= option in system.conf is no longer supported, as
8235 it didn't work correctly, is hard to support properly, is legacy (as
8236 the concept only exists on cgroup v1) and apparently wasn't used.
8237
8238 * Journal messages that are generated whenever a unit enters the failed
8239 state are now tagged with a unique MESSAGE_ID. Similarly, messages
8240 generated whenever a service process exits are now made recognizable,
8241 too. A tagged message is also emitted whenever a unit enters the
8242 "dead" state on success.
8243
8244 * systemd-run gained a new switch --working-directory= for configuring
8245 the working directory of the service to start. A shortcut -d is
8246 equivalent, setting the working directory of the service to the
8247 current working directory of the invoking program. The new --shell
8248 (or just -S) option has been added for invoking the $SHELL of the
8249 caller as a service, and implies --pty --same-dir --wait --collect
8250 --service-type=exec. Or in other words, "systemd-run -S" is now the
8251 quickest way to quickly get an interactive in a fully clean and
8252 well-defined system service context.
8253
8254 * machinectl gained a new verb "import-fs" for importing an OS tree
8255 from a directory. Moreover, when a directory or tarball is imported
8256 and single top-level directory found with the OS itself below the OS
8257 tree is automatically mangled and moved one level up.
8258
8259 * systemd-importd will no longer set up an implicit btrfs loop-back
8260 file system on /var/lib/machines. If one is already set up, it will
8261 continue to be used.
8262
8263 * A new generator "systemd-run-generator" has been added. It will
8264 synthesize a unit from one or more program command lines included in
8265 the kernel command line. This is very useful in container managers
8266 for example:
8267
8268 # systemd-nspawn -i someimage.raw -b systemd.run='"some command line"'
8269
8270 This will run "systemd-nspawn" on an image, invoke the specified
8271 command line and immediately shut down the container again, returning
8272 the command line's exit code.
8273
8274 * The block device locking logic is now documented:
8275
8276 https://systemd.io/BLOCK_DEVICE_LOCKING
8277
8278 * loginctl and machinectl now optionally output the various tables in
8279 JSON using the --output= switch. It is our intention to add similar
8280 support to systemctl and all other commands.
8281
8282 * udevadm's query and trigger verb now optionally take a .device unit
8283 name as argument.
8284
8285 * systemd-udevd's network naming logic now understands a new
8286 net.naming-scheme= kernel command line switch, which may be used to
8287 pick a specific version of the naming scheme. This helps stabilizing
8288 interface names even as systemd/udev are updated and the naming logic
8289 is improved.
8290
8291 * sd-id128.h learnt two new auxiliary helpers: sd_id128_is_allf() and
8292 SD_ID128_ALLF to test if a 128-bit ID is set to all 0xFF bytes, and to
8293 initialize one to all 0xFF.
8294
8295 * After loading the SELinux policy systemd will now recursively relabel
8296 all files and directories listed in
8297 /run/systemd/relabel-extra.d/*.relabel (which should be simple
8298 newline separated lists of paths) in addition to the ones it already
8299 implicitly relabels in /run, /dev and /sys. After the relabelling is
8300 completed the *.relabel files (and /run/systemd/relabel-extra.d/) are
8301 removed. This is useful to permit initrds (i.e. code running before
8302 the SELinux policy is in effect) to generate files in the host
8303 filesystem safely and ensure that the correct label is applied during
8304 the transition to the host OS.
8305
8306 * KERNEL API BREAKAGE: Linux kernel 4.18 changed behaviour regarding
8307 mknod() handling in user namespaces. Previously mknod() would always
8308 fail with EPERM in user namespaces. Since 4.18 mknod() will succeed
8309 but device nodes generated that way cannot be opened, and attempts to
8310 open them result in EPERM. This breaks the "graceful fallback" logic
8311 in systemd's PrivateDevices= sand-boxing option. This option is
8312 implemented defensively, so that when systemd detects it runs in a
8313 restricted environment (such as a user namespace, or an environment
8314 where mknod() is blocked through seccomp or absence of CAP_SYS_MKNOD)
8315 where device nodes cannot be created the effect of PrivateDevices= is
8316 bypassed (following the logic that 2nd-level sand-boxing is not
8317 essential if the system systemd runs in is itself already sand-boxed
8318 as a whole). This logic breaks with 4.18 in container managers where
8319 user namespacing is used: suddenly PrivateDevices= succeeds setting
8320 up a private /dev/ file system containing devices nodes — but when
8321 these are opened they don't work.
8322
8323 At this point it is recommended that container managers utilizing
8324 user namespaces that intend to run systemd in the payload explicitly
8325 block mknod() with seccomp or similar, so that the graceful fallback
8326 logic works again.
8327
8328 We are very sorry for the breakage and the requirement to change
8329 container configurations for newer kernels. It's purely caused by an
8330 incompatible kernel change. The relevant kernel developers have been
8331 notified about this userspace breakage quickly, but they chose to
8332 ignore it.
8333
8334 * PermissionsStartOnly= setting is deprecated (but is still supported
8335 for backwards compatibility). The same functionality is provided by
8336 the more flexible "+", "!", and "!!" prefixes to ExecStart= and other
8337 commands.
8338
8339 * $DBUS_SESSION_BUS_ADDRESS environment variable is not set by
8340 pam_systemd anymore.
8341
8342 * The naming scheme for network devices was changed to always rename
8343 devices, even if they were already renamed by userspace. The "kernel"
8344 policy was changed to only apply as a fallback, if no other naming
8345 policy took effect.
8346
8347 * The requirements to build systemd is bumped to meson-0.46 and
8348 python-3.5.
8349
8350 Contributions from: afg, Alan Jenkins, Aleksei Timofeyev, Alexander
8351 Filippov, Alexander Kurtz, Alexey Bogdanenko, Andreas Henriksson,
8352 Andrew Jorgensen, Anita Zhang, apnix-uk, Arkan49, Arseny Maslennikov,
8353 asavah, Asbjørn Apeland, aszlig, Bastien Nocera, Ben Boeckel, Benedikt
8354 Morbach, Benjamin Berg, Bruce Zhang, Carlo Caione, Cedric Viou, Chen
8355 Qi, Chris Chiu, Chris Down, Chris Morin, Christian Rebischke, Claudius
8356 Ellsel, Colin Guthrie, dana, Daniel, Daniele Medri, Daniel Kahn
8357 Gillmor, Daniel Rusek, Daniel van Vugt, Dariusz Gadomski, Dave Reisner,
8358 David Anderson, Davide Cavalca, David Leeds, David Malcolm, David
8359 Strauss, David Tardon, Dimitri John Ledkov, Dmitry Torokhov, dj-kaktus,
8360 Dongsu Park, Elias Probst, Emil Soleyman, Erik Kooistra, Ervin Peters,
8361 Evgeni Golov, Evgeny Vereshchagin, Fabrice Fontaine, Faheel Ahmad,
8362 Faizal Luthfi, Felix Yan, Filipe Brandenburger, Franck Bui, Frank
8363 Schaefer, Frantisek Sumsal, Gautier Husson, Gianluca Boiano, Giuseppe
8364 Scrivano, glitsj16, Hans de Goede, Harald Hoyer, Harry Mallon, Harshit
8365 Jain, Helmut Grohne, Henry Tung, Hui Yiqun, imayoda, Insun Pyo, Iwan
8366 Timmer, Jan Janssen, Jan Pokorný, Jan Synacek, Jason A. Donenfeld,
8367 javitoom, Jérémy Nouhaud, Jeremy Su, Jiuyang Liu, João Paulo Rechi
8368 Vita, Joe Hershberger, Joe Rayhawk, Joerg Behrmann, Joerg Steffens,
8369 Jonas Dorel, Jon Ringle, Josh Soref, Julian Andres Klode, Jun Bo Bi,
8370 Jürg Billeter, Keith Busch, Khem Raj, Kirill Marinushkin, Larry
8371 Bernstone, Lennart Poettering, Lion Yang, Li Song, Lorenz
8372 Hübschle-Schneider, Lubomir Rintel, Lucas Werkmeister, Ludwin Janvier,
8373 Lukáš Nykrýn, Luke Shumaker, mal, Marc-Antoine Perennou, Marcin
8374 Skarbek, Marco Trevisan (Treviño), Marian Cepok, Mario Hros, Marko
8375 Myllynen, Markus Grimm, Martin Pitt, Martin Sobotka, Martin Wilck,
8376 Mathieu Trudel-Lapierre, Matthew Leeds, Michael Biebl, Michael Olbrich,
8377 Michael 'pbone' Pobega, Michael Scherer, Michal Koutný, Michal
8378 Sekletar, Michal Soltys, Mike Gilbert, Mike Palmer, Muhammet Kara, Neal
8379 Gompa, Neil Brown, Network Silence, Niklas Tibbling, Nikolas Nyby,
8380 Nogisaka Sadata, Oliver Smith, Patrik Flykt, Pavel Hrdina, Paweł
8381 Szewczyk, Peter Hutterer, Piotr Drąg, Ray Strode, Reinhold Mueller,
8382 Renaud Métrich, Roman Gushchin, Ronny Chevalier, Rubén Suárez Alvarez,
8383 Ruixin Bao, RussianNeuroMancer, Ryutaroh Matsumoto, Saleem Rashid, Sam
8384 Morris, Samuel Morris, Sandy Carter, scootergrisen, Sébastien Bacher,
8385 Sergey Ptashnick, Shawn Landden, Shengyao Xue, Shih-Yuan Lee
8386 (FourDollars), Silvio Knizek, Sjoerd Simons, Stasiek Michalski, Stephen
8387 Gallagher, Steven Allen, Steve Ramage, Susant Sahani, Sven Joachim,
8388 Sylvain Plantefève, Tanu Kaskinen, Tejun Heo, Thiago Macieira, Thomas
8389 Blume, Thomas Haller, Thomas H. P. Andersen, Tim Ruffing, TJ, Tobias
8390 Jungel, Todd Walton, Tommi Rantala, Tomsod M, Tony Novak, Tore
8391 Anderson, Trevonn, Victor Laskurain, Victor Tapia, Violet Halo, Vojtech
8392 Trefny, welaq, William A. Kennington III, William Douglas, Wyatt Ward,
8393 Xiang Fan, Xi Ruoyao, Xuanwo, Yann E. Morin, YmrDtnJu, Yu Watanabe,
8394 Zbigniew Jędrzejewski-Szmek, Zhang Xianwei, Zsolt Dollenstein
8395
8396 — Warsaw, 2018-12-21
8397
8398 CHANGES WITH 239:
8399
8400 * NETWORK INTERFACE DEVICE NAMING CHANGES: systemd-udevd's "net_id"
8401 builtin will name network interfaces differently than in previous
8402 versions for virtual network interfaces created with SR-IOV and NPAR
8403 and for devices where the PCI network controller device does not have
8404 a slot number associated.
8405
8406 SR-IOV virtual devices are now named based on the name of the parent
8407 interface, with a suffix of "v<N>", where <N> is the virtual device
8408 number. Previously those virtual devices were named as if completely
8409 independent.
8410
8411 The ninth and later NPAR virtual devices will be named following the
8412 scheme used for the first eight NPAR partitions. Previously those
8413 devices were not renamed and the kernel default (eth<n>) was used.
8414
8415 "net_id" will also generate names for PCI devices where the PCI
8416 network controller device does not have an associated slot number
8417 itself, but one of its parents does. Previously those devices were
8418 not renamed and the kernel default (eth<n>) was used.
8419
8420 * AF_INET and AF_INET6 are dropped from RestrictAddressFamilies= in
8421 systemd-logind.service. Since v235, IPAddressDeny=any has been set to
8422 the unit. So, it is expected that the default behavior of
8423 systemd-logind is not changed. However, if distribution packagers or
8424 administrators disabled or modified IPAddressDeny= setting by a
8425 drop-in config file, then it may be necessary to update the file to
8426 re-enable AF_INET and AF_INET6 to support network user name services,
8427 e.g. NIS.
8428
8429 * When the RestrictNamespaces= unit property is specified multiple
8430 times, then the specified types are merged now. Previously, only the
8431 last assignment was used. So, if distribution packagers or
8432 administrators modified the setting by a drop-in config file, then it
8433 may be necessary to update the file.
8434
8435 * When OnFailure= is used in combination with Restart= on a service
8436 unit, then the specified units will no longer be triggered on
8437 failures that result in restarting. Previously, the specified units
8438 would be activated each time the unit failed, even when the unit was
8439 going to be restarted automatically. This behaviour contradicted the
8440 documentation. With this release the code is adjusted to match the
8441 documentation.
8442
8443 * systemd-tmpfiles will now print a notice whenever it encounters
8444 tmpfiles.d/ lines referencing the /var/run/ directory. It will
8445 recommend reworking them to use the /run/ directory instead (for
8446 which /var/run/ is simply a symlinked compatibility alias). This way
8447 systemd-tmpfiles can properly detect line conflicts and merge lines
8448 referencing the same file by two paths, without having to access
8449 them.
8450
8451 * systemctl disable/unmask/preset/preset-all cannot be used with
8452 --runtime. Previously this was allowed, but resulted in unintuitive
8453 behaviour that wasn't useful. systemctl disable/unmask will now undo
8454 both runtime and persistent enablement/masking, i.e. it will remove
8455 any relevant symlinks both in /run and /etc.
8456
8457 * Note that all long-running system services shipped with systemd will
8458 now default to a system call allow list (rather than a deny list, as
8459 before). In particular, systemd-udevd will now enforce one too. For
8460 most cases this should be safe, however downstream distributions
8461 which disabled sandboxing of systemd-udevd (specifically the
8462 MountFlags= setting), might want to disable this security feature
8463 too, as the default allow-listing will prohibit all mount, swap,
8464 reboot and clock changing operations from udev rules.
8465
8466 * sd-boot acquired new loader configuration settings to optionally turn
8467 off Windows and MacOS boot partition discovery as well as
8468 reboot-into-firmware menu items. It is also able to pick a better
8469 screen resolution for HiDPI systems, and now provides loader
8470 configuration settings to change the resolution explicitly.
8471
8472 * systemd-resolved now supports DNS-over-TLS. It's still
8473 turned off by default, use DNSOverTLS=opportunistic to turn it on in
8474 resolved.conf. We intend to make this the default as soon as couple
8475 of additional techniques for optimizing the initial latency caused by
8476 establishing a TLS/TCP connection are implemented.
8477
8478 * systemd-resolved.service and systemd-networkd.service now set
8479 DynamicUser=yes. The users systemd-resolve and systemd-network are
8480 not created by systemd-sysusers anymore.
8481
8482 NOTE: This has a chance of breaking nss-ldap and similar NSS modules
8483 that embed a network facing module into any process using getpwuid()
8484 or related call: the dynamic allocation of the user ID for
8485 systemd-resolved.service means the service manager has to check NSS
8486 if the user name is already taken when forking off the service. Since
8487 the user in the common case won't be defined in /etc/passwd the
8488 lookup is likely to trigger nss-ldap which in turn might use NSS to
8489 ask systemd-resolved for hostname lookups. This will hence result in
8490 a deadlock: a user name lookup in order to start
8491 systemd-resolved.service will result in a hostname lookup for which
8492 systemd-resolved.service needs to be started already. There are
8493 multiple ways to work around this problem: pre-allocate the
8494 "systemd-resolve" user on such systems, so that nss-ldap won't be
8495 triggered; or use a different NSS package that doesn't do networking
8496 in-process but provides a local asynchronous name cache; or configure
8497 the NSS package to avoid lookups for UIDs in the range `pkg-config
8498 systemd --variable=dynamicuidmin` … `pkg-config systemd
8499 --variable=dynamicuidmax`, so that it does not consider itself
8500 authoritative for the same UID range systemd allocates dynamic users
8501 from.
8502
8503 * The systemd-resolve tool has been renamed to resolvectl (it also
8504 remains available under the old name, for compatibility), and its
8505 interface is now verb-based, similar in style to the other <xyz>ctl
8506 tools, such as systemctl or loginctl.
8507
8508 * The resolvectl/systemd-resolve tool also provides 'resolvconf'
8509 compatibility. It may be symlinked under the 'resolvconf' name, in
8510 which case it will take arguments and input compatible with the
8511 Debian and FreeBSD resolvconf tool.
8512
8513 * Support for suspend-then-hibernate has been added, i.e. a sleep mode
8514 where the system initially suspends, and after a timeout resumes and
8515 hibernates again.
8516
8517 * networkd's ClientIdentifier= now accepts a new option "duid-only". If
8518 set the client will only send a DUID as client identifier. (EDIT: the
8519 option was broken, and was dropped in v255.)
8520
8521 * The nss-systemd glibc NSS module will now enumerate dynamic users and
8522 groups in effect. Previously, it could resolve UIDs/GIDs to user
8523 names/groups and vice versa, but did not support enumeration.
8524
8525 * journald's Compress= configuration setting now optionally accepts a
8526 byte threshold value. All journal objects larger than this threshold
8527 will be compressed, smaller ones will not. Previously this threshold
8528 was not configurable and set to 512.
8529
8530 * A new system.conf setting NoNewPrivileges= is now available which may
8531 be used to turn off acquisition of new privileges system-wide
8532 (i.e. set Linux' PR_SET_NO_NEW_PRIVS for PID 1 itself, and thus also
8533 for all its children). Note that turning this option on means setuid
8534 binaries and file system capabilities lose their special powers.
8535 While turning on this option is a big step towards a more secure
8536 system, doing so is likely to break numerous pre-existing UNIX tools,
8537 in particular su and sudo.
8538
8539 * A new service systemd-time-sync-wait.service has been added. If
8540 enabled it will delay the time-sync.target unit at boot until time
8541 synchronization has been received from the network. This
8542 functionality is useful on systems lacking a local RTC or where it is
8543 acceptable that the boot process shall be delayed by external network
8544 services.
8545
8546 * When hibernating, systemd will now inform the kernel of the image
8547 write offset, on kernels new enough to support this. This means swap
8548 files should work for hibernation now.
8549
8550 * When loading unit files, systemd will now look for drop-in unit files
8551 extensions in additional places. Previously, for a unit file name
8552 "foo-bar-baz.service" it would look for dropin files in
8553 "foo-bar-baz.service.d/*.conf". Now, it will also look in
8554 "foo-bar-.service.d/*.conf" and "foo-.service.d/", i.e. at the
8555 service name truncated after all inner dashes. This scheme allows
8556 writing drop-ins easily that apply to a whole set of unit files at
8557 once. It's particularly useful for mount and slice units (as their
8558 naming is prefix based), but is also useful for service and other
8559 units, for packages that install multiple unit files at once,
8560 following a strict naming regime of beginning the unit file name with
8561 the package's name. Two new specifiers are now supported in unit
8562 files to match this: %j and %J are replaced by the part of the unit
8563 name following the last dash.
8564
8565 * Unit files and other configuration files that support specifier
8566 expansion now understand another three new specifiers: %T and %V will
8567 resolve to /tmp and /var/tmp respectively, or whatever temporary
8568 directory has been set for the calling user. %E will expand to either
8569 /etc (for system units) or $XDG_CONFIG_HOME (for user units).
8570
8571 * The ExecStart= lines of unit files are no longer required to
8572 reference absolute paths. If non-absolute paths are specified the
8573 specified binary name is searched within the service manager's
8574 built-in $PATH, which may be queried with 'systemd-path
8575 search-binaries-default'. It's generally recommended to continue to
8576 use absolute paths for all binaries specified in unit files.
8577
8578 * Units gained a new load state "bad-setting", which is used when a
8579 unit file was loaded, but contained fatal errors which prevent it
8580 from being started (for example, a service unit has been defined
8581 lacking both ExecStart= and ExecStop= lines).
8582
8583 * coredumpctl's "gdb" verb has been renamed to "debug", in order to
8584 support alternative debuggers, for example lldb. The old name
8585 continues to be available however, for compatibility reasons. Use the
8586 new --debugger= switch or the $SYSTEMD_DEBUGGER environment variable
8587 to pick an alternative debugger instead of the default gdb.
8588
8589 * systemctl and the other tools will now output escape sequences that
8590 generate proper clickable hyperlinks in various terminal emulators
8591 where useful (for example, in the "systemctl status" output you can
8592 now click on the unit file name to quickly open it in the
8593 editor/viewer of your choice). Note that not all terminal emulators
8594 support this functionality yet, but many do. Unfortunately, the
8595 "less" pager doesn't support this yet, hence this functionality is
8596 currently automatically turned off when a pager is started (which
8597 happens quite often due to auto-paging). We hope to remove this
8598 limitation as soon as "less" learns these escape sequences. This new
8599 behaviour may also be turned off explicitly with the $SYSTEMD_URLIFY
8600 environment variable. For details on these escape sequences see:
8601 https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda
8602
8603 * networkd's .network files now support a new IPv6MTUBytes= option for
8604 setting the MTU used by IPv6 explicitly as well as a new MTUBytes=
8605 option in the [Route] section to configure the MTU to use for
8606 specific routes. It also gained support for configuration of the DHCP
8607 "UserClass" option through the new UserClass= setting. It gained
8608 three new options in the new [CAN] section for configuring CAN
8609 networks. The MULTICAST and ALLMULTI interface flags may now be
8610 controlled explicitly with the new Multicast= and AllMulticast=
8611 settings.
8612
8613 * networkd will now automatically make use of the kernel's route
8614 expiration feature, if it is available.
8615
8616 * udevd's .link files now support setting the number of receive and
8617 transmit channels, using the RxChannels=, TxChannels=,
8618 OtherChannels=, CombinedChannels= settings.
8619
8620 * Support for UDPSegmentationOffload= has been removed, given its
8621 limited support in hardware, and waning software support.
8622
8623 * networkd's .netdev files now support creating "netdevsim" interfaces.
8624
8625 * PID 1 learnt a new bus call GetUnitByControlGroup() which may be used
8626 to query the unit belonging to a specific kernel control group.
8627
8628 * systemd-analyze gained a new verb "cat-config", which may be used to
8629 dump the contents of any configuration file, with all its matching
8630 drop-in files added in, and honouring the usual search and masking
8631 logic applied to systemd configuration files. For example use
8632 "systemd-analyze cat-config systemd/system.conf" to get the complete
8633 system configuration file of systemd how it would be loaded by PID 1
8634 itself. Similar to this, various tools such as systemd-tmpfiles or
8635 systemd-sysusers, gained a new option "--cat-config", which does the
8636 corresponding operation for their own configuration settings. For
8637 example, "systemd-tmpfiles --cat-config" will now output the full
8638 list of tmpfiles.d/ lines in place.
8639
8640 * timedatectl gained three new verbs: "show" shows bus properties of
8641 systemd-timedated, "timesync-status" shows the current NTP
8642 synchronization state of systemd-timesyncd, and "show-timesync"
8643 shows bus properties of systemd-timesyncd.
8644
8645 * systemd-timesyncd gained a bus interface on which it exposes details
8646 about its state.
8647
8648 * A new environment variable $SYSTEMD_TIMEDATED_NTP_SERVICES is now
8649 understood by systemd-timedated. It takes a colon-separated list of
8650 unit names of NTP client services. The list is used by
8651 "timedatectl set-ntp".
8652
8653 * systemd-nspawn gained a new --rlimit= switch for setting initial
8654 resource limits for the container payload. There's a new switch
8655 --hostname= to explicitly override the container's hostname. A new
8656 --no-new-privileges= switch may be used to control the
8657 PR_SET_NO_NEW_PRIVS flag for the container payload. A new
8658 --oom-score-adjust= switch controls the OOM scoring adjustment value
8659 for the payload. The new --cpu-affinity= switch controls the CPU
8660 affinity of the container payload. The new --resolv-conf= switch
8661 allows more detailed control of /etc/resolv.conf handling of the
8662 container. Similarly, the new --timezone= switch allows more detailed
8663 control of /etc/localtime handling of the container.
8664
8665 * systemd-detect-virt gained a new --list switch, which will print a
8666 list of all currently known VM and container environments.
8667
8668 * Support for "Portable Services" has been added, see
8669 doc/PORTABLE_SERVICES.md for details. Currently, the support is still
8670 experimental, but this is expected to change soon. Reflecting this
8671 experimental state, the "portablectl" binary is not installed into
8672 /usr/bin yet. The binary has to be called with the full path
8673 /usr/lib/systemd/portablectl instead.
8674
8675 * journalctl's and systemctl's -o switch now knows a new log output
8676 mode "with-unit". The output it generates is very similar to the
8677 regular "short" mode, but displays the unit name instead of the
8678 syslog tag for each log line. Also, the date is shown with timezone
8679 information. This mode is probably more useful than the classic
8680 "short" output mode for most purposes, except where pixel-perfect
8681 compatibility with classic /var/log/messages formatting is required.
8682
8683 * A new --dump-bus-properties switch has been added to the systemd
8684 binary, which may be used to dump all supported D-Bus properties.
8685 (Options which are still supported, but are deprecated, are *not*
8686 shown.)
8687
8688 * sd-bus gained a set of new calls:
8689 sd_bus_slot_set_floating()/sd_bus_slot_get_floating() may be used to
8690 enable/disable the "floating" state of a bus slot object,
8691 i.e. whether the slot object pins the bus it is allocated for into
8692 memory or if the bus slot object gets disconnected when the bus goes
8693 away. sd_bus_open_with_description(),
8694 sd_bus_open_user_with_description(),
8695 sd_bus_open_system_with_description() may be used to allocate bus
8696 objects and set their description string already during allocation.
8697
8698 * sd-event gained support for watching inotify events from the event
8699 loop, in an efficient way, sharing inotify handles between multiple
8700 users. For this a new function sd_event_add_inotify() has been added.
8701
8702 * sd-event and sd-bus gained support for calling special user-supplied
8703 destructor functions for userdata pointers associated with
8704 sd_event_source, sd_bus_slot, and sd_bus_track objects. For this new
8705 functions sd_bus_slot_set_destroy_callback,
8706 sd_bus_slot_get_destroy_callback, sd_bus_track_set_destroy_callback,
8707 sd_bus_track_get_destroy_callback,
8708 sd_event_source_set_destroy_callback,
8709 sd_event_source_get_destroy_callback have been added.
8710
8711 * The "net.ipv4.tcp_ecn" sysctl will now be turned on by default.
8712
8713 * PID 1 will now automatically reschedule .timer units whenever the
8714 local timezone changes. (They previously got rescheduled
8715 automatically when the system clock changed.)
8716
8717 * New documentation has been added to document cgroups delegation,
8718 portable services and the various code quality tools we have set up:
8719
8720 https://github.com/systemd/systemd/blob/master/docs/CGROUP_DELEGATION.md
8721 https://github.com/systemd/systemd/blob/master/docs/PORTABLE_SERVICES.md
8722 https://github.com/systemd/systemd/blob/master/docs/CODE_QUALITY.md
8723
8724 * The Boot Loader Specification has been added to the source tree.
8725
8726 https://github.com/systemd/systemd/blob/master/docs/BOOT_LOADER_SPECIFICATION.md
8727
8728 While moving it into our source tree we have updated it and further
8729 changes are now accepted through the usual github PR workflow.
8730
8731 * pam_systemd will now look for PAM userdata fields systemd.memory_max,
8732 systemd.tasks_max, systemd.cpu_weight, systemd.io_weight set by
8733 earlier PAM modules. The data in these fields is used to initialize
8734 the session scope's resource properties. Thus external PAM modules
8735 may now configure per-session limits, for example sourced from
8736 external user databases.
8737
8738 * socket units with Accept=yes will now maintain a "refused" counter in
8739 addition to the existing "accepted" counter, counting connections
8740 refused due to the enforced limits.
8741
8742 * The "systemd-path search-binaries-default" command may now be use to
8743 query the default, built-in $PATH PID 1 will pass to the services it
8744 manages.
8745
8746 * A new unit file setting PrivateMounts= has been added. It's a boolean
8747 option. If enabled the unit's processes are invoked in their own file
8748 system namespace. Note that this behaviour is also implied if any
8749 other file system namespacing options (such as PrivateTmp=,
8750 PrivateDevices=, ProtectSystem=, …) are used. This option is hence
8751 primarily useful for services that do not use any of the other file
8752 system namespacing options. One such service is systemd-udevd.service
8753 where this is now used by default.
8754
8755 * ConditionSecurity= gained a new value "uefi-secureboot" that is true
8756 when the system is booted in UEFI "secure mode".
8757
8758 * A new unit "system-update-pre.target" is added, which defines an
8759 optional synchronization point for offline system updates, as
8760 implemented by the pre-existing "system-update.target" unit. It
8761 allows ordering services before the service that executes the actual
8762 update process in a generic way.
8763
8764 * Systemd now emits warnings whenever .include syntax is used.
8765
8766 Contributions from: Adam Duskett, Alan Jenkins, Alessandro Casale,
8767 Alexander Kurtz, Alex Gartrell, Anssi Hannula, Arnaud Rebillout, Brian
8768 J. Murrell, Bruno Vernay, Chris Lamb, Chris Lesiak, Christian Brauner,
8769 Christian Hesse, Christian Rebischke, Colin Guthrie, Daniel Dao, Daniel
8770 Lin, Danylo Korostil, Davide Cavalca, David Tardon, Dimitri John
8771 Ledkov, Dmitriy Geels, Douglas Christman, Elia Geretto, emelenas, Emil
8772 Velikov, Evgeny Vereshchagin, Felipe Sateler, Feng Sun, Filipe
8773 Brandenburger, Franck Bui, futpib, Giuseppe Scrivano, Guillem Jover,
8774 guixxx, Hannes Reinecke, Hans de Goede, Harald Hoyer, Henrique Dante de
8775 Almeida, Hiram van Paassen, Ian Miell, Igor Gnatenko, Ivan Shapovalov,
8776 Iwan Timmer, James Cowgill, Jan Janssen, Jan Synacek, Jared Kazimir,
8777 Jérémy Rosen, João Paulo Rechi Vita, Joost Heitbrink, Jui-Chi Ricky
8778 Liang, Jürg Billeter, Kai-Heng Feng, Karol Augustin, Kay Sievers,
8779 Krzysztof Nowicki, Lauri Tirkkonen, Lennart Poettering, Leonard König,
8780 Long Li, Luca Boccassi, Lucas Werkmeister, Marcel Hoppe, Marc
8781 Kleine-Budde, Mario Limonciello, Martin Jansa, Martin Wilck, Mathieu
8782 Malaterre, Matteo F. Vescovi, Matthew McGinn, Matthias-Christian Ott,
8783 Michael Biebl, Michael Olbrich, Michael Prokop, Michal Koutný, Michal
8784 Sekletar, Mike Gilbert, Mikhail Kasimov, Milan Broz, Milan Pässler,
8785 Mladen Pejaković, Muhammet Kara, Nicolas Boichat, Omer Katz, Paride
8786 Legovini, Paul Menzel, Paul Milliken, Pavel Hrdina, Peter A. Bigot,
8787 Peter D'Hoye, Peter Hutterer, Peter Jones, Philip Sequeira, Philip
8788 Withnall, Piotr Drąg, Radostin Stoyanov, Ricardo Salveti de Araujo,
8789 Ronny Chevalier, Rosen Penev, Rubén Suárez Alvarez, Ryan Gonzalez,
8790 Salvo Tomaselli, Sebastian Reichel, Sergey Ptashnick, Sergio Lindo
8791 Mansilla, Stefan Schweter, Stephen Hemminger, Stuart Hayes, Susant
8792 Sahani, Sylvain Plantefève, Thomas H. P. Andersen, Tobias Jungel,
8793 Tomasz Torcz, Vito Caputo, Will Dietz, Will Thompson, Wim van Mourik,
8794 Yu Watanabe, Zbigniew Jędrzejewski-Szmek
8795
8796 — Berlin, 2018-06-22
8797
8798 CHANGES WITH 238:
8799
8800 * The MemoryAccounting= unit property now defaults to on. After
8801 discussions with the upstream control group maintainers we learnt
8802 that the negative impact of cgroup memory accounting on current
8803 kernels is finally relatively minimal, so that it should be safe to
8804 enable this by default without affecting system performance. Besides
8805 memory accounting only task accounting is turned on by default, all
8806 other forms of resource accounting (CPU, IO, IP) remain off for now,
8807 because it's not clear yet that their impact is small enough to move
8808 from opt-in to opt-out. We recommend downstreams to leave memory
8809 accounting on by default if kernel 4.14 or higher is primarily
8810 used. On very resource constrained systems or when support for old
8811 kernels is a necessity, -Dmemory-accounting-default=false can be used
8812 to revert this change.
8813
8814 * rpm scriptlets to update the udev hwdb and rules (%udev_hwdb_update,
8815 %udev_rules_update) and the journal catalog (%journal_catalog_update)
8816 from the upgrade scriptlets of individual packages now do nothing.
8817 Transfiletriggers have been added which will perform those updates
8818 once at the end of the transaction.
8819
8820 Similar transfiletriggers have been added to execute any sysctl.d
8821 and binfmt.d rules. Thus, it should be unnecessary to provide any
8822 scriptlets to execute this configuration from package installation
8823 scripts.
8824
8825 * systemd-sysusers gained a mode where the configuration to execute is
8826 specified on the command line, but this configuration is not executed
8827 directly, but instead it is merged with the configuration on disk,
8828 and the result is executed. This is useful for package installation
8829 scripts which want to create the user before installing any files on
8830 disk (in case some of those files are owned by that user), while
8831 still allowing local admin overrides.
8832
8833 This functionality is exposed to rpm scriptlets through a new
8834 %sysusers_create_package macro. Old %sysusers_create and
8835 %sysusers_create_inline macros are deprecated.
8836
8837 A transfiletrigger for sysusers.d configuration is now installed,
8838 which means that it should be unnecessary to call systemd-sysusers from
8839 package installation scripts, unless the package installs any files
8840 owned by those newly-created users, in which case
8841 %sysusers_create_package should be used.
8842
8843 * Analogous change has been done for systemd-tmpfiles: it gained a mode
8844 where the command-line configuration is merged with the configuration
8845 on disk. This is exposed as the new %tmpfiles_create_package macro,
8846 and %tmpfiles_create is deprecated. A transfiletrigger is installed
8847 for tmpfiles.d, hence it should be unnecessary to call systemd-tmpfiles
8848 from package installation scripts.
8849
8850 * sysusers.d configuration for a user may now also specify the group
8851 number, in addition to the user number ("u username 123:456"), or
8852 without the user number ("u username -:456").
8853
8854 * Configution items for systemd-sysusers can now be specified as
8855 positional arguments when the new --inline switch is used.
8856
8857 * The login shell of users created through sysusers.d may now be
8858 specified (previously, it was always /bin/sh for root and
8859 /sbin/nologin for other users).
8860
8861 * systemd-analyze gained a new --global switch to look at global user
8862 configuration. It also gained a unit-paths verb to list the unit load
8863 paths that are compiled into systemd (which can be used with
8864 --systemd, --user, or --global).
8865
8866 * udevadm trigger gained a new --settle/-w option to wait for any
8867 triggered events to finish (but just those, and not any other events
8868 which are triggered meanwhile).
8869
8870 * The action that systemd-logind takes when the lid is closed and the
8871 machine is connected to external power can now be configured using
8872 HandleLidSwitchExternalPower= in logind.conf. Previously, this action
8873 was determined by HandleLidSwitch=, and, for backwards compatibility,
8874 is still is, if HandleLidSwitchExternalPower= is not explicitly set.
8875
8876 * journalctl will periodically call sd_journal_process() to make it
8877 resilient against inotify queue overruns when journal files are
8878 rotated very quickly.
8879
8880 * Two new functions in libsystemd — sd_bus_get_n_queued_read and
8881 sd_bus_get_n_queued_write — may be used to check the number of
8882 pending bus messages.
8883
8884 * systemd gained a new
8885 org.freedesktop.systemd1.Manager.AttachProcessesToUnit dbus call
8886 which can be used to migrate foreign processes to scope and service
8887 units. The primary user for this new API is systemd itself: the
8888 systemd --user instance uses this call of the systemd --system
8889 instance to migrate processes if it itself gets the request to
8890 migrate processes and the kernel refuses this due to access
8891 restrictions. Thanks to this "systemd-run --scope --user …" works
8892 again in pure cgroup v2 environments when invoked from the user
8893 session scope.
8894
8895 * A new TemporaryFileSystem= setting can be used to mask out part of
8896 the real file system tree with tmpfs mounts. This may be combined
8897 with BindPaths= and BindReadOnlyPaths= to hide files or directories
8898 not relevant to the unit, while still allowing some paths lower in
8899 the tree to be accessed.
8900
8901 ProtectHome=tmpfs may now be used to hide user home and runtime
8902 directories from units, in a way that is mostly equivalent to
8903 "TemporaryFileSystem=/home /run/user /root".
8904
8905 * Non-service units are now started with KeyringMode=shared by default.
8906 This means that mount and swapon and other mount tools have access
8907 to keys in the main keyring.
8908
8909 * /sys/fs/bpf is now mounted automatically.
8910
8911 * QNX virtualization is now detected by systemd-detect-virt and may
8912 be used in ConditionVirtualization=.
8913
8914 * IPAccounting= may now be enabled also for slice units.
8915
8916 * A new -Dsplit-bin= build configuration switch may be used to specify
8917 whether bin and sbin directories are merged, or if they should be
8918 included separately in $PATH and various listings of executable
8919 directories. The build configuration scripts will try to autodetect
8920 the proper values of -Dsplit-usr= and -Dsplit-bin= based on build
8921 system, but distributions are encouraged to configure this
8922 explicitly.
8923
8924 * A new -Dok-color= build configuration switch may be used to change
8925 the colour of "OK" status messages.
8926
8927 * UPGRADE ISSUE: serialization of units using JoinsNamespaceOf= with
8928 PrivateNetwork=yes was buggy in previous versions of systemd. This
8929 means that after the upgrade and daemon-reexec, any such units must
8930 be restarted.
8931
8932 * INCOMPATIBILITY: as announced in the NEWS for 237, systemd-tmpfiles
8933 will not exclude read-only files owned by root from cleanup.
8934
8935 Contributions from: Alan Jenkins, Alexander F Rødseth, Alexis Jeandet,
8936 Andika Triwidada, Andrei Gherzan, Ansgar Burchardt, antizealot1337,
8937 Batuhan Osman Taşkaya, Beniamino Galvani, Bill Yodlowsky, Caio Marcelo
8938 de Oliveira Filho, CuBiC, Daniele Medri, Daniel Mouritzen, Daniel
8939 Rusek, Davide Cavalca, Dimitri John Ledkov, Douglas Christman, Evgeny
8940 Vereshchagin, Faalagorn, Filipe Brandenburger, Franck Bui, futpib,
8941 Giacomo Longo, Gunnar Hjalmarsson, Hans de Goede, Hermann Gausterer,
8942 Iago López Galeiras, Jakub Filak, Jan Synacek, Jason A. Donenfeld,
8943 Javier Martinez Canillas, Jérémy Rosen, Lennart Poettering, Lucas
8944 Werkmeister, Mao Huang, Marco Gulino, Michael Biebl, Michael Vogt,
8945 MilhouseVH, Neal Gompa (ニール・ゴンパ), Oleander Reis, Olof Mogren,
8946 Patrick Uiterwijk, Peter Hutterer, Peter Portante, Piotr Drąg, Robert
8947 Antoni Buj Gelonch, Sergey Ptashnick, Shawn Landden, Shuang Liu, Simon
8948 Fowler, SjonHortensius, snorreflorre, Susant Sahani, Sylvain
8949 Plantefève, Thomas Blume, Thomas Haller, Vito Caputo, Yu Watanabe,
8950 Zbigniew Jędrzejewski-Szmek, Марко М. Костић (Marko M. Kostić)
8951
8952 — Warsaw, 2018-03-05
8953
8954 CHANGES WITH 237:
8955
8956 * Some keyboards come with a zoom see-saw or rocker which until now got
8957 mapped to the Linux "zoomin/out" keys in hwdb. However, these
8958 keycodes are not recognized by any major desktop. They now produce
8959 Up/Down key events so that they can be used for scrolling.
8960
8961 * INCOMPATIBILITY: systemd-tmpfiles' "f" lines changed behaviour
8962 slightly: previously, if an argument was specified for lines of this
8963 type (i.e. the right-most column was set) this string was appended to
8964 existing files each time systemd-tmpfiles was run. This behaviour was
8965 different from what the documentation said, and not particularly
8966 useful, as repeated systemd-tmpfiles invocations would not be
8967 idempotent and grow such files without bounds. With this release
8968 behaviour has been altered to match what the documentation says:
8969 lines of this type only have an effect if the indicated files don't
8970 exist yet, and only then the argument string is written to the file.
8971
8972 * FUTURE INCOMPATIBILITY: In systemd v238 we intend to slightly change
8973 systemd-tmpfiles behaviour: previously, read-only files owned by root
8974 were always excluded from the file "aging" algorithm (i.e. the
8975 automatic clean-up of directories like /tmp based on
8976 atime/mtime/ctime). We intend to drop this restriction, and age files
8977 by default even when owned by root and read-only. This behaviour was
8978 inherited from older tools, but there have been requests to remove
8979 it, and it's not obvious why this restriction was made in the first
8980 place. Please speak up now, if you are aware of software that requires
8981 this behaviour, otherwise we'll remove the restriction in v238.
8982
8983 * A new environment variable $SYSTEMD_OFFLINE is now understood by
8984 systemctl. It takes a boolean argument. If on, systemctl assumes it
8985 operates on an "offline" OS tree, and will not attempt to talk to the
8986 service manager. Previously, this mode was implicitly enabled if a
8987 chroot() environment was detected, and this new environment variable
8988 now provides explicit control.
8989
8990 * .path and .socket units may now be created transiently, too.
8991 Previously only service, mount, automount and timer units were
8992 supported as transient units. The systemd-run tool has been updated
8993 to expose this new functionality, you may hence use it now to bind
8994 arbitrary commands to path or socket activation on-the-fly from the
8995 command line. Moreover, almost all properties are now exposed for the
8996 unit types that already supported transient operation.
8997
8998 * The systemd-mount command gained support for a new --owner= parameter
8999 which takes a user name, which is then resolved and included in uid=
9000 and gid= mount options string of the file system to mount.
9001
9002 * A new unit condition ConditionControlGroupController= has been added
9003 that checks whether a specific cgroup controller is available.
9004
9005 * Unit files, udev's .link files, and systemd-networkd's .netdev and
9006 .network files all gained support for a new condition
9007 ConditionKernelVersion= for checking against specific kernel
9008 versions.
9009
9010 * In systemd-networkd, the [IPVLAN] section in .netdev files gained
9011 support for configuring device flags in the Flags= setting. In the
9012 same files, the [Tunnel] section gained support for configuring
9013 AllowLocalRemote=. The [Route] section in .network files gained
9014 support for configuring InitialCongestionWindow=,
9015 InitialAdvertisedReceiveWindow= and QuickAck=. The [DHCP] section now
9016 understands RapidCommit=.
9017
9018 * systemd-networkd's DHCPv6 support gained support for Prefix
9019 Delegation.
9020
9021 * sd-bus gained support for a new "watch-bind" feature. When this
9022 feature is enabled, an sd_bus connection may be set up to connect to
9023 an AF_UNIX socket in the file system as soon as it is created. This
9024 functionality is useful for writing early-boot services that
9025 automatically connect to the system bus as soon as it is started,
9026 without ugly time-based polling. systemd-networkd and
9027 systemd-resolved have been updated to make use of this
9028 functionality. busctl exposes this functionality in a new
9029 --watch-bind= command line switch.
9030
9031 * sd-bus will now optionally synthesize a local "Connected" signal as
9032 soon as a D-Bus connection is set up fully. This message mirrors the
9033 already existing "Disconnected" signal which is synthesized when the
9034 connection is terminated. This signal is generally useful but
9035 particularly handy in combination with the "watch-bind" feature
9036 described above. Synthesizing of this message has to be requested
9037 explicitly through the new API call sd_bus_set_connected_signal(). In
9038 addition a new call sd_bus_is_ready() has been added that checks
9039 whether a connection is fully set up (i.e. between the "Connected" and
9040 "Disconnected" signals).
9041
9042 * sd-bus gained two new calls sd_bus_request_name_async() and
9043 sd_bus_release_name_async() for asynchronously registering bus
9044 names. Similar, there is now sd_bus_add_match_async() for installing
9045 a signal match asynchronously. All of systemd's own services have
9046 been updated to make use of these calls. Doing these operations
9047 asynchronously has two benefits: it reduces the risk of deadlocks in
9048 case of cyclic dependencies between bus services, and it speeds up
9049 service initialization since synchronization points for bus
9050 round-trips are removed.
9051
9052 * sd-bus gained two new calls sd_bus_match_signal() and
9053 sd_bus_match_signal_async(), which are similar to sd_bus_add_match()
9054 and sd_bus_add_match_async() but instead of taking a D-Bus match
9055 string take match fields as normal function parameters.
9056
9057 * sd-bus gained two new calls sd_bus_set_sender() and
9058 sd_bus_message_set_sender() for setting the sender name of outgoing
9059 messages (either for all outgoing messages or for just one specific
9060 one). These calls are only useful in direct connections as on
9061 brokered connections the broker fills in the sender anyway,
9062 overwriting whatever the client filled in.
9063
9064 * sd-event gained a new pseudo-handle that may be specified on all API
9065 calls where an "sd_event*" object is expected: SD_EVENT_DEFAULT. When
9066 used this refers to the default event loop object of the calling
9067 thread. Note however that this does not implicitly allocate one —
9068 which has to be done prior by using sd_event_default(). Similarly
9069 sd-bus gained three new pseudo-handles SD_BUS_DEFAULT,
9070 SD_BUS_DEFAULT_USER, SD_BUS_DEFAULT_SYSTEM that may be used to refer
9071 to the default bus of the specified type of the calling thread. Here
9072 too this does not implicitly allocate bus connection objects, this
9073 has to be done prior with sd_bus_default() and friends.
9074
9075 * sd-event gained a new call pair
9076 sd_event_source_{get|set}_io_fd_own(). This may be used to request
9077 automatic closure of the file descriptor an IO event source watches
9078 when the event source is destroyed.
9079
9080 * systemd-networkd gained support for natively configuring WireGuard
9081 connections.
9082
9083 * In previous versions systemd synthesized user records both for the
9084 "nobody" (UID 65534) and "root" (UID 0) users in nss-systemd and
9085 internally. In order to simplify distribution-wide renames of the
9086 "nobody" user (like it is planned in Fedora: nfsnobody → nobody), a
9087 new transitional flag file has been added: if
9088 /etc/systemd/dont-synthesize-nobody exists synthesizing of the 65534
9089 user and group record within the systemd codebase is disabled.
9090
9091 * systemd-notify gained a new --uid= option for selecting the source
9092 user/UID to use for notification messages sent to the service
9093 manager.
9094
9095 * journalctl gained a new --grep= option to list only entries in which
9096 the message matches a certain pattern. By default matching is case
9097 insensitive if the pattern is lowercase, and case sensitive
9098 otherwise. Option --case-sensitive=yes|no can be used to override
9099 this an specify case sensitivity or case insensitivity.
9100
9101 * There's now a "systemd-analyze service-watchdogs" command for printing
9102 the current state of the service runtime watchdog, and optionally
9103 enabling or disabling the per-service watchdogs system-wide if given a
9104 boolean argument (i.e. the concept you configure in WatchdogSec=), for
9105 debugging purposes. There's also a kernel command line option
9106 systemd.service_watchdogs= for controlling the same.
9107
9108 * Two new "log-level" and "log-target" options for systemd-analyze were
9109 added that merge the now deprecated get-log-level, set-log-level and
9110 get-log-target, set-log-target pairs. The deprecated options are still
9111 understood for backwards compatibility. The two new options print the
9112 current value when no arguments are given, and set them when a
9113 level/target is given as an argument.
9114
9115 * sysusers.d's "u" lines now optionally accept both a UID and a GID
9116 specification, separated by a ":" character, in order to create users
9117 where UID and GID do not match.
9118
9119 Contributions from: Adam Duskett, Alan Jenkins, Alexander Kuleshov,
9120 Alexis Deruelle, Andrew Jeddeloh, Armin Widegreen, Batuhan Osman
9121 Taşkaya, Björn Esser, bleep_blop, Bruce A. Johnson, Chris Down, Clinton
9122 Roy, Colin Walters, Daniel Rusek, Dimitri John Ledkov, Dmitry Rozhkov,
9123 Evgeny Vereshchagin, Ewout van Mansom, Felipe Sateler, Franck Bui,
9124 Frantisek Sumsal, George Gaydarov, Gianluca Boiano, Hans-Christian
9125 Noren Egtvedt, Hans de Goede, Henrik Grindal Bakken, Jan Alexander
9126 Steffens, Jan Klötzke, Jason A. Donenfeld, jdkbx, Jérémy Rosen,
9127 Jerónimo Borque, John Lin, John Paul Herold, Jonathan Rudenberg, Jörg
9128 Thalheim, Ken (Bitsko) MacLeod, Larry Bernstone, Lennart Poettering,
9129 Lucas Werkmeister, Maciej S. Szmigiero, Marek Čermák, Martin Pitt,
9130 Mathieu Malaterre, Matthew Thode, Matthias-Christian Ott, Max Harmathy,
9131 Michael Biebl, Michael Vogt, Michal Koutný, Michal Sekletar, Michał
9132 Szczepański, Mike Gilbert, Nathaniel McCallum, Nicolas Chauvet, Olaf
9133 Hering, Olivier Schwander, Patrik Flykt, Paul Cercueil, Peter Hutterer,
9134 Piotr Drąg, Raphael Vogelgsang, Reverend Homer, Robert Kolchmeyer,
9135 Samuel Dionne-Riel, Sergey Ptashnick, Shawn Landden, Susant Sahani,
9136 Sylvain Plantefève, Thomas H. P. Andersen, Thomas Huth, Tomasz
9137 Bachorski, Vladislav Vishnyakov, Wieland Hoffmann, Yu Watanabe, Zachary
9138 Winnerman, Zbigniew Jędrzejewski-Szmek, Дамјан Георгиевски, Дилян
9139 Палаузов
9140
9141 — Brno, 2018-01-28
9142
9143 CHANGES WITH 236:
9144
9145 * The modprobe.d/ drop-in for the bonding.ko kernel module introduced
9146 in v235 has been extended to also set the dummy.ko module option
9147 numdummies=0, preventing the kernel from automatically creating
9148 dummy0. All dummy interfaces must now be explicitly created.
9149
9150 * Unknown '%' specifiers in configuration files are now rejected. This
9151 applies to units and tmpfiles.d configuration. Any percent characters
9152 that are followed by a letter or digit that are not supposed to be
9153 interpreted as the beginning of a specifier should be escaped by
9154 doubling ("%%"). (So "size=5%" is still accepted, as well as
9155 "size=5%,foo=bar", but not "LABEL=x%y%z" since %y and %z are not
9156 valid specifiers today.)
9157
9158 * systemd-resolved now maintains a new dynamic
9159 /run/systemd/resolve/stub-resolv.conf compatibility file. It is
9160 recommended to make /etc/resolv.conf a symlink to it. This file
9161 points at the systemd-resolved stub DNS 127.0.0.53 resolver and
9162 includes dynamically acquired search domains, achieving more correct
9163 DNS resolution by software that bypasses local DNS APIs such as NSS.
9164
9165 * The "uaccess" udev tag has been dropped from /dev/kvm and
9166 /dev/dri/renderD*. These devices now have the 0666 permissions by
9167 default (but this may be changed at build-time). /dev/dri/renderD*
9168 will now be owned by the "render" group along with /dev/kfd.
9169
9170 * "DynamicUser=yes" has been enabled for systemd-timesyncd.service,
9171 systemd-journal-gatewayd.service and
9172 systemd-journal-upload.service. This means "nss-systemd" must be
9173 enabled in /etc/nsswitch.conf to ensure the UIDs assigned to these
9174 services are resolved properly.
9175
9176 * In /etc/fstab two new mount options are now understood:
9177 x-systemd.makefs and x-systemd.growfs. The former has the effect that
9178 the configured file system is formatted before it is mounted, the
9179 latter that the file system is resized to the full block device size
9180 after it is mounted (i.e. if the file system is smaller than the
9181 partition it resides on, it's grown). This is similar to the fsck
9182 logic in /etc/fstab, and pulls in systemd-makefs@.service and
9183 systemd-growfs@.service as necessary, similar to
9184 systemd-fsck@.service. Resizing is currently only supported on ext4
9185 and btrfs.
9186
9187 * In systemd-networkd, the IPv6 RA logic now optionally may announce
9188 DNS server and domain information.
9189
9190 * Support for the LUKS2 on-disk format for encrypted partitions has
9191 been added. This requires libcryptsetup2 during compilation and
9192 runtime.
9193
9194 * The systemd --user instance will now signal "readiness" when its
9195 basic.target unit has been reached, instead of when the run queue ran
9196 empty for the first time.
9197
9198 * Tmpfiles.d with user configuration are now also supported.
9199 systemd-tmpfiles gained a new --user switch, and snippets placed in
9200 ~/.config/user-tmpfiles.d/ and corresponding directories will be
9201 executed by systemd-tmpfiles --user running in the new
9202 systemd-tmpfiles-setup.service and systemd-tmpfiles-clean.service
9203 running in the user session.
9204
9205 * Unit files and tmpfiles.d snippets learnt three new % specifiers:
9206 %S resolves to the top-level state directory (/var/lib for the system
9207 instance, $XDG_CONFIG_HOME for the user instance), %C resolves to the
9208 top-level cache directory (/var/cache for the system instance,
9209 $XDG_CACHE_HOME for the user instance), %L resolves to the top-level
9210 logs directory (/var/log for the system instance,
9211 $XDG_CONFIG_HOME/log/ for the user instance). This matches the
9212 existing %t specifier, that resolves to the top-level runtime
9213 directory (/run for the system instance, and $XDG_RUNTIME_DIR for the
9214 user instance).
9215
9216 * journalctl learnt a new parameter --output-fields= for limiting the
9217 set of journal fields to output in verbose and JSON output modes.
9218
9219 * systemd-timesyncd's configuration file gained a new option
9220 RootDistanceMaxSec= for setting the maximum root distance of servers
9221 it'll use, as well as the new options PollIntervalMinSec= and
9222 PollIntervalMaxSec= to tweak the minimum and maximum poll interval.
9223
9224 * bootctl gained a new command "list" for listing all available boot
9225 menu items on systems that follow the boot loader specification.
9226
9227 * systemctl gained a new --dry-run switch that shows what would be done
9228 instead of doing it, and is currently supported by the shutdown and
9229 sleep verbs.
9230
9231 * ConditionSecurity= can now detect the TOMOYO security module.
9232
9233 * Unit file [Install] sections are now also respected in unit drop-in
9234 files. This is intended to be used by drop-ins under /usr/lib/.
9235
9236 * systemd-firstboot may now also set the initial keyboard mapping.
9237
9238 * Udev "changed" events for devices which are exposed as systemd
9239 .device units are now propagated to units specified in
9240 ReloadPropagatedFrom= as reload requests.
9241
9242 * If a udev device has a SYSTEMD_WANTS= property containing a systemd
9243 unit template name (i.e. a name in the form of 'foobar@.service',
9244 without the instance component between the '@' and - the '.'), then
9245 the escaped sysfs path of the device is automatically used as the
9246 instance.
9247
9248 * SystemCallFilter= in unit files has been extended so that an "errno"
9249 can be specified individually for each system call. Example:
9250 SystemCallFilter=~uname:EILSEQ.
9251
9252 * The cgroup delegation logic has been substantially updated. Delegate=
9253 now optionally takes a list of controllers (instead of a boolean, as
9254 before), which lists the controllers to delegate at least.
9255
9256 * The networkd DHCPv6 client now implements the FQDN option (RFC 4704).
9257
9258 * A new LogLevelMax= setting configures the maximum log level any
9259 process of the service may log at (i.e. anything with a lesser
9260 priority than what is specified is automatically dropped). A new
9261 LogExtraFields= setting allows configuration of additional journal
9262 fields to attach to all log records generated by any of the unit's
9263 processes.
9264
9265 * New StandardInputData= and StandardInputText= settings along with the
9266 new option StandardInput=data may be used to configure textual or
9267 binary data that shall be passed to the executed service process via
9268 standard input, encoded in-line in the unit file.
9269
9270 * StandardInput=, StandardOutput= and StandardError= may now be used to
9271 connect stdin/stdout/stderr of executed processes directly with a
9272 file or AF_UNIX socket in the file system, using the new "file:" option.
9273
9274 * A new unit file option CollectMode= has been added, that allows
9275 tweaking the garbage collection logic for units. It may be used to
9276 tell systemd to garbage collect units that have failed automatically
9277 (normally it only GCs units that exited successfully). systemd-run
9278 and systemd-mount expose this new functionality with a new -G option.
9279
9280 * "machinectl bind" may now be used to bind mount non-directories
9281 (i.e. regularfiles, devices, fifos, sockets).
9282
9283 * systemd-analyze gained a new verb "calendar" for validating and
9284 testing calendar time specifications to use for OnCalendar= in timer
9285 units. Besides validating the expression it will calculate the next
9286 time the specified expression would elapse.
9287
9288 * In addition to the pre-existing FailureAction= unit file setting
9289 there's now SuccessAction=, for configuring a shutdown action to
9290 execute when a unit completes successfully. This is useful in
9291 particular inside containers that shall terminate after some workload
9292 has been completed. Also, both options are now supported for all unit
9293 types, not just services.
9294
9295 * networkds's IP rule support gained two new options
9296 IncomingInterface= and OutgoingInterface= for configuring the incoming
9297 and outgoing interfaces of configured rules. systemd-networkd also
9298 gained support for "vxcan" network devices.
9299
9300 * networkd gained a new setting RequiredForOnline=, taking a
9301 boolean. If set, systemd-wait-online will take it into consideration
9302 when determining that the system is up, otherwise it will ignore the
9303 interface for this purpose.
9304
9305 * The sd_notify() protocol gained support for a new operation: with
9306 FDSTOREREMOVE=1 file descriptors may be removed from the per-service
9307 store again, ahead of POLLHUP or POLLERR when they are removed
9308 anyway.
9309
9310 * A new document doc/UIDS-GIDS.md has been added to the source tree,
9311 that documents the UID/GID range and assignment assumptions and
9312 requirements of systemd.
9313
9314 * The watchdog device PID 1 will ping may now be configured through the
9315 WatchdogDevice= configuration file setting, or by setting the
9316 systemd.watchdog_service= kernel command line option.
9317
9318 * systemd-resolved's gained support for registering DNS-SD services on
9319 the local network using MulticastDNS. Services may either be
9320 registered by dropping in a .dnssd file in /etc/systemd/dnssd/ (or
9321 the same dir below /run, /usr/lib), or through its D-Bus API.
9322
9323 * The sd_notify() protocol can now with EXTEND_TIMEOUT_USEC=microsecond
9324 extend the effective start, runtime, and stop time. The service must
9325 continue to send EXTEND_TIMEOUT_USEC within the period specified to
9326 prevent the service manager from making the service as timedout.
9327
9328 * systemd-resolved's DNSSEC support gained support for RFC 8080
9329 (Ed25519 keys and signatures).
9330
9331 * The systemd-resolve command line tool gained a new set of options
9332 --set-dns=, --set-domain=, --set-llmnr=, --set-mdns=, --set-dnssec=,
9333 --set-nta= and --revert to configure per-interface DNS configuration
9334 dynamically during runtime. It's useful for pushing DNS information
9335 into systemd-resolved from DNS hook scripts that various interface
9336 managing software supports (such as pppd).
9337
9338 * systemd-nspawn gained a new --network-namespace-path= command line
9339 option, which may be used to make a container join an existing
9340 network namespace, by specifying a path to a "netns" file.
9341
9342 Contributions from: Alan Jenkins, Alan Robertson, Alessandro Ghedini,
9343 Andrew Jeddeloh, Antonio Rojas, Ari, asavah, bleep_blop, Carsten
9344 Strotmann, Christian Brauner, Christian Hesse, Clinton Roy, Collin
9345 Eggert, Cong Wang, Daniel Black, Daniel Lockyer, Daniel Rusek, Dimitri
9346 John Ledkov, Dmitry Rozhkov, Dongsu Park, Edward A. James, Evgeny
9347 Vereshchagin, Florian Klink, Franck Bui, Gwendal Grignou, Hans de
9348 Goede, Harald Hoyer, Hristo Venev, Iago López Galeiras, Ikey Doherty,
9349 Jakub Wilk, Jérémy Rosen, Jiahui Xie, John Lin, José Bollo, Josef
9350 Andersson, juga0, Krzysztof Nowicki, Kyle Walker, Lars Karlitski, Lars
9351 Kellogg-Stedman, Lauri Tirkkonen, Lennart Poettering, Lubomir Rintel,
9352 Luca Bruno, Lucas Werkmeister, Lukáš Nykrýn, Lukáš Říha, Lukasz
9353 Rubaszewski, Maciej S. Szmigiero, Mantas Mikulėnas, Marcus Folkesson,
9354 Martin Steuer, Mathieu Trudel-Lapierre, Matija Skala,
9355 Matthias-Christian Ott, Max Resch, Michael Biebl, Michael Vogt, Michal
9356 Koutný, Michal Sekletar, Mike Gilbert, Muhammet Kara, Neil Brown, Olaf
9357 Hering, Ondrej Kozina, Patrik Flykt, Patryk Kocielnik, Peter Hutterer,
9358 Piotr Drąg, Razvan Cojocaru, Robin McCorkell, Roland Hieber, Saran
9359 Tunyasuvunakool, Sergey Ptashnick, Shawn Landden, Shuang Liu, Simon
9360 Arlott, Simon Peeters, Stanislav Angelovič, Stefan Agner, Susant
9361 Sahani, Sylvain Plantefève, Thomas Blume, Thomas Haller, Tiago Salem
9362 Herrmann, Tinu Weber, Tom Stellard, Topi Miettinen, Torsten Hilbrich,
9363 Vito Caputo, Vladislav Vishnyakov, WaLyong Cho, Yu Watanabe, Zbigniew
9364 Jędrzejewski-Szmek, Zeal Jagannatha
9365
9366 — Berlin, 2017-12-14
9367
9368 CHANGES WITH 235:
9369
9370 * INCOMPATIBILITY: systemd-logind.service and other long-running
9371 services now run inside an IPv4/IPv6 sandbox, prohibiting them any IP
9372 communication with the outside. This generally improves security of
9373 the system, and is in almost all cases a safe and good choice, as
9374 these services do not and should not provide any network-facing
9375 functionality. However, systemd-logind uses the glibc NSS API to
9376 query the user database. This creates problems on systems where NSS
9377 is set up to directly consult network services for user database
9378 lookups. In particular, this creates incompatibilities with the
9379 "nss-nis" module, which attempts to directly contact the NIS/YP
9380 network servers it is configured for, and will now consistently
9381 fail. In such cases, it is possible to turn off IP sandboxing for
9382 systemd-logind.service (set IPAddressDeny= in its [Service] section
9383 to the empty string, via a .d/ unit file drop-in). Downstream
9384 distributions might want to update their nss-nis packaging to include
9385 such a drop-in snippet, accordingly, to hide this incompatibility
9386 from the user. Another option is to make use of glibc's nscd service
9387 to proxy such network requests through a privilege-separated, minimal
9388 local caching daemon, or to switch to more modern technologies such
9389 sssd, whose NSS hook-ups generally do not involve direct network
9390 access. In general, we think it's definitely time to question the
9391 implementation choices of nss-nis, i.e. whether it's a good idea
9392 today to embed a network-facing loadable module into all local
9393 processes that need to query the user database, including the most
9394 trivial and benign ones, such as "ls". For more details about
9395 IPAddressDeny= see below.
9396
9397 * A new modprobe.d drop-in is now shipped by default that sets the
9398 bonding module option max_bonds=0. This overrides the kernel default,
9399 to avoid conflicts and ambiguity as to whether or not bond0 should be
9400 managed by systemd-networkd or not. This resolves multiple issues
9401 with bond0 properties not being applied, when bond0 is configured
9402 with systemd-networkd. Distributors may choose to not package this,
9403 however in that case users will be prevented from correctly managing
9404 bond0 interface using systemd-networkd.
9405
9406 * systemd-analyze gained new verbs "get-log-level" and "get-log-target"
9407 which print the logging level and target of the system manager. They
9408 complement the existing "set-log-level" and "set-log-target" verbs
9409 used to change those values.
9410
9411 * journald.conf gained a new boolean setting ReadKMsg= which defaults
9412 to on. If turned off kernel log messages will not be read by
9413 systemd-journald or included in the logs. It also gained a new
9414 setting LineMax= for configuring the maximum line length in
9415 STDOUT/STDERR log streams. The new default for this value is 48K, up
9416 from the previous hardcoded 2048.
9417
9418 * A new unit setting RuntimeDirectoryPreserve= has been added, which
9419 allows more detailed control of what to do with a runtime directory
9420 configured with RuntimeDirectory= (i.e. a directory below /run or
9421 $XDG_RUNTIME_DIR) after a unit is stopped.
9422
9423 * The RuntimeDirectory= setting for units gained support for creating
9424 deeper subdirectories below /run or $XDG_RUNTIME_DIR, instead of just
9425 one top-level directory.
9426
9427 * Units gained new options StateDirectory=, CacheDirectory=,
9428 LogsDirectory= and ConfigurationDirectory= which are closely related
9429 to RuntimeDirectory= but manage per-service directories below
9430 /var/lib, /var/cache, /var/log and /etc. By making use of them it is
9431 possible to write unit files which when activated automatically gain
9432 properly owned service specific directories in these locations, thus
9433 making unit files self-contained and increasing compatibility with
9434 stateless systems and factory reset where /etc or /var are
9435 unpopulated at boot. Matching these new settings there's also
9436 StateDirectoryMode=, CacheDirectoryMode=, LogsDirectoryMode=,
9437 ConfigurationDirectoryMode= for configuring the access mode of these
9438 directories. These settings are particularly useful in combination
9439 with DynamicUser=yes as they provide secure, properly-owned,
9440 writable, and stateful locations for storage, excluded from the
9441 sandbox that such services live in otherwise.
9442
9443 * Automake support has been removed from this release. systemd is now
9444 Meson-only.
9445
9446 * systemd-journald will now aggressively cache client metadata during
9447 runtime, speeding up log write performance under pressure. This comes
9448 at a small price though: as much of the metadata is read
9449 asynchronously from /proc/ (and isn't implicitly attached to log
9450 datagrams by the kernel, like UID/GID/PID/SELinux are) this means the
9451 metadata stored alongside a log entry might be slightly
9452 out-of-date. Previously it could only be slightly newer than the log
9453 message. The time window is small however, and given that the kernel
9454 is unlikely to be improved anytime soon in this regard, this appears
9455 acceptable to us.
9456
9457 * nss-myhostname/systemd-resolved will now by default synthesize an
9458 A/AAAA resource record for the "_gateway" hostname, pointing to the
9459 current default IP gateway. Previously it did that for the "gateway"
9460 name, hampering adoption, as some distributions wanted to leave that
9461 hostname open for local use. The old behaviour may still be
9462 requested at build time.
9463
9464 * systemd-networkd's [Address] section in .network files gained a new
9465 Scope= setting for configuring the IP address scope. The [Network]
9466 section gained a new boolean setting ConfigureWithoutCarrier= that
9467 tells systemd-networkd to ignore link sensing when configuring the
9468 device. The [DHCP] section gained a new Anonymize= boolean option for
9469 turning on a number of options suggested in RFC 7844. A new
9470 [RoutingPolicyRule] section has been added for configuring the IP
9471 routing policy. The [Route] section has gained support for a new
9472 Type= setting which permits configuring
9473 blackhole/unreachable/prohibit routes.
9474
9475 * The [VRF] section in .netdev files gained a new Table= setting for
9476 configuring the routing table to use. The [Tunnel] section gained a
9477 new Independent= boolean field for configuring tunnels independent of
9478 an underlying network interface. The [Bridge] section gained a new
9479 GroupForwardMask= option for configuration of propagation of link
9480 local frames between bridge ports.
9481
9482 * The WakeOnLan= setting in .link files gained support for a number of
9483 new modes. A new TCP6SegmentationOffload= setting has been added for
9484 configuring TCP/IPv6 hardware segmentation offload.
9485
9486 * The IPv6 RA sender implementation may now optionally send out RDNSS
9487 and RDNSSL records to supply DNS configuration to peers.
9488
9489 * systemd-nspawn gained support for a new --system-call-filter= command
9490 line option for adding and removing entries in the default system
9491 call filter it applies. Moreover systemd-nspawn has been changed to
9492 implement a system call allow list instead of a deny list.
9493
9494 * systemd-run gained support for a new --pipe command line option. If
9495 used the STDIN/STDOUT/STDERR file descriptors passed to systemd-run
9496 are directly passed on to the activated transient service
9497 executable. This allows invoking arbitrary processes as systemd
9498 services (for example to take benefit of dependency management,
9499 accounting management, resource management or log management that is
9500 done automatically for services) — while still allowing them to be
9501 integrated in a classic UNIX shell pipeline.
9502
9503 * When a service sends RELOAD=1 via sd_notify() and reload propagation
9504 using ReloadPropagationTo= is configured, a reload is now propagated
9505 to configured units. (Previously this was only done on explicitly
9506 requested reloads, using "systemctl reload" or an equivalent
9507 command.)
9508
9509 * For each service unit a restart counter is now kept: it is increased
9510 each time the service is restarted due to Restart=, and may be
9511 queried using "systemctl show -p NRestarts …".
9512
9513 * New system call filter groups @aio, @sync, @chown, @setuid, @memlock,
9514 @signal and @timer have been added, for usage with SystemCallFilter=
9515 in unit files and the new --system-call-filter= command line option
9516 of systemd-nspawn (see above).
9517
9518 * ExecStart= lines in unit files gained two new modifiers: when a
9519 command line is prefixed with "!" the command will be executed as
9520 configured, except for the credentials applied by
9521 setuid()/setgid()/setgroups(). It is very similar to the pre-existing
9522 "+", but does still apply namespacing options unlike "+". There's
9523 also "!!" now, which is mostly identical, but becomes a NOP on
9524 systems that support ambient capabilities. This is useful to write
9525 unit files that work with ambient capabilities where possible but
9526 automatically fall back to traditional privilege dropping mechanisms
9527 on systems where this is not supported.
9528
9529 * ListenNetlink= settings in socket units now support RDMA netlink
9530 sockets.
9531
9532 * A new unit file setting LockPersonality= has been added which permits
9533 locking down the chosen execution domain ("personality") of a service
9534 during runtime.
9535
9536 * A new special target "getty-pre.target" has been added, which is
9537 ordered before all text logins, and may be used to order services
9538 before textual logins acquire access to the console.
9539
9540 * systemd will now attempt to load the virtio-rng.ko kernel module very
9541 early on if a VM environment supporting this is detected. This should
9542 improve entropy during early boot in virtualized environments.
9543
9544 * A _netdev option is now supported in /etc/crypttab that operates in a
9545 similar way as the same option in /etc/fstab: it permits configuring
9546 encrypted devices that need to be ordered after the network is up.
9547 Following this logic, two new special targets
9548 remote-cryptsetup-pre.target and remote-cryptsetup.target have been
9549 added that are to cryptsetup.target what remote-fs.target and
9550 remote-fs-pre.target are to local-fs.target.
9551
9552 * Service units gained a new UnsetEnvironment= setting which permits
9553 unsetting specific environment variables for services that are
9554 normally passed to it (for example in order to mask out locale
9555 settings for specific services that can't deal with it).
9556
9557 * Units acquired a new boolean option IPAccounting=. When turned on, IP
9558 traffic accounting (packet count as well as byte count) is done for
9559 the service, and shown as part of "systemctl status" or "systemd-run
9560 --wait".
9561
9562 * Service units acquired two new options IPAddressAllow= and
9563 IPAddressDeny=, taking a list of IPv4 or IPv6 addresses and masks,
9564 for configuring a simple IP access control list for all sockets of
9565 the unit. These options are available also on .slice and .socket
9566 units, permitting flexible access list configuration for individual
9567 services as well as groups of services (as defined by a slice unit),
9568 including system-wide. Note that IP ACLs configured this way are
9569 enforced on every single IPv4 and IPv6 socket created by any process
9570 of the service unit, and apply to ingress as well as egress traffic.
9571
9572 * If CPUAccounting= or IPAccounting= is turned on for a unit a new
9573 structured log message is generated each time the unit is stopped,
9574 containing information about the consumed resources of this
9575 invocation.
9576
9577 * A new setting KeyringMode= has been added to unit files, which may be
9578 used to control how the kernel keyring is set up for executed
9579 processes.
9580
9581 * "systemctl poweroff", "systemctl reboot", "systemctl halt",
9582 "systemctl kexec" and "systemctl exit" are now always asynchronous in
9583 behaviour (that is: these commands return immediately after the
9584 operation was enqueued instead of waiting for the operation to
9585 complete). Previously, "systemctl poweroff" and "systemctl reboot"
9586 were asynchronous on systems using systemd-logind (i.e. almost
9587 always, and like they were on sysvinit), and the other three commands
9588 were unconditionally synchronous. With this release this is cleaned
9589 up, and callers will see the same asynchronous behaviour on all
9590 systems for all five operations.
9591
9592 * systemd-logind gained new Halt() and CanHalt() bus calls for halting
9593 the system.
9594
9595 * .timer units now accept calendar specifications in other timezones
9596 than UTC or the local timezone.
9597
9598 * The tmpfiles snippet var.conf has been changed to create
9599 /var/log/btmp with access mode 0660 instead of 0600. It was owned by
9600 the "utmp" group already, and it appears to be generally understood
9601 that members of "utmp" can modify/flush the utmp/wtmp/lastlog/btmp
9602 databases. Previously this was implemented correctly for all these
9603 databases excepts btmp, which has been opened up like this now
9604 too. Note that while the other databases are world-readable
9605 (i.e. 0644), btmp is not and remains more restrictive.
9606
9607 * The systemd-resolve tool gained a new --reset-server-features
9608 switch. When invoked like this systemd-resolved will forget
9609 everything it learnt about the features supported by the configured
9610 upstream DNS servers, and restarts the feature probing logic on the
9611 next resolver look-up for them at the highest feature level
9612 again.
9613
9614 * The status dump systemd-resolved sends to the logs upon receiving
9615 SIGUSR1 now also includes information about all DNS servers it is
9616 configured to use, and the features levels it probed for them.
9617
9618 Contributions from: Abdó Roig-Maranges, Alan Jenkins, Alexander
9619 Kuleshov, Andreas Rammhold, Andrew Jeddeloh, Andrew Soutar, Ansgar
9620 Burchardt, Beniamino Galvani, Benjamin Berg, Benjamin Robin, Charles
9621 Huber, Christian Hesse, Daniel Berrange, Daniel Kahn Gillmor, Daniel
9622 Mack, Daniel Rusek, Daniel Șerbănescu, Davide Cavalca, Dimitri John
9623 Ledkov, Diogo Pereira, Djalal Harouni, Dmitriy Geels, Dmitry Torokhov,
9624 ettavolt, Evgeny Vereshchagin, Fabio Kung, Felipe Sateler, Franck Bui,
9625 Hans de Goede, Harald Hoyer, Insun Pyo, Ivan Kurnosov, Ivan Shapovalov,
9626 Jakub Wilk, Jan Synacek, Jason Gunthorpe, Jeremy Bicha, Jérémy Rosen,
9627 John Lin, jonasBoss, Jonathan Lebon, Jonathan Teh, Jon Ringle, Jörg
9628 Thalheim, Jouke Witteveen, juga0, Justin Capella, Justin Michaud,
9629 Kai-Heng Feng, Lennart Poettering, Lion Yang, Luca Bruno, Lucas
9630 Werkmeister, Lukáš Nykrýn, Marcel Hollerbach, Marcus Lundblad, Martin
9631 Pitt, Michael Biebl, Michael Grzeschik, Michal Sekletar, Mike Gilbert,
9632 Neil Brown, Nicolas Iooss, Patrik Flykt, pEJipE, Piotr Drąg, Russell
9633 Stuart, S. Fan, Shengyao Xue, Stefan Pietsch, Susant Sahani, Tejun Heo,
9634 Thomas Miller, Thomas Sailer, Tobias Hunger, Tomasz Pala, Tom
9635 Gundersen, Tommi Rantala, Topi Miettinen, Torstein Husebø, userwithuid,
9636 Vasilis Liaskovitis, Vito Caputo, WaLyong Cho, William Douglas, Xiang
9637 Fan, Yu Watanabe, Zbigniew Jędrzejewski-Szmek
9638
9639 — Berlin, 2017-10-06
9640
9641 CHANGES WITH 234:
9642
9643 * Meson is now supported as build system in addition to Automake. It is
9644 our plan to remove Automake in one of our next releases, so that
9645 Meson becomes our exclusive build system. Hence, please start using
9646 the Meson build system in your downstream packaging. There's plenty
9647 of documentation around how to use Meson, the extremely brief
9648 summary:
9649
9650 ./autogen.sh && ./configure && make && sudo make install
9651
9652 becomes:
9653
9654 meson build && ninja -C build && sudo ninja -C build install
9655
9656 * Unit files gained support for a new JobRunningTimeoutUSec= setting,
9657 which permits configuring a timeout on the time a job is
9658 running. This is particularly useful for setting timeouts on jobs for
9659 .device units.
9660
9661 * Unit files gained two new options ConditionUser= and ConditionGroup=
9662 for conditionalizing units based on the identity of the user/group
9663 running a systemd user instance.
9664
9665 * systemd-networkd now understands a new FlowLabel= setting in the
9666 [VXLAN] section of .network files, as well as a Priority= in
9667 [Bridge], GVRP= + MVRP= + LooseBinding= + ReorderHeader= in [VLAN]
9668 and GatewayOnlink= + IPv6Preference= + Protocol= in [Route]. It also
9669 gained support for configuration of GENEVE links, and IPv6 address
9670 labels. The [Network] section gained the new IPv6ProxyNDP= setting.
9671
9672 * .link files now understand a new Port= setting.
9673
9674 * systemd-networkd's DHCP support gained support for DHCP option 119
9675 (domain search list).
9676
9677 * systemd-networkd gained support for serving IPv6 address ranges using
9678 the Router Advertisement protocol. The new .network configuration
9679 section [IPv6Prefix] may be used to configure the ranges to
9680 serve. This is implemented based on a new, minimal, native server
9681 implementation of RA.
9682
9683 * journalctl's --output= switch gained support for a new parameter
9684 "short-iso-precise" for a mode where timestamps are shown as precise
9685 ISO date values.
9686
9687 * systemd-udevd's "net_id" builtin may now generate stable network
9688 interface names from IBM PowerVM VIO devices as well as ACPI platform
9689 devices.
9690
9691 * MulticastDNS support in systemd-resolved may now be explicitly
9692 enabled/disabled using the new MulticastDNS= configuration file
9693 option.
9694
9695 * systemd-resolved may now optionally use libidn2 instead of the libidn
9696 for processing internationalized domain names. Support for libidn2
9697 should be considered experimental and should not be enabled by
9698 default yet.
9699
9700 * "machinectl pull-tar" and related call may now do verification of
9701 downloaded images using SUSE-style .sha256 checksum files in addition
9702 to the already existing support for validating using Ubuntu-style
9703 SHA256SUMS files.
9704
9705 * sd-bus gained support for a new sd_bus_message_appendv() call which
9706 is va_list equivalent of sd_bus_message_append().
9707
9708 * sd-boot gained support for validating images using SHIM/MOK.
9709
9710 * The SMACK code learnt support for "onlycap".
9711
9712 * systemd-mount --umount is now much smarter in figuring out how to
9713 properly unmount a device given its mount or device path.
9714
9715 * The code to call libnss_dns as a fallback from libnss_resolve when
9716 the communication with systemd-resolved fails was removed. This
9717 fallback was redundant and interfered with the [!UNAVAIL=return]
9718 suffix. See nss-resolve(8) for the recommended configuration.
9719
9720 * systemd-logind may now be restarted without losing state. It stores
9721 the file descriptors for devices it manages in the system manager
9722 using the FDSTORE= mechanism. Please note that further changes in
9723 other components may be required to make use of this (for example
9724 Xorg has code to listen for stops of systemd-logind and terminate
9725 itself when logind is stopped or restarted, in order to avoid using
9726 stale file descriptors for graphical devices, which is now
9727 counterproductive and must be reverted in order for restarts of
9728 systemd-logind to be safe. See
9729 https://cgit.freedesktop.org/xorg/xserver/commit/?id=dc48bd653c7e101.)
9730
9731 * All kernel-install plugins are called with the environment variable
9732 KERNEL_INSTALL_MACHINE_ID which is set to the machine ID given by
9733 /etc/machine-id. If the machine ID could not be determined,
9734 $KERNEL_INSTALL_MACHINE_ID will be empty. Plugins should not put
9735 anything in the entry directory (passed as the second argument) if
9736 $KERNEL_INSTALL_MACHINE_ID is empty. For backwards compatibility, a
9737 temporary directory is passed as the entry directory and removed
9738 after all the plugins exit.
9739
9740 * If KERNEL_INSTALL_MACHINE_ID is set in /etc/machine-info, kernel-install
9741 will now use its value as the machine ID instead of the machine ID
9742 from /etc/machine-id. If KERNEL_INSTALL_MACHINE_ID isn't set in
9743 /etc/machine-info and no machine ID is set in /etc/machine-id,
9744 kernel-install will try to store the current machine ID there as
9745 KERNEL_INSTALL_MACHINE_ID. If there is no machine ID, kernel-install
9746 will generate a new UUID, store it in /etc/machine-info as
9747 KERNEL_INSTALL_MACHINE_ID and use it as the machine ID.
9748
9749 Contributions from: Adrian Heine né Lang, Aggelos Avgerinos, Alexander
9750 Kurtz, Alexandros Frantzis, Alexey Brodkin, Alex Lu, Amir Pakdel, Amir
9751 Yalon, Anchor Cat, Anthony Parsons, Bastien Nocera, Benjamin Gilbert,
9752 Benjamin Robin, Boucman, Charles Plessy, Chris Chiu, Chris Lamb,
9753 Christian Brauner, Christian Hesse, Colin Walters, Daniel Drake,
9754 Danielle Church, Daniel Molkentin, Daniel Rusek, Daniel Wang, Davide
9755 Cavalca, David Herrmann, David Michael, Dax Kelson, Dimitri John
9756 Ledkov, Djalal Harouni, Dušan Kazik, Elias Probst, Evgeny Vereshchagin,
9757 Federico Di Pierro, Felipe Sateler, Felix Zhang, Franck Bui, Gary
9758 Tierney, George McCollister, Giedrius Statkevičius, Hans de Goede,
9759 hecke, Hendrik Westerberg, Hristo Venev, Ian Wienand, Insun Pyo, Ivan
9760 Shapovalov, James Cowgill, James Hemsing, Janne Heß, Jan Synacek, Jason
9761 Reeder, João Paulo Rechi Vita, John Paul Adrian Glaubitz, Jörg
9762 Thalheim, Josef Andersson, Josef Gajdusek, Julian Mehne, Kai Krakow,
9763 Krzysztof Jackiewicz, Lars Karlitski, Lennart Poettering, Lluís Gili,
9764 Lucas Werkmeister, Lukáš Nykrýn, Łukasz Stelmach, Mantas Mikulėnas,
9765 Marcin Bachry, Marcus Cooper, Mark Stosberg, Martin Pitt, Matija Skala,
9766 Matt Clarkson, Matthew Garrett, Matthias Greiner, Matthijs van Duin,
9767 Max Resch, Michael Biebl, Michal Koutný, Michal Sekletar, Michal
9768 Soltys, Michal Suchanek, Mike Gilbert, Nate Clark, Nathaniel R. Lewis,
9769 Neil Brown, Nikolai Kondrashov, Pascal S. de Kloe, Pat Riehecky, Patrik
9770 Flykt, Paul Kocialkowski, Peter Hutterer, Philip Withnall, Piotr
9771 Szydełko, Rafael Fontenelle, Ray Strode, Richard Maw, Roelf Wichertjes,
9772 Ronny Chevalier, Sarang S. Dalal, Sjoerd Simons, slodki, Stefan
9773 Schweter, Susant Sahani, Ted Wood, Thomas Blume, Thomas Haller, Thomas
9774 H. P. Andersen, Timothée Ravier, Tobias Jungel, Tobias Stoeckmann, Tom
9775 Gundersen, Tom Yan, Torstein Husebø, Umut Tezduyar Lindskog,
9776 userwithuid, Vito Caputo, Waldemar Brodkorb, WaLyong Cho, Yu, Li-Yu,
9777 Yusuke Nojima, Yu Watanabe, Zbigniew Jędrzejewski-Szmek, Дамјан
9778 Георгиевски
9779
9780 — Berlin, 2017-07-12
9781
9782 CHANGES WITH 233:
9783
9784 * The "hybrid" control group mode has been modified to improve
9785 compatibility with "legacy" cgroups-v1 setups. Specifically, the
9786 "hybrid" setup of /sys/fs/cgroup is now pretty much identical to
9787 "legacy" (including /sys/fs/cgroup/systemd as "name=systemd" named
9788 cgroups-v1 hierarchy), the only externally visible change being that
9789 the cgroups-v2 hierarchy is also mounted, to
9790 /sys/fs/cgroup/unified. This should provide a large degree of
9791 compatibility with "legacy" cgroups-v1, while taking benefit of the
9792 better management capabilities of cgroups-v2.
9793
9794 * The default control group setup mode may be selected both a boot-time
9795 via a set of kernel command line parameters (specifically:
9796 systemd.unified_cgroup_hierarchy= and
9797 systemd.legacy_systemd_cgroup_controller=), as well as a compile-time
9798 default selected on the configure command line
9799 (--with-default-hierarchy=). The upstream default is "hybrid"
9800 (i.e. the cgroups-v1 + cgroups-v2 mixture discussed above) now, but
9801 this will change in a future systemd version to be "unified" (pure
9802 cgroups-v2 mode). The third option for the compile time option is
9803 "legacy", to enter pure cgroups-v1 mode. We recommend downstream
9804 distributions to default to "hybrid" mode for release distributions,
9805 starting with v233. We recommend "unified" for development
9806 distributions (specifically: distributions such as Fedora's rawhide)
9807 as that's where things are headed in the long run. Use "legacy" for
9808 greatest stability and compatibility only.
9809
9810 * Note one current limitation of "unified" and "hybrid" control group
9811 setup modes: the kernel currently does not permit the systemd --user
9812 instance (i.e. unprivileged code) to migrate processes between two
9813 disconnected cgroup subtrees, even if both are managed and owned by
9814 the user. This effectively means "systemd-run --user --scope" doesn't
9815 work when invoked from outside of any "systemd --user" service or
9816 scope. Specifically, it is not supported from session scopes. We are
9817 working on fixing this in a future systemd version. (See #3388 for
9818 further details about this.)
9819
9820 * DBus policy files are now installed into /usr rather than /etc. Make
9821 sure your system has dbus >= 1.9.18 running before upgrading to this
9822 version, or override the install path with --with-dbuspolicydir= .
9823
9824 * All python scripts shipped with systemd (specifically: the various
9825 tests written in Python) now require Python 3.
9826
9827 * systemd unit tests can now run standalone (without the source or
9828 build directories), and can be installed into /usr/lib/systemd/tests/
9829 with 'make install-tests'.
9830
9831 * Note that from this version on, CONFIG_CRYPTO_USER_API_HASH,
9832 CONFIG_CRYPTO_HMAC and CONFIG_CRYPTO_SHA256 need to be enabled in the
9833 kernel.
9834
9835 * Support for the %c, %r, %R specifiers in unit files has been
9836 removed. Specifiers are not supposed to be dependent on configuration
9837 in the unit file itself (so that they resolve the same regardless
9838 where used in the unit files), but these specifiers were influenced
9839 by the Slice= option.
9840
9841 * The shell invoked by debug-shell.service now defaults to /bin/sh in
9842 all cases. If distributions want to use a different shell for this
9843 purpose (for example Fedora's /sbin/sushell) they need to specify
9844 this explicitly at configure time using --with-debug-shell=.
9845
9846 * The confirmation spawn prompt has been reworked to offer the
9847 following choices:
9848
9849 (c)ontinue, proceed without asking anymore
9850 (D)ump, show the state of the unit
9851 (f)ail, don't execute the command and pretend it failed
9852 (h)elp
9853 (i)nfo, show a short summary of the unit
9854 (j)obs, show jobs that are in progress
9855 (s)kip, don't execute the command and pretend it succeeded
9856 (y)es, execute the command
9857
9858 The 'n' choice for the confirmation spawn prompt has been removed,
9859 because its meaning was confusing.
9860
9861 The prompt may now also be redirected to an alternative console by
9862 specifying the console as parameter to systemd.confirm_spawn=.
9863
9864 * Services of Type=notify require a READY=1 notification to be sent
9865 during startup. If no such message is sent, the service now fails,
9866 even if the main process exited with a successful exit code.
9867
9868 * Services that fail to start up correctly now always have their
9869 ExecStopPost= commands executed. Previously, they'd enter "failed"
9870 state directly, without executing these commands.
9871
9872 * The option MulticastDNS= of network configuration files has acquired
9873 an actual implementation. With MulticastDNS=yes a host can resolve
9874 names of remote hosts and reply to mDNS A and AAAA requests.
9875
9876 * When units are about to be started an additional check is now done to
9877 ensure that all dependencies of type BindsTo= (when used in
9878 combination with After=) have been started.
9879
9880 * systemd-analyze gained a new verb "syscall-filter" which shows which
9881 system call groups are defined for the SystemCallFilter= unit file
9882 setting, and which system calls they contain.
9883
9884 * A new system call filter group "@filesystem" has been added,
9885 consisting of various file system related system calls. Group
9886 "@reboot" has been added, covering reboot, kexec and shutdown related
9887 calls. Finally, group "@swap" has been added covering swap
9888 configuration related calls.
9889
9890 * A new unit file option RestrictNamespaces= has been added that may be
9891 used to restrict access to the various process namespace types the
9892 Linux kernel provides. Specifically, it may be used to take away the
9893 right for a service unit to create additional file system, network,
9894 user, and other namespaces. This sandboxing option is particularly
9895 relevant due to the high amount of recently discovered namespacing
9896 related vulnerabilities in the kernel.
9897
9898 * systemd-udev's .link files gained support for a new AutoNegotiation=
9899 setting for configuring Ethernet auto-negotiation.
9900
9901 * systemd-networkd's .network files gained support for a new
9902 ListenPort= setting in the [DHCP] section to explicitly configure the
9903 UDP client port the DHCP client shall listen on.
9904
9905 * .network files gained a new Unmanaged= boolean setting for explicitly
9906 excluding one or more interfaces from management by systemd-networkd.
9907
9908 * The systemd-networkd ProxyARP= option has been renamed to
9909 IPV4ProxyARP=. Similarly, VXLAN-specific option ARPProxy= has been
9910 renamed to ReduceARPProxy=. The old names continue to be available
9911 for compatibility.
9912
9913 * systemd-networkd gained support for configuring IPv6 Proxy NDP
9914 addresses via the new IPv6ProxyNDPAddress= .network file setting.
9915
9916 * systemd-networkd's bonding device support gained support for two new
9917 configuration options ActiveSlave= and PrimarySlave=.
9918
9919 * The various options in the [Match] section of .network files gained
9920 support for negative matching.
9921
9922 * New systemd-specific mount options are now understood in /etc/fstab:
9923
9924 x-systemd.mount-timeout= may be used to configure the maximum
9925 permitted runtime of the mount command.
9926
9927 x-systemd.device-bound may be set to bind a mount point to its
9928 backing device unit, in order to automatically remove a mount point
9929 if its backing device is unplugged. This option may also be
9930 configured through the new SYSTEMD_MOUNT_DEVICE_BOUND udev property
9931 on the block device, which is now automatically set for all CDROM
9932 drives, so that mounted CDs are automatically unmounted when they are
9933 removed from the drive.
9934
9935 x-systemd.after= and x-systemd.before= may be used to explicitly
9936 order a mount after or before another unit or mount point.
9937
9938 * Enqueued start jobs for device units are now automatically garbage
9939 collected if there are no jobs waiting for them anymore.
9940
9941 * systemctl list-jobs gained two new switches: with --after, for every
9942 queued job the jobs it's waiting for are shown; with --before the
9943 jobs which it's blocking are shown.
9944
9945 * systemd-nspawn gained support for ephemeral boots from disk images
9946 (or in other words: --ephemeral and --image= may now be
9947 combined). Moreover, ephemeral boots are now supported for normal
9948 directories, even if the backing file system is not btrfs. Of course,
9949 if the file system does not support file system snapshots or
9950 reflinks, the initial copy operation will be relatively expensive, but
9951 this should still be suitable for many use cases.
9952
9953 * Calendar time specifications in .timer units now support
9954 specifications relative to the end of a month by using "~" instead of
9955 "-" as separator between month and day. For example, "*-02~03" means
9956 "the third last day in February". In addition a new syntax for
9957 repeated events has been added using the "/" character. For example,
9958 "9..17/2:00" means "every two hours from 9am to 5pm".
9959
9960 * systemd-socket-proxyd gained a new parameter --connections-max= for
9961 configuring the maximum number of concurrent connections.
9962
9963 * sd-id128 gained a new API for generating unique IDs for the host in a
9964 way that does not leak the machine ID. Specifically,
9965 sd_id128_get_machine_app_specific() derives an ID based on the
9966 machine ID in a well-defined, non-reversible, stable way. This is
9967 useful whenever an identifier for the host is needed but where the
9968 identifier shall not be useful to identify the system beyond the
9969 scope of the application itself. (Internally this uses HMAC-SHA256 as
9970 keyed hash function using the machine ID as input.)
9971
9972 * NotifyAccess= gained a new supported value "exec". When set
9973 notifications are accepted from all processes systemd itself invoked,
9974 including all control processes.
9975
9976 * .nspawn files gained support for defining overlay mounts using the
9977 Overlay= and OverlayReadOnly= options. Previously this functionality
9978 was only available on the systemd-nspawn command line.
9979
9980 * systemd-nspawn's --bind= and --overlay= options gained support for
9981 bind/overlay mounts whose source lies within the container tree by
9982 prefixing the source path with "+".
9983
9984 * systemd-nspawn's --bind= and --overlay= options gained support for
9985 automatically allocating a temporary source directory in /var/tmp
9986 that is removed when the container dies. Specifically, if the source
9987 directory is specified as empty string this mechanism is selected. An
9988 example usage is --overlay=+/var::/var, which creates an overlay
9989 mount based on the original /var contained in the image, overlaid
9990 with a temporary directory in the host's /var/tmp. This way changes
9991 to /var are automatically flushed when the container shuts down.
9992
9993 * systemd-nspawn --image= option does now permit raw file system block
9994 devices (in addition to images containing partition tables, as
9995 before).
9996
9997 * The disk image dissection logic in systemd-nspawn gained support for
9998 automatically setting up LUKS encrypted as well as Verity protected
9999 partitions. When a container is booted from an encrypted image the
10000 passphrase is queried at start-up time. When a container with Verity
10001 data is started, the root hash is search in a ".roothash" file
10002 accompanying the disk image (alternatively, pass the root hash via
10003 the new --root-hash= command line option).
10004
10005 * A new tool /usr/lib/systemd/systemd-dissect has been added that may
10006 be used to dissect disk images the same way as systemd-nspawn does
10007 it, following the Bootable Partition Specification. It may even be
10008 used to mount disk images with complex partition setups (including
10009 LUKS and Verity partitions) to a local host directory, in order to
10010 inspect them. This tool is not considered public API (yet), and is
10011 thus not installed into /usr/bin. Please do not rely on its
10012 existence, since it might go away or be changed in later systemd
10013 versions.
10014
10015 * A new generator "systemd-verity-generator" has been added, similar in
10016 style to "systemd-cryptsetup-generator", permitting automatic setup of
10017 Verity root partitions when systemd boots up. In order to make use of
10018 this your partition setup should follow the Discoverable Partitions
10019 Specification, and the GPT partition ID of the root file system
10020 partition should be identical to the upper 128-bit of the Verity root
10021 hash. The GPT partition ID of the Verity partition protecting it
10022 should be the lower 128-bit of the Verity root hash. If the partition
10023 image follows this model it is sufficient to specify a single
10024 "roothash=" kernel command line argument to both configure which root
10025 image and verity partition to use as well as the root hash for
10026 it. Note that systemd-nspawn's Verity support follows the same
10027 semantics, meaning that disk images with proper Verity data in place
10028 may be booted in containers with systemd-nspawn as well as on
10029 physical systems via the verity generator. Also note that the "mkosi"
10030 tool available at https://github.com/systemd/mkosi has been updated
10031 to generate Verity protected disk images following this scheme. In
10032 fact, it has been updated to generate disk images that optionally
10033 implement a complete UEFI SecureBoot trust chain, involving a signed
10034 kernel and initrd image that incorporates such a root hash as well as
10035 a Verity-enabled root partition.
10036
10037 * The hardware database (hwdb) udev supports has been updated to carry
10038 accelerometer quirks.
10039
10040 * All system services are now run with a fresh kernel keyring set up
10041 for them. The invocation ID is stored by default in it, thus
10042 providing a safe, non-overridable way to determine the invocation
10043 ID of each service.
10044
10045 * Service unit files gained new BindPaths= and BindReadOnlyPaths=
10046 options for bind mounting arbitrary paths in a service-specific
10047 way. When these options are used, arbitrary host or service files and
10048 directories may be mounted to arbitrary locations in the service's
10049 view.
10050
10051 * Documentation has been added that lists all of systemd's low-level
10052 environment variables:
10053
10054 https://github.com/systemd/systemd/blob/master/docs/ENVIRONMENT.md
10055
10056 * sd-daemon gained a new API sd_is_socket_sockaddr() for determining
10057 whether a specific socket file descriptor matches a specified socket
10058 address.
10059
10060 * systemd-firstboot has been updated to check for the
10061 systemd.firstboot= kernel command line option. It accepts a boolean
10062 and when set to false the first boot questions are skipped.
10063
10064 * systemd-fstab-generator has been updated to check for the
10065 systemd.volatile= kernel command line option, which either takes an
10066 optional boolean parameter or the special value "state". If used the
10067 system may be booted in a "volatile" boot mode. Specifically,
10068 "systemd.volatile" is used, the root directory will be mounted as
10069 tmpfs, and only /usr is mounted from the actual root file system. If
10070 "systemd.volatile=state" is used, the root directory will be mounted
10071 as usual, but /var is mounted as tmpfs. This concept provides similar
10072 functionality as systemd-nspawn's --volatile= option, but provides it
10073 on physical boots. Use this option for implementing stateless
10074 systems, or testing systems with all state and/or configuration reset
10075 to the defaults. (Note though that many distributions are not
10076 prepared to boot up without a populated /etc or /var, though.)
10077
10078 * systemd-gpt-auto-generator gained support for LUKS encrypted root
10079 partitions. Previously it only supported LUKS encrypted partitions
10080 for all other uses, except for the root partition itself.
10081
10082 * Socket units gained support for listening on AF_VSOCK sockets for
10083 communication in virtualized QEMU environments.
10084
10085 * The "configure" script gained a new option --with-fallback-hostname=
10086 for specifying the fallback hostname to use if none is configured in
10087 /etc/hostname. For example, by specifying
10088 --with-fallback-hostname=fedora it is possible to default to a
10089 hostname of "fedora" on pristine installations.
10090
10091 * systemd-cgls gained support for a new --unit= switch for listing only
10092 the control groups of a specific unit. Similar --user-unit= has been
10093 added for listing only the control groups of a specific user unit.
10094
10095 * systemd-mount gained a new --umount switch for unmounting a mount or
10096 automount point (and all mount/automount points below it).
10097
10098 * systemd will now refuse full configuration reloads (via systemctl
10099 daemon-reload and related calls) unless at least 16MiB of free space
10100 are available in /run. This is a safety precaution in order to ensure
10101 that generators can safely operate after the reload completed.
10102
10103 * A new unit file option RootImage= has been added, which has a similar
10104 effect as RootDirectory= but mounts the service's root directory from
10105 a disk image instead of plain directory. This logic reuses the same
10106 image dissection and mount logic that systemd-nspawn already uses,
10107 and hence supports any disk images systemd-nspawn supports, including
10108 those following the Discoverable Partition Specification, as well as
10109 Verity enabled images. This option enables systemd to run system
10110 services directly off disk images acting as resource bundles,
10111 possibly even including full integrity data.
10112
10113 * A new MountAPIVFS= unit file option has been added, taking a boolean
10114 argument. If enabled /proc, /sys and /dev (collectively called the
10115 "API VFS") will be mounted for the service. This is only relevant if
10116 RootDirectory= or RootImage= is used for the service, as these mounts
10117 are of course in place in the host mount namespace anyway.
10118
10119 * systemd-nspawn gained support for a new --pivot-root= switch. If
10120 specified the root directory within the container image is pivoted to
10121 the specified mount point, while the original root disk is moved to a
10122 different place. This option enables booting of ostree images
10123 directly with systemd-nspawn.
10124
10125 * The systemd build scripts will no longer complain if the NTP server
10126 addresses are not changed from the defaults. Google now supports
10127 these NTP servers officially. We still recommend downstreams to
10128 properly register an NTP pool with the NTP pool project though.
10129
10130 * coredumpctl gained a new "--reverse" option for printing the list
10131 of coredumps in reverse order.
10132
10133 * coredumpctl will now show additional information about truncated and
10134 inaccessible coredumps, as well as coredumps that are still being
10135 processed. It also gained a new --quiet switch for suppressing
10136 additional informational message in its output.
10137
10138 * coredumpctl gained support for only showing coredumps newer and/or
10139 older than specific timestamps, using the new --since= and --until=
10140 options, reminiscent of journalctl's options by the same name.
10141
10142 * The systemd-coredump logic has been improved so that it may be reused
10143 to collect backtraces in non-compiled languages, for example in
10144 scripting languages such as Python.
10145
10146 * machinectl will now show the UID shift of local containers, if user
10147 namespacing is enabled for them.
10148
10149 * systemd will now optionally run "environment generator" binaries at
10150 configuration load time. They may be used to add environment
10151 variables to the environment block passed to services invoked. One
10152 user environment generator is shipped by default that sets up
10153 environment variables based on files dropped into /etc/environment.d
10154 and ~/.config/environment.d/.
10155
10156 * systemd-resolved now includes the new, recently published 2017 DNSSEC
10157 root key (KSK).
10158
10159 * hostnamed has been updated to report a new chassis type of
10160 "convertible" to cover "foldable" laptops that can both act as a
10161 tablet and as a laptop, such as various Lenovo Yoga devices.
10162
10163 Contributions from: Adrián López, Alexander Galanin, Alexander
10164 Kochetkov, Alexandros Frantzis, Andrey Ulanov, Antoine Eiche, Baruch
10165 Siach, Bastien Nocera, Benjamin Robin, Björn, Brandon Philips, Cédric
10166 Schieli, Charles (Chas) Williams, Christian Hesse, Daniele Medri,
10167 Daniel Drake, Daniel Rusek, Daniel Wagner, Dan Streetman, Dave Reisner,
10168 David Glasser, David Herrmann, David Michael, Djalal Harouni, Dmitry
10169 Khlebnikov, Dmitry Rozhkov, Dongsu Park, Douglas Christman, Earnestly,
10170 Emil Soleyman, Eric Cook, Evgeny Vereshchagin, Felipe Sateler, Fionn
10171 Cleary, Florian Klink, Francesco Brozzu, Franck Bui, Gabriel Rauter,
10172 Gianluca Boiano, Giedrius Statkevičius, Graeme Lawes, Hans de Goede,
10173 Harald Hoyer, Ian Kelling, Ivan Shapovalov, Jakub Wilk, Janne Heß, Jan
10174 Synacek, Jason Reeder, Jonathan Boulle, Jörg Thalheim, Jouke Witteveen,
10175 Karl Kraus, Kees Cook, Keith Busch, Kieran Colford, kilian-k, Lennart
10176 Poettering, Lubomir Rintel, Lucas Werkmeister, Lukas Rusak, Maarten de
10177 Vries, Maks Naumov, Mantas Mikulėnas, Marc-Andre Lureau, Marcin Bachry,
10178 Mark Stosberg, Martin Ejdestig, Martin Pitt, Mauricio Faria de
10179 Oliveira, micah, Michael Biebl, Michael Shields, Michal Schmidt, Michal
10180 Sekletar, Michel Kraus, Mike Gilbert, Mikko Ylinen, Mirza Krak,
10181 Namhyung Kim, nikolaof, peoronoob, Peter Hutterer, Peter Körner, Philip
10182 Withnall, Piotr Drąg, Ray Strode, Reverend Homer, Rike-Benjamin
10183 Schuppner, Robert Kreuzer, Ronny Chevalier, Ruslan Bilovol, sammynx,
10184 Sergey Ptashnick, Sergiusz Urbaniak, Stefan Berger, Stefan Hajnoczi,
10185 Stefan Schweter, Stuart McLaren, Susant Sahani, Sylvain Plantefève,
10186 Taylor Smock, Tejun Heo, Thomas Blume, Thomas H. P. Andersen, Tibor
10187 Nagy, Tobias Stoeckmann, Tom Gundersen, Torstein Husebø, Viktar
10188 Vaŭčkievič, Viktor Mihajlovski, Vitaly Sulimov, Waldemar Brodkorb,
10189 Walter Garcia-Fontes, Wim de With, Yassine Imounachen, Yi EungJun,
10190 YunQiang Su, Yu Watanabe, Zbigniew Jędrzejewski-Szmek, Александр
10191 Тихонов
10192
10193 — Berlin, 2017-03-01
10194
10195 CHANGES WITH 232:
10196
10197 * udev now runs with MemoryDenyWriteExecute=, RestrictRealtime= and
10198 RestrictAddressFamilies= enabled. These sandboxing options should
10199 generally be compatible with the various external udev call-out
10200 binaries we are aware of, however there may be exceptions, in
10201 particular when exotic languages for these call-outs are used. In
10202 this case, consider turning off these settings locally.
10203
10204 * The new RemoveIPC= option can be used to remove IPC objects owned by
10205 the user or group of a service when that service exits.
10206
10207 * The new ProtectKernelModules= option can be used to disable explicit
10208 load and unload operations of kernel modules by a service. In
10209 addition access to /usr/lib/modules is removed if this option is set.
10210
10211 * ProtectSystem= option gained a new value "strict", which causes the
10212 whole file system tree with the exception of /dev, /proc, and /sys,
10213 to be remounted read-only for a service.
10214
10215 * The new ProtectKernelTunables= option can be used to disable
10216 modification of configuration files in /sys and /proc by a service.
10217 Various directories and files are remounted read-only, so access is
10218 restricted even if the file permissions would allow it.
10219
10220 * The new ProtectControlGroups= option can be used to disable write
10221 access by a service to /sys/fs/cgroup.
10222
10223 * Various systemd services have been hardened with
10224 ProtectKernelTunables=yes, ProtectControlGroups=yes,
10225 RestrictAddressFamilies=.
10226
10227 * Support for dynamically creating users for the lifetime of a service
10228 has been added. If DynamicUser=yes is specified, user and group IDs
10229 will be allocated from the range 61184…65519 for the lifetime of the
10230 service. They can be resolved using the new nss-systemd.so NSS
10231 module. The module must be enabled in /etc/nsswitch.conf. Services
10232 started in this way have PrivateTmp= and RemoveIPC= enabled, so that
10233 any resources allocated by the service will be cleaned up when the
10234 service exits. They also have ProtectHome=read-only and
10235 ProtectSystem=strict enabled, so they are not able to make any
10236 permanent modifications to the system.
10237
10238 * The nss-systemd module also always resolves root and nobody, making
10239 it possible to have no /etc/passwd or /etc/group files in minimal
10240 container or chroot environments.
10241
10242 * Services may be started with their own user namespace using the new
10243 boolean PrivateUsers= option. Only root, nobody, and the uid/gid
10244 under which the service is running are mapped. All other users are
10245 mapped to nobody.
10246
10247 * Support for the cgroup namespace has been added to systemd-nspawn. If
10248 supported by kernel, the container system started by systemd-nspawn
10249 will have its own view of the cgroup hierarchy. This new behaviour
10250 can be disabled using $SYSTEMD_NSPAWN_USE_CGNS environment variable.
10251
10252 * The new MemorySwapMax= option can be used to limit the maximum swap
10253 usage under the unified cgroup hierarchy.
10254
10255 * Support for the CPU controller in the unified cgroup hierarchy has
10256 been added, via the CPUWeight=, CPUStartupWeight=, CPUAccounting=
10257 options. This controller requires out-of-tree patches for the kernel
10258 and the support is provisional.
10259
10260 * Mount and automount units may now be created transiently
10261 (i.e. dynamically at runtime via the bus API, instead of requiring
10262 unit files in the file system).
10263
10264 * systemd-mount is a new tool which may mount file systems – much like
10265 mount(8), optionally pulling in additional dependencies through
10266 transient .mount and .automount units. For example, this tool
10267 automatically runs fsck on a backing block device before mounting,
10268 and allows the automount logic to be used dynamically from the
10269 command line for establishing mount points. This tool is particularly
10270 useful when dealing with removable media, as it will ensure fsck is
10271 run – if necessary – before the first access and that the file system
10272 is quickly unmounted after each access by utilizing the automount
10273 logic. This maximizes the chance that the file system on the
10274 removable media stays in a clean state, and if it isn't in a clean
10275 state is fixed automatically.
10276
10277 * LazyUnmount=yes option for mount units has been added to expose the
10278 umount --lazy option. Similarly, ForceUnmount=yes exposes the --force
10279 option.
10280
10281 * /efi will be used as the mount point of the EFI boot partition, if
10282 the directory is present, and the mount point was not configured
10283 through other means (e.g. fstab). If /efi directory does not exist,
10284 /boot will be used as before. This makes it easier to automatically
10285 mount the EFI partition on systems where /boot is used for something
10286 else.
10287
10288 * When operating on GPT disk images for containers, systemd-nspawn will
10289 now mount the ESP to /boot or /efi according to the same rules as PID
10290 1 running on a host. This allows tools like "bootctl" to operate
10291 correctly within such containers, in order to make container images
10292 bootable on physical systems.
10293
10294 * disk/by-id and disk/by-path symlinks are now created for NVMe drives.
10295
10296 * Two new user session targets have been added to support running
10297 graphical sessions under the systemd --user instance:
10298 graphical-session.target and graphical-session-pre.target. See
10299 systemd.special(7) for a description of how those targets should be
10300 used.
10301
10302 * The vconsole initialization code has been significantly reworked to
10303 use KD_FONT_OP_GET/SET ioctls instead of KD_FONT_OP_COPY and better
10304 support unicode keymaps. Font and keymap configuration will now be
10305 copied to all allocated virtual consoles.
10306
10307 * FreeBSD's bhyve virtualization is now detected.
10308
10309 * Information recorded in the journal for core dumps now includes the
10310 contents of /proc/mountinfo and the command line of the process at
10311 the top of the process hierarchy (which is usually the init process
10312 of the container).
10313
10314 * systemd-journal-gatewayd learned the --directory= option to serve
10315 files from the specified location.
10316
10317 * journalctl --root=… can be used to peruse the journal in the
10318 /var/log/ directories inside of a container tree. This is similar to
10319 the existing --machine= option, but does not require the container to
10320 be active.
10321
10322 * The hardware database has been extended to support
10323 ID_INPUT_TRACKBALL, used in addition to ID_INPUT_MOUSE to identify
10324 trackball devices.
10325
10326 MOUSE_WHEEL_CLICK_ANGLE_HORIZONTAL hwdb property has been added to
10327 specify the click rate for mice which include a horizontal wheel with
10328 a click rate that is different than the one for the vertical wheel.
10329
10330 * systemd-run gained a new --wait option that makes service execution
10331 synchronous. (Specifically, the command will not return until the
10332 specified service binary exited.)
10333
10334 * systemctl gained a new --wait option that causes the start command to
10335 wait until the units being started have terminated again.
10336
10337 * A new journal output mode "short-full" has been added which displays
10338 timestamps with abbreviated English day names and adds a timezone
10339 suffix. Those timestamps include more information than the default
10340 "short" output mode, and can be passed directly to journalctl's
10341 --since= and --until= options.
10342
10343 * /etc/resolv.conf will be bind-mounted into containers started by
10344 systemd-nspawn, if possible, so any changes to resolv.conf contents
10345 are automatically propagated to the container.
10346
10347 * The number of instances for socket-activated services originating
10348 from a single IP address can be limited with
10349 MaxConnectionsPerSource=, extending the existing setting of
10350 MaxConnections=.
10351
10352 * systemd-networkd gained support for vcan ("Virtual CAN") interface
10353 configuration.
10354
10355 * .netdev and .network configuration can now be extended through
10356 drop-ins.
10357
10358 * UDP Segmentation Offload, TCP Segmentation Offload, Generic
10359 Segmentation Offload, Generic Receive Offload, Large Receive Offload
10360 can be enabled and disabled using the new UDPSegmentationOffload=,
10361 TCPSegmentationOffload=, GenericSegmentationOffload=,
10362 GenericReceiveOffload=, LargeReceiveOffload= options in the
10363 [Link] section of .link files.
10364
10365 * The Spanning Tree Protocol, Priority, Aging Time, and the Default
10366 Port VLAN ID can be configured for bridge devices using the new STP=,
10367 Priority=, AgeingTimeSec=, and DefaultPVID= settings in the [Bridge]
10368 section of .netdev files.
10369
10370 * The route table to which routes received over DHCP or RA should be
10371 added can be configured with the new RouteTable= option in the [DHCP]
10372 and [IPv6AcceptRA] sections of .network files.
10373
10374 * The Address Resolution Protocol can be disabled on links managed by
10375 systemd-networkd using the ARP=no setting in the [Link] section of
10376 .network files.
10377
10378 * New environment variables $SERVICE_RESULT, $EXIT_CODE and
10379 $EXIT_STATUS are set for ExecStop= and ExecStopPost= commands, and
10380 encode information about the result and exit codes of the current
10381 service runtime cycle.
10382
10383 * systemd-sysctl will now configure kernel parameters in the order
10384 they occur in the configuration files. This matches what sysctl
10385 has been traditionally doing.
10386
10387 * kernel-install "plugins" that are executed to perform various
10388 tasks after a new kernel is added and before an old one is removed
10389 can now return a special value to terminate the procedure and
10390 prevent any later plugins from running.
10391
10392 * Journald's SplitMode=login setting has been deprecated. It has been
10393 removed from documentation, and its use is discouraged. In a future
10394 release it will be completely removed, and made equivalent to current
10395 default of SplitMode=uid.
10396
10397 * Storage=both option setting in /etc/systemd/coredump.conf has been
10398 removed. With fast LZ4 compression storing the core dump twice is not
10399 useful.
10400
10401 * The --share-system systemd-nspawn option has been replaced with an
10402 (undocumented) variable $SYSTEMD_NSPAWN_SHARE_SYSTEM, but the use of
10403 this functionality is discouraged. In addition the variables
10404 $SYSTEMD_NSPAWN_SHARE_NS_IPC, $SYSTEMD_NSPAWN_SHARE_NS_PID,
10405 $SYSTEMD_NSPAWN_SHARE_NS_UTS may be used to control the unsharing of
10406 individual namespaces.
10407
10408 * "machinectl list" now shows the IP address of running containers in
10409 the output, as well as OS release information.
10410
10411 * "loginctl list" now shows the TTY of each session in the output.
10412
10413 * sd-bus gained new API calls sd_bus_track_set_recursive(),
10414 sd_bus_track_get_recursive(), sd_bus_track_count_name(),
10415 sd_bus_track_count_sender(). They permit usage of sd_bus_track peer
10416 tracking objects in a "recursive" mode, where a single client can be
10417 counted multiple times, if it takes multiple references.
10418
10419 * sd-bus gained new API calls sd_bus_set_exit_on_disconnect() and
10420 sd_bus_get_exit_on_disconnect(). They may be used to make a
10421 process using sd-bus automatically exit if the bus connection is
10422 severed.
10423
10424 * Bus clients of the service manager may now "pin" loaded units into
10425 memory, by taking an explicit reference on them. This is useful to
10426 ensure the client can retrieve runtime data about the service even
10427 after the service completed execution. Taking such a reference is
10428 available only for privileged clients and should be helpful to watch
10429 running services in a race-free manner, and in particular collect
10430 information about exit statuses and results.
10431
10432 * The nss-resolve module has been changed to strictly return UNAVAIL
10433 when communication via D-Bus with resolved failed, and NOTFOUND when
10434 a lookup completed but was negative. This means it is now possible to
10435 neatly configure fallbacks using nsswitch.conf result checking
10436 expressions. Taking benefit of this, the new recommended
10437 configuration line for the "hosts" entry in /etc/nsswitch.conf is:
10438
10439 hosts: files mymachines resolve [!UNAVAIL=return] dns myhostname
10440
10441 * A new setting CtrlAltDelBurstAction= has been added to
10442 /etc/systemd/system.conf which may be used to configure the precise
10443 behaviour if the user on the console presses Ctrl-Alt-Del more often
10444 than 7 times in 2s. Previously this would unconditionally result in
10445 an expedited, immediate reboot. With this new setting the precise
10446 operation may be configured in more detail, and also turned off
10447 entirely.
10448
10449 * In .netdev files two new settings RemoteChecksumTx= and
10450 RemoteChecksumRx= are now understood that permit configuring the
10451 remote checksumming logic for VXLAN networks.
10452
10453 * The service manager learnt a new "invocation ID" concept for invoked
10454 services. Each runtime cycle of a service will get a new invocation
10455 ID (a 128-bit random UUID) assigned that identifies the current
10456 run of the service uniquely and globally. A new invocation ID
10457 is generated each time a service starts up. The journal will store
10458 the invocation ID of a service along with any logged messages, thus
10459 making the invocation ID useful for matching the online runtime of a
10460 service with the offline log data it generated in a safe way without
10461 relying on synchronized timestamps. In many ways this new service
10462 invocation ID concept is similar to the kernel's boot ID concept that
10463 uniquely and globally identifies the runtime of each boot. The
10464 invocation ID of a service is passed to the service itself via an
10465 environment variable ($INVOCATION_ID). A new bus call
10466 GetUnitByInvocationID() has been added that is similar to GetUnit()
10467 but instead of retrieving the bus path for a unit by its name
10468 retrieves it by its invocation ID. The returned path is valid only as
10469 long as the passed invocation ID is current.
10470
10471 * systemd-resolved gained a new "DNSStubListener" setting in
10472 resolved.conf. It either takes a boolean value or the special values
10473 "udp" and "tcp", and configures whether to enable the stub DNS
10474 listener on 127.0.0.53:53.
10475
10476 * IP addresses configured via networkd may now carry additional
10477 configuration settings supported by the kernel. New options include:
10478 HomeAddress=, DuplicateAddressDetection=, ManageTemporaryAddress=,
10479 PrefixRoute=, AutoJoin=.
10480
10481 * The PAM configuration fragment file for "user@.service" shipped with
10482 systemd (i.e. the --user instance of systemd) has been stripped to
10483 the minimum necessary to make the system boot. Previously, it
10484 contained Fedora-specific stanzas that did not apply to other
10485 distributions. It is expected that downstream distributions add
10486 additional configuration lines, matching their needs to this file,
10487 using it only as rough template of what systemd itself needs. Note
10488 that this reduced fragment does not even include an invocation of
10489 pam_limits which most distributions probably want to add, even though
10490 systemd itself does not need it. (There's also the new build time
10491 option --with-pamconfdir=no to disable installation of the PAM
10492 fragment entirely.)
10493
10494 * If PrivateDevices=yes is set for a service the CAP_SYS_RAWIO
10495 capability is now also dropped from its set (in addition to
10496 CAP_SYS_MKNOD as before).
10497
10498 * In service unit files it is now possible to connect a specific named
10499 file descriptor with stdin/stdout/stdout of an executed service. The
10500 name may be specified in matching .socket units using the
10501 FileDescriptorName= setting.
10502
10503 * A number of journal settings may now be configured on the kernel
10504 command line. Specifically, the following options are now understood:
10505 systemd.journald.max_level_console=,
10506 systemd.journald.max_level_store=,
10507 systemd.journald.max_level_syslog=, systemd.journald.max_level_kmsg=,
10508 systemd.journald.max_level_wall=.
10509
10510 * "systemctl is-enabled --full" will now show by which symlinks a unit
10511 file is enabled in the unit dependency tree.
10512
10513 * Support for VeraCrypt encrypted partitions has been added to the
10514 "cryptsetup" logic and /etc/crypttab.
10515
10516 * systemd-detect-virt gained support for a new --private-users switch
10517 that checks whether the invoking processes are running inside a user
10518 namespace. Similar, a new special value "private-users" for the
10519 existing ConditionVirtualization= setting has been added, permitting
10520 skipping of specific units in user namespace environments.
10521
10522 Contributions from: Alban Crequy, Alexander Kuleshov, Alfie John,
10523 Andreas Henriksson, Andrew Jeddeloh, Balázs Úr, Bart Rulon, Benjamin
10524 Richter, Ben Gamari, Ben Harris, Brian J. Murrell, Christian Brauner,
10525 Christian Rebischke, Clinton Roy, Colin Walters, Cristian Rodríguez,
10526 Daniel Hahler, Daniel Mack, Daniel Maixner, Daniel Rusek, Dan Dedrick,
10527 Davide Cavalca, David Herrmann, David Michael, Dennis Wassenberg,
10528 Djalal Harouni, Dongsu Park, Douglas Christman, Elias Probst, Eric
10529 Cook, Erik Karlsson, Evgeny Vereshchagin, Felipe Sateler, Felix Zhang,
10530 Franck Bui, George Hilliard, Giuseppe Scrivano, HATAYAMA Daisuke,
10531 Heikki Kemppainen, Hendrik Brueckner, hi117, Ismo Puustinen, Ivan
10532 Shapovalov, Jakub Filak, Jakub Wilk, Jan Synacek, Jason Kölker,
10533 Jean-Sébastien Bour, Jiří Pírko, Jonathan Boulle, Jorge Niedbalski,
10534 Keith Busch, kristbaum, Kyle Russell, Lans Zhang, Lennart Poettering,
10535 Leonardo Brondani Schenkel, Lucas Werkmeister, Luca Bruno, Lukáš
10536 Nykrýn, Maciek Borzecki, Mantas Mikulėnas, Marc-Antoine Perennou,
10537 Marcel Holtmann, Marcos Mello, Martin Ejdestig, Martin Pitt, Matej
10538 Habrnal, Maxime de Roucy, Michael Biebl, Michael Chapman, Michael Hoy,
10539 Michael Olbrich, Michael Pope, Michal Sekletar, Michal Soltys, Mike
10540 Gilbert, Nick Owens, Patrik Flykt, Paweł Szewczyk, Peter Hutterer,
10541 Piotr Drąg, Reid Price, Richard W.M. Jones, Roman Stingler, Ronny
10542 Chevalier, Seraphime Kirkovski, Stefan Schweter, Steve Muir, Susant
10543 Sahani, Tejun Heo, Thomas Blume, Thomas H. P. Andersen, Tiago Levit,
10544 Tobias Jungel, Tomáš Janoušek, Topi Miettinen, Torstein Husebø, Umut
10545 Tezduyar Lindskog, Vito Caputo, WaLyong Cho, Wilhelm Schuster, Yann
10546 E. MORIN, Yi EungJun, Yuki Inoguchi, Yu Watanabe, Zbigniew
10547 Jędrzejewski-Szmek, Zeal Jagannatha
10548
10549 — Santa Fe, 2016-11-03
10550
10551 CHANGES WITH 231:
10552
10553 * In service units the various ExecXYZ= settings have been extended
10554 with an additional special character as first argument of the
10555 assigned value: if the character '+' is used the specified command
10556 line it will be run with full privileges, regardless of User=,
10557 Group=, CapabilityBoundingSet= and similar options. The effect is
10558 similar to the existing PermissionsStartOnly= option, but allows
10559 configuration of this concept for each executed command line
10560 independently.
10561
10562 * Services may now alter the service watchdog timeout at runtime by
10563 sending a WATCHDOG_USEC= message via sd_notify().
10564
10565 * MemoryLimit= and related unit settings now optionally take percentage
10566 specifications. The percentage is taken relative to the amount of
10567 physical memory in the system (or in case of containers, the assigned
10568 amount of memory). This allows scaling service resources neatly with
10569 the amount of RAM available on the system. Similarly, systemd-logind's
10570 RuntimeDirectorySize= option now also optionally takes percentage
10571 values.
10572
10573 * In similar fashion TasksMax= takes percentage values now, too. The
10574 value is taken relative to the configured maximum number of processes
10575 on the system. The per-service task maximum has been changed to 15%
10576 using this functionality. (Effectively this is an increase of 512 →
10577 4915 for service units, given the kernel's default pid_max setting.)
10578
10579 * Calendar time specifications in .timer units now understand a ".."
10580 syntax for time ranges. Example: "4..7:10" may now be used for
10581 defining a timer that is triggered at 4:10am, 5:10am, 6:10am and
10582 7:10am every day.
10583
10584 * The InaccessableDirectories=, ReadOnlyDirectories= and
10585 ReadWriteDirectories= unit file settings have been renamed to
10586 InaccessablePaths=, ReadOnlyPaths= and ReadWritePaths= and may now be
10587 applied to all kinds of file nodes, and not just directories, with
10588 the exception of symlinks. Specifically these settings may now be
10589 used on block and character device nodes, UNIX sockets and FIFOS as
10590 well as regular files. The old names of these settings remain
10591 available for compatibility.
10592
10593 * systemd will now log about all service processes it kills forcibly
10594 (using SIGKILL) because they remained after the clean shutdown phase
10595 of the service completed. This should help identifying services that
10596 shut down uncleanly. Moreover if KillUserProcesses= is enabled in
10597 systemd-logind's configuration a similar log message is generated for
10598 processes killed at the end of each session due to this setting.
10599
10600 * systemd will now set the $JOURNAL_STREAM environment variable for all
10601 services whose stdout/stderr are connected to the Journal (which
10602 effectively means by default: all services). The variable contains
10603 the device and inode number of the file descriptor used for
10604 stdout/stderr. This may be used by invoked programs to detect whether
10605 their stdout/stderr is connected to the Journal, in which case they
10606 can switch over to direct Journal communication, thus being able to
10607 pass extended, structured metadata along with their log messages. As
10608 one example, this is now used by glib's logging primitives.
10609
10610 * When using systemd's default tmp.mount unit for /tmp, the mount point
10611 will now be established with the "nosuid" and "nodev" options. This
10612 avoids privilege escalation attacks that put traps and exploits into
10613 /tmp. However, this might cause problems if you e.g. put container
10614 images or overlays into /tmp; if you need this, override tmp.mount's
10615 "Options=" with a drop-in, or mount /tmp from /etc/fstab with your
10616 desired options.
10617
10618 * systemd now supports the "memory" cgroup controller also on
10619 cgroup v2.
10620
10621 * The systemd-cgtop tool now optionally takes a control group path as
10622 command line argument. If specified, the control group list shown is
10623 limited to subgroups of that group.
10624
10625 * The SystemCallFilter= unit file setting gained support for
10626 pre-defined, named system call filter sets. For example
10627 SystemCallFilter=@clock is now an effective way to make all clock
10628 changing-related system calls unavailable to a service. A number of
10629 similar pre-defined groups are defined. Writing system call filters
10630 for system services is simplified substantially with this new
10631 concept. Accordingly, all of systemd's own, long-running services now
10632 enable system call filtering based on this, by default.
10633
10634 * A new service setting MemoryDenyWriteExecute= has been added, taking
10635 a boolean value. If turned on, a service may no longer create memory
10636 mappings that are writable and executable at the same time. This
10637 enhances security for services where this is enabled as it becomes
10638 harder to dynamically write and then execute memory in exploited
10639 service processes. This option has been enabled for all of systemd's
10640 own long-running services.
10641
10642 * A new RestrictRealtime= service setting has been added, taking a
10643 boolean argument. If set the service's processes may no longer
10644 acquire realtime scheduling. This improves security as realtime
10645 scheduling may otherwise be used to easily freeze the system.
10646
10647 * systemd-nspawn gained a new switch --notify-ready= taking a boolean
10648 value. This may be used for requesting that the system manager inside
10649 of the container reports start-up completion to nspawn which then
10650 propagates this notification further to the service manager
10651 supervising nspawn itself. A related option NotifyReady= in .nspawn
10652 files has been added too. This functionality allows ordering of the
10653 start-up of multiple containers using the usual systemd ordering
10654 primitives.
10655
10656 * machinectl gained a new command "stop" that is an alias for
10657 "terminate".
10658
10659 * systemd-resolved gained support for contacting DNS servers on
10660 link-local IPv6 addresses.
10661
10662 * If systemd-resolved receives the SIGUSR2 signal it will now flush all
10663 its caches. A method call for requesting the same operation has been
10664 added to the bus API too, and is made available via "systemd-resolve
10665 --flush-caches".
10666
10667 * systemd-resolve gained a new --status switch. If passed a brief
10668 summary of the used DNS configuration with per-interface information
10669 is shown.
10670
10671 * resolved.conf gained a new Cache= boolean option, defaulting to
10672 on. If turned off local DNS caching is disabled. This comes with a
10673 performance penalty in particular when DNSSEC is enabled. Note that
10674 resolved disables its internal caching implicitly anyway, when the
10675 configured DNS server is on a host-local IP address such as ::1 or
10676 127.0.0.1, thus automatically avoiding double local caching.
10677
10678 * systemd-resolved now listens on the local IP address 127.0.0.53:53
10679 for DNS requests. This improves compatibility with local programs
10680 that do not use the libc NSS or systemd-resolved's bus APIs for name
10681 resolution. This minimal DNS service is only available to local
10682 programs and does not implement the full DNS protocol, but enough to
10683 cover local DNS clients. A new, static resolv.conf file, listing just
10684 this DNS server is now shipped in /usr/lib/systemd/resolv.conf. It is
10685 now recommended to make /etc/resolv.conf a symlink to this file in
10686 order to route all DNS lookups to systemd-resolved, regardless if
10687 done via NSS, the bus API or raw DNS packets. Note that this local
10688 DNS service is not as fully featured as the libc NSS or
10689 systemd-resolved's bus APIs. For example, as unicast DNS cannot be
10690 used to deliver link-local address information (as this implies
10691 sending a local interface index along), LLMNR/mDNS support via this
10692 interface is severely restricted. It is thus strongly recommended for
10693 all applications to use the libc NSS API or native systemd-resolved
10694 bus API instead.
10695
10696 * systemd-networkd's bridge support learned a new setting
10697 VLANFiltering= for controlling VLAN filtering. Moreover a new section
10698 in .network files has been added for configuring VLAN bridging in
10699 more detail: VLAN=, EgressUntagged=, PVID= in [BridgeVLAN].
10700
10701 * systemd-networkd's IPv6 Router Advertisement code now makes use of
10702 the DNSSL and RDNSS options. This means IPv6 DNS configuration may
10703 now be acquired without relying on DHCPv6. Two new options
10704 UseDomains= and UseDNS= have been added to configure this behaviour.
10705
10706 * systemd-networkd's IPv6AcceptRouterAdvertisements= option has been
10707 renamed IPv6AcceptRA=, without altering its behaviour. The old
10708 setting name remains available for compatibility reasons.
10709
10710 * The systemd-networkd VTI/VTI6 tunneling support gained new options
10711 Key=, InputKey= and OutputKey=.
10712
10713 * systemd-networkd gained support for VRF ("Virtual Routing Function")
10714 interface configuration.
10715
10716 * "systemctl edit" may now be used to create new unit files by
10717 specifying the --force switch.
10718
10719 * sd-event gained a new function sd_event_get_iteration() for
10720 requesting the current iteration counter of the event loop. It starts
10721 at zero and is increased by one with each event loop iteration.
10722
10723 * A new rpm macro %systemd_ordering is provided by the macros.systemd
10724 file. It can be used in lieu of %systemd_requires in packages which
10725 don't use any systemd functionality and are intended to be installed
10726 in minimal containers without systemd present. This macro provides
10727 ordering dependencies to ensure that if the package is installed in
10728 the same rpm transaction as systemd, systemd will be installed before
10729 the scriptlets for the package are executed, allowing unit presets
10730 to be handled.
10731
10732 New macros %_systemdgeneratordir and %_systemdusergeneratordir have
10733 been added to simplify packaging of generators.
10734
10735 * The os-release file gained VERSION_CODENAME field for the
10736 distribution nickname (e.g. VERSION_CODENAME=woody).
10737
10738 * New udev property UDEV_DISABLE_PERSISTENT_STORAGE_RULES_FLAG=1
10739 can be set to disable parsing of metadata and the creation
10740 of persistent symlinks for that device.
10741
10742 * The v230 change to tag framebuffer devices (/dev/fb*) with "uaccess"
10743 to make them available to logged-in users has been reverted.
10744
10745 * Much of the common code of the various systemd components is now
10746 built into an internal shared library libsystemd-shared-231.so
10747 (incorporating the systemd version number in the name, to be updated
10748 with future releases) that the components link to. This should
10749 decrease systemd footprint both in memory during runtime and on
10750 disk. Note that the shared library is not for public use, and is
10751 neither API nor ABI stable, but is likely to change with every new
10752 released update. Packagers need to make sure that binaries
10753 linking to libsystemd-shared.so are updated in step with the
10754 library.
10755
10756 * Configuration for "mkosi" is now part of the systemd
10757 repository. mkosi is a tool to easily build legacy-free OS images,
10758 and is available on github: https://github.com/systemd/mkosi. If
10759 "mkosi" is invoked in the build tree a new raw OS image is generated
10760 incorporating the systemd sources currently being worked on and a
10761 clean, fresh distribution installation. The generated OS image may be
10762 booted up with "systemd-nspawn -b -i", qemu-kvm or on any physical
10763 UEFI PC. This functionality is particularly useful to easily test
10764 local changes made to systemd in a pristine, defined environment. See
10765 doc/HACKING for details.
10766
10767 * configure learned the --with-support-url= option to specify the
10768 distribution's bugtracker.
10769
10770 Contributions from: Alban Crequy, Alessandro Puccetti, Alessio Igor
10771 Bogani, Alexander Kuleshov, Alexander Kurtz, Alex Gaynor, Andika
10772 Triwidada, Andreas Pokorny, Andreas Rammhold, Andrew Jeddeloh, Ansgar
10773 Burchardt, Atrotors, Benjamin Drung, Brian Boylston, Christian Hesse,
10774 Christian Rebischke, Daniele Medri, Daniel Mack, Dave Reisner, David
10775 Herrmann, David Michael, Djalal Harouni, Douglas Christman, Elias
10776 Probst, Evgeny Vereshchagin, Federico Mena Quintero, Felipe Sateler,
10777 Franck Bui, Harald Hoyer, Ian Lee, Ivan Shapovalov, Jakub Wilk, Jan
10778 Janssen, Jean-Sébastien Bour, John Paul Adrian Glaubitz, Jouke
10779 Witteveen, Kai Ruhnau, kpengboy, Kyle Walker, Lénaïc Huard, Lennart
10780 Poettering, Luca Bruno, Lukas Lösche, Lukáš Nykrýn, mahkoh, Marcel
10781 Holtmann, Martin Pitt, Marty Plummer, Matthieu Codron, Max Prokhorov,
10782 Michael Biebl, Michael Karcher, Michael Olbrich, Michał Bartoszkiewicz,
10783 Michal Sekletar, Michal Soltys, Minkyung, Muhammet Kara, mulkieran,
10784 Otto Wallenius, Pablo Lezaeta Reyes, Peter Hutterer, Ronny Chevalier,
10785 Rusty Bird, Stef Walter, Susant Sahani, Tejun Heo, Thomas Blume, Thomas
10786 Haller, Thomas H. P. Andersen, Tobias Jungel, Tom Gundersen, Tom Yan,
10787 Topi Miettinen, Torstein Husebø, Valentin Vidić, Viktar Vaŭčkievič,
10788 WaLyong Cho, Weng Xuetian, Werner Fink, Zbigniew Jędrzejewski-Szmek
10789
10790 — Berlin, 2016-07-25
10791
10792 CHANGES WITH 230:
10793
10794 * DNSSEC is now turned on by default in systemd-resolved (in
10795 "allow-downgrade" mode), but may be turned off during compile time by
10796 passing "--with-default-dnssec=no" to "configure" (and of course,
10797 during runtime with DNSSEC= in resolved.conf). We recommend
10798 downstreams to leave this on at least during development cycles and
10799 report any issues with the DNSSEC logic upstream. We are very
10800 interested in collecting feedback about the DNSSEC validator and its
10801 limitations in the wild. Note however, that DNSSEC support is
10802 probably nothing downstreams should turn on in stable distros just
10803 yet, as it might create incompatibilities with a few DNS servers and
10804 networks. We tried hard to make sure we downgrade to non-DNSSEC mode
10805 automatically whenever we detect such incompatible setups, but there
10806 might be systems we do not cover yet. Hence: please help us testing
10807 the DNSSEC code, leave this on where you can, report back, but then
10808 again don't consider turning this on in your stable, LTS or
10809 production release just yet. (Note that you have to enable
10810 nss-resolve in /etc/nsswitch.conf, to actually use systemd-resolved
10811 and its DNSSEC mode for hostname resolution from local
10812 applications.)
10813
10814 * systemd-resolve conveniently resolves DANE records with the --tlsa
10815 option and OPENPGPKEY records with the --openpgp option. It also
10816 supports dumping raw DNS record data via the new --raw= switch.
10817
10818 * systemd-logind will now by default terminate user processes that are
10819 part of the user session scope unit (session-XX.scope) when the user
10820 logs out. This behavior is controlled by the KillUserProcesses=
10821 setting in logind.conf, and the previous default of "no" is now
10822 changed to "yes". This means that user sessions will be properly
10823 cleaned up after, but additional steps are necessary to allow
10824 intentionally long-running processes to survive logout.
10825
10826 While the user is logged in at least once, user@.service is running,
10827 and any service that should survive the end of any individual login
10828 session can be started at a user service or scope using systemd-run.
10829 systemd-run(1) man page has been extended with an example which shows
10830 how to run screen in a scope unit underneath user@.service. The same
10831 command works for tmux.
10832
10833 After the user logs out of all sessions, user@.service will be
10834 terminated too, by default, unless the user has "lingering" enabled.
10835 To effectively allow users to run long-term tasks even if they are
10836 logged out, lingering must be enabled for them. See loginctl(1) for
10837 details. The default polkit policy was modified to allow users to
10838 set lingering for themselves without authentication.
10839
10840 Previous defaults can be restored at compile time by the
10841 --without-kill-user-processes option to "configure".
10842
10843 * systemd-logind gained new configuration settings SessionsMax= and
10844 InhibitorsMax=, both with a default of 8192. It will not register new
10845 user sessions or inhibitors above this limit.
10846
10847 * systemd-logind will now reload configuration on SIGHUP.
10848
10849 * The unified cgroup hierarchy added in Linux 4.5 is now supported.
10850 Use systemd.unified_cgroup_hierarchy=1 on the kernel command line to
10851 enable. Also, support for the "io" cgroup controller in the unified
10852 hierarchy has been added, so that the "memory", "pids" and "io" are
10853 now the controllers that are supported on the unified hierarchy.
10854
10855 WARNING: it is not possible to use previous systemd versions with
10856 systemd.unified_cgroup_hierarchy=1 and the new kernel. Therefore it
10857 is necessary to also update systemd in the initramfs if using the
10858 unified hierarchy. An updated SELinux policy is also required.
10859
10860 * LLDP support has been extended, and both passive (receive-only) and
10861 active (sender) modes are supported. Passive mode ("routers-only") is
10862 enabled by default in systemd-networkd. Active LLDP mode is enabled
10863 by default for containers on the internal network. The "networkctl
10864 lldp" command may be used to list information gathered. "networkctl
10865 status" will also show basic LLDP information on connected peers now.
10866
10867 * The IAID and DUID unique identifier sent in DHCP requests may now be
10868 configured for the system and each .network file managed by
10869 systemd-networkd using the DUIDType=, DUIDRawData=, IAID= options.
10870
10871 * systemd-networkd gained support for configuring proxy ARP support for
10872 each interface, via the ProxyArp= setting in .network files. It also
10873 gained support for configuring the multicast querier feature of
10874 bridge devices, via the new MulticastQuerier= setting in .netdev
10875 files. Similarly, snooping on the IGMP traffic can be controlled
10876 via the new setting MulticastSnooping=.
10877
10878 A new setting PreferredLifetime= has been added for addresses
10879 configured in .network file to configure the lifetime intended for an
10880 address.
10881
10882 The systemd-networkd DHCP server gained the option EmitRouter=, which
10883 defaults to yes, to configure whether the DHCP Option 3 (Router)
10884 should be emitted.
10885
10886 * The testing tool /usr/lib/systemd/systemd-activate is renamed to
10887 systemd-socket-activate and installed into /usr/bin. It is now fully
10888 supported.
10889
10890 * systemd-journald now uses separate threads to flush changes to disk
10891 when closing journal files, thus reducing impact of slow disk I/O on
10892 logging performance.
10893
10894 * The sd-journal API gained two new calls
10895 sd_journal_open_directory_fd() and sd_journal_open_files_fd() which
10896 can be used to open journal files using file descriptors instead of
10897 file or directory paths. sd_journal_open_container() has been
10898 deprecated, sd_journal_open_directory_fd() should be used instead
10899 with the flag SD_JOURNAL_OS_ROOT.
10900
10901 * journalctl learned a new output mode "-o short-unix" that outputs log
10902 lines prefixed by their UNIX time (i.e. seconds since Jan 1st, 1970
10903 UTC). It also gained support for a new --no-hostname setting to
10904 suppress the hostname column in the family of "short" output modes.
10905
10906 * systemd-ask-password now optionally skips printing of the password to
10907 stdout with --no-output which can be useful in scripts.
10908
10909 * Framebuffer devices (/dev/fb*) and 3D printers and scanners
10910 (devices tagged with ID_MAKER_TOOL) are now tagged with
10911 "uaccess" and are available to logged in users.
10912
10913 * The DeviceAllow= unit setting now supports specifiers (with "%").
10914
10915 * "systemctl show" gained a new --value switch, which allows print a
10916 only the contents of a specific unit property, without also printing
10917 the property's name. Similar support was added to "show*" verbs
10918 of loginctl and machinectl that output "key=value" lists.
10919
10920 * A new unit type "generated" was added for files dynamically generated
10921 by generator tools. Similarly, a new unit type "transient" is used
10922 for unit files created using the runtime API. "systemctl enable" will
10923 refuse to operate on such files.
10924
10925 * A new command "systemctl revert" has been added that may be used to
10926 revert to the vendor version of a unit file, in case local changes
10927 have been made by adding drop-ins or overriding the unit file.
10928
10929 * "machinectl clean" gained a new verb to automatically remove all or
10930 just hidden container images.
10931
10932 * systemd-tmpfiles gained support for a new line type "e" for emptying
10933 directories, if they exist, without creating them if they don't.
10934
10935 * systemd-nspawn gained support for automatically patching the UID/GIDs
10936 of the owners and the ACLs of all files and directories in a
10937 container tree to match the UID/GID user namespacing range selected
10938 for the container invocation. This mode is enabled via the new
10939 --private-users-chown switch. It also gained support for
10940 automatically choosing a free, previously unused UID/GID range when
10941 starting a container, via the new --private-users=pick setting (which
10942 implies --private-users-chown). Together, these options for the first
10943 time make user namespacing for nspawn containers fully automatic and
10944 thus deployable. The systemd-nspawn@.service template unit file has
10945 been changed to use this functionality by default.
10946
10947 * systemd-nspawn gained a new --network-zone= switch, that allows
10948 creating ad-hoc virtual Ethernet links between multiple containers,
10949 that only exist as long as at least one container referencing them is
10950 running. This allows easy connecting of multiple containers with a
10951 common link that implements an Ethernet broadcast domain. Each of
10952 these network "zones" may be named relatively freely by the user, and
10953 may be referenced by any number of containers, but each container may
10954 only reference one of these "zones". On the lower level, this is
10955 implemented by an automatically managed bridge network interface for
10956 each zone, that is created when the first container referencing its
10957 zone is created and removed when the last one referencing its zone
10958 terminates.
10959
10960 * The default start timeout may now be configured on the kernel command
10961 line via systemd.default_timeout_start_sec=. It was already
10962 configurable via the DefaultTimeoutStartSec= option in
10963 /etc/systemd/system.conf.
10964
10965 * Socket units gained a new TriggerLimitIntervalSec= and
10966 TriggerLimitBurst= setting to configure a limit on the activation
10967 rate of the socket unit.
10968
10969 * The LimitNICE= setting now optionally takes normal UNIX nice values
10970 in addition to the raw integer limit value. If the specified
10971 parameter is prefixed with "+" or "-" and is in the range -20…19 the
10972 value is understood as UNIX nice value. If not prefixed like this it
10973 is understood as raw RLIMIT_NICE limit.
10974
10975 * Note that the effect of the PrivateDevices= unit file setting changed
10976 slightly with this release: the per-device /dev file system will be
10977 mounted read-only from this version on, and will have "noexec"
10978 set. This (minor) change of behavior might cause some (exceptional)
10979 legacy software to break, when PrivateDevices=yes is set for its
10980 service. Please leave PrivateDevices= off if you run into problems
10981 with this.
10982
10983 * systemd-bootchart has been split out to a separate repository:
10984 https://github.com/systemd/systemd-bootchart
10985
10986 * systemd-bus-proxyd has been removed, as kdbus is unlikely to still be
10987 merged into the kernel in its current form.
10988
10989 * The compatibility libraries libsystemd-daemon.so,
10990 libsystemd-journal.so, libsystemd-id128.so, and libsystemd-login.so
10991 which have been deprecated since systemd-209 have been removed along
10992 with the corresponding pkg-config files. All symbols provided by
10993 those libraries are provided by libsystemd.so.
10994
10995 * The Capabilities= unit file setting has been removed (it is ignored
10996 for backwards compatibility). AmbientCapabilities= and
10997 CapabilityBoundingSet= should be used instead.
10998
10999 * A new special target has been added, initrd-root-device.target,
11000 which creates a synchronization point for dependencies of the root
11001 device in early userspace. Initramfs builders must ensure that this
11002 target is now included in early userspace.
11003
11004 Contributions from: Alban Crequy, Alexander Kuleshov, Alexander Shopov,
11005 Alex Crawford, Andre Klärner, Andrew Eikum, Beniamino Galvani, Benjamin
11006 Robin, Biao Lu, Bjørnar Ness, Calvin Owens, Christian Hesse, Clemens
11007 Gruber, Colin Guthrie, Daniel Drake, Daniele Medri, Daniel J Walsh,
11008 Daniel Mack, Dan Nicholson, daurnimator, David Herrmann, David
11009 R. Hedges, Elias Probst, Emmanuel Gil Peyrot, EMOziko, Evgeny
11010 Vereshchagin, Federico, Felipe Sateler, Filipe Brandenburger, Franck
11011 Bui, frankheckenbach, gdamjan, Georgia Brikis, Harald Hoyer, Hendrik
11012 Brueckner, Hristo Venev, Iago López Galeiras, Ian Kelling, Ismo
11013 Puustinen, Jakub Wilk, Jaroslav Škarvada, Jeff Huang, Joel Holdsworth,
11014 John Paul Adrian Glaubitz, Jonathan Boulle, kayrus, Klearchos
11015 Chaloulos, Kyle Russell, Lars Uebernickel, Lennart Poettering, Lubomir
11016 Rintel, Lukáš Nykrýn, Mantas Mikulėnas, Marcel Holtmann, Martin Pitt,
11017 Michael Biebl, michaelolbrich, Michał Bartoszkiewicz, Michal Koutný,
11018 Michal Sekletar, Mike Frysinger, Mike Gilbert, Mingcong Bai, Ming Lin,
11019 mulkieran, muzena, Nalin Dahyabhai, Naohiro Aota, Nathan McSween,
11020 Nicolas Braud-Santoni, Patrik Flykt, Peter Hutterer, Peter Mattern,
11021 Petr Lautrbach, Petros Angelatos, Piotr Drąg, Rabin Vincent, Robert
11022 Węcławski, Ronny Chevalier, Samuel Tardieu, Stefan Saraev, Stefan
11023 Schallenberg aka nafets227, Steven Siloti, Susant Sahani, Sylvain
11024 Plantefève, Taylor Smock, Tejun Heo, Thomas Blume, Thomas Haller,
11025 Thomas H. P. Andersen, Tobias Klauser, Tom Gundersen, topimiettinen,
11026 Torstein Husebø, Umut Tezduyar Lindskog, Uwe Kleine-König, Victor Toso,
11027 Vinay Kulkarni, Vito Caputo, Vittorio G (VittGam), Vladimir Panteleev,
11028 Wieland Hoffmann, Wouter Verhelst, Yu Watanabe, Zbigniew
11029 Jędrzejewski-Szmek
11030
11031 — Fairfax, 2016-05-21
11032
11033 CHANGES WITH 229:
11034
11035 * The systemd-resolved DNS resolver service has gained a substantial
11036 set of new features, most prominently it may now act as a DNSSEC
11037 validating stub resolver. DNSSEC mode is currently turned off by
11038 default, but is expected to be turned on by default in one of the
11039 next releases. For now, we invite everybody to test the DNSSEC logic
11040 by setting DNSSEC=allow-downgrade in /etc/systemd/resolved.conf. The
11041 service also gained a full set of D-Bus interfaces, including calls
11042 to configure DNS and DNSSEC settings per link (for use by external
11043 network management software). systemd-resolved and systemd-networkd
11044 now distinguish between "search" and "routing" domains. The former
11045 are used to qualify single-label names, the latter are used purely
11046 for routing lookups within certain domains to specific links.
11047 resolved now also synthesizes RRs for all entries from /etc/hosts.
11048
11049 * The systemd-resolve tool (which is a client utility for
11050 systemd-resolved) has been improved considerably and is now fully
11051 supported and documented. Hence it has moved from /usr/lib/systemd to
11052 /usr/bin.
11053
11054 * /dev/disk/by-path/ symlink support has been (re-)added for virtio
11055 devices.
11056
11057 * The coredump collection logic has been reworked: when a coredump is
11058 collected it is now written to disk, compressed and processed
11059 (including stacktrace extraction) from a new instantiated service
11060 systemd-coredump@.service, instead of directly from the
11061 /proc/sys/kernel/core_pattern hook we provide. This is beneficial as
11062 processing large coredumps can take up a substantial amount of
11063 resources and time, and this previously happened entirely outside of
11064 systemd's service supervision. With the new logic the core_pattern
11065 hook only does minimal metadata collection before passing off control
11066 to the new instantiated service, which is configured with a time
11067 limit, a nice level and other settings to minimize negative impact on
11068 the rest of the system. Also note that the new logic will honour the
11069 RLIMIT_CORE setting of the crashed process, which now allows users
11070 and processes to turn off coredumping for their processes by setting
11071 this limit.
11072
11073 * The RLIMIT_CORE resource limit now defaults to "unlimited" for PID 1
11074 and all forked processes by default. Previously, PID 1 would leave
11075 the setting at "0" for all processes, as set by the kernel. Note that
11076 the resource limit traditionally has no effect on the generated
11077 coredumps on the system if the /proc/sys/kernel/core_pattern hook
11078 logic is used. Since the limit is now honoured (see above) its
11079 default has been changed so that the coredumping logic is enabled by
11080 default for all processes, while allowing specific opt-out.
11081
11082 * When the stacktrace is extracted from processes of system users, this
11083 is now done as "systemd-coredump" user, in order to sandbox this
11084 potentially security sensitive parsing operation. (Note that when
11085 processing coredumps of normal users this is done under the user ID
11086 of process that crashed, as before.) Packagers should take notice
11087 that it is now necessary to create the "systemd-coredump" system user
11088 and group at package installation time.
11089
11090 * The systemd-activate socket activation testing tool gained support
11091 for SOCK_DGRAM and SOCK_SEQPACKET sockets using the new --datagram
11092 and --seqpacket switches. It also has been extended to support both
11093 new-style and inetd-style file descriptor passing. Use the new
11094 --inetd switch to request inetd-style file descriptor passing.
11095
11096 * Most systemd tools now honor a new $SYSTEMD_COLORS environment
11097 variable, which takes a boolean value. If set to false, ANSI color
11098 output is disabled in the tools even when run on a terminal that
11099 supports it.
11100
11101 * The VXLAN support in networkd now supports two new settings
11102 DestinationPort= and PortRange=.
11103
11104 * A new systemd.machine_id= kernel command line switch has been added,
11105 that may be used to set the machine ID in /etc/machine-id if it is
11106 not initialized yet. This command line option has no effect if the
11107 file is already initialized.
11108
11109 * systemd-nspawn gained a new --as-pid2 switch that invokes any
11110 specified command line as PID 2 rather than PID 1 in the
11111 container. In this mode PID 1 is a minimal stub init process that
11112 implements the special POSIX and Linux semantics of PID 1 regarding
11113 signal and child process management. Note that this stub init process
11114 is implemented in nspawn itself and requires no support from the
11115 container image. This new logic is useful to support running
11116 arbitrary commands in the container, as normal processes are
11117 generally not prepared to run as PID 1.
11118
11119 * systemd-nspawn gained a new --chdir= switch for setting the current
11120 working directory for the process started in the container.
11121
11122 * "journalctl /dev/sda" will now output all kernel log messages for
11123 specified device from the current boot, in addition to all devices
11124 that are parents of it. This should make log output about devices
11125 pretty useful, as long as kernel drivers attach enough metadata to
11126 the log messages. (The usual SATA drivers do.)
11127
11128 * The sd-journal API gained two new calls
11129 sd_journal_has_runtime_files() and sd_journal_has_persistent_files()
11130 that report whether log data from /run or /var has been found.
11131
11132 * journalctl gained a new switch "--fields" that prints all journal
11133 record field names currently in use in the journal. This is backed
11134 by two new sd-journal API calls sd_journal_enumerate_fields() and
11135 sd_journal_restart_fields().
11136
11137 * Most configurable timeouts in systemd now expect an argument of
11138 "infinity" to turn them off, instead of "0" as before. The semantics
11139 from now on is that a timeout of "0" means "now", and "infinity"
11140 means "never". To maintain backwards compatibility, "0" continues to
11141 turn off previously existing timeout settings.
11142
11143 * "systemctl reload-or-try-restart" has been renamed to "systemctl
11144 try-reload-or-restart" to clarify what it actually does: the "try"
11145 logic applies to both reloading and restarting, not just restarting.
11146 The old name continues to be accepted for compatibility.
11147
11148 * On boot-up, when PID 1 detects that the system clock is behind the
11149 release date of the systemd version in use, the clock is now set
11150 to the latter. Previously, this was already done in timesyncd, in order
11151 to avoid running with clocks set to the various clock epochs such as
11152 1902, 1938 or 1970. With this change the logic is now done in PID 1
11153 in addition to timesyncd during early boot-up, so that it is enforced
11154 before the first process is spawned by systemd. Note that the logic
11155 in timesyncd remains, as it is more comprehensive and ensures
11156 clock monotonicity by maintaining a persistent timestamp file in
11157 /var. Since /var is generally not available in earliest boot or the
11158 initrd, this part of the logic remains in timesyncd, and is not done
11159 by PID 1.
11160
11161 * Support for tweaking details in net_cls.class_id through the
11162 NetClass= configuration directive has been removed, as the kernel
11163 people have decided to deprecate that controller in cgroup v2.
11164 Userspace tools such as nftables are moving over to setting rules
11165 that are specific to the full cgroup path of a task, which obsoletes
11166 these controllers anyway. The NetClass= directive is kept around for
11167 legacy compatibility reasons. For a more in-depth description of the
11168 kernel change, please refer to the respective upstream commit:
11169
11170 https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=bd1060a1d671
11171
11172 * A new service setting RuntimeMaxSec= has been added that may be used
11173 to specify a maximum runtime for a service. If the timeout is hit, the
11174 service is terminated and put into a failure state.
11175
11176 * A new service setting AmbientCapabilities= has been added. It allows
11177 configuration of additional Linux process capabilities that are
11178 passed to the activated processes. This is only available on very
11179 recent kernels.
11180
11181 * The process resource limit settings in service units may now be used
11182 to configure hard and soft limits individually.
11183
11184 * The various libsystemd APIs such as sd-bus or sd-event now publicly
11185 expose support for gcc's __attribute__((cleanup())) C extension.
11186 Specifically, for many object destructor functions alternative
11187 versions have been added that have names suffixed with "p" and take a
11188 pointer to a pointer to the object to destroy, instead of just a
11189 pointer to the object itself. This is useful because these destructor
11190 functions may be used directly as parameters to the cleanup
11191 construct. Internally, systemd has been a heavy user of this GCC
11192 extension for a long time, and with this change similar support is
11193 now available to consumers of the library outside of systemd. Note
11194 that by using this extension in your sources compatibility with old
11195 and strictly ANSI compatible C compilers is lost. However, all gcc or
11196 LLVM versions of recent years support this extension.
11197
11198 * Timer units gained support for a new setting RandomizedDelaySec= that
11199 allows configuring some additional randomized delay to the configured
11200 time. This is useful to spread out timer events to avoid load peaks in
11201 clusters or larger setups.
11202
11203 * Calendar time specifications now support sub-second accuracy.
11204
11205 * Socket units now support listening on SCTP and UDP-lite protocol
11206 sockets.
11207
11208 * The sd-event API now comes with a full set of man pages.
11209
11210 * Older versions of systemd contained experimental support for
11211 compressing journal files and coredumps with the LZ4 compressor that
11212 was not compatible with the lz4 binary (due to API limitations of the
11213 lz4 library). This support has been removed; only support for files
11214 compatible with the lz4 binary remains. This LZ4 logic is now
11215 officially supported and no longer considered experimental.
11216
11217 * The dkr image import logic has been removed again from importd. dkr's
11218 micro-services focus doesn't fit into the machine image focus of
11219 importd, and quickly got out of date with the upstream dkr API.
11220
11221 * Creation of the /run/lock/lockdev/ directory was dropped from
11222 tmpfiles.d/legacy.conf. Better locking mechanisms like flock() have
11223 been available for many years. If you still need this, you need to
11224 create your own tmpfiles.d config file with:
11225
11226 d /run/lock/lockdev 0775 root lock -
11227
11228 * The settings StartLimitBurst=, StartLimitInterval=, StartLimitAction=
11229 and RebootArgument= have been moved from the [Service] section of
11230 unit files to [Unit], and they are now supported on all unit types,
11231 not just service units. Of course, systemd will continue to
11232 understand these settings also at the old location, in order to
11233 maintain compatibility.
11234
11235 Contributions from: Abdo Roig-Maranges, Alban Crequy, Aleksander
11236 Adamowski, Alexander Kuleshov, Andreas Pokorny, Andrei Borzenkov,
11237 Andrew Wilcox, Arthur Clement, Beniamino Galvani, Casey Schaufler,
11238 Chris Atkinson, Chris Mayo, Christian Hesse, Damjan Georgievski, Dan
11239 Dedrick, Daniele Medri, Daniel J Walsh, Daniel Korostil, Daniel Mack,
11240 David Herrmann, Dimitri John Ledkov, Dominik Hannen, Douglas Christman,
11241 Evgeny Vereshchagin, Filipe Brandenburger, Franck Bui, Gabor Kelemen,
11242 Harald Hoyer, Hayden Walles, Helmut Grohne, Henrik Kaare Poulsen,
11243 Hristo Venev, Hui Wang, Indrajit Raychaudhuri, Ismo Puustinen, Jakub
11244 Wilk, Jan Alexander Steffens (heftig), Jan Engelhardt, Jan Synacek,
11245 Joost Bremmer, Jorgen Schaefer, Karel Zak, Klearchos Chaloulos,
11246 lc85446, Lennart Poettering, Lukas Nykryn, Mantas Mikulėnas, Marcel
11247 Holtmann, Martin Pitt, Michael Biebl, Michael Olbrich, Michael Scherer,
11248 Michał Górny, Michal Sekletar, Nicolas Cornu, Nicolas Iooss, Nils
11249 Carlson, nmartensen, nnz1024, Patrick Ohly, Peter Hutterer, Phillip Sz,
11250 Ronny Chevalier, Samu Kallio, Shawn Landden, Stef Walter, Susant
11251 Sahani, Sylvain Plantefève, Tadej Janež, Thomas Hindoe Paaboel
11252 Andersen, Tom Gundersen, Torstein Husebø, Umut Tezduyar Lindskog, Vito
11253 Caputo, WaLyong Cho, Yu Watanabe, Zbigniew Jędrzejewski-Szmek
11254
11255 — Berlin, 2016-02-11
11256
11257 CHANGES WITH 228:
11258
11259 * A number of properties previously only settable in unit
11260 files are now also available as properties to set when
11261 creating transient units programmatically via the bus, as it
11262 is exposed with systemd-run's --property=
11263 setting. Specifically, these are: SyslogIdentifier=,
11264 SyslogLevelPrefix=, TimerSlackNSec=, OOMScoreAdjust=,
11265 EnvironmentFile=, ReadWriteDirectories=,
11266 ReadOnlyDirectories=, InaccessibleDirectories=,
11267 ProtectSystem=, ProtectHome=, RuntimeDirectory=.
11268
11269 * When creating transient services via the bus API it is now
11270 possible to pass in a set of file descriptors to use as
11271 STDIN/STDOUT/STDERR for the invoked process.
11272
11273 * Slice units may now be created transiently via the bus APIs,
11274 similar to the way service and scope units may already be
11275 created transiently.
11276
11277 * Wherever systemd expects a calendar timestamp specification
11278 (like in journalctl's --since= and --until= switches) UTC
11279 timestamps are now supported. Timestamps suffixed with "UTC"
11280 are now considered to be in Universal Time Coordinated
11281 instead of the local timezone. Also, timestamps may now
11282 optionally be specified with sub-second accuracy. Both of
11283 these additions also apply to recurring calendar event
11284 specification, such as OnCalendar= in timer units.
11285
11286 * journalctl gained a new "--sync" switch that asks the
11287 journal daemon to write all so far unwritten log messages to
11288 disk and sync the files, before returning.
11289
11290 * systemd-tmpfiles learned two new line types "q" and "Q" that
11291 operate like "v", but also set up a basic btrfs quota
11292 hierarchy when used on a btrfs file system with quota
11293 enabled.
11294
11295 * tmpfiles' "v", "q" and "Q" will now create a plain directory
11296 instead of a subvolume (even on a btrfs file system) if the
11297 root directory is a plain directory, and not a
11298 subvolume. This should simplify things with certain chroot()
11299 environments which are not aware of the concept of btrfs
11300 subvolumes.
11301
11302 * systemd-detect-virt gained a new --chroot switch to detect
11303 whether execution takes place in a chroot() environment.
11304
11305 * CPUAffinity= now takes CPU index ranges in addition to
11306 individual indexes.
11307
11308 * The various memory-related resource limit settings (such as
11309 LimitAS=) now understand the usual K, M, G, … suffixes to
11310 the base of 1024 (IEC). Similar, the time-related resource
11311 limit settings understand the usual min, h, day, … suffixes
11312 now.
11313
11314 * There's a new system.conf setting DefaultTasksMax= to
11315 control the default TasksMax= setting for services and
11316 scopes running on the system. (TasksMax= is the primary
11317 setting that exposes the "pids" cgroup controller on systemd
11318 and was introduced in the previous systemd release.) The
11319 setting now defaults to 512, which means services that are
11320 not explicitly configured otherwise will only be able to
11321 create 512 processes or threads at maximum, from this
11322 version on. Note that this means that thread- or
11323 process-heavy services might need to be reconfigured to set
11324 TasksMax= to a higher value. It is sufficient to set
11325 TasksMax= in these specific unit files to a higher value, or
11326 even "infinity". Similar, there's now a logind.conf setting
11327 UserTasksMax= that defaults to 4096 and limits the total
11328 number of processes or tasks each user may own
11329 concurrently. nspawn containers also have the TasksMax=
11330 value set by default now, to 8192. Note that all of this
11331 only has an effect if the "pids" cgroup controller is
11332 enabled in the kernel. The general benefit of these changes
11333 should be a more robust and safer system, that provides a
11334 certain amount of per-service fork() bomb protection.
11335
11336 * systemd-nspawn gained the new --network-veth-extra= switch
11337 to define additional and arbitrarily-named virtual Ethernet
11338 links between the host and the container.
11339
11340 * A new service execution setting PassEnvironment= has been
11341 added that allows importing select environment variables
11342 from PID1's environment block into the environment block of
11343 the service.
11344
11345 * Timer units gained support for a new RemainAfterElapse=
11346 setting which takes a boolean argument. It defaults to on,
11347 exposing behaviour unchanged to previous releases. If set to
11348 off, timer units are unloaded after they elapsed if they
11349 cannot elapse again. This is particularly useful for
11350 transient timer units, which shall not stay around longer
11351 than until they first elapse.
11352
11353 * systemd will now bump the net.unix.max_dgram_qlen to 512 by
11354 default now (the kernel default is 16). This is beneficial
11355 for avoiding blocking on AF_UNIX/SOCK_DGRAM sockets since it
11356 allows substantially larger numbers of queued
11357 datagrams. This should increase the capability of systemd to
11358 parallelize boot-up, as logging and sd_notify() are unlikely
11359 to stall execution anymore. If you need to change the value
11360 from the new defaults, use the usual sysctl.d/ snippets.
11361
11362 * The compression framing format used by the journal or
11363 coredump processing has changed to be in line with what the
11364 official LZ4 tools generate. LZ4 compression support in
11365 systemd was considered unsupported previously, as the format
11366 was not compatible with the normal tools. With this release
11367 this has changed now, and it is hence safe for downstream
11368 distributions to turn it on. While not compressing as well
11369 as the XZ, LZ4 is substantially faster, which makes
11370 it a good default choice for the compression logic in the
11371 journal and in coredump handling.
11372
11373 * Any reference to /etc/mtab has been dropped from
11374 systemd. The file has been obsolete since a while, but
11375 systemd refused to work on systems where it was incorrectly
11376 set up (it should be a symlink or non-existent). Please make
11377 sure to update to util-linux 2.27.1 or newer in conjunction
11378 with this systemd release, which also drops any reference to
11379 /etc/mtab. If you maintain a distribution make sure that no
11380 software you package still references it, as this is a
11381 likely source of bugs. There's also a glibc bug pending,
11382 asking for removal of any reference to this obsolete file:
11383
11384 https://sourceware.org/bugzilla/show_bug.cgi?id=19108
11385
11386 Note that only util-linux versions built with
11387 --enable-libmount-force-mountinfo are supported.
11388
11389 * Support for the ".snapshot" unit type has been removed. This
11390 feature turned out to be little useful and little used, and
11391 has now been removed from the core and from systemctl.
11392
11393 * The dependency types RequiresOverridable= and
11394 RequisiteOverridable= have been removed from systemd. They
11395 have been used only very sparingly to our knowledge and
11396 other options that provide a similar effect (such as
11397 systemctl --mode=ignore-dependencies) are much more useful
11398 and commonly used. Moreover, they were only half-way
11399 implemented as the option to control behaviour regarding
11400 these dependencies was never added to systemctl. By removing
11401 these dependency types the execution engine becomes a bit
11402 simpler. Unit files that use these dependencies should be
11403 changed to use the non-Overridable dependency types
11404 instead. In fact, when parsing unit files with these
11405 options, that's what systemd will automatically convert them
11406 too, but it will also warn, asking users to fix the unit
11407 files accordingly. Removal of these dependency types should
11408 only affect a negligible number of unit files in the wild.
11409
11410 * Behaviour of networkd's IPForward= option changed
11411 (again). It will no longer maintain a per-interface setting,
11412 but propagate one way from interfaces where this is enabled
11413 to the global kernel setting. The global setting will be
11414 enabled when requested by a network that is set up, but
11415 never be disabled again. This change was made to make sure
11416 IPv4 and IPv6 behaviour regarding packet forwarding is
11417 similar (as the Linux IPv6 stack does not support
11418 per-interface control of this setting) and to minimize
11419 surprises.
11420
11421 * In unit files the behaviour of %u, %U, %h, %s has
11422 changed. These specifiers will now unconditionally resolve
11423 to the various user database fields of the user that the
11424 systemd instance is running as, instead of the user
11425 configured in the specific unit via User=. Note that this
11426 effectively doesn't change much, as resolving of these
11427 specifiers was already turned off in the --system instance
11428 of systemd, as we cannot do NSS lookups from PID 1. In the
11429 --user instance of systemd these specifiers where correctly
11430 resolved, but hardly made any sense, since the user instance
11431 lacks privileges to do user switches anyway, and User= is
11432 hence useless. Moreover, even in the --user instance of
11433 systemd behaviour was awkward as it would only take settings
11434 from User= assignment placed before the specifier into
11435 account. In order to unify and simplify the logic around
11436 this the specifiers will now always resolve to the
11437 credentials of the user invoking the manager (which in case
11438 of PID 1 is the root user).
11439
11440 Contributions from: Andrew Jones, Beniamino Galvani, Boyuan
11441 Yang, Daniel Machon, Daniel Mack, David Herrmann, David
11442 Reynolds, David Strauss, Dongsu Park, Evgeny Vereshchagin,
11443 Felipe Sateler, Filipe Brandenburger, Franck Bui, Hristo
11444 Venev, Iago López Galeiras, Jan Engelhardt, Jan Janssen, Jan
11445 Synacek, Jesus Ornelas Aguayo, Karel Zak, kayrus, Kay Sievers,
11446 Lennart Poettering, Liu Yuan Yuan, Mantas Mikulėnas, Marcel
11447 Holtmann, Marcin Bachry, Marcos Alano, Marcos Mello, Mark
11448 Theunissen, Martin Pitt, Michael Marineau, Michael Olbrich,
11449 Michal Schmidt, Michal Sekletar, Mirco Tischler, Nick Owens,
11450 Nicolas Cornu, Patrik Flykt, Peter Hutterer, reverendhomer,
11451 Ronny Chevalier, Sangjung Woo, Seong-ho Cho, Shawn Landden,
11452 Susant Sahani, Thomas Haller, Thomas Hindoe Paaboel Andersen,
11453 Tom Gundersen, Torstein Husebø, Vito Caputo, Zbigniew
11454 Jędrzejewski-Szmek
11455
11456 — Berlin, 2015-11-18
11457
11458 CHANGES WITH 227:
11459
11460 * systemd now depends on util-linux v2.27. More specifically,
11461 the newly added mount monitor feature in libmount now
11462 replaces systemd's former own implementation.
11463
11464 * libmount mandates /etc/mtab not to be regular file, and
11465 systemd now enforces this condition at early boot.
11466 /etc/mtab has been deprecated and warned about for a very
11467 long time, so systems running systemd should already have
11468 stopped having this file around as anything else than a
11469 symlink to /proc/self/mounts.
11470
11471 * Support for the "pids" cgroup controller has been added. It
11472 allows accounting the number of tasks in a cgroup and
11473 enforcing limits on it. This adds two new setting
11474 TasksAccounting= and TasksMax= to each unit, as well as a
11475 global option DefaultTasksAccounting=.
11476
11477 * Support for the "net_cls" cgroup controller has been added.
11478 It allows assigning a net class ID to each task in the
11479 cgroup, which can then be used in firewall rules and traffic
11480 shaping configurations. Note that the kernel netfilter net
11481 class code does not currently work reliably for ingress
11482 packets on unestablished sockets.
11483
11484 This adds a new config directive called NetClass= to CGroup
11485 enabled units. Allowed values are positive numbers for fixed
11486 assignments and "auto" for picking a free value
11487 automatically.
11488
11489 * 'systemctl is-system-running' now returns 'offline' if the
11490 system is not booted with systemd. This command can now be
11491 used as a substitute for 'systemd-notify --booted'.
11492
11493 * Watchdog timeouts have been increased to 3 minutes for all
11494 in-tree service files. Apparently, disk IO issues are more
11495 frequent than we hoped, and user reported >1 minute waiting
11496 for disk IO.
11497
11498 * 'machine-id-commit' functionality has been merged into
11499 'machine-id-setup --commit'. The separate binary has been
11500 removed.
11501
11502 * The WorkingDirectory= directive in unit files may now be set
11503 to the special value '~'. In this case, the working
11504 directory is set to the home directory of the user
11505 configured in User=.
11506
11507 * "machinectl shell" will now open the shell in the home
11508 directory of the selected user by default.
11509
11510 * The CrashChVT= configuration file setting is renamed to
11511 CrashChangeVT=, following our usual logic of not
11512 abbreviating unnecessarily. The old directive is still
11513 supported for compat reasons. Also, this directive now takes
11514 an integer value between 1 and 63, or a boolean value. The
11515 formerly supported '-1' value for disabling stays around for
11516 compat reasons.
11517
11518 * The PrivateTmp=, PrivateDevices=, PrivateNetwork=,
11519 NoNewPrivileges=, TTYPath=, WorkingDirectory= and
11520 RootDirectory= properties can now be set for transient
11521 units.
11522
11523 * The systemd-analyze tool gained a new "set-log-target" verb
11524 to change the logging target the system manager logs to
11525 dynamically during runtime. This is similar to how
11526 "systemd-analyze set-log-level" already changes the log
11527 level.
11528
11529 * In nspawn /sys is now mounted as tmpfs, with only a selected
11530 set of subdirectories mounted in from the real sysfs. This
11531 enhances security slightly, and is useful for ensuring user
11532 namespaces work correctly.
11533
11534 * Support for USB FunctionFS activation has been added. This
11535 allows implementation of USB gadget services that are
11536 activated as soon as they are requested, so that they don't
11537 have to run continuously, similar to classic socket
11538 activation.
11539
11540 * The "systemctl exit" command now optionally takes an
11541 additional parameter that sets the exit code to return from
11542 the systemd manager when exiting. This is only relevant when
11543 running the systemd user instance, or when running the
11544 system instance in a container.
11545
11546 * sd-bus gained the new API calls sd_bus_path_encode_many()
11547 and sd_bus_path_decode_many() that allow easy encoding and
11548 decoding of multiple identifier strings inside a D-Bus
11549 object path. Another new call sd_bus_default_flush_close()
11550 has been added to flush and close per-thread default
11551 connections.
11552
11553 * systemd-cgtop gained support for a -M/--machine= switch to
11554 show the control groups within a certain container only.
11555
11556 * "systemctl kill" gained support for an optional --fail
11557 switch. If specified the requested operation will fail of no
11558 processes have been killed, because the unit had no
11559 processes attached, or similar.
11560
11561 * A new systemd.crash_reboot=1 kernel command line option has
11562 been added that triggers a reboot after crashing. This can
11563 also be set through CrashReboot= in systemd.conf.
11564
11565 * The RuntimeDirectory= setting now understands unit
11566 specifiers like %i or %f.
11567
11568 * A new (still internal) library API sd-ipv4acd has been added,
11569 that implements address conflict detection for IPv4. It's
11570 based on code from sd-ipv4ll, and will be useful for
11571 detecting DHCP address conflicts.
11572
11573 * File descriptors passed during socket activation may now be
11574 named. A new API sd_listen_fds_with_names() is added to
11575 access the names. The default names may be overridden,
11576 either in the .socket file using the FileDescriptorName=
11577 parameter, or by passing FDNAME= when storing the file
11578 descriptors using sd_notify().
11579
11580 * systemd-networkd gained support for:
11581
11582 - Setting the IPv6 Router Advertisement settings via
11583 IPv6AcceptRouterAdvertisements= in .network files.
11584
11585 - Configuring the HelloTimeSec=, MaxAgeSec= and
11586 ForwardDelaySec= bridge parameters in .netdev files.
11587
11588 - Configuring PreferredSource= for static routes in
11589 .network files.
11590
11591 * The "ask-password" framework used to query for LUKS harddisk
11592 passwords or SSL passwords during boot gained support for
11593 caching passwords in the kernel keyring, if it is
11594 available. This makes sure that the user only has to type in
11595 a passphrase once if there are multiple objects to unlock
11596 with the same one. Previously, such password caching was
11597 available only when Plymouth was used; this moves the
11598 caching logic into the systemd codebase itself. The
11599 "systemd-ask-password" utility gained a new --keyname=
11600 switch to control which kernel keyring key to use for
11601 caching a password in. This functionality is also useful for
11602 enabling display managers such as gdm to automatically
11603 unlock the user's GNOME keyring if its passphrase, the
11604 user's password and the harddisk password are the same, if
11605 gdm-autologin is used.
11606
11607 * When downloading tar or raw images using "machinectl
11608 pull-tar" or "machinectl pull-raw", a matching ".nspawn"
11609 file is now also downloaded, if it is available and stored
11610 next to the image file.
11611
11612 * Units of type ".socket" gained a new boolean setting
11613 Writable= which is only useful in conjunction with
11614 ListenSpecial=. If true, enables opening the specified
11615 special file in O_RDWR mode rather than O_RDONLY mode.
11616
11617 * systemd-rfkill has been reworked to become a singleton
11618 service that is activated through /dev/rfkill on each rfkill
11619 state change and saves the settings to disk. This way,
11620 systemd-rfkill is now compatible with devices that exist
11621 only intermittendly, and even restores state if the previous
11622 system shutdown was abrupt rather than clean.
11623
11624 * The journal daemon gained support for vacuuming old journal
11625 files controlled by the number of files that shall remain,
11626 in addition to the already existing control by size and by
11627 date. This is useful as journal interleaving performance
11628 degrades with too many separate journal files, and allows
11629 putting an effective limit on them. The new setting defaults
11630 to 100, but this may be changed by setting SystemMaxFiles=
11631 and RuntimeMaxFiles= in journald.conf. Also, the
11632 "journalctl" tool gained the new --vacuum-files= switch to
11633 manually vacuum journal files to leave only the specified
11634 number of files in place.
11635
11636 * udev will now create /dev/disk/by-path links for ATA devices
11637 on kernels where that is supported.
11638
11639 * Galician, Serbian, Turkish and Korean translations were added.
11640
11641 Contributions from: Aaro Koskinen, Alban Crequy, Beniamino
11642 Galvani, Benjamin Robin, Branislav Blaskovic, Chen-Han Hsiao
11643 (Stanley), Daniel Buch, Daniel Machon, Daniel Mack, David
11644 Herrmann, David Milburn, doubleodoug, Evgeny Vereshchagin,
11645 Felipe Franciosi, Filipe Brandenburger, Fran Dieguez, Gabriel
11646 de Perthuis, Georg Müller, Hans de Goede, Hendrik Brueckner,
11647 Ivan Shapovalov, Jacob Keller, Jan Engelhardt, Jan Janssen,
11648 Jan Synacek, Jens Kuske, Karel Zak, Kay Sievers, Krzesimir
11649 Nowak, Krzysztof Kotlenga, Lars Uebernickel, Lennart
11650 Poettering, Lukas Nykryn, Łukasz Stelmach, Maciej Wereski,
11651 Marcel Holtmann, Marius Thesing, Martin Pitt, Michael Biebl,
11652 Michael Gebetsroither, Michal Schmidt, Michal Sekletar, Mike
11653 Gilbert, Muhammet Kara, nazgul77, Nicolas Cornu, NoXPhasma,
11654 Olof Johansson, Patrik Flykt, Pawel Szewczyk, reverendhomer,
11655 Ronny Chevalier, Sangjung Woo, Seong-ho Cho, Susant Sahani,
11656 Sylvain Plantefève, Thomas Haller, Thomas Hindoe Paaboel
11657 Andersen, Tom Gundersen, Tom Lyon, Viktar Vauchkevich,
11658 Zbigniew Jędrzejewski-Szmek, Марко М. Костић
11659
11660 — Berlin, 2015-10-07
11661
11662 CHANGES WITH 226:
11663
11664 * The DHCP implementation of systemd-networkd gained a set of
11665 new features:
11666
11667 - The DHCP server now supports emitting DNS and NTP
11668 information. It may be enabled and configured via
11669 EmitDNS=, DNS=, EmitNTP=, and NTP=. If transmission of DNS
11670 and NTP information is enabled, but no servers are
11671 configured, the corresponding uplink information (if there
11672 is any) is propagated.
11673
11674 - Server and client now support transmission and reception
11675 of timezone information. It can be configured via the
11676 newly introduced network options UseTimezone=,
11677 EmitTimezone=, and Timezone=. Transmission of timezone
11678 information is enabled between host and containers by
11679 default now: the container will change its local timezone
11680 to what the host has set.
11681
11682 - Lease timeouts can now be configured via
11683 MaxLeaseTimeSec= and DefaultLeaseTimeSec=.
11684
11685 - The DHCP server improved on the stability of
11686 leases. Clients are more likely to get the same lease
11687 information back, even if the server loses state.
11688
11689 - The DHCP server supports two new configuration options to
11690 control the lease address pool metrics, PoolOffset= and
11691 PoolSize=.
11692
11693 * The encapsulation limit of tunnels in systemd-networkd may
11694 now be configured via 'EncapsulationLimit='. It allows
11695 modifying the maximum additional levels of encapsulation
11696 that are permitted to be prepended to a packet.
11697
11698 * systemd now supports the concept of user buses replacing
11699 session buses, if used with dbus-1.10 (and enabled via dbus
11700 --enable-user-session). It previously only supported this on
11701 kdbus-enabled systems, and this release expands this to
11702 'dbus-daemon' systems.
11703
11704 * systemd-networkd now supports predictable interface names
11705 for virtio devices.
11706
11707 * systemd now optionally supports the new Linux kernel
11708 "unified" control group hierarchy. If enabled via the kernel
11709 command-line option 'systemd.unified_cgroup_hierarchy=1',
11710 systemd will try to mount the unified cgroup hierarchy
11711 directly on /sys/fs/cgroup. If not enabled, or not
11712 available, systemd will fall back to the legacy cgroup
11713 hierarchy setup, as before. Host system and containers can
11714 mix and match legacy and unified hierarchies as they
11715 wish. nspawn understands the $UNIFIED_CGROUP_HIERARCHY
11716 environment variable to individually select the hierarchy to
11717 use for executed containers. By default, nspawn will use the
11718 unified hierarchy for the containers if the host uses the
11719 unified hierarchy, and the legacy hierarchy otherwise.
11720 Please note that at this point the unified hierarchy is an
11721 experimental kernel feature and is likely to change in one
11722 of the next kernel releases. Therefore, it should not be
11723 enabled by default in downstream distributions yet. The
11724 minimum required kernel version for the unified hierarchy to
11725 work is 4.2. Note that when the unified hierarchy is used
11726 for the first time delegated access to controllers is
11727 safe. Because of this systemd-nspawn containers will get
11728 access to controllers now, as will systemd user
11729 sessions. This means containers and user sessions may now
11730 manage their own resources, partitioning up what the system
11731 grants them.
11732
11733 * A new special scope unit "init.scope" has been introduced
11734 that encapsulates PID 1 of the system. It may be used to
11735 determine resource usage and enforce resource limits on PID
11736 1 itself. PID 1 hence moved out of the root of the control
11737 group tree.
11738
11739 * The cgtop tool gained support for filtering out kernel
11740 threads when counting tasks in a control group. Also, the
11741 count of processes is now recursively summed up by
11742 default. Two options -k and --recursive= have been added to
11743 revert to old behaviour. The tool has also been updated to
11744 work correctly in containers now.
11745
11746 * systemd-nspawn's --bind= and --bind-ro= options have been
11747 extended to allow creation of non-recursive bind mounts.
11748
11749 * libsystemd gained two new calls sd_pid_get_cgroup() and
11750 sd_peer_get_cgroup() which return the control group path of
11751 a process or peer of a connected AF_UNIX socket. This
11752 function call is particularly useful when implementing
11753 delegated subtrees support in the control group hierarchy.
11754
11755 * The "sd-event" event loop API of libsystemd now supports
11756 correct dequeuing of real-time signals, without losing
11757 signal events.
11758
11759 * When systemd requests a polkit decision when managing units it
11760 will now add additional fields to the request, including unit
11761 name and desired operation. This enables more powerful polkit
11762 policies, that make decisions depending on these parameters.
11763
11764 * nspawn learnt support for .nspawn settings files, that may
11765 accompany the image files or directories of containers, and
11766 may contain additional settings for the container. This is
11767 an alternative to configuring container parameters via the
11768 nspawn command line.
11769
11770 Contributions from: Cristian Rodríguez, Daniel Mack, David
11771 Herrmann, Eugene Yakubovich, Evgeny Vereshchagin, Filipe
11772 Brandenburger, Hans de Goede, Jan Alexander Steffens, Jan
11773 Synacek, Kay Sievers, Lennart Poettering, Mangix, Marcel
11774 Holtmann, Martin Pitt, Michael Biebl, Michael Chapman, Michal
11775 Sekletar, Peter Hutterer, Piotr Drąg, reverendhomer, Robin
11776 Hack, Susant Sahani, Sylvain Pasche, Thomas Hindoe Paaboel
11777 Andersen, Tom Gundersen, Torstein Husebø
11778
11779 — Berlin, 2015-09-08
11780
11781 CHANGES WITH 225:
11782
11783 * machinectl gained a new verb 'shell' which opens a fresh
11784 shell on the target container or the host. It is similar to
11785 the existing 'login' command of machinectl, but spawns the
11786 shell directly without prompting for username or
11787 password. The pseudo machine '.host' now refers to the local
11788 host and is used by default. Hence, 'machinectl shell' can
11789 be used as replacement for 'su -' which spawns a session as
11790 a fresh systemd unit in a way that is fully isolated from
11791 the originating session.
11792
11793 * systemd-networkd learned to cope with private-zone DHCP
11794 options and allows other programs to query the values.
11795
11796 * SELinux access control when enabling/disabling units is no
11797 longer enforced with this release. The previous implementation
11798 was incorrect, and a new corrected implementation is not yet
11799 available. As unit file operations are still protected via
11800 polkit and D-Bus policy this is not a security problem. Yet,
11801 distributions which care about optimal SELinux support should
11802 probably not stabilize on this release.
11803
11804 * sd-bus gained support for matches of type "arg0has=", that
11805 test for membership of strings in string arrays sent in bus
11806 messages.
11807
11808 * systemd-resolved now dumps the contents of its DNS and LLMNR
11809 caches to the logs on reception of the SIGUSR1 signal. This
11810 is useful to debug DNS behaviour.
11811
11812 * The coredumpctl tool gained a new --directory= option to
11813 operate on journal files in a specific directory.
11814
11815 * "systemctl reboot" and related commands gained a new
11816 "--message=" option which may be used to set a free-text
11817 wall message when shutting down or rebooting the
11818 system. This message is also logged, which is useful for
11819 figuring out the reason for a reboot or shutdown a
11820 posteriori.
11821
11822 * The "systemd-resolve-host" tool's -i switch now takes
11823 network interface numbers as alternative to interface names.
11824
11825 * A new unit file setting for services has been introduced:
11826 UtmpMode= allows configuration of how precisely systemd
11827 handles utmp and wtmp entries for the service if this is
11828 enabled. This allows writing services that appear similar to
11829 user sessions in the output of the "w", "who", "last" and
11830 "lastlog" tools.
11831
11832 * systemd-resolved will now locally synthesize DNS resource
11833 records for the "localhost" and "gateway" domains as well as
11834 the local hostname. This should ensure that clients querying
11835 RRs via resolved will get similar results as those going via
11836 NSS, if nss-myhostname is enabled.
11837
11838 Contributions from: Alastair Hughes, Alex Crawford, Daniel
11839 Mack, David Herrmann, Dimitri John Ledkov, Eric Kostrowski,
11840 Evgeny Vereshchagin, Felipe Sateler, HATAYAMA Daisuke, Jan
11841 Pokorný, Jan Synacek, Johnny Robeson, Karel Zak, Kay Sievers,
11842 Kefeng Wang, Lennart Poettering, Major Hayden, Marcel
11843 Holtmann, Markus Elfring, Martin Mikkelsen, Martin Pitt, Matt
11844 Turner, Maxim Mikityanskiy, Michael Biebl, Namhyung Kim,
11845 Nicolas Cornu, Owen W. Taylor, Patrik Flykt, Peter Hutterer,
11846 reverendhomer, Richard Maw, Ronny Chevalier, Seth Jennings,
11847 Stef Walter, Susant Sahani, Thomas Blume, Thomas Hindoe
11848 Paaboel Andersen, Thomas Meyer, Tom Gundersen, Vincent Batts,
11849 WaLyong Cho, Zbigniew Jędrzejewski-Szmek
11850
11851 — Berlin, 2015-08-27
11852
11853 CHANGES WITH 224:
11854
11855 * The systemd-efi-boot-generator functionality was merged into
11856 systemd-gpt-auto-generator.
11857
11858 * systemd-networkd now supports Group Policy for vxlan
11859 devices. It can be enabled via the new boolean configuration
11860 option called 'GroupPolicyExtension='.
11861
11862 Contributions from: Andreas Kempf, Christian Hesse, Daniel Mack, David
11863 Herrmann, Herman Fries, Johannes Nixdorf, Kay Sievers, Lennart
11864 Poettering, Peter Hutterer, Susant Sahani, Tom Gundersen
11865
11866 — Berlin, 2015-07-31
11867
11868 CHANGES WITH 223:
11869
11870 * The python-systemd code has been removed from the systemd repository.
11871 A new repository has been created which accommodates the code from
11872 now on, and we kindly ask distributions to create a separate package
11873 for this: https://github.com/systemd/python-systemd
11874
11875 * The systemd daemon will now reload its main configuration
11876 (/etc/systemd/system.conf) on daemon-reload.
11877
11878 * sd-dhcp now exposes vendor specific extensions via
11879 sd_dhcp_lease_get_vendor_specific().
11880
11881 * systemd-networkd gained a number of new configuration options.
11882
11883 - A new boolean configuration option for TAP devices called
11884 'VNetHeader='. If set, the IFF_VNET_HDR flag is set for the
11885 device, thus allowing to send and receive GSO packets.
11886
11887 - A new tunnel configuration option called 'CopyDSCP='.
11888 If enabled, the DSCP field of ip6 tunnels is copied into the
11889 decapsulated packet.
11890
11891 - A set of boolean bridge configuration options were added.
11892 'UseBPDU=', 'HairPin=', 'FastLeave=', 'AllowPortToBeRoot=',
11893 and 'UnicastFlood=' are now parsed by networkd and applied to the
11894 respective bridge link device via the respective IFLA_BRPORT_*
11895 netlink attribute.
11896
11897 - A new string configuration option to override the hostname sent
11898 to a DHCP server, called 'Hostname='. If set and 'SendHostname='
11899 is true, networkd will use the configured hostname instead of the
11900 system hostname when sending DHCP requests.
11901
11902 - A new tunnel configuration option called 'IPv6FlowLabel='. If set,
11903 networkd will configure the IPv6 flow-label of the tunnel device
11904 according to RFC2460.
11905
11906 - The 'macvtap' virtual network devices are now supported, similar to
11907 the already supported 'macvlan' devices.
11908
11909 * systemd-resolved now implements RFC5452 to improve resilience against
11910 cache poisoning. Additionally, source port randomization is enabled
11911 by default to further protect against DNS spoofing attacks.
11912
11913 * nss-mymachines now supports translating UIDs and GIDs of running
11914 containers with user-namespaces enabled. If a container 'foo'
11915 translates a host uid 'UID' to the container uid 'TUID', then
11916 nss-mymachines will also map uid 'UID' to/from username 'vu-foo-TUID'
11917 (with 'foo' and 'TUID' replaced accordingly). Similarly, groups are
11918 mapped as 'vg-foo-TGID'.
11919
11920 Contributions from: Beniamino Galvani, cee1, Christian Hesse, Daniel
11921 Buch, Daniel Mack, daurnimator, David Herrmann, Dimitri John Ledkov,
11922 HATAYAMA Daisuke, Ivan Shapovalov, Jan Alexander Steffens (heftig),
11923 Johan Ouwerkerk, Jose Carlos Venegas Munoz, Karel Zak, Kay Sievers,
11924 Lennart Poettering, Lidong Zhong, Martin Pitt, Michael Biebl, Michael
11925 Olbrich, Michal Schmidt, Michal Sekletar, Mike Gilbert, Namhyung Kim,
11926 Nick Owens, Peter Hutterer, Richard Maw, Steven Allen, Sungbae Yoo,
11927 Susant Sahani, Thomas Blume, Thomas Hindoe Paaboel Andersen, Tom
11928 Gundersen, Torstein Husebø, Umut Tezduyar Lindskog, Vito Caputo,
11929 Vivenzio Pagliari, Zbigniew Jędrzejewski-Szmek
11930
11931 — Berlin, 2015-07-29
11932
11933 CHANGES WITH 222:
11934
11935 * udev does not longer support the WAIT_FOR_SYSFS= key in udev rules.
11936 There are no known issues with current sysfs, and udev does not need
11937 or should be used to work around such bugs.
11938
11939 * udev does no longer enable USB HID power management. Several reports
11940 indicate, that some devices cannot handle that setting.
11941
11942 * The udev accelerometer helper was removed. The functionality
11943 is now fully included in iio-sensor-proxy. But this means,
11944 older iio-sensor-proxy versions will no longer provide
11945 accelerometer/orientation data with this systemd version.
11946 Please upgrade iio-sensor-proxy to version 1.0.
11947
11948 * networkd gained a new configuration option IPv6PrivacyExtensions=
11949 which enables IPv6 privacy extensions (RFC 4941, "Privacy Extensions
11950 for Stateless Address") on selected networks.
11951
11952 * For the sake of fewer build-time dependencies and less code in the
11953 main repository, the python bindings are about to be removed in the
11954 next release. A new repository has been created which accommodates
11955 the code from now on, and we kindly ask distributions to create a
11956 separate package for this. The removal will take place in v223.
11957
11958 https://github.com/systemd/python-systemd
11959
11960 Contributions from: Abdo Roig-Maranges, Andrew Eikum, Bastien Nocera,
11961 Cédric Delmas, Christian Hesse, Christos Trochalakis, Daniel Mack,
11962 daurnimator, David Herrmann, Dimitri John Ledkov, Eric Biggers, Eric
11963 Cook, Felipe Sateler, Geert Jansen, Gerd Hoffmann, Gianpaolo Macario,
11964 Greg Kroah-Hartman, Iago López Galeiras, Jan Alexander Steffens
11965 (heftig), Jan Engelhardt, Jay Strict, Kay Sievers, Lennart Poettering,
11966 Markus Knetschke, Martin Pitt, Michael Biebl, Michael Marineau, Michal
11967 Sekletar, Miguel Bernal Marin, Peter Hutterer, Richard Maw, rinrinne,
11968 Susant Sahani, Thomas Hindoe Paaboel Andersen, Tom Gundersen, Torstein
11969 Husebø, Vedran Miletić, WaLyong Cho, Zbigniew Jędrzejewski-Szmek
11970
11971 — Berlin, 2015-07-07
11972
11973 CHANGES WITH 221:
11974
11975 * The sd-bus.h and sd-event.h APIs have now been declared
11976 stable and have been added to the official interface of
11977 libsystemd.so. sd-bus implements an alternative D-Bus client
11978 library, that is relatively easy to use, very efficient and
11979 supports both classic D-Bus as well as kdbus as transport
11980 backend. sd-event is a generic event loop abstraction that
11981 is built around Linux epoll, but adds features such as event
11982 prioritization or efficient timer handling. Both APIs are good
11983 choices for C programs looking for a bus and/or event loop
11984 implementation that is minimal and does not have to be
11985 portable to other kernels.
11986
11987 * kdbus support is no longer compile-time optional. It is now
11988 always built-in. However, it can still be disabled at
11989 runtime using the kdbus=0 kernel command line setting, and
11990 that setting may be changed to default to off, by specifying
11991 --disable-kdbus at build-time. Note though that the kernel
11992 command line setting has no effect if the kdbus.ko kernel
11993 module is not installed, in which case kdbus is (obviously)
11994 also disabled. We encourage all downstream distributions to
11995 begin testing kdbus by adding it to the kernel images in the
11996 development distributions, and leaving kdbus support in
11997 systemd enabled.
11998
11999 * The minimal required util-linux version has been bumped to
12000 2.26.
12001
12002 * Support for chkconfig (--enable-chkconfig) was removed in
12003 favor of calling an abstraction tool
12004 /lib/systemd/systemd-sysv-install. This needs to be
12005 implemented for your distribution. See "SYSV INIT.D SCRIPTS"
12006 in README for details.
12007
12008 * If there's a systemd unit and a SysV init script for the
12009 same service name, and the user executes "systemctl enable"
12010 for it (or a related call), then this will now enable both
12011 (or execute the related operation on both), not just the
12012 unit.
12013
12014 * The libudev API documentation has been converted from gtkdoc
12015 into man pages.
12016
12017 * gudev has been removed from the systemd tree, it is now an
12018 external project.
12019
12020 * The systemd-cgtop tool learnt a new --raw switch to generate
12021 "raw" (machine parsable) output.
12022
12023 * networkd's IPForwarding= .network file setting learnt the
12024 new setting "kernel", which ensures that networkd does not
12025 change the IP forwarding sysctl from the default kernel
12026 state.
12027
12028 * The systemd-logind bus API now exposes a new boolean
12029 property "Docked" that reports whether logind considers the
12030 system "docked", i.e. connected to a docking station or not.
12031
12032 Contributions from: Alex Crawford, Andreas Pokorny, Andrei
12033 Borzenkov, Charles Duffy, Colin Guthrie, Cristian Rodríguez,
12034 Daniele Medri, Daniel Hahler, Daniel Mack, David Herrmann,
12035 David Mohr, Dimitri John Ledkov, Djalal Harouni, dslul, Ed
12036 Swierk, Eric Cook, Filipe Brandenburger, Gianpaolo Macario,
12037 Harald Hoyer, Iago López Galeiras, Igor Vuk, Jan Synacek,
12038 Jason Pleau, Jason S. McMullan, Jean Delvare, Jeff Huang,
12039 Jonathan Boulle, Karel Zak, Kay Sievers, kloun, Lennart
12040 Poettering, Marc-Antoine Perennou, Marcel Holtmann, Mario
12041 Limonciello, Martin Pitt, Michael Biebl, Michael Olbrich,
12042 Michal Schmidt, Mike Gilbert, Nick Owens, Pablo Lezaeta Reyes,
12043 Patrick Donnelly, Pavel Odvody, Peter Hutterer, Philip
12044 Withnall, Ronny Chevalier, Simon McVittie, Susant Sahani,
12045 Thomas Hindoe Paaboel Andersen, Tom Gundersen, Torstein
12046 Husebø, Umut Tezduyar Lindskog, Viktar Vauchkevich, Werner
12047 Fink, Zbigniew Jędrzejewski-Szmek
12048
12049 — Berlin, 2015-06-19
12050
12051 CHANGES WITH 220:
12052
12053 * The gudev library has been extracted into a separate repository
12054 available at: https://git.gnome.org/browse/libgudev/
12055 It is now managed as part of the Gnome project. Distributions
12056 are recommended to pass --disable-gudev to systemd and use
12057 gudev from the Gnome project instead. gudev is still included
12058 in systemd, for now. It will be removed soon, though. Please
12059 also see the announcement-thread on systemd-devel:
12060 https://lists.freedesktop.org/archives/systemd-devel/2015-May/032070.html
12061
12062 * systemd now exposes a CPUUsageNSec= property for each
12063 service unit on the bus, that contains the overall consumed
12064 CPU time of a service (the sum of what each process of the
12065 service consumed). This value is only available if
12066 CPUAccounting= is turned on for a service, and is then shown
12067 in the "systemctl status" output.
12068
12069 * Support for configuring alternative mappings of the old SysV
12070 runlevels to systemd targets has been removed. They are now
12071 hardcoded in a way that runlevels 2, 3, 4 all map to
12072 multi-user.target and 5 to graphical.target (which
12073 previously was already the default behaviour).
12074
12075 * The auto-mounter logic gained support for mount point
12076 expiry, using a new TimeoutIdleSec= setting in .automount
12077 units. (Also available as x-systemd.idle-timeout= in /etc/fstab).
12078
12079 * The EFI System Partition (ESP) as mounted to /boot by
12080 systemd-efi-boot-generator will now be unmounted
12081 automatically after 2 minutes of not being used. This should
12082 minimize the risk of ESP corruptions.
12083
12084 * New /etc/fstab options x-systemd.requires= and
12085 x-systemd.requires-mounts-for= are now supported to express
12086 additional dependencies for mounts. This is useful for
12087 journaling file systems that support external journal
12088 devices or overlay file systems that require underlying file
12089 systems to be mounted.
12090
12091 * systemd does not support direct live-upgrades (via systemctl
12092 daemon-reexec) from versions older than v44 anymore. As no
12093 distribution we are aware of shipped such old versions in a
12094 stable release this should not be problematic.
12095
12096 * When systemd forks off a new per-connection service instance
12097 it will now set the $REMOTE_ADDR environment variable to the
12098 remote IP address, and $REMOTE_PORT environment variable to
12099 the remote IP port. This behaviour is similar to the
12100 corresponding environment variables defined by CGI.
12101
12102 * systemd-networkd gained support for uplink failure
12103 detection. The BindCarrier= option allows binding interface
12104 configuration dynamically to the link sense of other
12105 interfaces. This is useful to achieve behaviour like in
12106 network switches.
12107
12108 * systemd-networkd gained support for configuring the DHCP
12109 client identifier to use when requesting leases.
12110
12111 * systemd-networkd now has a per-network UseNTP= option to
12112 configure whether NTP server information acquired via DHCP
12113 is passed on to services like systemd-timesyncd.
12114
12115 * systemd-networkd gained support for vti6 tunnels.
12116
12117 * Note that systemd-networkd manages the sysctl variable
12118 /proc/sys/net/ipv[46]/conf/*/forwarding for each interface
12119 it is configured for since v219. The variable controls IP
12120 forwarding, and is a per-interface alternative to the global
12121 /proc/sys/net/ipv[46]/ip_forward. This setting is
12122 configurable in the IPForward= option, which defaults to
12123 "no". This means if networkd is used for an interface it is
12124 no longer sufficient to set the global sysctl option to turn
12125 on IP forwarding! Instead, the .network file option
12126 IPForward= needs to be turned on! Note that the
12127 implementation of this behaviour was broken in v219 and has
12128 been fixed in v220.
12129
12130 * Many bonding and vxlan options are now configurable in
12131 systemd-networkd.
12132
12133 * systemd-nspawn gained a new --property= setting to set unit
12134 properties for the container scope. This is useful for
12135 setting resource parameters (e.g. "CPUShares=500") on
12136 containers started from the command line.
12137
12138 * systemd-nspawn gained a new --private-users= switch to make
12139 use of user namespacing available on recent Linux kernels.
12140
12141 * systemd-nspawn may now be called as part of a shell pipeline
12142 in which case the pipes used for stdin and stdout are passed
12143 directly to the process invoked in the container, without
12144 indirection via a pseudo tty.
12145
12146 * systemd-nspawn gained a new switch to control the UNIX
12147 signal to use when killing the init process of the container
12148 when shutting down.
12149
12150 * systemd-nspawn gained a new --overlay= switch for mounting
12151 overlay file systems into the container using the new kernel
12152 overlayfs support.
12153
12154 * When a container image is imported via systemd-importd and
12155 the host file system is not btrfs, a loopback block device
12156 file is created in /var/lib/machines.raw with a btrfs file
12157 system inside. It is then mounted to /var/lib/machines to
12158 enable btrfs features for container management. The loopback
12159 file and btrfs file system is grown as needed when container
12160 images are imported via systemd-importd.
12161
12162 * systemd-machined/systemd-importd gained support for btrfs
12163 quota, to enforce container disk space limits on disk. This
12164 is exposed in "machinectl set-limit".
12165
12166 * systemd-importd now can import containers from local .tar,
12167 .raw and .qcow2 images, and export them to .tar and .raw. It
12168 can also import dkr v2 images now from the network (on top
12169 of v1 as before).
12170
12171 * systemd-importd gained support for verifying downloaded
12172 images with gpg2 (previously only gpg1 was supported).
12173
12174 * systemd-machined, systemd-logind, systemd: most bus calls are
12175 now accessible to unprivileged processes via polkit. Also,
12176 systemd-logind will now allow users to kill their own sessions
12177 without further privileges or authorization.
12178
12179 * systemd-shutdownd has been removed. This service was
12180 previously responsible for implementing scheduled shutdowns
12181 as exposed in /usr/bin/shutdown's time parameter. This
12182 functionality has now been moved into systemd-logind and is
12183 accessible via a bus interface.
12184
12185 * "systemctl reboot" gained a new switch --firmware-setup that
12186 can be used to reboot into the EFI firmware setup, if that
12187 is available. systemd-logind now exposes an API on the bus
12188 to trigger such reboots, in case graphical desktop UIs want
12189 to cover this functionality.
12190
12191 * "systemctl enable", "systemctl disable" and "systemctl mask"
12192 now support a new "--now" switch. If specified the units
12193 that are enabled will also be started, and the ones
12194 disabled/masked also stopped.
12195
12196 * The Gummiboot EFI boot loader tool has been merged into
12197 systemd, and renamed to "systemd-boot". The bootctl tool has been
12198 updated to support systemd-boot.
12199
12200 * An EFI kernel stub has been added that may be used to create
12201 kernel EFI binaries that contain not only the actual kernel,
12202 but also an initrd, boot splash, command line and OS release
12203 information. This combined binary can then be signed as a
12204 single image, so that the firmware can verify it all in one
12205 step. systemd-boot has special support for EFI binaries created
12206 like this and can extract OS release information from them
12207 and show them in the boot menu. This functionality is useful
12208 to implement cryptographically verified boot schemes.
12209
12210 * Optional support has been added to systemd-fsck to pass
12211 fsck's progress report to an AF_UNIX socket in the file
12212 system.
12213
12214 * udev will no longer create device symlinks for all block devices by
12215 default. A deny list for excluding special block devices from this
12216 logic has been turned into an allow list that requires picking block
12217 devices explicitly that require device symlinks.
12218
12219 * A new (currently still internal) API sd-device.h has been
12220 added to libsystemd. This modernized API is supposed to
12221 replace libudev eventually. In fact, already much of libudev
12222 is now just a wrapper around sd-device.h.
12223
12224 * A new hwdb database for storing metadata about pointing
12225 stick devices has been added.
12226
12227 * systemd-tmpfiles gained support for setting file attributes
12228 similar to the "chattr" tool with new 'h' and 'H' lines.
12229
12230 * systemd-journald will no longer unconditionally set the
12231 btrfs NOCOW flag on new journal files. This is instead done
12232 with tmpfiles snippet using the new 'h' line type. This
12233 allows easy disabling of this logic, by masking the
12234 journal-nocow.conf tmpfiles file.
12235
12236 * systemd-journald will now translate audit message types to
12237 human readable identifiers when writing them to the
12238 journal. This should improve readability of audit messages.
12239
12240 * The LUKS logic gained support for the offset= and skip=
12241 options in /etc/crypttab, as previously implemented by
12242 Debian.
12243
12244 * /usr/lib/os-release gained a new optional field VARIANT= for
12245 distributions that support multiple variants (such as a
12246 desktop edition, a server edition, …)
12247
12248 Contributions from: Aaro Koskinen, Adam Goode, Alban Crequy,
12249 Alberto Fanjul Alonso, Alexander Sverdlin, Alex Puchades, Alin
12250 Rauta, Alison Chaiken, Andrew Jones, Arend van Spriel,
12251 Benedikt Morbach, Benjamin Franzke, Benjamin Tissoires, Blaž
12252 Tomažič, Chris Morgan, Chris Morin, Colin Walters, Cristian
12253 Rodríguez, Daniel Buch, Daniel Drake, Daniele Medri, Daniel
12254 Mack, Daniel Mustieles, daurnimator, Davide Bettio, David
12255 Herrmann, David Strauss, Didier Roche, Dimitri John Ledkov,
12256 Eric Cook, Gavin Li, Goffredo Baroncelli, Hannes Reinecke,
12257 Hans de Goede, Hans-Peter Deifel, Harald Hoyer, Iago López
12258 Galeiras, Ivan Shapovalov, Jan Engelhardt, Jan Janssen, Jan
12259 Pazdziora, Jan Synacek, Jasper St. Pierre, Jay Faulkner, John
12260 Paul Adrian Glaubitz, Jonathon Gilbert, Karel Zak, Kay
12261 Sievers, Koen Kooi, Lennart Poettering, Lubomir Rintel, Lucas
12262 De Marchi, Lukas Nykryn, Lukas Rusak, Lukasz Skalski, Łukasz
12263 Stelmach, Mantas Mikulėnas, Marc-Antoine Perennou, Marcel
12264 Holtmann, Martin Pitt, Mathieu Chevrier, Matthew Garrett,
12265 Michael Biebl, Michael Marineau, Michael Olbrich, Michal
12266 Schmidt, Michal Sekletar, Mirco Tischler, Nir Soffer, Patrik
12267 Flykt, Pavel Odvody, Peter Hutterer, Peter Lemenkov, Peter
12268 Waller, Piotr Drąg, Raul Gutierrez S, Richard Maw, Ronny
12269 Chevalier, Ross Burton, Sebastian Rasmussen, Sergey Ptashnick,
12270 Seth Jennings, Shawn Landden, Simon Farnsworth, Stefan Junker,
12271 Stephen Gallagher, Susant Sahani, Sylvain Plantefève, Thomas
12272 Haller, Thomas Hindoe Paaboel Andersen, Tobias Hunger, Tom
12273 Gundersen, Torstein Husebø, Umut Tezduyar Lindskog, Will
12274 Woods, Zachary Cook, Zbigniew Jędrzejewski-Szmek
12275
12276 — Berlin, 2015-05-22
12277
12278 CHANGES WITH 219:
12279
12280 * Introduce a new API "sd-hwdb.h" for querying the hardware
12281 metadata database. With this minimal interface one can query
12282 and enumerate the udev hwdb, decoupled from the old libudev
12283 library. libudev's interface for this is now only a wrapper
12284 around sd-hwdb. A new tool systemd-hwdb has been added to
12285 interface with and update the database.
12286
12287 * When any of systemd's tools copies files (for example due to
12288 tmpfiles' C lines) a btrfs reflink will attempted first,
12289 before bytewise copying is done.
12290
12291 * systemd-nspawn gained a new --ephemeral switch. When
12292 specified a btrfs snapshot is taken of the container's root
12293 directory, and immediately removed when the container
12294 terminates again. Thus, a container can be started whose
12295 changes never alter the container's root directory, and are
12296 lost on container termination. This switch can also be used
12297 for starting a container off the root file system of the
12298 host without affecting the host OS. This switch is only
12299 available on btrfs file systems.
12300
12301 * systemd-nspawn gained a new --template= switch. It takes the
12302 path to a container tree to use as template for the tree
12303 specified via --directory=, should that directory be
12304 missing. This allows instantiating containers dynamically,
12305 on first run. This switch is only available on btrfs file
12306 systems.
12307
12308 * When a .mount unit refers to a mount point on which multiple
12309 mounts are stacked, and the .mount unit is stopped all of
12310 the stacked mount points will now be unmounted until no
12311 mount point remains.
12312
12313 * systemd now has an explicit notion of supported and
12314 unsupported unit types. Jobs enqueued for unsupported unit
12315 types will now fail with an "unsupported" error code. More
12316 specifically .swap, .automount and .device units are not
12317 supported in containers, .busname units are not supported on
12318 non-kdbus systems. .swap and .automount are also not
12319 supported if their respective kernel compile time options
12320 are disabled.
12321
12322 * machinectl gained support for two new "copy-from" and
12323 "copy-to" commands for copying files from a running
12324 container to the host or vice versa.
12325
12326 * machinectl gained support for a new "bind" command to bind
12327 mount host directories into local containers. This is
12328 currently only supported for nspawn containers.
12329
12330 * networkd gained support for configuring bridge forwarding
12331 database entries (fdb) from .network files.
12332
12333 * A new tiny daemon "systemd-importd" has been added that can
12334 download container images in tar, raw, qcow2 or dkr formats,
12335 and make them available locally in /var/lib/machines, so
12336 that they can run as nspawn containers. The daemon can GPG
12337 verify the downloads (not supported for dkr, since it has no
12338 provisions for verifying downloads). It will transparently
12339 decompress bz2, xz, gzip compressed downloads if necessary,
12340 and restore sparse files on disk. The daemon uses privilege
12341 separation to ensure the actual download logic runs with
12342 fewer privileges than the daemon itself. machinectl has
12343 gained new commands "pull-tar", "pull-raw" and "pull-dkr" to
12344 make the functionality of importd available to the
12345 user. With this in place the Fedora and Ubuntu "Cloud"
12346 images can be downloaded and booted as containers unmodified
12347 (the Fedora images lack the appropriate GPG signature files
12348 currently, so they cannot be verified, but this will change
12349 soon, hopefully). Note that downloading images is currently
12350 only fully supported on btrfs.
12351
12352 * machinectl is now able to list container images found in
12353 /var/lib/machines, along with some metadata about sizes of
12354 disk and similar. If the directory is located on btrfs and
12355 quota is enabled, this includes quota display. A new command
12356 "image-status" has been added that shows additional
12357 information about images.
12358
12359 * machinectl is now able to clone container images
12360 efficiently, if the underlying file system (btrfs) supports
12361 it, with the new "machinectl clone" command. It also
12362 gained commands for renaming and removing images, as well as
12363 marking them read-only or read-write (supported also on
12364 legacy file systems).
12365
12366 * networkd gained support for collecting LLDP network
12367 announcements, from hardware that supports this. This is
12368 shown in networkctl output.
12369
12370 * systemd-run gained support for a new -t (--pty) switch for
12371 invoking a binary on a pty whose input and output is
12372 connected to the invoking terminal. This allows executing
12373 processes as system services while interactively
12374 communicating with them via the terminal. Most interestingly
12375 this is supported across container boundaries. Invoking
12376 "systemd-run -t /bin/bash" is an alternative to running a
12377 full login session, the difference being that the former
12378 will not register a session, nor go through the PAM session
12379 setup.
12380
12381 * tmpfiles gained support for a new "v" line type for creating
12382 btrfs subvolumes. If the underlying file system is a legacy
12383 file system, this automatically degrades to creating a
12384 normal directory. Among others /var/lib/machines is now
12385 created like this at boot, should it be missing.
12386
12387 * The directory /var/lib/containers/ has been deprecated and
12388 been replaced by /var/lib/machines. The term "machines" has
12389 been used in the systemd context as generic term for both
12390 VMs and containers, and hence appears more appropriate for
12391 this, as the directory can also contain raw images bootable
12392 via qemu/kvm.
12393
12394 * systemd-nspawn when invoked with -M but without --directory=
12395 or --image= is now capable of searching for the container
12396 root directory, subvolume or disk image automatically, in
12397 /var/lib/machines. systemd-nspawn@.service has been updated
12398 to make use of this, thus allowing it to be used for raw
12399 disk images, too.
12400
12401 * A new machines.target unit has been introduced that is
12402 supposed to group all containers/VMs invoked as services on
12403 the system. systemd-nspawn@.service has been updated to
12404 integrate with that.
12405
12406 * machinectl gained a new "start" command, for invoking a
12407 container as a service. "machinectl start foo" is mostly
12408 equivalent to "systemctl start systemd-nspawn@foo.service",
12409 but handles escaping in a nicer way.
12410
12411 * systemd-nspawn will now mount most of the cgroupfs tree
12412 read-only into each container, with the exception of the
12413 container's own subtree in the name=systemd hierarchy.
12414
12415 * journald now sets the special FS_NOCOW file flag for its
12416 journal files. This should improve performance on btrfs, by
12417 avoiding heavy fragmentation when journald's write-pattern
12418 is used on COW file systems. It degrades btrfs' data
12419 integrity guarantees for the files to the same levels as for
12420 ext3/ext4 however. This should be OK though as journald does
12421 its own data integrity checks and all its objects are
12422 checksummed on disk. Also, journald should handle btrfs disk
12423 full events a lot more gracefully now, by processing SIGBUS
12424 errors, and not relying on fallocate() anymore.
12425
12426 * When journald detects that journal files it is writing to
12427 have been deleted it will immediately start new journal
12428 files.
12429
12430 * systemd now provides a way to store file descriptors
12431 per-service in PID 1. This is useful for daemons to ensure
12432 that fds they require are not lost during a daemon
12433 restart. The fds are passed to the daemon on the next
12434 invocation in the same way socket activation fds are
12435 passed. This is now used by journald to ensure that the
12436 various sockets connected to all the system's stdout/stderr
12437 are not lost when journald is restarted. File descriptors
12438 may be stored in PID 1 via the sd_pid_notify_with_fds() API,
12439 an extension to sd_notify(). Note that a limit is enforced
12440 on the number of fds a service can store in PID 1, and it
12441 defaults to 0, so that no fds may be stored, unless this is
12442 explicitly turned on.
12443
12444 * The default TERM variable to use for units connected to a
12445 terminal, when no other value is explicitly is set is now
12446 vt220 rather than vt102. This should be fairly safe still,
12447 but allows PgUp/PgDn work.
12448
12449 * The /etc/crypttab option header= as known from Debian is now
12450 supported.
12451
12452 * "loginctl user-status" and "loginctl session-status" will
12453 now show the last 10 lines of log messages of the
12454 user/session following the status output. Similar,
12455 "machinectl status" will show the last 10 log lines
12456 associated with a virtual machine or container
12457 service. (Note that this is usually not the log messages
12458 done in the VM/container itself, but simply what the
12459 container manager logs. For nspawn this includes all console
12460 output however.)
12461
12462 * "loginctl session-status" without further argument will now
12463 show the status of the session of the caller. Similar,
12464 "lock-session", "unlock-session", "activate",
12465 "enable-linger", "disable-linger" may now be called without
12466 session/user parameter in which case they apply to the
12467 caller's session/user.
12468
12469 * An X11 session scriptlet is now shipped that uploads
12470 $DISPLAY and $XAUTHORITY into the environment of the systemd
12471 --user daemon if a session begins. This should improve
12472 compatibility with X11 enabled applications run as systemd
12473 user services.
12474
12475 * Generators are now subject to masking via /etc and /run, the
12476 same way as unit files.
12477
12478 * networkd .network files gained support for configuring
12479 per-link IPv4/IPv6 packet forwarding as well as IPv4
12480 masquerading. This is by default turned on for veth links to
12481 containers, as registered by systemd-nspawn. This means that
12482 nspawn containers run with --network-veth will now get
12483 automatic routed access to the host's networks without any
12484 further configuration or setup, as long as networkd runs on
12485 the host.
12486
12487 * systemd-nspawn gained the --port= (-p) switch to expose TCP
12488 or UDP posts of a container on the host. With this in place
12489 it is possible to run containers with private veth links
12490 (--network-veth), and have their functionality exposed on
12491 the host as if their services were running directly on the
12492 host.
12493
12494 * systemd-nspawn's --network-veth switch now gained a short
12495 version "-n", since with the changes above it is now truly
12496 useful out-of-the-box. The systemd-nspawn@.service has been
12497 updated to make use of it too by default.
12498
12499 * systemd-nspawn will now maintain a per-image R/W lock, to
12500 ensure that the same image is not started more than once
12501 writable. (It's OK to run an image multiple times
12502 simultaneously in read-only mode.)
12503
12504 * systemd-nspawn's --image= option is now capable of
12505 dissecting and booting MBR and GPT disk images that contain
12506 only a single active Linux partition. Previously it
12507 supported only GPT disk images with proper GPT type
12508 IDs. This allows running cloud images from major
12509 distributions directly with systemd-nspawn, without
12510 modification.
12511
12512 * In addition to collecting mouse dpi data in the udev
12513 hardware database, there's now support for collecting angle
12514 information for mouse scroll wheels. The database is
12515 supposed to guarantee similar scrolling behavior on mice
12516 that it knows about. There's also support for collecting
12517 information about Touchpad types.
12518
12519 * udev's input_id built-in will now also collect touch screen
12520 dimension data and attach it to probed devices.
12521
12522 * /etc/os-release gained support for a Distribution Privacy
12523 Policy link field.
12524
12525 * networkd gained support for creating "ipvlan", "gretap",
12526 "ip6gre", "ip6gretap" and "ip6tnl" network devices.
12527
12528 * systemd-tmpfiles gained support for "a" lines for setting
12529 ACLs on files.
12530
12531 * systemd-nspawn will now mount /tmp in the container to
12532 tmpfs, automatically.
12533
12534 * systemd now exposes the memory.usage_in_bytes cgroup
12535 attribute and shows it for each service in the "systemctl
12536 status" output, if available.
12537
12538 * When the user presses Ctrl-Alt-Del more than 7x within 2s an
12539 immediate reboot is triggered. This useful if shutdown is
12540 hung and is unable to complete, to expedite the
12541 operation. Note that this kind of reboot will still unmount
12542 all file systems, and hence should not result in fsck being
12543 run on next reboot.
12544
12545 * A .device unit for an optical block device will now be
12546 considered active only when a medium is in the drive. Also,
12547 mount units are now bound to their backing devices thus
12548 triggering automatic unmounting when devices become
12549 unavailable. With this in place systemd will now
12550 automatically unmount left-over mounts when a CD-ROM is
12551 ejected or a USB stick is yanked from the system.
12552
12553 * networkd-wait-online now has support for waiting for
12554 specific interfaces only (with globbing), and for giving up
12555 after a configurable timeout.
12556
12557 * networkd now exits when idle. It will be automatically
12558 restarted as soon as interfaces show up, are removed or
12559 change state. networkd will stay around as long as there is
12560 at least one DHCP state machine or similar around, that keep
12561 it non-idle.
12562
12563 * networkd may now configure IPv6 link-local addressing in
12564 addition to IPv4 link-local addressing.
12565
12566 * The IPv6 "token" for use in SLAAC may now be configured for
12567 each .network interface in networkd.
12568
12569 * Routes configured with networkd may now be assigned a scope
12570 in .network files.
12571
12572 * networkd's [Match] sections now support globbing and lists
12573 of multiple space-separated matches per item.
12574
12575 Contributions from: Alban Crequy, Alin Rauta, Andrey Chaser,
12576 Bastien Nocera, Bruno Bottazzini, Carlos Garnacho, Carlos
12577 Morata Castillo, Chris Atkinson, Chris J. Arges, Christian
12578 Kirbach, Christian Seiler, Christoph Brill, Colin Guthrie,
12579 Colin Walters, Cristian Rodríguez, Daniele Medri, Daniel Mack,
12580 Dave Reisner, David Herrmann, Djalal Harouni, Erik Auerswald,
12581 Filipe Brandenburger, Frank Theile, Gabor Kelemen, Gabriel de
12582 Perthuis, Harald Hoyer, Hui Wang, Ivan Shapovalov, Jan
12583 Engelhardt, Jan Synacek, Jay Faulkner, Johannes Hölzl, Jonas
12584 Ådahl, Jonathan Boulle, Josef Andersson, Kay Sievers, Ken
12585 Werner, Lennart Poettering, Lucas De Marchi, Lukas Märdian,
12586 Lukas Nykryn, Lukasz Skalski, Luke Shumaker, Mantas Mikulėnas,
12587 Manuel Mendez, Marcel Holtmann, Marc Schmitzer, Marko
12588 Myllynen, Martin Pitt, Maxim Mikityanskiy, Michael Biebl,
12589 Michael Marineau, Michael Olbrich, Michal Schmidt, Mindaugas
12590 Baranauskas, Moez Bouhlel, Naveen Kumar, Patrik Flykt, Paul
12591 Martin, Peter Hutterer, Peter Mattern, Philippe De Swert,
12592 Piotr Drąg, Rafael Ferreira, Rami Rosen, Robert Milasan, Ronny
12593 Chevalier, Sangjung Woo, Sebastien Bacher, Sergey Ptashnick,
12594 Shawn Landden, Stéphane Graber, Susant Sahani, Sylvain
12595 Plantefève, Thomas Hindoe Paaboel Andersen, Tim JP, Tom
12596 Gundersen, Topi Miettinen, Torstein Husebø, Umut Tezduyar
12597 Lindskog, Veres Lajos, Vincent Batts, WaLyong Cho, Wieland
12598 Hoffmann, Zbigniew Jędrzejewski-Szmek
12599
12600 — Berlin, 2015-02-16
12601
12602 CHANGES WITH 218:
12603
12604 * When querying unit file enablement status (for example via
12605 "systemctl is-enabled"), a new state "indirect" is now known
12606 which indicates that a unit might not be enabled itself, but
12607 another unit listed in its Also= setting might be.
12608
12609 * Similar to the various existing ConditionXYZ= settings for
12610 units, there are now matching AssertXYZ= settings. While
12611 failing conditions cause a unit to be skipped, but its job
12612 to succeed, failing assertions declared like this will cause
12613 a unit start operation and its job to fail.
12614
12615 * hostnamed now knows a new chassis type "embedded".
12616
12617 * systemctl gained a new "edit" command. When used on a unit
12618 file, this allows extending unit files with .d/ drop-in
12619 configuration snippets or editing the full file (after
12620 copying it from /usr/lib to /etc). This will invoke the
12621 user's editor (as configured with $EDITOR), and reload the
12622 modified configuration after editing.
12623
12624 * "systemctl status" now shows the suggested enablement state
12625 for a unit, as declared in the (usually vendor-supplied)
12626 system preset files.
12627
12628 * nss-myhostname will now resolve the single-label hostname
12629 "gateway" to the locally configured default IP routing
12630 gateways, ordered by their metrics. This assigns a stable
12631 name to the used gateways, regardless which ones are
12632 currently configured. Note that the name will only be
12633 resolved after all other name sources (if nss-myhostname is
12634 configured properly) and should hence not negatively impact
12635 systems that use the single-label hostname "gateway" in
12636 other contexts.
12637
12638 * systemd-inhibit now allows filtering by mode when listing
12639 inhibitors.
12640
12641 * Scope and service units gained a new "Delegate" boolean
12642 property, which, when set, allows processes running inside the
12643 unit to further partition resources. This is primarily
12644 useful for systemd user instances as well as container
12645 managers.
12646
12647 * journald will now pick up audit messages directly from
12648 the kernel, and log them like any other log message. The
12649 audit fields are split up and fully indexed. This means that
12650 journalctl in many ways is now a (nicer!) alternative to
12651 ausearch, the traditional audit client. Note that this
12652 implements only a minimal audit client. If you want the
12653 special audit modes like reboot-on-log-overflow, please use
12654 the traditional auditd instead, which can be used in
12655 parallel to journald.
12656
12657 * The ConditionSecurity= unit file option now understands the
12658 special string "audit" to check whether auditing is
12659 available.
12660
12661 * journalctl gained two new commands --vacuum-size= and
12662 --vacuum-time= to delete old journal files until the
12663 remaining ones take up no more than the specified size on disk,
12664 or are not older than the specified time.
12665
12666 * A new, native PPPoE library has been added to sd-network,
12667 systemd's library of light-weight networking protocols. This
12668 library will be used in a future version of networkd to
12669 enable PPPoE communication without an external pppd daemon.
12670
12671 * The busctl tool now understands a new "capture" verb that
12672 works similar to "monitor", but writes a packet capture
12673 trace to STDOUT that can be redirected to a file which is
12674 compatible with libcap's capture file format. This can then
12675 be loaded in Wireshark and similar tools to inspect bus
12676 communication.
12677
12678 * The busctl tool now understands a new "tree" verb that shows
12679 the object trees of a specific service on the bus, or of all
12680 services.
12681
12682 * The busctl tool now understands a new "introspect" verb that
12683 shows all interfaces and members of objects on the bus,
12684 including their signature and values. This is particularly
12685 useful to get more information about bus objects shown by
12686 the new "busctl tree" command.
12687
12688 * The busctl tool now understands new verbs "call",
12689 "set-property" and "get-property" for invoking bus method
12690 calls, setting and getting bus object properties in a
12691 friendly way.
12692
12693 * busctl gained a new --augment-creds= argument that controls
12694 whether the tool shall augment credential information it
12695 gets from the bus with data from /proc, in a possibly
12696 race-ful way.
12697
12698 * nspawn's --link-journal= switch gained two new values
12699 "try-guest" and "try-host" that work like "guest" and
12700 "host", but do not fail if the host has no persistent
12701 journaling enabled. -j is now equivalent to
12702 --link-journal=try-guest.
12703
12704 * macvlan network devices created by nspawn will now have
12705 stable MAC addresses.
12706
12707 * A new SmackProcessLabel= unit setting has been added, which
12708 controls the SMACK security label processes forked off by
12709 the respective unit shall use.
12710
12711 * If compiled with --enable-xkbcommon, systemd-localed will
12712 verify x11 keymap settings by compiling the given keymap. It
12713 will spew out warnings if the compilation fails. This
12714 requires libxkbcommon to be installed.
12715
12716 * When a coredump is collected, a larger number of metadata
12717 fields is now collected and included in the journal records
12718 created for it. More specifically, control group membership,
12719 environment variables, memory maps, working directory,
12720 chroot directory, /proc/$PID/status, and a list of open file
12721 descriptors is now stored in the log entry.
12722
12723 * The udev hwdb now contains DPI information for mice. For
12724 details see:
12725
12726 http://who-t.blogspot.de/2014/12/building-a-dpi-database-for-mice.html
12727
12728 * All systemd programs that read standalone configuration
12729 files in /etc now also support a corresponding series of
12730 .conf.d configuration directories in /etc/, /run/,
12731 /usr/local/lib/, /usr/lib/, and (if configured with
12732 --enable-split-usr) /lib/. In particular, the following
12733 configuration files now have corresponding configuration
12734 directories: system.conf user.conf, logind.conf,
12735 journald.conf, sleep.conf, bootchart.conf, coredump.conf,
12736 resolved.conf, timesyncd.conf, journal-remote.conf, and
12737 journal-upload.conf. Note that distributions should use the
12738 configuration directories in /usr/lib/; the directories in
12739 /etc/ are reserved for the system administrator.
12740
12741 * systemd-rfkill will no longer take the rfkill device name
12742 into account when storing rfkill state on disk, as the name
12743 might be dynamically assigned and not stable. Instead, the
12744 ID_PATH udev variable combined with the rfkill type (wlan,
12745 bluetooth, …) is used.
12746
12747 * A new service systemd-machine-id-commit.service has been
12748 added. When used on systems where /etc is read-only during
12749 boot, and /etc/machine-id is not initialized (but an empty
12750 file), this service will copy the temporary machine ID
12751 created as replacement into /etc after the system is fully
12752 booted up. This is useful for systems that are freshly
12753 installed with a non-initialized machine ID, but should get
12754 a fixed machine ID for subsequent boots.
12755
12756 * networkd's .netdev files now provide a large set of
12757 configuration parameters for VXLAN devices. Similarly, the
12758 bridge port cost parameter is now configurable in .network
12759 files. There's also new support for configuring IP source
12760 routing. networkd .link files gained support for a new
12761 OriginalName= match that is useful to match against the
12762 original interface name the kernel assigned. .network files
12763 may include MTU= and MACAddress= fields for altering the MTU
12764 and MAC address while being connected to a specific network
12765 interface.
12766
12767 * The LUKS logic gained supported for configuring
12768 UUID-specific key files. There's also new support for naming
12769 LUKS device from the kernel command line, using the new
12770 luks.name= argument.
12771
12772 * Timer units may now be transiently created via the bus API
12773 (this was previously already available for scope and service
12774 units). In addition it is now possible to create multiple
12775 transient units at the same time with a single bus call. The
12776 "systemd-run" tool has been updated to make use of this for
12777 running commands on a specified time, in at(1)-style.
12778
12779 * tmpfiles gained support for "t" lines, for assigning
12780 extended attributes to files. Among other uses this may be
12781 used to assign SMACK labels to files.
12782
12783 Contributions from: Alin Rauta, Alison Chaiken, Andrej
12784 Manduch, Bastien Nocera, Chris Atkinson, Chris Leech, Chris
12785 Mayo, Colin Guthrie, Colin Walters, Cristian Rodríguez,
12786 Daniele Medri, Daniel Mack, Dan Williams, Dan Winship, Dave
12787 Reisner, David Herrmann, Didier Roche, Felipe Sateler, Gavin
12788 Li, Hans de Goede, Harald Hoyer, Iago López Galeiras, Ivan
12789 Shapovalov, Jakub Filak, Jan Janssen, Jan Synacek, Joe
12790 Lawrence, Josh Triplett, Kay Sievers, Lennart Poettering,
12791 Lukas Nykryn, Łukasz Stelmach, Maciej Wereski, Mantas
12792 Mikulėnas, Marcel Holtmann, Martin Pitt, Maurizio Lombardi,
12793 Michael Biebl, Michael Chapman, Michael Marineau, Michal
12794 Schmidt, Michal Sekletar, Olivier Brunel, Patrik Flykt, Peter
12795 Hutterer, Przemyslaw Kedzierski, Rami Rosen, Ray Strode,
12796 Richard Schütz, Richard W.M. Jones, Ronny Chevalier, Ross
12797 Lagerwall, Sean Young, Stanisław Pitucha, Susant Sahani,
12798 Thomas Haller, Thomas Hindoe Paaboel Andersen, Tom Gundersen,
12799 Torstein Husebø, Umut Tezduyar Lindskog, Vicente Olivert
12800 Riera, WaLyong Cho, Wesley Dawson, Zbigniew Jędrzejewski-Szmek
12801
12802 — Berlin, 2014-12-10
12803
12804 CHANGES WITH 217:
12805
12806 * journalctl gained the new options -t/--identifier= to match
12807 on the syslog identifier (aka "tag"), as well as --utc to
12808 show log timestamps in the UTC timezone. journalctl now also
12809 accepts -n/--lines=all to disable line capping in a pager.
12810
12811 * journalctl gained a new switch, --flush, that synchronously
12812 flushes logs from /run/log/journal to /var/log/journal if
12813 persistent storage is enabled. systemd-journal-flush.service
12814 now waits until the operation is complete.
12815
12816 * Services can notify the manager before they start a reload
12817 (by sending RELOADING=1) or shutdown (by sending
12818 STOPPING=1). This allows the manager to track and show the
12819 internal state of daemons and closes a race condition when
12820 the process is still running but has closed its D-Bus
12821 connection.
12822
12823 * Services with Type=oneshot do not have to have any ExecStart
12824 commands anymore.
12825
12826 * User units are now loaded also from
12827 $XDG_RUNTIME_DIR/systemd/user/. This is similar to the
12828 /run/systemd/user directory that was already previously
12829 supported, but is under the control of the user.
12830
12831 * Job timeouts (i.e. timeouts on the time a job that is
12832 queued stays in the run queue) can now optionally result in
12833 immediate reboot or power-off actions (JobTimeoutAction= and
12834 JobTimeoutRebootArgument=). This is useful on ".target"
12835 units, to limit the maximum time a target remains
12836 undispatched in the run queue, and to trigger an emergency
12837 operation in such a case. This is now used by default to
12838 turn off the system if boot-up (as defined by everything in
12839 basic.target) hangs and does not complete for at least
12840 15min. Also, if power-off or reboot hang for at least 30min
12841 an immediate power-off/reboot operation is triggered. This
12842 functionality is particularly useful to increase reliability
12843 on embedded devices, but also on laptops which might
12844 accidentally get powered on when carried in a backpack and
12845 whose boot stays stuck in a hard disk encryption passphrase
12846 question.
12847
12848 * systemd-logind can be configured to also handle lid switch
12849 events even when the machine is docked or multiple displays
12850 are attached (HandleLidSwitchDocked= option).
12851
12852 * A helper binary and a service have been added which can be
12853 used to resume from hibernation in the initramfs. A
12854 generator will parse the resume= option on the kernel
12855 command line to trigger resume.
12856
12857 * A user console daemon systemd-consoled has been
12858 added. Currently, it is a preview, and will so far open a
12859 single terminal on each session of the user marked as
12860 Desktop=systemd-console.
12861
12862 * Route metrics can be specified for DHCP routes added by
12863 systemd-networkd.
12864
12865 * The SELinux context of socket-activated services can be set
12866 from the information provided by the networking stack
12867 (SELinuxContextFromNet= option).
12868
12869 * Userspace firmware loading support has been removed and
12870 the minimum supported kernel version is thus bumped to 3.7.
12871
12872 * Timeout for udev workers has been increased from 1 to 3
12873 minutes, but a warning will be printed after 1 minute to
12874 help diagnose kernel modules that take a long time to load.
12875
12876 * Udev rules can now remove tags on devices with TAG-="foobar".
12877
12878 * systemd's readahead implementation has been removed. In many
12879 circumstances it didn't give expected benefits even for
12880 rotational disk drives and was becoming less relevant in the
12881 age of SSDs. As none of the developers has been using
12882 rotating media anymore, and nobody stepped up to actively
12883 maintain this component of systemd it has now been removed.
12884
12885 * Swap units can use Options= to specify discard options.
12886 Discard options specified for swaps in /etc/fstab are now
12887 respected.
12888
12889 * Docker containers are now detected as a separate type of
12890 virtualization.
12891
12892 * The Password Agent protocol gained support for queries where
12893 the user input is shown, useful e.g. for user names.
12894 systemd-ask-password gained a new --echo option to turn that
12895 on.
12896
12897 * The default sysctl.d/ snippets will now set:
12898
12899 net.core.default_qdisc = fq_codel
12900
12901 This selects Fair Queuing Controlled Delay as the default
12902 queuing discipline for network interfaces. fq_codel helps
12903 fight the network bufferbloat problem. It is believed to be
12904 a good default with no tuning required for most workloads.
12905 Downstream distributions may override this choice. On 10Gbit
12906 servers that do not do forwarding, "fq" may perform better.
12907 Systems without a good clocksource should use "pfifo_fast".
12908
12909 * If kdbus is enabled during build a new option BusPolicy= is
12910 available for service units, that allows locking all service
12911 processes into a stricter bus policy, in order to limit
12912 access to various bus services, or even hide most of them
12913 from the service's view entirely.
12914
12915 * networkctl will now show the .network and .link file
12916 networkd has applied to a specific interface.
12917
12918 * sd-login gained a new API call sd_session_get_desktop() to
12919 query which desktop environment has been selected for a
12920 session.
12921
12922 * UNIX utmp support is now compile-time optional to support
12923 legacy-free systems.
12924
12925 * systemctl gained two new commands "add-wants" and
12926 "add-requires" for pulling in units from specific targets
12927 easily.
12928
12929 * If the word "rescue" is specified on the kernel command line
12930 the system will now boot into rescue mode (aka
12931 rescue.target), which was previously available only by
12932 specifying "1" or "systemd.unit=rescue.target" on the kernel
12933 command line. This new kernel command line option nicely
12934 mirrors the already existing "emergency" kernel command line
12935 option.
12936
12937 * New kernel command line options mount.usr=, mount.usrflags=,
12938 mount.usrfstype= have been added that match root=, rootflags=,
12939 rootfstype= but allow mounting a specific file system to
12940 /usr.
12941
12942 * The $NOTIFY_SOCKET is now also passed to control processes of
12943 services, not only the main process.
12944
12945 * This version reenables support for fsck's -l switch. This
12946 means at least version v2.25 of util-linux is required for
12947 operation, otherwise dead-locks on device nodes may
12948 occur. Again: you need to update util-linux to at least
12949 v2.25 when updating systemd to v217.
12950
12951 * The "multi-seat-x" tool has been removed from systemd, as
12952 its functionality has been integrated into X servers 1.16,
12953 and the tool is hence redundant. It is recommended to update
12954 display managers invoking this tool to simply invoke X
12955 directly from now on, again.
12956
12957 * Support for the new ALLOW_INTERACTIVE_AUTHORIZATION D-Bus
12958 message flag has been added for all of systemd's polkit
12959 authenticated method calls has been added. In particular this
12960 now allows optional interactive authorization via polkit for
12961 many of PID1's privileged operations such as unit file
12962 enabling and disabling.
12963
12964 * "udevadm hwdb --update" learnt a new switch "--usr" for
12965 placing the rebuilt hardware database in /usr instead of
12966 /etc. When used only hardware database entries stored in
12967 /usr will be used, and any user database entries in /etc are
12968 ignored. This functionality is useful for vendors to ship a
12969 pre-built database on systems where local configuration is
12970 unnecessary or unlikely.
12971
12972 * Calendar time specifications in .timer units now also
12973 understand the strings "semi-annually", "quarterly" and
12974 "minutely" as shortcuts (in addition to the preexisting
12975 "annually", "hourly", …).
12976
12977 * systemd-tmpfiles will now correctly create files in /dev
12978 at boot which are marked for creation only at boot. It is
12979 recommended to always create static device nodes with 'c!'
12980 and 'b!', so that they are created only at boot and not
12981 overwritten at runtime.
12982
12983 * When the watchdog logic is used for a service (WatchdogSec=)
12984 and the watchdog timeout is hit the service will now be
12985 terminated with SIGABRT (instead of just SIGTERM), in order
12986 to make sure a proper coredump and backtrace is
12987 generated. This ensures that hanging services will result in
12988 similar coredump/backtrace behaviour as services that hit a
12989 segmentation fault.
12990
12991 Contributions from: Andreas Henriksson, Andrei Borzenkov,
12992 Angus Gibson, Ansgar Burchardt, Ben Wolsieffer, Brandon L.
12993 Black, Christian Hesse, Cristian Rodríguez, Daniel Buch,
12994 Daniele Medri, Daniel Mack, Dan Williams, Dave Reisner, David
12995 Herrmann, David Sommerseth, David Strauss, Emil Renner
12996 Berthing, Eric Cook, Evangelos Foutras, Filipe Brandenburger,
12997 Gustavo Sverzut Barbieri, Hans de Goede, Harald Hoyer, Hristo
12998 Venev, Hugo Grostabussiat, Ivan Shapovalov, Jan Janssen, Jan
12999 Synacek, Jonathan Liu, Juho Son, Karel Zak, Kay Sievers, Klaus
13000 Purer, Koen Kooi, Lennart Poettering, Lukas Nykryn, Lukasz
13001 Skalski, Łukasz Stelmach, Mantas Mikulėnas, Marcel Holtmann,
13002 Marius Tessmann, Marko Myllynen, Martin Pitt, Michael Biebl,
13003 Michael Marineau, Michael Olbrich, Michael Scherer, Michal
13004 Schmidt, Michal Sekletar, Miroslav Lichvar, Patrik Flykt,
13005 Philippe De Swert, Piotr Drąg, Rahul Sundaram, Richard
13006 Weinberger, Robert Milasan, Ronny Chevalier, Ruben Kerkhof,
13007 Santiago Vila, Sergey Ptashnick, Simon McVittie, Sjoerd
13008 Simons, Stefan Brüns, Steven Allen, Steven Noonan, Susant
13009 Sahani, Sylvain Plantefève, Thomas Hindoe Paaboel Andersen,
13010 Timofey Titovets, Tobias Hunger, Tom Gundersen, Torstein
13011 Husebø, Umut Tezduyar Lindskog, WaLyong Cho, Zbigniew
13012 Jędrzejewski-Szmek
13013
13014 — Berlin, 2014-10-28
13015
13016 CHANGES WITH 216:
13017
13018 * timedated no longer reads NTP implementation unit names from
13019 /usr/lib/systemd/ntp-units.d/*.list. Alternative NTP
13020 implementations should add a
13021
13022 Conflicts=systemd-timesyncd.service
13023
13024 to their unit files to take over and replace systemd's NTP
13025 default functionality.
13026
13027 * systemd-sysusers gained a new line type "r" for configuring
13028 which UID/GID ranges to allocate system users/groups
13029 from. Lines of type "u" may now add an additional column
13030 that specifies the home directory for the system user to be
13031 created. Also, systemd-sysusers may now optionally read user
13032 information from STDIN instead of a file. This is useful for
13033 invoking it from RPM preinst scriptlets that need to create
13034 users before the first RPM file is installed since these
13035 files might need to be owned by them. A new
13036 %sysusers_create_inline RPM macro has been introduced to do
13037 just that. systemd-sysusers now updates the shadow files as
13038 well as the user/group databases, which should enhance
13039 compatibility with certain tools like grpck.
13040
13041 * A number of bus APIs of PID 1 now optionally consult polkit to
13042 permit access for otherwise unprivileged clients under certain
13043 conditions. Note that this currently doesn't support
13044 interactive authentication yet, but this is expected to be
13045 added eventually, too.
13046
13047 * /etc/machine-info now has new fields for configuring the
13048 deployment environment of the machine, as well as the
13049 location of the machine. hostnamectl has been updated with
13050 new command to update these fields.
13051
13052 * systemd-timesyncd has been updated to automatically acquire
13053 NTP server information from systemd-networkd, which might
13054 have been discovered via DHCP.
13055
13056 * systemd-resolved now includes a caching DNS stub resolver
13057 and a complete LLMNR name resolution implementation. A new
13058 NSS module "nss-resolve" has been added which can be used
13059 instead of glibc's own "nss-dns" to resolve hostnames via
13060 systemd-resolved. Hostnames, addresses and arbitrary RRs may
13061 be resolved via systemd-resolved D-Bus APIs. In contrast to
13062 the glibc internal resolver systemd-resolved is aware of
13063 multi-homed system, and keeps DNS server and caches separate
13064 and per-interface. Queries are sent simultaneously on all
13065 interfaces that have DNS servers configured, in order to
13066 properly handle VPNs and local LANs which might resolve
13067 separate sets of domain names. systemd-resolved may acquire
13068 DNS server information from systemd-networkd automatically,
13069 which in turn might have discovered them via DHCP. A tool
13070 "systemd-resolve-host" has been added that may be used to
13071 query the DNS logic in resolved. systemd-resolved implements
13072 IDNA and automatically uses IDNA or UTF-8 encoding depending
13073 on whether classic DNS or LLMNR is used as transport. In the
13074 next releases we intend to add a DNSSEC and mDNS/DNS-SD
13075 implementation to systemd-resolved.
13076
13077 * A new NSS module nss-mymachines has been added, that
13078 automatically resolves the names of all local registered
13079 containers to their respective IP addresses.
13080
13081 * A new client tool "networkctl" for systemd-networkd has been
13082 added. It currently is entirely passive and will query
13083 networking configuration from udev, rtnetlink and networkd,
13084 and present it to the user in a very friendly
13085 way. Eventually, we hope to extend it to become a full
13086 control utility for networkd.
13087
13088 * .socket units gained a new DeferAcceptSec= setting that
13089 controls the kernels' TCP_DEFER_ACCEPT sockopt for
13090 TCP. Similarly, support for controlling TCP keep-alive
13091 settings has been added (KeepAliveTimeSec=,
13092 KeepAliveIntervalSec=, KeepAliveProbes=). Also, support for
13093 turning off Nagle's algorithm on TCP has been added
13094 (NoDelay=).
13095
13096 * logind learned a new session type "web", for use in projects
13097 like Cockpit which register web clients as PAM sessions.
13098
13099 * timer units with at least one OnCalendar= setting will now
13100 be started only after time-sync.target has been
13101 reached. This way they will not elapse before the system
13102 clock has been corrected by a local NTP client or
13103 similar. This is particular useful on RTC-less embedded
13104 machines, that come up with an invalid system clock.
13105
13106 * systemd-nspawn's --network-veth= switch should now result in
13107 stable MAC addresses for both the outer and the inner side
13108 of the link.
13109
13110 * systemd-nspawn gained a new --volatile= switch for running
13111 container instances with /etc or /var unpopulated.
13112
13113 * The kdbus client code has been updated to use the new Linux
13114 3.17 memfd subsystem instead of the old kdbus-specific one.
13115
13116 * systemd-networkd's DHCP client and server now support
13117 FORCERENEW. There are also new configuration options to
13118 configure the vendor client identifier and broadcast mode
13119 for DHCP.
13120
13121 * systemd will no longer inform the kernel about the current
13122 timezone, as this is necessarily incorrect and racy as the
13123 kernel has no understanding of DST and similar
13124 concepts. This hence means FAT timestamps will be always
13125 considered UTC, similar to what Android is already
13126 doing. Also, when the RTC is configured to the local time
13127 (rather than UTC) systemd will never synchronize back to it,
13128 as this might confuse Windows at a later boot.
13129
13130 * systemd-analyze gained a new command "verify" for offline
13131 validation of unit files.
13132
13133 * systemd-networkd gained support for a couple of additional
13134 settings for bonding networking setups. Also, the metric for
13135 statically configured routes may now be configured. For
13136 network interfaces where this is appropriate the peer IP
13137 address may now be configured.
13138
13139 * systemd-networkd's DHCP client will no longer request
13140 broadcasting by default, as this tripped up some networks.
13141 For hardware where broadcast is required the feature should
13142 be switched back on using RequestBroadcast=yes.
13143
13144 * systemd-networkd will now set up IPv4LL addresses (when
13145 enabled) even if DHCP is configured successfully.
13146
13147 * udev will now default to respect network device names given
13148 by the kernel when the kernel indicates that these are
13149 predictable. This behavior can be tweaked by changing
13150 NamePolicy= in the relevant .link file.
13151
13152 * A new library systemd-terminal has been added that
13153 implements full TTY stream parsing and rendering. This
13154 library is supposed to be used later on for implementing a
13155 full userspace VT subsystem, replacing the current kernel
13156 implementation.
13157
13158 * A new tool systemd-journal-upload has been added to push
13159 journal data to a remote system running
13160 systemd-journal-remote.
13161
13162 * journald will no longer forward all local data to another
13163 running syslog daemon. This change has been made because
13164 rsyslog (which appears to be the most commonly used syslog
13165 implementation these days) no longer makes use of this, and
13166 instead pulls the data out of the journal on its own. Since
13167 forwarding the messages to a non-existent syslog server is
13168 more expensive than we assumed we have now turned this
13169 off. If you run a syslog server that is not a recent rsyslog
13170 version, you have to turn this option on again
13171 (ForwardToSyslog= in journald.conf).
13172
13173 * journald now optionally supports the LZ4 compressor for
13174 larger journal fields. This compressor should perform much
13175 better than XZ which was the previous default.
13176
13177 * machinectl now shows the IP addresses of local containers,
13178 if it knows them, plus the interface name of the container.
13179
13180 * A new tool "systemd-escape" has been added that makes it
13181 easy to escape strings to build unit names and similar.
13182
13183 * sd_notify() messages may now include a new ERRNO= field
13184 which is parsed and collected by systemd and shown among the
13185 "systemctl status" output for a service.
13186
13187 * A new component "systemd-firstboot" has been added that
13188 queries the most basic systemd information (timezone,
13189 hostname, root password) interactively on first
13190 boot. Alternatively it may also be used to provision these
13191 things offline on OS images installed into directories.
13192
13193 * The default sysctl.d/ snippets will now set
13194
13195 net.ipv4.conf.default.promote_secondaries=1
13196
13197 This has the benefit of no flushing secondary IP addresses
13198 when primary addresses are removed.
13199
13200 Contributions from: Ansgar Burchardt, Bastien Nocera, Colin
13201 Walters, Dan Dedrick, Daniel Buch, Daniel Korostil, Daniel
13202 Mack, Dan Williams, Dave Reisner, David Herrmann, Denis
13203 Kenzior, Eelco Dolstra, Eric Cook, Hannes Reinecke, Harald
13204 Hoyer, Hong Shick Pak, Hui Wang, Jean-André Santoni, Jóhann
13205 B. Guðmundsson, Jon Severinsson, Karel Zak, Kay Sievers, Kevin
13206 Wells, Lennart Poettering, Lukas Nykryn, Mantas Mikulėnas,
13207 Marc-Antoine Perennou, Martin Pitt, Michael Biebl, Michael
13208 Marineau, Michael Olbrich, Michal Schmidt, Michal Sekletar,
13209 Miguel Angel Ajo, Mike Gilbert, Olivier Brunel, Robert
13210 Schiele, Ronny Chevalier, Simon McVittie, Sjoerd Simons, Stef
13211 Walter, Steven Noonan, Susant Sahani, Tanu Kaskinen, Thomas
13212 Blume, Thomas Hindoe Paaboel Andersen, Timofey Titovets,
13213 Tobias Geerinckx-Rice, Tomasz Torcz, Tom Gundersen, Umut
13214 Tezduyar Lindskog, Zbigniew Jędrzejewski-Szmek
13215
13216 — Berlin, 2014-08-19
13217
13218 CHANGES WITH 215:
13219
13220 * A new tool systemd-sysusers has been added. This tool
13221 creates system users and groups in /etc/passwd and
13222 /etc/group, based on static declarative system user/group
13223 definitions in /usr/lib/sysusers.d/. This is useful to
13224 enable factory resets and volatile systems that boot up with
13225 an empty /etc directory, and thus need system users and
13226 groups created during early boot. systemd now also ships
13227 with two default sysusers.d/ files for the most basic
13228 users and groups systemd and the core operating system
13229 require.
13230
13231 * A new tmpfiles snippet has been added that rebuilds the
13232 essential files in /etc on boot, should they be missing.
13233
13234 * A directive for ensuring automatic clean-up of
13235 /var/cache/man/ has been removed from the default
13236 configuration. This line should now be shipped by the man
13237 implementation. The necessary change has been made to the
13238 man-db implementation. Note that you need to update your man
13239 implementation to one that ships this line, otherwise no
13240 automatic clean-up of /var/cache/man will take place.
13241
13242 * A new condition ConditionNeedsUpdate= has been added that
13243 may conditionalize services to only run when /etc or /var
13244 are "older" than the vendor operating system resources in
13245 /usr. This is useful for reconstructing or updating /etc
13246 after an offline update of /usr or a factory reset, on the
13247 next reboot. Services that want to run once after such an
13248 update or reset should use this condition and order
13249 themselves before the new systemd-update-done.service, which
13250 will mark the two directories as fully updated. A number of
13251 service files have been added making use of this, to rebuild
13252 the udev hardware database, the journald message catalog and
13253 dynamic loader cache (ldconfig). The systemd-sysusers tool
13254 described above also makes use of this now. With this in
13255 place it is now possible to start up a minimal operating
13256 system with /etc empty cleanly. For more information on the
13257 concepts involved see this recent blog story:
13258
13259 https://0pointer.de/blog/projects/stateless.html
13260
13261 * A new system group "input" has been introduced, and all
13262 input device nodes get this group assigned. This is useful
13263 for system-level software to get access to input devices. It
13264 complements what is already done for "audio" and "video".
13265
13266 * systemd-networkd learnt minimal DHCPv4 server support in
13267 addition to the existing DHCPv4 client support. It also
13268 learnt DHCPv6 client and IPv6 Router Solicitation client
13269 support. The DHCPv4 client gained support for static routes
13270 passed in from the server. Note that the [DHCPv4] section
13271 known in older systemd-networkd versions has been renamed to
13272 [DHCP] and is now also used by the DHCPv6 client. Existing
13273 .network files using settings of this section should be
13274 updated, though compatibility is maintained. Optionally, the
13275 client hostname may now be sent to the DHCP server.
13276
13277 * networkd gained support for vxlan virtual networks as well
13278 as tun/tap and dummy devices.
13279
13280 * networkd gained support for automatic allocation of address
13281 ranges for interfaces from a system-wide pool of
13282 addresses. This is useful for dynamically managing a large
13283 number of interfaces with a single network configuration
13284 file. In particular this is useful to easily assign
13285 appropriate IP addresses to the veth links of a large number
13286 of nspawn instances.
13287
13288 * RPM macros for processing sysusers, sysctl and binfmt
13289 drop-in snippets at package installation time have been
13290 added.
13291
13292 * The /etc/os-release file should now be placed in
13293 /usr/lib/os-release. The old location is automatically
13294 created as symlink. /usr/lib is the more appropriate
13295 location of this file, since it shall actually describe the
13296 vendor operating system shipped in /usr, and not the
13297 configuration stored in /etc.
13298
13299 * .mount units gained a new boolean SloppyOptions= setting
13300 that maps to mount(8)'s -s option which enables permissive
13301 parsing of unknown mount options.
13302
13303 * tmpfiles learnt a new "L+" directive which creates a symlink
13304 but (unlike "L") deletes a pre-existing file first, should
13305 it already exist and not already be the correct
13306 symlink. Similarly, "b+", "c+" and "p+" directives have been
13307 added as well, which create block and character devices, as
13308 well as fifos in the filesystem, possibly removing any
13309 pre-existing files of different types.
13310
13311 * For tmpfiles' "L", "L+", "C" and "C+" directives the final
13312 'argument' field (which so far specified the source to
13313 symlink/copy the files from) is now optional. If omitted the
13314 same file os copied from /usr/share/factory/ suffixed by the
13315 full destination path. This is useful for populating /etc
13316 with essential files, by copying them from vendor defaults
13317 shipped in /usr/share/factory/etc.
13318
13319 * A new command "systemctl preset-all" has been added that
13320 applies the service preset settings to all installed unit
13321 files. A new switch --preset-mode= has been added that
13322 controls whether only enable or only disable operations
13323 shall be executed.
13324
13325 * A new command "systemctl is-system-running" has been added
13326 that allows checking the overall state of the system, for
13327 example whether it is fully up and running.
13328
13329 * When the system boots up with an empty /etc, the equivalent
13330 to "systemctl preset-all" is executed during early boot, to
13331 make sure all default services are enabled after a factory
13332 reset.
13333
13334 * systemd now contains a minimal preset file that enables the
13335 most basic services systemd ships by default.
13336
13337 * Unit files' [Install] section gained a new DefaultInstance=
13338 field for defining the default instance to create if a
13339 template unit is enabled with no instance specified.
13340
13341 * A new passive target cryptsetup-pre.target has been added
13342 that may be used by services that need to make they run and
13343 finish before the first LUKS cryptographic device is set up.
13344
13345 * The /dev/loop-control and /dev/btrfs-control device nodes
13346 are now owned by the "disk" group by default, opening up
13347 access to this group.
13348
13349 * systemd-coredump will now automatically generate a
13350 stack trace of all core dumps taking place on the system,
13351 based on elfutils' libdw library. This stack trace is logged
13352 to the journal.
13353
13354 * systemd-coredump may now optionally store coredumps directly
13355 on disk (in /var/lib/systemd/coredump, possibly compressed),
13356 instead of storing them unconditionally in the journal. This
13357 mode is the new default. A new configuration file
13358 /etc/systemd/coredump.conf has been added to configure this
13359 and other parameters of systemd-coredump.
13360
13361 * coredumpctl gained a new "info" verb to show details about a
13362 specific coredump. A new switch "-1" has also been added
13363 that makes sure to only show information about the most
13364 recent entry instead of all entries. Also, as the tool is
13365 generally useful now the "systemd-" prefix of the binary
13366 name has been removed. Distributions that want to maintain
13367 compatibility with the old name should add a symlink from
13368 the old name to the new name.
13369
13370 * journald's SplitMode= now defaults to "uid". This makes sure
13371 that unprivileged users can access their own coredumps with
13372 coredumpctl without restrictions.
13373
13374 * New kernel command line options "systemd.wants=" (for
13375 pulling an additional unit during boot), "systemd.mask="
13376 (for masking a specific unit for the boot), and
13377 "systemd.debug-shell" (for enabling the debug shell on tty9)
13378 have been added. This is implemented in the new generator
13379 "systemd-debug-generator".
13380
13381 * systemd-nspawn will now by default filter a couple of
13382 syscalls for containers, among them those required for
13383 kernel module loading, direct x86 IO port access, swap
13384 management, and kexec. Most importantly though
13385 open_by_handle_at() is now prohibited for containers,
13386 closing a hole similar to a recently discussed vulnerability
13387 in docker regarding access to files on file hierarchies the
13388 container should normally not have access to. Note that, for
13389 nspawn, we generally make no security claims anyway (and
13390 this is explicitly documented in the man page), so this is
13391 just a fix for one of the most obvious problems.
13392
13393 * A new man page file-hierarchy(7) has been added that
13394 contains a minimized, modernized version of the file system
13395 layout systemd expects, similar in style to the FHS
13396 specification or hier(5). A new tool systemd-path(1) has
13397 been added to query many of these paths for the local
13398 machine and user.
13399
13400 * Automatic time-based clean-up of $XDG_RUNTIME_DIR is no
13401 longer done. Since the directory now has a per-user size
13402 limit, and is cleaned on logout this appears unnecessary,
13403 in particular since this now brings the lifecycle of this
13404 directory closer in line with how IPC objects are handled.
13405
13406 * systemd.pc now exports a number of additional directories,
13407 including $libdir (which is useful to identify the library
13408 path for the primary architecture of the system), and a
13409 couple of drop-in directories.
13410
13411 * udev's predictable network interface names now use the dev_port
13412 sysfs attribute, introduced in linux 3.15 instead of dev_id to
13413 distinguish between ports of the same PCI function. dev_id should
13414 only be used for ports using the same HW address, hence the need
13415 for dev_port.
13416
13417 * machined has been updated to export the OS version of a
13418 container (read from /etc/os-release and
13419 /usr/lib/os-release) on the bus. This is now shown in
13420 "machinectl status" for a machine.
13421
13422 * A new service setting RestartForceExitStatus= has been
13423 added. If configured to a set of exit signals or process
13424 return values, the service will be restarted when the main
13425 daemon process exits with any of them, regardless of the
13426 Restart= setting.
13427
13428 * systemctl's -H switch for connecting to remote systemd
13429 machines has been extended so that it may be used to
13430 directly connect to a specific container on the
13431 host. "systemctl -H root@foobar:waldi" will now connect as
13432 user "root" to host "foobar", and then proceed directly to
13433 the container named "waldi". Note that currently you have to
13434 authenticate as user "root" for this to work, as entering
13435 containers is a privileged operation.
13436
13437 Contributions from: Andreas Henriksson, Benjamin Steinwender,
13438 Carl Schaefer, Christian Hesse, Colin Ian King, Cristian
13439 Rodríguez, Daniel Mack, Dave Reisner, David Herrmann, Eugene
13440 Yakubovich, Filipe Brandenburger, Frederic Crozat, Hristo
13441 Venev, Jan Engelhardt, Jonathan Boulle, Kay Sievers, Lennart
13442 Poettering, Luke Shumaker, Mantas Mikulėnas, Marc-Antoine
13443 Perennou, Marcel Holtmann, Michael Marineau, Michael Olbrich,
13444 Michał Bartoszkiewicz, Michal Sekletar, Patrik Flykt, Ronan Le
13445 Martret, Ronny Chevalier, Ruediger Oertel, Steven Noonan,
13446 Susant Sahani, Thadeu Lima de Souza Cascardo, Thomas Hindoe
13447 Paaboel Andersen, Tom Gundersen, Tom Hirst, Umut Tezduyar
13448 Lindskog, Uoti Urpala, Zbigniew Jędrzejewski-Szmek
13449
13450 — Berlin, 2014-07-03
13451
13452 CHANGES WITH 214:
13453
13454 * As an experimental feature, udev now tries to lock the
13455 disk device node (flock(LOCK_SH|LOCK_NB)) while it
13456 executes events for the disk or any of its partitions.
13457 Applications like partitioning programs can lock the
13458 disk device node (flock(LOCK_EX)) and claim temporary
13459 device ownership that way; udev will entirely skip all event
13460 handling for this disk and its partitions. If the disk
13461 was opened for writing, the close will trigger a partition
13462 table rescan in udev's "watch" facility, and if needed
13463 synthesize "change" events for the disk and all its partitions.
13464 This is now unconditionally enabled, and if it turns out to
13465 cause major problems, we might turn it on only for specific
13466 devices, or might need to disable it entirely. Device Mapper
13467 devices are excluded from this logic.
13468
13469 * We temporarily dropped the "-l" switch for fsck invocations,
13470 since they collide with the flock() logic above. util-linux
13471 upstream has been changed already to avoid this conflict,
13472 and we will re-add "-l" as soon as util-linux with this
13473 change has been released.
13474
13475 * The dependency on libattr has been removed. Since a long
13476 time, the extended attribute calls have moved to glibc, and
13477 libattr is thus unnecessary.
13478
13479 * Virtualization detection works without privileges now. This
13480 means the systemd-detect-virt binary no longer requires
13481 CAP_SYS_PTRACE file capabilities, and our daemons can run
13482 with fewer privileges.
13483
13484 * systemd-networkd now runs under its own "systemd-network"
13485 user. It retains the CAP_NET_ADMIN, CAP_NET_BIND_SERVICE,
13486 CAP_NET_BROADCAST, CAP_NET_RAW capabilities though, but
13487 loses the ability to write to files owned by root this way.
13488
13489 * Similarly, systemd-resolved now runs under its own
13490 "systemd-resolve" user with no capabilities remaining.
13491
13492 * Similarly, systemd-bus-proxyd now runs under its own
13493 "systemd-bus-proxy" user with only CAP_IPC_OWNER remaining.
13494
13495 * systemd-networkd gained support for setting up "veth"
13496 virtual Ethernet devices for container connectivity, as well
13497 as GRE and VTI tunnels.
13498
13499 * systemd-networkd will no longer automatically attempt to
13500 manually load kernel modules necessary for certain tunnel
13501 transports. Instead, it is assumed the kernel loads them
13502 automatically when required. This only works correctly on
13503 very new kernels. On older kernels, please consider adding
13504 the kernel modules to /etc/modules-load.d/ as a work-around.
13505
13506 * The resolv.conf file systemd-resolved generates has been
13507 moved to /run/systemd/resolve/. If you have a symlink from
13508 /etc/resolv.conf, it might be necessary to correct it.
13509
13510 * Two new service settings, ProtectHome= and ProtectSystem=,
13511 have been added. When enabled, they will make the user data
13512 (such as /home) inaccessible or read-only and the system
13513 (such as /usr) read-only, for specific services. This allows
13514 very light-weight per-service sandboxing to avoid
13515 modifications of user data or system files from
13516 services. These two new switches have been enabled for all
13517 of systemd's long-running services, where appropriate.
13518
13519 * Socket units gained new SocketUser= and SocketGroup=
13520 settings to set the owner user and group of AF_UNIX sockets
13521 and FIFOs in the file system.
13522
13523 * Socket units gained a new RemoveOnStop= setting. If enabled,
13524 all FIFOS and sockets in the file system will be removed
13525 when the specific socket unit is stopped.
13526
13527 * Socket units gained a new Symlinks= setting. It takes a list
13528 of symlinks to create to file system sockets or FIFOs
13529 created by the specific Unix sockets. This is useful to
13530 manage symlinks to socket nodes with the same lifecycle as
13531 the socket itself.
13532
13533 * The /dev/log socket and /dev/initctl FIFO have been moved to
13534 /run, and have been replaced by symlinks. This allows
13535 connecting to these facilities even if PrivateDevices=yes is
13536 used for a service (which makes /dev/log itself unavailable,
13537 but /run is left). This also has the benefit of ensuring
13538 that /dev only contains device nodes, directories and
13539 symlinks, and nothing else.
13540
13541 * sd-daemon gained two new calls sd_pid_notify() and
13542 sd_pid_notifyf(). They are similar to sd_notify() and
13543 sd_notifyf(), but allow overriding of the source PID of
13544 notification messages if permissions permit this. This is
13545 useful to send notify messages on behalf of a different
13546 process (for example, the parent process). The
13547 systemd-notify tool has been updated to make use of this
13548 when sending messages (so that notification messages now
13549 originate from the shell script invoking systemd-notify and
13550 not the systemd-notify process itself. This should minimize
13551 a race where systemd fails to associate notification
13552 messages to services when the originating process already
13553 vanished.
13554
13555 * A new "on-abnormal" setting for Restart= has been added. If
13556 set, it will result in automatic restarts on all "abnormal"
13557 reasons for a process to exit, which includes unclean
13558 signals, core dumps, timeouts and watchdog timeouts, but
13559 does not include clean and unclean exit codes or clean
13560 signals. Restart=on-abnormal is an alternative for
13561 Restart=on-failure for services that shall be able to
13562 terminate and avoid restarts on certain errors, by
13563 indicating so with an unclean exit code. Restart=on-failure
13564 or Restart=on-abnormal is now the recommended setting for
13565 all long-running services.
13566
13567 * If the InaccessibleDirectories= service setting points to a
13568 mount point (or if there are any submounts contained within
13569 it), it is now attempted to completely unmount it, to make
13570 the file systems truly unavailable for the respective
13571 service.
13572
13573 * The ReadOnlyDirectories= service setting and
13574 systemd-nspawn's --read-only parameter are now recursively
13575 applied to all submounts, too.
13576
13577 * Mount units may now be created transiently via the bus APIs.
13578
13579 * The support for SysV and LSB init scripts has been removed
13580 from the systemd daemon itself. Instead, it is now
13581 implemented as a generator that creates native systemd units
13582 from these scripts when needed. This enables us to remove a
13583 substantial amount of legacy code from PID 1, following the
13584 fact that many distributions only ship a very small number
13585 of LSB/SysV init scripts nowadays.
13586
13587 * Privileged Xen (dom0) domains are not considered
13588 virtualization anymore by the virtualization detection
13589 logic. After all, they generally have unrestricted access to
13590 the hardware and usually are used to manage the unprivileged
13591 (domU) domains.
13592
13593 * systemd-tmpfiles gained a new "C" line type, for copying
13594 files or entire directories.
13595
13596 * systemd-tmpfiles "m" lines are now fully equivalent to "z"
13597 lines. So far, they have been non-globbing versions of the
13598 latter, and have thus been redundant. In future, it is
13599 recommended to only use "z". "m" has hence been removed
13600 from the documentation, even though it stays supported.
13601
13602 * A tmpfiles snippet to recreate the most basic structure in
13603 /var has been added. This is enough to create the /var/run →
13604 /run symlink and create a couple of structural
13605 directories. This allows systems to boot up with an empty or
13606 volatile /var. Of course, while with this change, the core OS
13607 now is capable with dealing with a volatile /var, not all
13608 user services are ready for it. However, we hope that sooner
13609 or later, many service daemons will be changed upstream so
13610 that they are able to automatically create their necessary
13611 directories in /var at boot, should they be missing. This is
13612 the first step to allow state-less systems that only require
13613 the vendor image for /usr to boot.
13614
13615 * systemd-nspawn has gained a new --tmpfs= switch to mount an
13616 empty tmpfs instance to a specific directory. This is
13617 particularly useful for making use of the automatic
13618 reconstruction of /var (see above), by passing --tmpfs=/var.
13619
13620 * Access modes specified in tmpfiles snippets may now be
13621 prefixed with "~", which indicates that they shall be masked
13622 by whether the existing file or directory is currently
13623 writable, readable or executable at all. Also, if specified,
13624 the sgid/suid/sticky bits will be masked for all
13625 non-directories.
13626
13627 * A new passive target unit "network-pre.target" has been
13628 added which is useful for services that shall run before any
13629 network is configured, for example firewall scripts.
13630
13631 * The "floppy" group that previously owned the /dev/fd*
13632 devices is no longer used. The "disk" group is now used
13633 instead. Distributions should probably deprecate usage of
13634 this group.
13635
13636 Contributions from: Camilo Aguilar, Christian Hesse, Colin Ian
13637 King, Cristian Rodríguez, Daniel Buch, Dave Reisner, David
13638 Strauss, Denis Tikhomirov, John, Jonathan Liu, Kay Sievers,
13639 Lennart Poettering, Mantas Mikulėnas, Mark Eichin, Ronny
13640 Chevalier, Susant Sahani, Thomas Blume, Thomas Hindoe Paaboel
13641 Andersen, Tom Gundersen, Umut Tezduyar Lindskog, Zbigniew
13642 Jędrzejewski-Szmek
13643
13644 — Berlin, 2014-06-11
13645
13646 CHANGES WITH 213:
13647
13648 * A new "systemd-timesyncd" daemon has been added for
13649 synchronizing the system clock across the network. It
13650 implements an SNTP client. In contrast to NTP
13651 implementations such as chrony or the NTP reference server,
13652 this only implements a client side, and does not bother with
13653 the full NTP complexity, focusing only on querying time from
13654 one remote server and synchronizing the local clock to
13655 it. Unless you intend to serve NTP to networked clients or
13656 want to connect to local hardware clocks, this simple NTP
13657 client should be more than appropriate for most
13658 installations. The daemon runs with minimal privileges, and
13659 has been hooked up with networkd to only operate when
13660 network connectivity is available. The daemon saves the
13661 current clock to disk every time a new NTP sync has been
13662 acquired, and uses this to possibly correct the system clock
13663 early at bootup, in order to accommodate for systems that
13664 lack an RTC such as the Raspberry Pi and embedded devices,
13665 and to make sure that time monotonically progresses on these
13666 systems, even if it is not always correct. To make use of
13667 this daemon, a new system user and group "systemd-timesync"
13668 needs to be created on installation of systemd.
13669
13670 * The queue "seqnum" interface of libudev has been disabled, as
13671 it was generally incompatible with device namespacing as
13672 sequence numbers of devices go "missing" if the devices are
13673 part of a different namespace.
13674
13675 * "systemctl list-timers" and "systemctl list-sockets" gained
13676 a --recursive switch for showing units of these types also
13677 for all local containers, similar in style to the already
13678 supported --recursive switch for "systemctl list-units".
13679
13680 * A new RebootArgument= setting has been added for service
13681 units, which may be used to specify a kernel reboot argument
13682 to use when triggering reboots with StartLimitAction=.
13683
13684 * A new FailureAction= setting has been added for service
13685 units which may be used to specify an operation to trigger
13686 when a service fails. This works similarly to
13687 StartLimitAction=, but unlike it, controls what is done
13688 immediately rather than only after several attempts to
13689 restart the service in question.
13690
13691 * hostnamed got updated to also expose the kernel name,
13692 release, and version on the bus. This is useful for
13693 executing commands like hostnamectl with the -H switch.
13694 systemd-analyze makes use of this to properly display
13695 details when running non-locally.
13696
13697 * The bootchart tool can now show cgroup information in the
13698 graphs it generates.
13699
13700 * The CFS CPU quota cgroup attribute is now exposed for
13701 services. The new CPUQuota= switch has been added for this
13702 which takes a percentage value. Setting this will have the
13703 result that a service may never get more CPU time than the
13704 specified percentage, even if the machine is otherwise idle.
13705
13706 * systemd-networkd learned IPIP and SIT tunnel support.
13707
13708 * LSB init scripts exposing a dependency on $network will now
13709 get a dependency on network-online.target rather than simply
13710 network.target. This should bring LSB handling closer to
13711 what it was on SysV systems.
13712
13713 * A new fsck.repair= kernel option has been added to control
13714 how fsck shall deal with unclean file systems at boot.
13715
13716 * The (.ini) configuration file parser will now silently ignore
13717 sections whose names begin with "X-". This may be used to maintain
13718 application-specific extension sections in unit files.
13719
13720 * machined gained a new API to query the IP addresses of
13721 registered containers. "machinectl status" has been updated
13722 to show these addresses in its output.
13723
13724 * A new call sd_uid_get_display() has been added to the
13725 sd-login APIs for querying the "primary" session of a
13726 user. The "primary" session of the user is elected from the
13727 user's sessions and generally a graphical session is
13728 preferred over a text one.
13729
13730 * A minimal systemd-resolved daemon has been added. It
13731 currently simply acts as a companion to systemd-networkd and
13732 manages resolv.conf based on per-interface DNS
13733 configuration, possibly supplied via DHCP. In the long run
13734 we hope to extend this into a local DNSSEC enabled DNS and
13735 mDNS cache.
13736
13737 * The systemd-networkd-wait-online tool is now enabled by
13738 default. It will delay network-online.target until a network
13739 connection has been configured. The tool primarily integrates
13740 with networkd, but will also make a best effort to make sense
13741 of network configuration performed in some other way.
13742
13743 * Two new service options StartupCPUShares= and
13744 StartupBlockIOWeight= have been added that work similarly to
13745 CPUShares= and BlockIOWeight= however only apply during
13746 system startup. This is useful to prioritize certain services
13747 differently during bootup than during normal runtime.
13748
13749 * hostnamed has been changed to prefer the statically
13750 configured hostname in /etc/hostname (unless set to
13751 'localhost' or empty) over any dynamic one supplied by
13752 dhcp. With this change, the rules for picking the hostname
13753 match more closely the rules of other configuration settings
13754 where the local administrator's configuration in /etc always
13755 overrides any other settings.
13756
13757 Contributions from: Ali H. Caliskan, Alison Chaiken, Bas van
13758 den Berg, Brandon Philips, Cristian Rodríguez, Daniel Buch,
13759 Dan Kilman, Dave Reisner, David Härdeman, David Herrmann,
13760 David Strauss, Dimitris Spingos, Djalal Harouni, Eelco
13761 Dolstra, Evan Nemerson, Florian Albrechtskirchinger, Greg
13762 Kroah-Hartman, Harald Hoyer, Holger Hans Peter Freyther, Jan
13763 Engelhardt, Jani Nikula, Jason St. John, Jeffrey Clark,
13764 Jonathan Boulle, Kay Sievers, Lennart Poettering, Lukas
13765 Nykryn, Lukasz Skalski, Łukasz Stelmach, Mantas Mikulėnas,
13766 Marcel Holtmann, Martin Pitt, Matthew Monaco, Michael
13767 Marineau, Michael Olbrich, Michal Sekletar, Mike Gilbert, Nis
13768 Martensen, Patrik Flykt, Philip Lorenz, poma, Ray Strode,
13769 Reyad Attiyat, Robert Milasan, Scott Thrasher, Stef Walter,
13770 Steven Siloti, Susant Sahani, Tanu Kaskinen, Thomas Bächler,
13771 Thomas Hindoe Paaboel Andersen, Tom Gundersen, Umut Tezduyar
13772 Lindskog, WaLyong Cho, Will Woods, Zbigniew
13773 Jędrzejewski-Szmek
13774
13775 — Beijing, 2014-05-28
13776
13777 CHANGES WITH 212:
13778
13779 * When restoring the screen brightness at boot, stay away from
13780 the darkest setting or from the lowest 5% of the available
13781 range, depending on which is the larger value of both. This
13782 should effectively protect the user from rebooting into a
13783 black screen, should the brightness have been set to minimum
13784 by accident.
13785
13786 * sd-login gained a new sd_machine_get_class() call to
13787 determine the class ("vm" or "container") of a machine
13788 registered with machined.
13789
13790 * sd-login gained new calls
13791 sd_peer_get_{session,owner_uid,unit,user_unit,slice,machine_name}(),
13792 to query the identity of the peer of a local AF_UNIX
13793 connection. They operate similarly to their sd_pid_get_xyz()
13794 counterparts.
13795
13796 * PID 1 will now maintain a system-wide system state engine
13797 with the states "starting", "running", "degraded",
13798 "maintenance", "stopping". These states are bound to system
13799 startup, normal runtime, runtime with at least one failed
13800 service, rescue/emergency mode and system shutdown. This
13801 state is shown in the "systemctl status" output when no unit
13802 name is passed. It is useful to determine system state, in
13803 particularly when doing so for many systems or containers at
13804 once.
13805
13806 * A new command "list-machines" has been added to "systemctl"
13807 that lists all local OS containers and shows their system
13808 state (see above), if systemd runs inside of them.
13809
13810 * systemctl gained a new "-r" switch to recursively enumerate
13811 units on all local containers, when used with the
13812 "list-unit" command (which is the default one that is
13813 executed when no parameters are specified).
13814
13815 * The GPT automatic partition discovery logic will now honour
13816 two GPT partition flags: one may be set on a partition to
13817 cause it to be mounted read-only, and the other may be set
13818 on a partition to ignore it during automatic discovery.
13819
13820 * Two new GPT type UUIDs have been added for automatic root
13821 partition discovery, for 32-bit and 64-bit ARM. This is not
13822 particularly useful for discovering the root directory on
13823 these architectures during bare-metal boots (since UEFI is
13824 not common there), but still very useful to allow booting of
13825 ARM disk images in nspawn with the -i option.
13826
13827 * MAC addresses of interfaces created with nspawn's
13828 --network-interface= switch will now be generated from the
13829 machine name, and thus be stable between multiple invocations
13830 of the container.
13831
13832 * logind will now automatically remove all IPC objects owned
13833 by a user if she or he fully logs out. This makes sure that
13834 users who are logged out cannot continue to consume IPC
13835 resources. This covers SysV memory, semaphores and message
13836 queues as well as POSIX shared memory and message
13837 queues. Traditionally, SysV and POSIX IPC had no lifecycle
13838 limits. With this functionality, that is corrected. This may
13839 be turned off by using the RemoveIPC= switch of logind.conf.
13840
13841 * The systemd-machine-id-setup and tmpfiles tools gained a
13842 --root= switch to operate on a specific root directory,
13843 instead of /.
13844
13845 * journald can now forward logged messages to the TTYs of all
13846 logged in users ("wall"). This is the default for all
13847 emergency messages now.
13848
13849 * A new tool systemd-journal-remote has been added to stream
13850 journal log messages across the network.
13851
13852 * /sys/fs/cgroup/ is now mounted read-only after all cgroup
13853 controller trees are mounted into it. Note that the
13854 directories mounted beneath it are not read-only. This is a
13855 security measure and is particularly useful because glibc
13856 actually includes a search logic to pick any tmpfs it can
13857 find to implement shm_open() if /dev/shm is not available
13858 (which it might very well be in namespaced setups).
13859
13860 * machinectl gained a new "poweroff" command to cleanly power
13861 down a local OS container.
13862
13863 * The PrivateDevices= unit file setting will now also drop the
13864 CAP_MKNOD capability from the capability bound set, and
13865 imply DevicePolicy=closed.
13866
13867 * PrivateDevices=, PrivateNetwork= and PrivateTmp= is now used
13868 comprehensively on all long-running systemd services where
13869 this is appropriate.
13870
13871 * systemd-udevd will now run in a disassociated mount
13872 namespace. To mount directories from udev rules, make sure to
13873 pull in mount units via SYSTEMD_WANTS properties.
13874
13875 * The kdbus support gained support for uploading policy into
13876 the kernel. sd-bus gained support for creating "monitoring"
13877 connections that can eavesdrop into all bus communication
13878 for debugging purposes.
13879
13880 * Timestamps may now be specified in seconds since the UNIX
13881 epoch Jan 1st, 1970 by specifying "@" followed by the value
13882 in seconds.
13883
13884 * Native tcpwrap support in systemd has been removed. tcpwrap
13885 is old code, not really maintained anymore and has serious
13886 shortcomings, and better options such as firewalls
13887 exist. For setups that require tcpwrap usage, please
13888 consider invoking your socket-activated service via tcpd,
13889 like on traditional inetd.
13890
13891 * A new system.conf configuration option
13892 DefaultTimerAccuracySec= has been added that controls the
13893 default AccuracySec= setting of .timer units.
13894
13895 * Timer units gained a new WakeSystem= switch. If enabled,
13896 timers configured this way will cause the system to resume
13897 from system suspend (if the system supports that, which most
13898 do these days).
13899
13900 * Timer units gained a new Persistent= switch. If enabled,
13901 timers configured this way will save to disk when they have
13902 been last triggered. This information is then used on next
13903 reboot to possible execute overdue timer events, that
13904 could not take place because the system was powered off.
13905 This enables simple anacron-like behaviour for timer units.
13906
13907 * systemctl's "list-timers" will now also list the time a
13908 timer unit was last triggered in addition to the next time
13909 it will be triggered.
13910
13911 * systemd-networkd will now assign predictable IPv4LL
13912 addresses to its local interfaces.
13913
13914 Contributions from: Brandon Philips, Daniel Buch, Daniel Mack,
13915 Dave Reisner, David Herrmann, Gerd Hoffmann, Greg
13916 Kroah-Hartman, Hendrik Brueckner, Jason St. John, Josh
13917 Triplett, Kay Sievers, Lennart Poettering, Marc-Antoine
13918 Perennou, Michael Marineau, Michael Olbrich, Miklos Vajna,
13919 Patrik Flykt, poma, Sebastian Thorarensen, Thomas Bächler,
13920 Thomas Hindoe Paaboel Andersen, Tomasz Torcz, Tom Gundersen,
13921 Umut Tezduyar Lindskog, Wieland Hoffmann, Zbigniew
13922 Jędrzejewski-Szmek
13923
13924 — Berlin, 2014-03-25
13925
13926 CHANGES WITH 211:
13927
13928 * A new unit file setting RestrictAddressFamilies= has been
13929 added to restrict which socket address families unit
13930 processes gain access to. This takes address family names
13931 like "AF_INET" or "AF_UNIX", and is useful to minimize the
13932 attack surface of services via exotic protocol stacks. This
13933 is built on seccomp system call filters.
13934
13935 * Two new unit file settings RuntimeDirectory= and
13936 RuntimeDirectoryMode= have been added that may be used to
13937 manage a per-daemon runtime directories below /run. This is
13938 an alternative for setting up directory permissions with
13939 tmpfiles snippets, and has the advantage that the runtime
13940 directory's lifetime is bound to the daemon runtime and that
13941 the daemon starts up with an empty directory each time. This
13942 is particularly useful when writing services that drop
13943 privileges using the User= or Group= setting.
13944
13945 * The DeviceAllow= unit setting now supports globbing for
13946 matching against device group names.
13947
13948 * The systemd configuration file system.conf gained new
13949 settings DefaultCPUAccounting=, DefaultBlockIOAccounting=,
13950 DefaultMemoryAccounting= to globally turn on/off accounting
13951 for specific resources (cgroups) for all units. These
13952 settings may still be overridden individually in each unit
13953 though.
13954
13955 * systemd-gpt-auto-generator is now able to discover /srv and
13956 root partitions in addition to /home and swap partitions. It
13957 also supports LUKS-encrypted partitions now. With this in
13958 place, automatic discovery of partitions to mount following
13959 the Discoverable Partitions Specification
13960 (https://systemd.io/DISCOVERABLE_PARTITIONS/)
13961 is now a lot more complete. This allows booting without
13962 /etc/fstab and without root= on the kernel command line on
13963 systems prepared appropriately.
13964
13965 * systemd-nspawn gained a new --image= switch which allows
13966 booting up disk images and Linux installations on any block
13967 device that follow the Discoverable Partitions Specification
13968 (see above). This means that installations made with
13969 appropriately updated installers may now be started and
13970 deployed using container managers, completely
13971 unmodified. (We hope that libvirt-lxc will add support for
13972 this feature soon, too.)
13973
13974 * systemd-nspawn gained a new --network-macvlan= setting to
13975 set up a private macvlan interface for the
13976 container. Similarly, systemd-networkd gained a new
13977 Kind=macvlan setting in .netdev files.
13978
13979 * systemd-networkd now supports configuring local addresses
13980 using IPv4LL.
13981
13982 * A new tool systemd-network-wait-online has been added to
13983 synchronously wait for network connectivity using
13984 systemd-networkd.
13985
13986 * The sd-bus.h bus API gained a new sd_bus_track object for
13987 tracking the lifecycle of bus peers. Note that sd-bus.h is
13988 still not a public API though (unless you specify
13989 --enable-kdbus on the configure command line, which however
13990 voids your warranty and you get no API stability guarantee).
13991
13992 * The $XDG_RUNTIME_DIR runtime directories for each user are
13993 now individual tmpfs instances, which has the benefit of
13994 introducing separate pools for each user, with individual
13995 size limits, and thus making sure that unprivileged clients
13996 can no longer negatively impact the system or other users by
13997 filling up their $XDG_RUNTIME_DIR. A new logind.conf setting
13998 RuntimeDirectorySize= has been introduced that allows
13999 controlling the default size limit for all users. It
14000 defaults to 10% of the available physical memory. This is no
14001 replacement for quotas on tmpfs though (which the kernel
14002 still does not support), as /dev/shm and /tmp are still
14003 shared resources used by both the system and unprivileged
14004 users.
14005
14006 * logind will now automatically turn off automatic suspending
14007 on laptop lid close when more than one display is
14008 connected. This was previously expected to be implemented
14009 individually in desktop environments (such as GNOME),
14010 however has been added to logind now, in order to fix a
14011 boot-time race where a desktop environment might not have
14012 been started yet and thus not been able to take an inhibitor
14013 lock at the time where logind already suspends the system
14014 due to a closed lid.
14015
14016 * logind will now wait at least 30s after each system
14017 suspend/resume cycle, and 3min after system boot before
14018 suspending the system due to a closed laptop lid. This
14019 should give USB docking stations and similar enough time to
14020 be probed and configured after system resume and boot in
14021 order to then act as suspend blocker.
14022
14023 * systemd-run gained a new --property= setting which allows
14024 initialization of resource control properties (and others)
14025 for the created scope or service unit. Example: "systemd-run
14026 --property=BlockIOWeight=10 updatedb" may be used to run
14027 updatedb at a low block IO scheduling weight.
14028
14029 * systemd-run's --uid=, --gid=, --setenv=, --setenv= switches
14030 now also work in --scope mode.
14031
14032 * When systemd is compiled with kdbus support, basic support
14033 for enforced policies is now in place. (Note that enabling
14034 kdbus still voids your warranty and no API compatibility
14035 promises are made.)
14036
14037 Contributions from: Andrey Borzenkov, Ansgar Burchardt, Armin
14038 K., Daniel Mack, Dave Reisner, David Herrmann, Djalal Harouni,
14039 Harald Hoyer, Henrik Grindal Bakken, Jasper St. Pierre, Kay
14040 Sievers, Kieran Clancy, Lennart Poettering, Lukas Nykryn,
14041 Mantas Mikulėnas, Marcel Holtmann, Mark Oteiza, Martin Pitt,
14042 Mike Gilbert, Peter Rajnoha, poma, Samuli Suominen, Stef
14043 Walter, Susant Sahani, Tero Roponen, Thomas Andersen, Thomas
14044 Bächler, Thomas Hindoe Paaboel Andersen, Tomasz Torcz, Tom
14045 Gundersen, Umut Tezduyar Lindskog, Uoti Urpala, Zachary Cook,
14046 Zbigniew Jędrzejewski-Szmek
14047
14048 — Berlin, 2014-03-12
14049
14050 CHANGES WITH 210:
14051
14052 * systemd will now relabel /dev after loading the SMACK policy
14053 according to SMACK rules.
14054
14055 * A new unit file option AppArmorProfile= has been added to
14056 set the AppArmor profile for the processes of a unit.
14057
14058 * A new condition check ConditionArchitecture= has been added
14059 to conditionalize units based on the system architecture, as
14060 reported by uname()'s "machine" field.
14061
14062 * systemd-networkd now supports matching on the system
14063 virtualization, architecture, kernel command line, hostname
14064 and machine ID.
14065
14066 * logind is now a lot more aggressive when suspending the
14067 machine due to a closed laptop lid. Instead of acting only
14068 on the lid close action, it will continuously watch the lid
14069 status and act on it. This is useful for laptops where the
14070 power button is on the outside of the chassis so that it can
14071 be reached without opening the lid (such as the Lenovo
14072 Yoga). On those machines, logind will now immediately
14073 re-suspend the machine if the power button has been
14074 accidentally pressed while the laptop was suspended and in a
14075 backpack or similar.
14076
14077 * logind will now watch SW_DOCK switches and inhibit reaction
14078 to the lid switch if it is pressed. This means that logind
14079 will not suspend the machine anymore if the lid is closed
14080 and the system is docked, if the laptop supports SW_DOCK
14081 notifications via the input layer. Note that ACPI docking
14082 stations do not generate this currently. Also note that this
14083 logic is usually not fully sufficient and Desktop
14084 Environments should take a lid switch inhibitor lock when an
14085 external display is connected, as systemd will not watch
14086 this on its own.
14087
14088 * nspawn will now make use of the devices cgroup controller by
14089 default, and only permit creation of and access to the usual
14090 API device nodes like /dev/null or /dev/random, as well as
14091 access to (but not creation of) the pty devices.
14092
14093 * We will now ship a default .network file for
14094 systemd-networkd that automatically configures DHCP for
14095 network interfaces created by nspawn's --network-veth or
14096 --network-bridge= switches.
14097
14098 * systemd will now understand the usual M, K, G, T suffixes
14099 according to SI conventions (i.e. to the base 1000) when
14100 referring to throughput and hardware metrics. It will stay
14101 with IEC conventions (i.e. to the base 1024) for software
14102 metrics, according to what is customary according to
14103 Wikipedia. We explicitly document which base applies for
14104 each configuration option.
14105
14106 * The DeviceAllow= setting in unit files now supports a syntax to
14107 allow-list an entire group of devices node majors at once, based on
14108 the /proc/devices listing. For example, with the string "char-pts",
14109 it is now possible to allow-list all current and future pseudo-TTYs
14110 at once.
14111
14112 * sd-event learned a new "post" event source. Event sources of
14113 this type are triggered by the dispatching of any event
14114 source of a type that is not "post". This is useful for
14115 implementing clean-up and check event sources that are
14116 triggered by other work being done in the program.
14117
14118 * systemd-networkd is no longer statically enabled, but uses
14119 the usual [Install] sections so that it can be
14120 enabled/disabled using systemctl. It still is enabled by
14121 default however.
14122
14123 * When creating a veth interface pair with systemd-nspawn, the
14124 host side will now be prefixed with "vb-" if
14125 --network-bridge= is used, and with "ve-" if --network-veth
14126 is used. This way, it is easy to distinguish these cases on
14127 the host, for example to apply different configuration to
14128 them with systemd-networkd.
14129
14130 * The compatibility libraries for libsystemd-journal.so,
14131 libsystem-id128.so, libsystemd-login.so and
14132 libsystemd-daemon.so do not make use of IFUNC
14133 anymore. Instead, we now build libsystemd.so multiple times
14134 under these alternative names. This means that the footprint
14135 is drastically increased, but given that these are
14136 transitional compatibility libraries, this should not matter
14137 much. This change has been made necessary to support the ARM
14138 platform for these compatibility libraries, as the ARM
14139 toolchain is not really at the same level as the toolchain
14140 for other architectures like x86 and does not support
14141 IFUNC. Please make sure to use --enable-compat-libs only
14142 during a transitional period!
14143
14144 * The .include syntax has been deprecated and is not documented
14145 anymore. Drop-in files in .d directories should be used instead.
14146
14147 Contributions from: Andreas Fuchs, Armin K., Colin Walters,
14148 Daniel Mack, Dave Reisner, David Herrmann, Djalal Harouni,
14149 Holger Schurig, Jason A. Donenfeld, Jason St. John, Jasper
14150 St. Pierre, Kay Sievers, Lennart Poettering, Łukasz Stelmach,
14151 Marcel Holtmann, Michael Scherer, Michal Sekletar, Mike
14152 Gilbert, Samuli Suominen, Thomas Bächler, Thomas Hindoe
14153 Paaboel Andersen, Tom Gundersen, Umut Tezduyar Lindskog,
14154 Zbigniew Jędrzejewski-Szmek
14155
14156 — Berlin, 2014-02-24
14157
14158 CHANGES WITH 209:
14159
14160 * A new component "systemd-networkd" has been added that can
14161 be used to configure local network interfaces statically or
14162 via DHCP. It is capable of bringing up bridges, VLANs, and
14163 bonding. Currently, no hook-ups for interactive network
14164 configuration are provided. Use this for your initrd,
14165 container, embedded, or server setup if you need a simple,
14166 yet powerful, network configuration solution. This
14167 configuration subsystem is quite nifty, as it allows wildcard
14168 hotplug matching in interfaces. For example, with a single
14169 configuration snippet, you can configure that all Ethernet
14170 interfaces showing up are automatically added to a bridge,
14171 or similar. It supports link-sensing and more.
14172
14173 * A new tool "systemd-socket-proxyd" has been added which can
14174 act as a bidirectional proxy for TCP sockets. This is
14175 useful for adding socket activation support to services that
14176 do not actually support socket activation, including virtual
14177 machines and the like.
14178
14179 * Add a new tool to save/restore rfkill state on
14180 shutdown/boot.
14181
14182 * Save/restore state of keyboard backlights in addition to
14183 display backlights on shutdown/boot.
14184
14185 * udev learned a new SECLABEL{} construct to label device
14186 nodes with a specific security label when they appear. For
14187 now, only SECLABEL{selinux} is supported, but the syntax is
14188 prepared for additional security frameworks.
14189
14190 * udev gained a new scheme to configure link-level attributes
14191 from files in /etc/systemd/network/*.link. These files can
14192 match against MAC address, device path, driver name and type,
14193 and will apply attributes like the naming policy, link speed,
14194 MTU, duplex settings, Wake-on-LAN settings, MAC address, MAC
14195 address assignment policy (randomized, …).
14196
14197 * The configuration of network interface naming rules for
14198 "permanent interface names" has changed: a new NamePolicy=
14199 setting in the [Link] section of .link files determines the
14200 priority of possible naming schemes (onboard, slot, MAC,
14201 path). The default value of this setting is determined by
14202 /usr/lib/net/links/99-default.link. Old
14203 80-net-name-slot.rules udev configuration file has been
14204 removed, so local configuration overriding this file should
14205 be adapted to override 99-default.link instead.
14206
14207 * When the User= switch is used in a unit file, also
14208 initialize $SHELL= based on the user database entry.
14209
14210 * systemd no longer depends on libdbus. All communication is
14211 now done with sd-bus, systemd's low-level bus library
14212 implementation.
14213
14214 * kdbus support has been added to PID 1 itself. When kdbus is
14215 enabled, this causes PID 1 to set up the system bus and
14216 enable support for a new ".busname" unit type that
14217 encapsulates bus name activation on kdbus. It works a little
14218 bit like ".socket" units, except for bus names. A new
14219 generator has been added that converts classic dbus1 service
14220 activation files automatically into native systemd .busname
14221 and .service units.
14222
14223 * sd-bus: add a light-weight vtable implementation that allows
14224 defining objects on the bus with a simple static const
14225 vtable array of its methods, signals and properties.
14226
14227 * systemd will not generate or install static dbus
14228 introspection data anymore to /usr/share/dbus-1/interfaces,
14229 as the precise format of these files is unclear, and
14230 nothing makes use of it.
14231
14232 * A proxy daemon is now provided to proxy clients connecting
14233 via classic D-Bus AF_UNIX sockets to kdbus, to provide full
14234 compatibility with classic D-Bus.
14235
14236 * A bus driver implementation has been added that supports the
14237 classic D-Bus bus driver calls on kdbus, also for
14238 compatibility purposes.
14239
14240 * A new API "sd-event.h" has been added that implements a
14241 minimal event loop API built around epoll. It provides a
14242 couple of features that direct epoll usage is lacking:
14243 prioritization of events, scales to large numbers of timer
14244 events, per-event timer slack (accuracy), system-wide
14245 coalescing of timer events, exit handlers, watchdog
14246 supervision support using systemd's sd_notify() API, child
14247 process handling.
14248
14249 * A new API "sd-rntl.h" has been added that provides an API
14250 around the route netlink interface of the kernel, similar in
14251 style to "sd-bus.h".
14252
14253 * A new API "sd-dhcp-client.h" has been added that provides a
14254 small DHCPv4 client-side implementation. This is used by
14255 "systemd-networkd".
14256
14257 * There is a new kernel command line option
14258 "systemd.restore_state=0|1". When set to "0", none of the
14259 systemd tools will restore saved runtime state to hardware
14260 devices. More specifically, the rfkill and backlight states
14261 are not restored.
14262
14263 * The FsckPassNo= compatibility option in mount/service units
14264 has been removed. The fstab generator will now add the
14265 necessary dependencies automatically, and does not require
14266 PID1's support for that anymore.
14267
14268 * journalctl gained a new switch, --list-boots, that lists
14269 recent boots with their times and boot IDs.
14270
14271 * The various tools like systemctl, loginctl, timedatectl,
14272 busctl, systemd-run, … have gained a new switch "-M" to
14273 connect to a specific, local OS container (as direct
14274 connection, without requiring SSH). This works on any
14275 container that is registered with machined, such as those
14276 created by libvirt-lxc or nspawn.
14277
14278 * systemd-run and systemd-analyze also gained support for "-H"
14279 to connect to remote hosts via SSH. This is particularly
14280 useful for systemd-run because it enables queuing of jobs
14281 onto remote systems.
14282
14283 * machinectl gained a new command "login" to open a getty
14284 login in any local container. This works with any container
14285 that is registered with machined (such as those created by
14286 libvirt-lxc or nspawn), and which runs systemd inside.
14287
14288 * machinectl gained a new "reboot" command that may be used to
14289 trigger a reboot on a specific container that is registered
14290 with machined. This works on any container that runs an init
14291 system of some kind.
14292
14293 * systemctl gained a new "list-timers" command to print a nice
14294 listing of installed timer units with the times they elapse
14295 next.
14296
14297 * Alternative reboot() parameters may now be specified on the
14298 "systemctl reboot" command line and are passed to the
14299 reboot() system call.
14300
14301 * systemctl gained a new --job-mode= switch to configure the
14302 mode to queue a job with. This is a more generic version of
14303 --fail, --irreversible, and --ignore-dependencies, which are
14304 still available but not advertised anymore.
14305
14306 * /etc/systemd/system.conf gained new settings to configure
14307 various default timeouts of units, as well as the default
14308 start limit interval and burst. These may still be overridden
14309 within each Unit.
14310
14311 * PID1 will now export on the bus profile data of the security
14312 policy upload process (such as the SELinux policy upload to
14313 the kernel).
14314
14315 * journald: when forwarding logs to the console, include
14316 timestamps (following the setting in
14317 /sys/module/printk/parameters/time).
14318
14319 * OnCalendar= in timer units now understands the special
14320 strings "yearly" and "annually". (Both are equivalent)
14321
14322 * The accuracy of timer units is now configurable with the new
14323 AccuracySec= setting. It defaults to 1min.
14324
14325 * A new dependency type JoinsNamespaceOf= has been added that
14326 allows running two services within the same /tmp and network
14327 namespace, if PrivateNetwork= or PrivateTmp= are used.
14328
14329 * A new command "cat" has been added to systemctl. It outputs
14330 the original unit file of a unit, and concatenates the
14331 contents of additional "drop-in" unit file snippets, so that
14332 the full configuration is shown.
14333
14334 * systemctl now supports globbing on the various "list-xyz"
14335 commands, like "list-units" or "list-sockets", as well as on
14336 those commands which take multiple unit names.
14337
14338 * journalctl's --unit= switch gained support for globbing.
14339
14340 * All systemd daemons now make use of the watchdog logic so
14341 that systemd automatically notices when they hang.
14342
14343 * If the $container_ttys environment variable is set,
14344 getty-generator will automatically spawn a getty for each
14345 listed tty. This is useful for container managers to request
14346 login gettys to be spawned on as many ttys as needed.
14347
14348 * %h, %s, %U specifier support is not available anymore when
14349 used in unit files for PID 1. This is because NSS calls are
14350 not safe from PID 1. They stay available for --user
14351 instances of systemd, and as special case for the root user.
14352
14353 * loginctl gained a new "--no-legend" switch to turn off output
14354 of the legend text.
14355
14356 * The "sd-login.h" API gained three new calls:
14357 sd_session_is_remote(), sd_session_get_remote_user(),
14358 sd_session_get_remote_host() to query information about
14359 remote sessions.
14360
14361 * The udev hardware database now also carries vendor/product
14362 information of SDIO devices.
14363
14364 * The "sd-daemon.h" API gained a new sd_watchdog_enabled() to
14365 determine whether watchdog notifications are requested by
14366 the system manager.
14367
14368 * Socket-activated per-connection services now include a
14369 short description of the connection parameters in the
14370 description.
14371
14372 * tmpfiles gained a new "--boot" option. When this is not used,
14373 only lines where the command character is not suffixed with
14374 "!" are executed. When this option is specified, those
14375 options are executed too. This partitions tmpfiles
14376 directives into those that can be safely executed at any
14377 time, and those which should be run only at boot (for
14378 example, a line that creates /run/nologin).
14379
14380 * A new API "sd-resolve.h" has been added which provides a simple
14381 asynchronous wrapper around glibc NSS hostname resolution
14382 calls, such as getaddrinfo(). In contrast to glibc's
14383 getaddrinfo_a(), it does not use signals. In contrast to most
14384 other asynchronous name resolution libraries, this one does
14385 not reimplement DNS, but reuses NSS, so that alternate
14386 hostname resolution systems continue to work, such as mDNS,
14387 LDAP, etc. This API is based on libasyncns, but it has been
14388 cleaned up for inclusion in systemd.
14389
14390 * The APIs "sd-journal.h", "sd-login.h", "sd-id128.h",
14391 "sd-daemon.h" are no longer found in individual libraries
14392 libsystemd-journal.so, libsystemd-login.so,
14393 libsystemd-id128.so, libsystemd-daemon.so. Instead, we have
14394 merged them into a single library, libsystemd.so, which
14395 provides all symbols. The reason for this is cyclic
14396 dependencies, as these libraries tend to use each other's
14397 symbols. So far, we have managed to workaround that by linking
14398 a copy of a good part of our code into each of these
14399 libraries again and again, which, however, makes certain
14400 things hard to do, like sharing static variables. Also, it
14401 substantially increases footprint. With this change, there
14402 is only one library for the basic APIs systemd
14403 provides. Also, "sd-bus.h", "sd-memfd.h", "sd-event.h",
14404 "sd-rtnl.h", "sd-resolve.h", "sd-utf8.h" are found in this
14405 library as well, however are subject to the --enable-kdbus
14406 switch (see below). Note that "sd-dhcp-client.h" is not part
14407 of this library (this is because it only consumes, never
14408 provides, services of/to other APIs). To make the transition
14409 easy from the separate libraries to the unified one, we
14410 provide the --enable-compat-libs compile-time switch which
14411 will generate stub libraries that are compatible with the
14412 old ones but redirect all calls to the new one.
14413
14414 * All of the kdbus logic and the new APIs "sd-bus.h",
14415 "sd-memfd.h", "sd-event.h", "sd-rtnl.h", "sd-resolve.h",
14416 and "sd-utf8.h" are compile-time optional via the
14417 "--enable-kdbus" switch, and they are not compiled in by
14418 default. To make use of kdbus, you have to explicitly enable
14419 the switch. Note however, that neither the kernel nor the
14420 userspace API for all of this is considered stable yet. We
14421 want to maintain the freedom to still change the APIs for
14422 now. By specifying this build-time switch, you acknowledge
14423 that you are aware of the instability of the current
14424 APIs.
14425
14426 * Also, note that while kdbus is pretty much complete,
14427 it lacks one thing: proper policy support. This means you
14428 can build a fully working system with all features; however,
14429 it will be highly insecure. Policy support will be added in
14430 one of the next releases, at the same time that we will
14431 declare the APIs stable.
14432
14433 * When the kernel command line argument "kdbus" is specified,
14434 systemd will automatically load the kdbus.ko kernel module. At
14435 this stage of development, it is only useful for testing kdbus
14436 and should not be used in production. Note: if "--enable-kdbus"
14437 is specified, and the kdbus.ko kernel module is available, and
14438 "kdbus" is added to the kernel command line, the entire system
14439 runs with kdbus instead of dbus-daemon, with the above mentioned
14440 problem of missing the system policy enforcement. Also a future
14441 version of kdbus.ko or a newer systemd will not be compatible with
14442 each other, and will unlikely be able to boot the machine if only
14443 one of them is updated.
14444
14445 * systemctl gained a new "import-environment" command which
14446 uploads the caller's environment (or parts thereof) into the
14447 service manager so that it is inherited by services started
14448 by the manager. This is useful to upload variables like
14449 $DISPLAY into the user service manager.
14450
14451 * A new PrivateDevices= switch has been added to service units
14452 which allows running a service with a namespaced /dev
14453 directory that does not contain any device nodes for
14454 physical devices. More specifically, it only includes devices
14455 such as /dev/null, /dev/urandom, and /dev/zero which are API
14456 entry points.
14457
14458 * logind has been extended to support behaviour like VT
14459 switching on seats that do not support a VT. This makes
14460 multi-session available on seats that are not the first seat
14461 (seat0), and on systems where kernel support for VTs has
14462 been disabled at compile-time.
14463
14464 * If a process holds a delay lock for system sleep or shutdown
14465 and fails to release it in time, we will now log its
14466 identity. This makes it easier to identify processes that
14467 cause slow suspends or power-offs.
14468
14469 * When parsing /etc/crypttab, support for a new key-slot=
14470 option as supported by Debian is added. It allows indicating
14471 which LUKS slot to use on disk, speeding up key loading.
14472
14473 * The sd_journal_sendv() API call has been checked and
14474 officially declared to be async-signal-safe so that it may
14475 be invoked from signal handlers for logging purposes.
14476
14477 * Boot-time status output is now enabled automatically after a
14478 short timeout if boot does not progress, in order to give
14479 the user an indication what she or he is waiting for.
14480
14481 * The boot-time output has been improved to show how much time
14482 remains until jobs expire.
14483
14484 * The KillMode= switch in service units gained a new possible
14485 value "mixed". If set, and the unit is shut down, then the
14486 initial SIGTERM signal is sent only to the main daemon
14487 process, while the following SIGKILL signal is sent to
14488 all remaining processes of the service.
14489
14490 * When a scope unit is registered, a new property "Controller"
14491 may be set. If set to a valid bus name, systemd will send a
14492 RequestStop() signal to this name when it would like to shut
14493 down the scope. This may be used to hook manager logic into
14494 the shutdown logic of scope units. Also, scope units may now
14495 be put in a special "abandoned" state, in which case the
14496 manager process which created them takes no further
14497 responsibilities for it.
14498
14499 * When reading unit files, systemd will now verify
14500 the access mode of these files, and warn about certain
14501 suspicious combinations. This has been added to make it
14502 easier to track down packaging bugs where unit files are
14503 marked executable or world-writable.
14504
14505 * systemd-nspawn gained a new "--setenv=" switch to set
14506 container-wide environment variables. The similar option in
14507 systemd-activate was renamed from "--environment=" to
14508 "--setenv=" for consistency.
14509
14510 * systemd-nspawn has been updated to create a new kdbus domain
14511 for each container that is invoked, thus allowing each
14512 container to have its own set of system and user buses,
14513 independent of the host.
14514
14515 * systemd-nspawn gained a new --drop-capability= switch to run
14516 the container with less capabilities than the default. Both
14517 --drop-capability= and --capability= now take the special
14518 string "all" for dropping or keeping all capabilities.
14519
14520 * systemd-nspawn gained new switches for executing containers
14521 with specific SELinux labels set.
14522
14523 * systemd-nspawn gained a new --quiet switch to not generate
14524 any additional output but the container's own console
14525 output.
14526
14527 * systemd-nspawn gained a new --share-system switch to run a
14528 container without PID namespacing enabled.
14529
14530 * systemd-nspawn gained a new --register= switch to control
14531 whether the container is registered with systemd-machined or
14532 not. This is useful for containers that do not run full
14533 OS images, but only specific apps.
14534
14535 * systemd-nspawn gained a new --keep-unit which may be used
14536 when invoked as the only program from a service unit, and
14537 results in registration of the unit service itself in
14538 systemd-machined, instead of a newly opened scope unit.
14539
14540 * systemd-nspawn gained a new --network-interface= switch for
14541 moving arbitrary interfaces to the container. The new
14542 --network-veth switch creates a virtual Ethernet connection
14543 between host and container. The new --network-bridge=
14544 switch then allows assigning the host side of this virtual
14545 Ethernet connection to a bridge device.
14546
14547 * systemd-nspawn gained a new --personality= switch for
14548 setting the kernel personality for the container. This is
14549 useful when running a 32-bit container on a 64-bit host. A
14550 similar option Personality= is now also available for service
14551 units to use.
14552
14553 * logind will now also track a "Desktop" identifier for each
14554 session which encodes the desktop environment of it. This is
14555 useful for desktop environments that want to identify
14556 multiple running sessions of itself easily.
14557
14558 * A new SELinuxContext= setting for service units has been
14559 added that allows setting a specific SELinux execution
14560 context for a service.
14561
14562 * Most systemd client tools will now honour $SYSTEMD_LESS for
14563 settings of the "less" pager. By default, these tools will
14564 override $LESS to allow certain operations to work, such as
14565 jump-to-the-end. With $SYSTEMD_LESS, it is possible to
14566 influence this logic.
14567
14568 * systemd's "seccomp" hook-up has been changed to make use of
14569 the libseccomp library instead of using its own
14570 implementation. This has benefits for portability among
14571 other things.
14572
14573 * For usage together with SystemCallFilter=, a new
14574 SystemCallErrorNumber= setting has been introduced that
14575 allows configuration of a system error number to be returned
14576 on filtered system calls, instead of immediately killing the
14577 process. Also, SystemCallArchitectures= has been added to
14578 limit access to system calls of a particular architecture
14579 (in order to turn off support for unused secondary
14580 architectures). There is also a global
14581 SystemCallArchitectures= setting in system.conf now to turn
14582 off support for non-native system calls system-wide.
14583
14584 * systemd requires a kernel with a working name_to_handle_at(),
14585 please see the kernel config requirements in the README file.
14586
14587 Contributions from: Adam Williamson, Alex Jia, Anatol Pomozov,
14588 Ansgar Burchardt, AppleBloom, Auke Kok, Bastien Nocera,
14589 Chengwei Yang, Christian Seiler, Colin Guthrie, Colin Walters,
14590 Cristian Rodríguez, Daniel Buch, Daniele Medri, Daniel J
14591 Walsh, Daniel Mack, Dan McGee, Dave Reisner, David Coppa,
14592 David Herrmann, David Strauss, Djalal Harouni, Dmitry Pisklov,
14593 Elia Pinto, Florian Weimer, George McCollister, Goffredo
14594 Baroncelli, Greg Kroah-Hartman, Hendrik Brueckner, Igor
14595 Zhbanov, Jan Engelhardt, Jan Janssen, Jason A. Donenfeld,
14596 Jason St. John, Jasper St. Pierre, Jóhann B. Guðmundsson, Jose
14597 Ignacio Naranjo, Karel Zak, Kay Sievers, Kristian Høgsberg,
14598 Lennart Poettering, Lubomir Rintel, Lukas Nykryn, Lukasz
14599 Skalski, Łukasz Stelmach, Luke Shumaker, Mantas Mikulėnas,
14600 Marc-Antoine Perennou, Marcel Holtmann, Marcos Felipe Rasia de
14601 Mello, Marko Myllynen, Martin Pitt, Matthew Monaco, Michael
14602 Marineau, Michael Scherer, Michał Górny, Michal Sekletar,
14603 Michele Curti, Oleksii Shevchuk, Olivier Brunel, Patrik Flykt,
14604 Pavel Holica, Raudi, Richard Marko, Ronny Chevalier, Sébastien
14605 Luttringer, Sergey Ptashnick, Shawn Landden, Simon Peeters,
14606 Stefan Beller, Susant Sahani, Sylvain Plantefeve, Sylvia Else,
14607 Tero Roponen, Thomas Bächler, Thomas Hindoe Paaboel Andersen,
14608 Tom Gundersen, Umut Tezduyar Lindskog, Unai Uribarri, Václav
14609 Pavlín, Vincent Batts, WaLyong Cho, William Giokas, Yang
14610 Zhiyong, Yin Kangkai, Yuxuan Shui, Zbigniew Jędrzejewski-Szmek
14611
14612 — Berlin, 2014-02-20
14613
14614 CHANGES WITH 208:
14615
14616 * logind has gained support for facilitating privileged input
14617 and drm device access for unprivileged clients. This work is
14618 useful to allow Wayland display servers (and similar
14619 programs, such as kmscon) to run under the user's ID and
14620 access input and drm devices which are normally
14621 protected. When this is used (and the kernel is new enough)
14622 logind will "mute" IO on the file descriptors passed to
14623 Wayland as long as it is in the background and "unmute" it
14624 if it returns into the foreground. This allows secure
14625 session switching without allowing background sessions to
14626 eavesdrop on input and display data. This also introduces
14627 session switching support if VT support is turned off in the
14628 kernel, and on seats that are not seat0.
14629
14630 * A new kernel command line option luks.options= is understood
14631 now which allows specifying LUKS options for usage for LUKS
14632 encrypted partitions specified with luks.uuid=.
14633
14634 * tmpfiles.d(5) snippets may now use specifier expansion in
14635 path names. More specifically %m, %b, %H, %v, are now
14636 replaced by the local machine id, boot id, hostname, and
14637 kernel version number.
14638
14639 * A new tmpfiles.d(5) command "m" has been introduced which
14640 may be used to change the owner/group/access mode of a file
14641 or directory if it exists, but do nothing if it does not.
14642
14643 * This release removes high-level support for the
14644 MemorySoftLimit= cgroup setting. The underlying kernel
14645 cgroup attribute memory.soft_limit= is currently badly
14646 designed and likely to be removed from the kernel API in its
14647 current form, hence we should not expose it for now.
14648
14649 * The memory.use_hierarchy cgroup attribute is now enabled for
14650 all cgroups systemd creates in the memory cgroup
14651 hierarchy. This option is likely to be come the built-in
14652 default in the kernel anyway, and the non-hierarchical mode
14653 never made much sense in the intrinsically hierarchical
14654 cgroup system.
14655
14656 * A new field _SYSTEMD_SLICE= is logged along with all journal
14657 messages containing the slice a message was generated
14658 from. This is useful to allow easy per-customer filtering of
14659 logs among other things.
14660
14661 * systemd-journald will no longer adjust the group of journal
14662 files it creates to the "systemd-journal" group. Instead we
14663 rely on the journal directory to be owned by the
14664 "systemd-journal" group, and its setgid bit set, so that the
14665 kernel file system layer will automatically enforce that
14666 journal files inherit this group assignment. The reason for
14667 this change is that we cannot allow NSS look-ups from
14668 journald which would be necessary to resolve
14669 "systemd-journal" to a numeric GID, because this might
14670 create deadlocks if NSS involves synchronous queries to
14671 other daemons (such as nscd, or sssd) which in turn are
14672 logging clients of journald and might block on it, which
14673 would then dead lock. A tmpfiles.d(5) snippet included in
14674 systemd will make sure the setgid bit and group are
14675 properly set on the journal directory if it exists on every
14676 boot. However, we recommend adjusting it manually after
14677 upgrades too (or from RPM scriptlets), so that the change is
14678 not delayed until next reboot.
14679
14680 * Backlight and random seed files in /var/lib/ have moved into
14681 the /var/lib/systemd/ directory, in order to centralize all
14682 systemd generated files in one directory.
14683
14684 * Boot time performance measurements (as displayed by
14685 "systemd-analyze" for example) will now read ACPI 5.0 FPDT
14686 performance information if that's available to determine how
14687 much time BIOS and boot loader initialization required. With
14688 a sufficiently new BIOS you hence no longer need to boot
14689 with Gummiboot to get access to such information.
14690
14691 Contributions from: Andrey Borzenkov, Chen Jie, Colin Walters,
14692 Cristian Rodríguez, Dave Reisner, David Herrmann, David
14693 Mackey, David Strauss, Eelco Dolstra, Evan Callicoat, Gao
14694 feng, Harald Hoyer, Jimmie Tauriainen, Kay Sievers, Lennart
14695 Poettering, Lukas Nykryn, Mantas Mikulėnas, Martin Pitt,
14696 Michael Scherer, Michał Górny, Mike Gilbert, Patrick McCarty,
14697 Sebastian Ott, Tom Gundersen, Zbigniew Jędrzejewski-Szmek
14698
14699 — Berlin, 2013-10-02
14700
14701 CHANGES WITH 207:
14702
14703 * The Restart= option for services now understands a new
14704 on-watchdog setting, which will restart the service
14705 automatically if the service stops sending out watchdog keep
14706 alive messages (as configured with WatchdogSec=).
14707
14708 * The getty generator (which is responsible for bringing up a
14709 getty on configured serial consoles) will no longer only
14710 start a getty on the primary kernel console but on all
14711 others, too. This makes the order in which console= is
14712 specified on the kernel command line less important.
14713
14714 * libsystemd-logind gained a new sd_session_get_vt() call to
14715 retrieve the VT number of a session.
14716
14717 * If the option "tries=0" is set for an entry of /etc/crypttab
14718 its passphrase is queried indefinitely instead of any
14719 maximum number of tries.
14720
14721 * If a service with a configure PID file terminates its PID
14722 file will now be removed automatically if it still exists
14723 afterwards. This should put an end to stale PID files.
14724
14725 * systemd-run will now also take relative binary path names
14726 for execution and no longer insists on absolute paths.
14727
14728 * InaccessibleDirectories= and ReadOnlyDirectories= now take
14729 paths that are optionally prefixed with "-" to indicate that
14730 it should not be considered a failure if they do not exist.
14731
14732 * journalctl -o (and similar commands) now understands a new
14733 output mode "short-precise", it is similar to "short" but
14734 shows timestamps with usec accuracy.
14735
14736 * The option "discard" (as known from Debian) is now
14737 synonymous to "allow-discards" in /etc/crypttab. In fact,
14738 "discard" is preferred now (since it is easier to remember
14739 and type).
14740
14741 * Some licensing clean-ups were made, so that more code is now
14742 LGPL-2.1 licensed than before.
14743
14744 * A minimal tool to save/restore the display backlight
14745 brightness across reboots has been added. It will store the
14746 backlight setting as late as possible at shutdown, and
14747 restore it as early as possible during reboot.
14748
14749 * A logic to automatically discover and enable home and swap
14750 partitions on GPT disks has been added. With this in place
14751 /etc/fstab becomes optional for many setups as systemd can
14752 discover certain partitions located on the root disk
14753 automatically. Home partitions are recognized under their
14754 GPT type ID 933ac7e12eb44f13b8440e14e2aef915. Swap
14755 partitions are recognized under their GPT type ID
14756 0657fd6da4ab43c484e50933c84b4f4f.
14757
14758 * systemd will no longer pass any environment from the kernel
14759 or initrd to system services. If you want to set an
14760 environment for all services, do so via the kernel command
14761 line systemd.setenv= assignment.
14762
14763 * The systemd-sysctl tool no longer natively reads the file
14764 /etc/sysctl.conf. If desired, the file should be symlinked
14765 from /etc/sysctl.d/99-sysctl.conf. Apart from providing
14766 legacy support by a symlink rather than built-in code, it
14767 also makes the otherwise hidden order of application of the
14768 different files visible. (Note that this partly reverts to a
14769 pre-198 application order of sysctl knobs!)
14770
14771 * The "systemctl set-log-level" and "systemctl dump" commands
14772 have been moved to systemd-analyze.
14773
14774 * systemd-run learned the new --remain-after-exit switch,
14775 which causes the scope unit not to be cleaned up
14776 automatically after the process terminated.
14777
14778 * tmpfiles learned a new --exclude-prefix= switch to exclude
14779 certain paths from operation.
14780
14781 * journald will now automatically flush all messages to disk
14782 as soon as a message at the log level CRIT, ALERT or EMERG
14783 is received.
14784
14785 Contributions from: Andrew Cook, Brandon Philips, Christian
14786 Hesse, Christoph Junghans, Colin Walters, Daniel Schaal,
14787 Daniel Wallace, Dave Reisner, David Herrmann, Gao feng, George
14788 McCollister, Giovanni Campagna, Hannes Reinecke, Harald Hoyer,
14789 Herczeg Zsolt, Holger Hans Peter Freyther, Jan Engelhardt,
14790 Jesper Larsen, Kay Sievers, Khem Raj, Lennart Poettering,
14791 Lukas Nykryn, Maciej Wereski, Mantas Mikulėnas, Marcel
14792 Holtmann, Martin Pitt, Michael Biebl, Michael Marineau,
14793 Michael Scherer, Michael Stapelberg, Michal Sekletar, Michał
14794 Górny, Olivier Brunel, Ondrej Balaz, Ronny Chevalier, Shawn
14795 Landden, Steven Hiscocks, Thomas Bächler, Thomas Hindoe
14796 Paaboel Andersen, Tom Gundersen, Umut Tezduyar, WANG Chao,
14797 William Giokas, Zbigniew Jędrzejewski-Szmek
14798
14799 — Berlin, 2013-09-13
14800
14801 CHANGES WITH 206:
14802
14803 * The documentation has been updated to cover the various new
14804 concepts introduced with 205.
14805
14806 * Unit files now understand the new %v specifier which
14807 resolves to the kernel version string as returned by "uname
14808 -r".
14809
14810 * systemctl now supports filtering the unit list output by
14811 load state, active state and sub state, using the new
14812 --state= parameter.
14813
14814 * "systemctl status" will now show the results of the
14815 condition checks (like ConditionPathExists= and similar) of
14816 the last start attempts of the unit. They are also logged to
14817 the journal.
14818
14819 * "journalctl -b" may now be used to look for boot output of a
14820 specific boot. Try "journalctl -b -1" for the previous boot,
14821 but the syntax is substantially more powerful.
14822
14823 * "journalctl --show-cursor" has been added which prints the
14824 cursor string the last shown log line. This may then be used
14825 with the new "journalctl --after-cursor=" switch to continue
14826 browsing logs from that point on.
14827
14828 * "journalctl --force" may now be used to force regeneration
14829 of an FSS key.
14830
14831 * Creation of "dead" device nodes has been moved from udev
14832 into kmod and tmpfiles. Previously, udev would read the kmod
14833 databases to pre-generate dead device nodes based on meta
14834 information contained in kernel modules, so that these would
14835 be auto-loaded on access rather then at boot. As this
14836 does not really have much to do with the exposing actual
14837 kernel devices to userspace this has always been slightly
14838 alien in the udev codebase. Following the new scheme kmod
14839 will now generate a runtime snippet for tmpfiles from the
14840 module meta information and it now is tmpfiles' job to the
14841 create the nodes. This also allows overriding access and
14842 other parameters for the nodes using the usual tmpfiles
14843 facilities. As side effect this allows us to remove the
14844 CAP_SYS_MKNOD capability bit from udevd entirely.
14845
14846 * logind's device ACLs may now be applied to these "dead"
14847 devices nodes too, thus finally allowing managed access to
14848 devices such as /dev/snd/sequencer without loading the
14849 backing module right-away.
14850
14851 * A new RPM macro has been added that may be used to apply
14852 tmpfiles configuration during package installation.
14853
14854 * systemd-detect-virt and ConditionVirtualization= now can
14855 detect User-Mode-Linux machines (UML).
14856
14857 * journald will now implicitly log the effective capabilities
14858 set of processes in the message metadata.
14859
14860 * systemd-cryptsetup has gained support for TrueCrypt volumes.
14861
14862 * The initrd interface has been simplified (more specifically,
14863 support for passing performance data via environment
14864 variables and fsck results via files in /run has been
14865 removed). These features were non-essential, and are
14866 nowadays available in a much nicer way by having systemd in
14867 the initrd serialize its state and have the hosts systemd
14868 deserialize it again.
14869
14870 * The udev "keymap" data files and tools to apply keyboard
14871 specific mappings of scan to key codes, and force-release
14872 scan code lists have been entirely replaced by a udev
14873 "keyboard" builtin and a hwdb data file.
14874
14875 * systemd will now honour the kernel's "quiet" command line
14876 argument also during late shutdown, resulting in a
14877 completely silent shutdown when used.
14878
14879 * There's now an option to control the SO_REUSEPORT socket
14880 option in .socket units.
14881
14882 * Instance units will now automatically get a per-template
14883 subslice of system.slice unless something else is explicitly
14884 configured. For example, instances of sshd@.service will now
14885 implicitly be placed in system-sshd.slice rather than
14886 system.slice as before.
14887
14888 * Test coverage support may now be enabled at build time.
14889
14890 Contributions from: Dave Reisner, Frederic Crozat, Harald
14891 Hoyer, Holger Hans Peter Freyther, Jan Engelhardt, Jan
14892 Janssen, Jason St. John, Jesper Larsen, Kay Sievers, Lennart
14893 Poettering, Lukas Nykryn, Maciej Wereski, Martin Pitt, Michael
14894 Olbrich, Ramkumar Ramachandra, Ross Lagerwall, Shawn Landden,
14895 Thomas H.P. Andersen, Tom Gundersen, Tomasz Torcz, William
14896 Giokas, Zbigniew Jędrzejewski-Szmek
14897
14898 — Berlin, 2013-07-23
14899
14900 CHANGES WITH 205:
14901
14902 * Two new unit types have been introduced:
14903
14904 Scope units are very similar to service units, however, are
14905 created out of pre-existing processes — instead of PID 1
14906 forking off the processes. By using scope units it is
14907 possible for system services and applications to group their
14908 own child processes (worker processes) in a powerful way
14909 which then maybe used to organize them, or kill them
14910 together, or apply resource limits on them.
14911
14912 Slice units may be used to partition system resources in an
14913 hierarchical fashion and then assign other units to them. By
14914 default there are now three slices: system.slice (for all
14915 system services), user.slice (for all user sessions),
14916 machine.slice (for VMs and containers).
14917
14918 Slices and scopes have been introduced primarily in
14919 context of the work to move cgroup handling to a
14920 single-writer scheme, where only PID 1
14921 creates/removes/manages cgroups.
14922
14923 * There's a new concept of "transient" units. In contrast to
14924 normal units these units are created via an API at runtime,
14925 not from configuration from disk. More specifically this
14926 means it is now possible to run arbitrary programs as
14927 independent services, with all execution parameters passed
14928 in via bus APIs rather than read from disk. Transient units
14929 make systemd substantially more dynamic then it ever was,
14930 and useful as a general batch manager.
14931
14932 * logind has been updated to make use of scope and slice units
14933 for managing user sessions. As a user logs in he will get
14934 his own private slice unit, to which all sessions are added
14935 as scope units. We also added support for automatically
14936 adding an instance of user@.service for the user into the
14937 slice. Effectively logind will no longer create cgroup
14938 hierarchies on its own now, it will defer entirely to PID 1
14939 for this by means of scope, service and slice units. Since
14940 user sessions this way become entities managed by PID 1
14941 the output of "systemctl" is now a lot more comprehensive.
14942
14943 * A new mini-daemon "systemd-machined" has been added which
14944 may be used by virtualization managers to register local
14945 VMs/containers. nspawn has been updated accordingly, and
14946 libvirt will be updated shortly. machined will collect a bit
14947 of meta information about the VMs/containers, and assign
14948 them their own scope unit (see above). The collected
14949 meta-data is then made available via the "machinectl" tool,
14950 and exposed in "ps" and similar tools. machined/machinectl
14951 is compile-time optional.
14952
14953 * As discussed earlier, the low-level cgroup configuration
14954 options ControlGroup=, ControlGroupModify=,
14955 ControlGroupPersistent=, ControlGroupAttribute= have been
14956 removed. Please use high-level attribute settings instead as
14957 well as slice units.
14958
14959 * A new bus call SetUnitProperties() has been added to alter
14960 various runtime parameters of a unit. This is primarily
14961 useful to alter cgroup parameters dynamically in a nice way,
14962 but will be extended later on to make more properties
14963 modifiable at runtime. systemctl gained a new set-properties
14964 command that wraps this call.
14965
14966 * A new tool "systemd-run" has been added which can be used to
14967 run arbitrary command lines as transient services or scopes,
14968 while configuring a number of settings via the command
14969 line. This tool is currently very basic, however already
14970 very useful. We plan to extend this tool to even allow
14971 queuing of execution jobs with time triggers from the
14972 command line, similar in fashion to "at".
14973
14974 * nspawn will now inform the user explicitly that kernels with
14975 audit enabled break containers, and suggest the user to turn
14976 off audit.
14977
14978 * Support for detecting the IMA and AppArmor security
14979 frameworks with ConditionSecurity= has been added.
14980
14981 * journalctl gained a new "-k" switch for showing only kernel
14982 messages, mimicking dmesg output; in addition to "--user"
14983 and "--system" switches for showing only user's own logs
14984 and system logs.
14985
14986 * systemd-delta can now show information about drop-in
14987 snippets extending unit files.
14988
14989 * libsystemd-bus has been substantially updated but is still
14990 not available as public API.
14991
14992 * systemd will now look for the "debug" argument on the kernel
14993 command line and enable debug logging, similar to what
14994 "systemd.log_level=debug" already did before.
14995
14996 * "systemctl set-default", "systemctl get-default" has been
14997 added to configure the default.target symlink, which
14998 controls what to boot into by default.
14999
15000 * "systemctl set-log-level" has been added as a convenient
15001 way to raise and lower systemd logging threshold.
15002
15003 * "systemd-analyze plot" will now show the time the various
15004 generators needed for execution, as well as information
15005 about the unit file loading.
15006
15007 * libsystemd-journal gained a new sd_journal_open_files() call
15008 for opening specific journal files. journactl also gained a
15009 new switch to expose this new functionality. Previously we
15010 only supported opening all files from a directory, or all
15011 files from the system, as opening individual files only is
15012 racy due to journal file rotation.
15013
15014 * systemd gained the new DefaultEnvironment= setting in
15015 /etc/systemd/system.conf to set environment variables for
15016 all services.
15017
15018 * If a privileged process logs a journal message with the
15019 OBJECT_PID= field set, then journald will automatically
15020 augment this with additional OBJECT_UID=, OBJECT_GID=,
15021 OBJECT_COMM=, OBJECT_EXE=, … fields. This is useful if
15022 system services want to log events about specific client
15023 processes. journactl/systemctl has been updated to make use
15024 of this information if all log messages regarding a specific
15025 unit is requested.
15026
15027 Contributions from: Auke Kok, Chengwei Yang, Colin Walters,
15028 Cristian Rodríguez, Daniel Albers, Daniel Wallace, Dave
15029 Reisner, David Coppa, David King, David Strauss, Eelco
15030 Dolstra, Gabriel de Perthuis, Harald Hoyer, Jan Alexander
15031 Steffens, Jan Engelhardt, Jan Janssen, Jason St. John, Johan
15032 Heikkilä, Karel Zak, Karol Lewandowski, Kay Sievers, Lennart
15033 Poettering, Lukas Nykryn, Mantas Mikulėnas, Marius Vollmer,
15034 Martin Pitt, Michael Biebl, Michael Olbrich, Michael Tremer,
15035 Michal Schmidt, Michał Bartoszkiewicz, Nirbheek Chauhan,
15036 Pierre Neidhardt, Ross Burton, Ross Lagerwall, Sean McGovern,
15037 Thomas Hindoe Paaboel Andersen, Tom Gundersen, Umut Tezduyar,
15038 Václav Pavlín, Zachary Cook, Zbigniew Jędrzejewski-Szmek,
15039 Łukasz Stelmach, 장동준
15040
15041 CHANGES WITH 204:
15042
15043 * The Python bindings gained some minimal support for the APIs
15044 exposed by libsystemd-logind.
15045
15046 * ConditionSecurity= gained support for detecting SMACK. Since
15047 this condition already supports SELinux and AppArmor we only
15048 miss IMA for this. Patches welcome!
15049
15050 Contributions from: Karol Lewandowski, Lennart Poettering,
15051 Zbigniew Jędrzejewski-Szmek
15052
15053 CHANGES WITH 203:
15054
15055 * systemd-nspawn will now create /etc/resolv.conf if
15056 necessary, before bind-mounting the host's file onto it.
15057
15058 * systemd-nspawn will now store meta information about a
15059 container on the container's cgroup as extended attribute
15060 fields, including the root directory.
15061
15062 * The cgroup hierarchy has been reworked in many ways. All
15063 objects any of the components systemd creates in the cgroup
15064 tree are now suffixed. More specifically, user sessions are
15065 now placed in cgroups suffixed with ".session", users in
15066 cgroups suffixed with ".user", and nspawn containers in
15067 cgroups suffixed with ".nspawn". Furthermore, all cgroup
15068 names are now escaped in a simple scheme to avoid collision
15069 of userspace object names with kernel filenames. This work
15070 is preparation for making these objects relocatable in the
15071 cgroup tree, in order to allow easy resource partitioning of
15072 these objects without causing naming conflicts.
15073
15074 * systemctl list-dependencies gained the new switches
15075 --plain, --reverse, --after and --before.
15076
15077 * systemd-inhibit now shows the process name of processes that
15078 have taken an inhibitor lock.
15079
15080 * nss-myhostname will now also resolve "localhost"
15081 implicitly. This makes /etc/hosts an optional file and
15082 nicely handles that on IPv6 ::1 maps to both "localhost" and
15083 the local hostname.
15084
15085 * libsystemd-logind.so gained a new call
15086 sd_get_machine_names() to enumerate running containers and
15087 VMs (currently only supported by very new libvirt and
15088 nspawn). sd_login_monitor can now be used to watch
15089 VMs/containers coming and going.
15090
15091 * .include is not allowed recursively anymore, and only in
15092 unit files. Usually it is better to use drop-in snippets in
15093 .d/*.conf anyway, as introduced with systemd 198.
15094
15095 * systemd-analyze gained a new "critical-chain" command that
15096 determines the slowest chain of units run during system
15097 boot-up. It is very useful for tracking down where
15098 optimizing boot time is the most beneficial.
15099
15100 * systemd will no longer allow manipulating service paths in
15101 the name=systemd:/system cgroup tree using ControlGroup= in
15102 units. (But is still fine with it in all other dirs.)
15103
15104 * There's a new systemd-nspawn@.service service file that may
15105 be used to easily run nspawn containers as system
15106 services. With the container's root directory in
15107 /var/lib/container/foobar it is now sufficient to run
15108 "systemctl start systemd-nspawn@foobar.service" to boot it.
15109
15110 * systemd-cgls gained a new parameter "--machine" to list only
15111 the processes within a certain container.
15112
15113 * ConditionSecurity= now can check for "apparmor". We still
15114 are lacking checks for SMACK and IMA for this condition
15115 check though. Patches welcome!
15116
15117 * A new configuration file /etc/systemd/sleep.conf has been
15118 added that may be used to configure which kernel operation
15119 systemd is supposed to execute when "suspend", "hibernate"
15120 or "hybrid-sleep" is requested. This makes the new kernel
15121 "freeze" state accessible to the user.
15122
15123 * ENV{SYSTEMD_WANTS} in udev rules will now implicitly escape
15124 the passed argument if applicable.
15125
15126 Contributions from: Auke Kok, Colin Guthrie, Colin Walters,
15127 Cristian Rodríguez, Daniel Buch, Daniel Wallace, Dave Reisner,
15128 Evangelos Foutras, Greg Kroah-Hartman, Harald Hoyer, Josh
15129 Triplett, Kay Sievers, Lennart Poettering, Lukas Nykryn,
15130 MUNEDA Takahiro, Mantas Mikulėnas, Mirco Tischler, Nathaniel
15131 Chen, Nirbheek Chauhan, Ronny Chevalier, Ross Lagerwall, Tom
15132 Gundersen, Umut Tezduyar, Ville Skyttä, Zbigniew
15133 Jędrzejewski-Szmek
15134
15135 CHANGES WITH 202:
15136
15137 * The output of 'systemctl list-jobs' got some polishing. The
15138 '--type=' argument may now be passed more than once. A new
15139 command 'systemctl list-sockets' has been added which shows
15140 a list of kernel sockets systemd is listening on with the
15141 socket units they belong to, plus the units these socket
15142 units activate.
15143
15144 * The experimental libsystemd-bus library got substantial
15145 updates to work in conjunction with the (also experimental)
15146 kdbus kernel project. It works well enough to exchange
15147 messages with some sophistication. Note that kdbus is not
15148 ready yet, and the library is mostly an elaborate test case
15149 for now, and not installable.
15150
15151 * systemd gained a new unit 'systemd-static-nodes.service'
15152 that generates static device nodes earlier during boot, and
15153 can run in conjunction with udev.
15154
15155 * libsystemd-login gained a new call sd_pid_get_user_unit()
15156 to retrieve the user systemd unit a process is running
15157 in. This is useful for systems where systemd is used as
15158 session manager.
15159
15160 * systemd-nspawn now places all containers in the new /machine
15161 top-level cgroup directory in the name=systemd
15162 hierarchy. libvirt will soon do the same, so that we get a
15163 uniform separation of /system, /user and /machine for system
15164 services, user processes and containers/virtual
15165 machines. This new cgroup hierarchy is also useful to stick
15166 stable names to specific container instances, which can be
15167 recognized later this way (this name may be controlled
15168 via systemd-nspawn's new -M switch). libsystemd-login also
15169 gained a new call sd_pid_get_machine_name() to retrieve the
15170 name of the container/VM a specific process belongs to.
15171
15172 * bootchart can now store its data in the journal.
15173
15174 * libsystemd-journal gained a new call
15175 sd_journal_add_conjunction() for AND expressions to the
15176 matching logic. This can be used to express more complex
15177 logical expressions.
15178
15179 * journactl can now take multiple --unit= and --user-unit=
15180 switches.
15181
15182 * The cryptsetup logic now understands the "luks.key=" kernel
15183 command line switch for specifying a file to read the
15184 decryption key from. Also, if a configured key file is not
15185 found the tool will now automatically fall back to prompting
15186 the user.
15187
15188 * Python systemd.journal module was updated to wrap recently
15189 added functions from libsystemd-journal. The interface was
15190 changed to bring the low level interface in s.j._Reader
15191 closer to the C API, and the high level interface in
15192 s.j.Reader was updated to wrap and convert all data about
15193 an entry.
15194
15195 Contributions from: Anatol Pomozov, Auke Kok, Harald Hoyer,
15196 Henrik Grindal Bakken, Josh Triplett, Kay Sievers, Lennart
15197 Poettering, Lukas Nykryn, Mantas Mikulėnas Marius Vollmer,
15198 Martin Jansa, Martin Pitt, Michael Biebl, Michal Schmidt,
15199 Mirco Tischler, Pali Rohar, Simon Peeters, Steven Hiscocks,
15200 Tom Gundersen, Zbigniew Jędrzejewski-Szmek
15201
15202 CHANGES WITH 201:
15203
15204 * journalctl --update-catalog now understands a new --root=
15205 option to operate on catalogs found in a different root
15206 directory.
15207
15208 * During shutdown after systemd has terminated all running
15209 services a final killing loop kills all remaining left-over
15210 processes. We will now print the name of these processes
15211 when we send SIGKILL to them, since this usually indicates a
15212 problem.
15213
15214 * If /etc/crypttab refers to password files stored on
15215 configured mount points automatic dependencies will now be
15216 generated to ensure the specific mount is established first
15217 before the key file is attempted to be read.
15218
15219 * 'systemctl status' will now show information about the
15220 network sockets a socket unit is listening on.
15221
15222 * 'systemctl status' will also shown information about any
15223 drop-in configuration file for units. (Drop-In configuration
15224 files in this context are files such as
15225 /etc/systemd/system/foobar.service.d/*.conf)
15226
15227 * systemd-cgtop now optionally shows summed up CPU times of
15228 cgroups. Press '%' while running cgtop to switch between
15229 percentage and absolute mode. This is useful to determine
15230 which cgroups use up the most CPU time over the entire
15231 runtime of the system. systemd-cgtop has also been updated
15232 to be 'pipeable' for processing with further shell tools.
15233
15234 * 'hostnamectl set-hostname' will now allow setting of FQDN
15235 hostnames.
15236
15237 * The formatting and parsing of time span values has been
15238 changed. The parser now understands fractional expressions
15239 such as "5.5h". The formatter will now output fractional
15240 expressions for all time spans under 1min, i.e. "5.123456s"
15241 rather than "5s 123ms 456us". For time spans under 1s
15242 millisecond values are shown, for those under 1ms
15243 microsecond values are shown. This should greatly improve
15244 all time-related output of systemd.
15245
15246 * libsystemd-login and libsystemd-journal gained new
15247 functions for querying the poll() events mask and poll()
15248 timeout value for integration into arbitrary event
15249 loops.
15250
15251 * localectl gained the ability to list available X11 keymaps
15252 (models, layouts, variants, options).
15253
15254 * 'systemd-analyze dot' gained the ability to filter for
15255 specific units via shell-style globs, to create smaller,
15256 more useful graphs. I.e. it is now possible to create simple
15257 graphs of all the dependencies between only target units, or
15258 of all units that Avahi has dependencies with.
15259
15260 Contributions from: Cristian Rodríguez, Dr. Tilmann Bubeck,
15261 Harald Hoyer, Holger Hans Peter Freyther, Kay Sievers, Kelly
15262 Anderson, Koen Kooi, Lennart Poettering, Maksim Melnikau,
15263 Marc-Antoine Perennou, Marius Vollmer, Martin Pitt, Michal
15264 Schmidt, Oleksii Shevchuk, Ronny Chevalier, Simon McVittie,
15265 Steven Hiscocks, Thomas Weißschuh, Umut Tezduyar, Václav
15266 Pavlín, Zbigniew Jędrzejewski-Szmek, Łukasz Stelmach
15267
15268 CHANGES WITH 200:
15269
15270 * The boot-time readahead implementation for rotating media
15271 will now read the read-ahead data in multiple passes which
15272 consist of all read requests made in equidistant time
15273 intervals. This means instead of strictly reading read-ahead
15274 data in its physical order on disk we now try to find a
15275 middle ground between physical and access time order.
15276
15277 * /etc/os-release files gained a new BUILD_ID= field for usage
15278 on operating systems that provide continuous builds of OS
15279 images.
15280
15281 Contributions from: Auke Kok, Eelco Dolstra, Kay Sievers,
15282 Lennart Poettering, Lukas Nykryn, Martin Pitt, Václav Pavlín
15283 William Douglas, Zbigniew Jędrzejewski-Szmek
15284
15285 CHANGES WITH 199:
15286
15287 * systemd-python gained an API exposing libsystemd-daemon.
15288
15289 * The SMACK setup logic gained support for uploading CIPSO
15290 security policy.
15291
15292 * Behaviour of PrivateTmp=, ReadWriteDirectories=,
15293 ReadOnlyDirectories= and InaccessibleDirectories= has
15294 changed. The private /tmp and /var/tmp directories are now
15295 shared by all processes of a service (which means
15296 ExecStartPre= may now leave data in /tmp that ExecStart= of
15297 the same service can still access). When a service is
15298 stopped its temporary directories are immediately deleted
15299 (normal clean-up with tmpfiles is still done in addition to
15300 this though).
15301
15302 * By default, systemd will now set a couple of sysctl
15303 variables in the kernel: the safe sysrq options are turned
15304 on, IP route verification is turned on, and source routing
15305 disabled. The recently added hardlink and softlink
15306 protection of the kernel is turned on. These settings should
15307 be reasonably safe, and good defaults for all new systems.
15308
15309 * The predictable network naming logic may now be turned off
15310 with a new kernel command line switch: net.ifnames=0.
15311
15312 * A new libsystemd-bus module has been added that implements a
15313 pretty complete D-Bus client library. For details see:
15314
15315 https://lists.freedesktop.org/archives/systemd-devel/2013-March/009797.html
15316
15317 * journald will now explicitly flush the journal files to disk
15318 at the latest 5min after each write. The file will then also
15319 be marked offline until the next write. This should increase
15320 reliability in case of a crash. The synchronization delay
15321 can be configured via SyncIntervalSec= in journald.conf.
15322
15323 * There's a new remote-fs-setup.target unit that can be used
15324 to pull in specific services when at least one remote file
15325 system is to be mounted.
15326
15327 * There are new targets timers.target and paths.target as
15328 canonical targets to pull user timer and path units in
15329 from. This complements sockets.target with a similar
15330 purpose for socket units.
15331
15332 * libudev gained a new call udev_device_set_attribute_value()
15333 to set sysfs attributes of a device.
15334
15335 * The udev daemon now sets the default number of worker
15336 processes executed in parallel based on the number of available
15337 CPUs instead of the amount of available RAM. This is supposed
15338 to provide a more reliable default and limit a too aggressive
15339 parallelism for setups with 1000s of devices connected.
15340
15341 Contributions from: Auke Kok, Colin Walters, Cristian
15342 Rodríguez, Daniel Buch, Dave Reisner, Frederic Crozat, Hannes
15343 Reinecke, Harald Hoyer, Jan Alexander Steffens, Jan
15344 Engelhardt, Josh Triplett, Kay Sievers, Lennart Poettering,
15345 Mantas Mikulėnas, Martin Pitt, Mathieu Bridon, Michael Biebl,
15346 Michal Schmidt, Michal Sekletar, Miklos Vajna, Nathaniel Chen,
15347 Oleksii Shevchuk, Ozan Çağlayan, Thomas Hindoe Paaboel
15348 Andersen, Tollef Fog Heen, Tom Gundersen, Umut Tezduyar,
15349 Zbigniew Jędrzejewski-Szmek
15350
15351 CHANGES WITH 198:
15352
15353 * Configuration of unit files may now be extended via drop-in
15354 files without having to edit/override the unit files
15355 themselves. More specifically, if the administrator wants to
15356 change one value for a service file foobar.service he can
15357 now do so by dropping in a configuration snippet into
15358 /etc/systemd/system/foobar.service.d/*.conf. The unit logic
15359 will load all these snippets and apply them on top of the
15360 main unit configuration file, possibly extending or
15361 overriding its settings. Using these drop-in snippets is
15362 generally nicer than the two earlier options for changing
15363 unit files locally: copying the files from
15364 /usr/lib/systemd/system/ to /etc/systemd/system/ and editing
15365 them there; or creating a new file in /etc/systemd/system/
15366 that incorporates the original one via ".include". Drop-in
15367 snippets into these .d/ directories can be placed in any
15368 directory systemd looks for units in, and the usual
15369 overriding semantics between /usr/lib, /etc and /run apply
15370 for them too.
15371
15372 * Most unit file settings which take lists of items can now be
15373 reset by assigning the empty string to them. For example,
15374 normally, settings such as Environment=FOO=BAR append a new
15375 environment variable assignment to the environment block,
15376 each time they are used. By assigning Environment= the empty
15377 string the environment block can be reset to empty. This is
15378 particularly useful with the .d/*.conf drop-in snippets
15379 mentioned above, since this adds the ability to reset list
15380 settings from vendor unit files via these drop-ins.
15381
15382 * systemctl gained a new "list-dependencies" command for
15383 listing the dependencies of a unit recursively.
15384
15385 * Inhibitors are now honored and listed by "systemctl
15386 suspend", "systemctl poweroff" (and similar) too, not only
15387 GNOME. These commands will also list active sessions by
15388 other users.
15389
15390 * Resource limits (as exposed by the various control group
15391 controllers) can now be controlled dynamically at runtime
15392 for all units. More specifically, you can now use a command
15393 like "systemctl set-cgroup-attr foobar.service cpu.shares
15394 2000" to alter the CPU shares a specific service gets. These
15395 settings are stored persistently on disk, and thus allow the
15396 administrator to easily adjust the resource usage of
15397 services with a few simple commands. This dynamic resource
15398 management logic is also available to other programs via the
15399 bus. Almost any kernel cgroup attribute and controller is
15400 supported.
15401
15402 * systemd-vconsole-setup will now copy all font settings to
15403 all allocated VTs, where it previously applied them only to
15404 the foreground VT.
15405
15406 * libsystemd-login gained the new sd_session_get_tty() API
15407 call.
15408
15409 * This release drops support for a few legacy or
15410 distribution-specific LSB facility names when parsing init
15411 scripts: $x-display-manager, $mail-transfer-agent,
15412 $mail-transport-agent, $mail-transfer-agent, $smtp,
15413 $null. Also, the mail-transfer-agent.target unit backing
15414 this has been removed. Distributions which want to retain
15415 compatibility with this should carry the burden for
15416 supporting this themselves and patch support for these back
15417 in, if they really need to. Also, the facilities $syslog and
15418 $local_fs are now ignored, since systemd does not support
15419 early-boot LSB init scripts anymore, and these facilities
15420 are implied anyway for normal services. syslog.target has
15421 also been removed.
15422
15423 * There are new bus calls on PID1's Manager object for
15424 cancelling jobs, and removing snapshot units. Previously,
15425 both calls were only available on the Job and Snapshot
15426 objects themselves.
15427
15428 * systemd-journal-gatewayd gained SSL support.
15429
15430 * The various "environment" files, such as /etc/locale.conf
15431 now support continuation lines with a backslash ("\") as
15432 last character in the line, similarly in style (but different)
15433 to how this is supported in shells.
15434
15435 * For normal user processes the _SYSTEMD_USER_UNIT= field is
15436 now implicitly appended to every log entry logged. systemctl
15437 has been updated to filter by this field when operating on a
15438 user systemd instance.
15439
15440 * nspawn will now implicitly add the CAP_AUDIT_WRITE and
15441 CAP_AUDIT_CONTROL capabilities to the capabilities set for
15442 the container. This makes it easier to boot unmodified
15443 Fedora systems in a container, which however still requires
15444 audit=0 to be passed on the kernel command line. Auditing in
15445 kernel and userspace is unfortunately still too broken in
15446 context of containers, hence we recommend compiling it out
15447 of the kernel or using audit=0. Hopefully this will be fixed
15448 one day for good in the kernel.
15449
15450 * nspawn gained the new --bind= and --bind-ro= parameters to
15451 bind mount specific directories from the host into the
15452 container.
15453
15454 * nspawn will now mount its own devpts file system instance
15455 into the container, in order not to leak pty devices from
15456 the host into the container.
15457
15458 * systemd will now read the firmware boot time performance
15459 information from the EFI variables, if the used boot loader
15460 supports this, and takes it into account for boot performance
15461 analysis via "systemd-analyze". This is currently supported
15462 only in conjunction with Gummiboot, but could be supported
15463 by other boot loaders too. For details see:
15464
15465 https://systemd.io/BOOT_LOADER_INTERFACE
15466
15467 * A new generator has been added that automatically mounts the
15468 EFI System Partition (ESP) to /boot, if that directory
15469 exists, is empty, and no other file system has been
15470 configured to be mounted there.
15471
15472 * logind will now send out PrepareForSleep(false) out
15473 unconditionally, after coming back from suspend. This may be
15474 used by applications as asynchronous notification for
15475 system resume events.
15476
15477 * "systemctl unlock-sessions" has been added, that allows
15478 unlocking the screens of all user sessions at once, similar
15479 to how "systemctl lock-sessions" already locked all users
15480 sessions. This is backed by a new D-Bus call UnlockSessions().
15481
15482 * "loginctl seat-status" will now show the master device of a
15483 seat. (i.e. the device of a seat that needs to be around for
15484 the seat to be considered available, usually the graphics
15485 card).
15486
15487 * tmpfiles gained a new "X" line type, that allows
15488 configuration of files and directories (with wildcards) that
15489 shall be excluded from automatic cleanup ("aging").
15490
15491 * udev default rules set the device node permissions now only
15492 at "add" events, and do not change them any longer with a
15493 later "change" event.
15494
15495 * The log messages for lid events and power/sleep keypresses
15496 now carry a message ID.
15497
15498 * We now have a substantially larger unit test suite, but this
15499 continues to be work in progress.
15500
15501 * udevadm hwdb gained a new --root= parameter to change the
15502 root directory to operate relative to.
15503
15504 * logind will now issue a background sync() request to the kernel
15505 early at shutdown, so that dirty buffers are flushed to disk early
15506 instead of at the last moment, in order to optimize shutdown
15507 times a little.
15508
15509 * A new bootctl tool has been added that is an interface for
15510 certain boot loader operations. This is currently a preview
15511 and is likely to be extended into a small mechanism daemon
15512 like timedated, localed, hostnamed, and can be used by
15513 graphical UIs to enumerate available boot options, and
15514 request boot into firmware operations.
15515
15516 * systemd-bootchart has been relicensed to LGPLv2.1+ to match
15517 the rest of the package. It also has been updated to work
15518 correctly in initrds.
15519
15520 * polkit previously has been runtime optional, and is now also
15521 compile time optional via a configure switch.
15522
15523 * systemd-analyze has been reimplemented in C. Also "systemctl
15524 dot" has moved into systemd-analyze.
15525
15526 * "systemctl status" with no further parameters will now print
15527 the status of all active or failed units.
15528
15529 * Operations such as "systemctl start" can now be executed
15530 with a new mode "--irreversible" which may be used to queue
15531 operations that cannot accidentally be reversed by a later
15532 job queuing. This is by default used to make shutdown
15533 requests more robust.
15534
15535 * The Python API of systemd now gained a new module for
15536 reading journal files.
15537
15538 * A new tool kernel-install has been added that can install
15539 kernel images according to the Boot Loader Specification:
15540
15541 https://systemd.io/BOOT_LOADER_SPECIFICATION
15542
15543 * Boot time console output has been improved to provide
15544 animated boot time output for hanging jobs.
15545
15546 * A new tool systemd-activate has been added which can be used
15547 to test socket activation with, directly from the command
15548 line. This should make it much easier to test and debug
15549 socket activation in daemons.
15550
15551 * journalctl gained a new "--reverse" (or -r) option to show
15552 journal output in reverse order (i.e. newest line first).
15553
15554 * journalctl gained a new "--pager-end" (or -e) option to jump
15555 to immediately jump to the end of the journal in the
15556 pager. This is only supported in conjunction with "less".
15557
15558 * journalctl gained a new "--user-unit=" option, that works
15559 similarly to "--unit=" but filters for user units rather than
15560 system units.
15561
15562 * A number of unit files to ease adoption of systemd in
15563 initrds has been added. This moves some minimal logic from
15564 the various initrd implementations into systemd proper.
15565
15566 * The journal files are now owned by a new group
15567 "systemd-journal", which exists specifically to allow access
15568 to the journal, and nothing else. Previously, we used the
15569 "adm" group for that, which however possibly covers more
15570 than just journal/log file access. This new group is now
15571 already used by systemd-journal-gatewayd to ensure this
15572 daemon gets access to the journal files and as little else
15573 as possible. Note that "make install" will also set FS ACLs
15574 up for /var/log/journal to give "adm" and "wheel" read
15575 access to it, in addition to "systemd-journal" which owns
15576 the journal files. We recommend that packaging scripts also
15577 add read access to "adm" + "wheel" to /var/log/journal, and
15578 all existing/future journal files. To normal users and
15579 administrators little changes, however packagers need to
15580 ensure to create the "systemd-journal" system group at
15581 package installation time.
15582
15583 * The systemd-journal-gatewayd now runs as unprivileged user
15584 systemd-journal-gateway:systemd-journal-gateway. Packaging
15585 scripts need to create these system user/group at
15586 installation time.
15587
15588 * timedated now exposes a new boolean property CanNTP that
15589 indicates whether a local NTP service is available or not.
15590
15591 * systemd-detect-virt will now also detect xen PVs
15592
15593 * The pstore file system is now mounted by default, if it is
15594 available.
15595
15596 * In addition to the SELinux and IMA policies we will now also
15597 load SMACK policies at early boot.
15598
15599 Contributions from: Adel Gadllah, Aleksander Morgado, Auke
15600 Kok, Ayan George, Bastien Nocera, Colin Walters, Daniel Buch,
15601 Daniel Wallace, Dave Reisner, David Herrmann, David Strauss,
15602 Eelco Dolstra, Enrico Scholz, Frederic Crozat, Harald Hoyer,
15603 Jan Janssen, Jonathan Callen, Kay Sievers, Lennart Poettering,
15604 Lukas Nykryn, Mantas Mikulėnas, Marc-Antoine Perennou, Martin
15605 Pitt, Mauro Dreissig, Max F. Albrecht, Michael Biebl, Michael
15606 Olbrich, Michal Schmidt, Michal Sekletar, Michal Vyskocil,
15607 Michał Bartoszkiewicz, Mirco Tischler, Nathaniel Chen, Nestor
15608 Ovroy, Oleksii Shevchuk, Paul W. Frields, Piotr Drąg, Rob
15609 Clark, Ryan Lortie, Simon McVittie, Simon Peeters, Steven
15610 Hiscocks, Thomas Hindoe Paaboel Andersen, Tollef Fog Heen, Tom
15611 Gundersen, Umut Tezduyar, William Giokas, Zbigniew
15612 Jędrzejewski-Szmek, Zeeshan Ali (Khattak)
15613
15614 CHANGES WITH 197:
15615
15616 * Timer units now support calendar time events in addition to
15617 monotonic time events. That means you can now trigger a unit
15618 based on a calendar time specification such as "Thu,Fri
15619 2013-*-1,5 11:12:13" which refers to 11:12:13 of the first
15620 or fifth day of any month of the year 2013, given that it is
15621 a Thursday or a Friday. This brings timer event support
15622 considerably closer to cron's capabilities. For details on
15623 the supported calendar time specification language see
15624 systemd.time(7).
15625
15626 * udev now supports a number of different naming policies for
15627 network interfaces for predictable names, and a combination
15628 of these policies is now the default. Please see this wiki
15629 document for details:
15630
15631 https://www.freedesktop.org/software/systemd/man/systemd.net-naming-scheme.html
15632
15633 * Auke Kok's bootchart implementation has been added to the
15634 systemd tree. It is an optional component that can graph the
15635 boot in quite some detail. It is one of the best bootchart
15636 implementations around and minimal in its code and
15637 dependencies.
15638
15639 * nss-myhostname has been integrated into the systemd source
15640 tree. nss-myhostname guarantees that the local hostname
15641 always stays resolvable via NSS. It has been a weak
15642 requirement of systemd-hostnamed since a long time, and
15643 since its code is actually trivial we decided to just
15644 include it in systemd's source tree. It can be turned off
15645 with a configure switch.
15646
15647 * The read-ahead logic is now capable of properly detecting
15648 whether a btrfs file system is on SSD or rotating media, in
15649 order to optimize the read-ahead scheme. Previously, it was
15650 only capable of detecting this on traditional file systems
15651 such as ext4.
15652
15653 * In udev, additional device properties are now read from the
15654 IAB in addition to the OUI database. Also, Bluetooth company
15655 identities are attached to the devices as well.
15656
15657 * In service files %U may be used as specifier that is
15658 replaced by the configured user name of the service.
15659
15660 * nspawn may now be invoked without a controlling TTY. This
15661 makes it suitable for invocation as its own service. This
15662 may be used to set up a simple containerized server system
15663 using only core OS tools.
15664
15665 * systemd and nspawn can now accept socket file descriptors
15666 when they are started for socket activation. This enables
15667 implementation of socket activated nspawn
15668 containers. i.e. think about autospawning an entire OS image
15669 when the first SSH or HTTP connection is received. We expect
15670 that similar functionality will also be added to libvirt-lxc
15671 eventually.
15672
15673 * journalctl will now suppress ANSI color codes when
15674 presenting log data.
15675
15676 * systemctl will no longer show control group information for
15677 a unit if the control group is empty anyway.
15678
15679 * logind can now automatically suspend/hibernate/shutdown the
15680 system on idle.
15681
15682 * /etc/machine-info and hostnamed now also expose the chassis
15683 type of the system. This can be used to determine whether
15684 the local system is a laptop, desktop, handset or
15685 tablet. This information may either be configured by the
15686 user/vendor or is automatically determined from ACPI and DMI
15687 information if possible.
15688
15689 * A number of polkit actions are now bound together with "imply"
15690 rules. This should simplify creating UIs because many actions
15691 will now authenticate similar ones as well.
15692
15693 * Unit files learnt a new condition ConditionACPower= which
15694 may be used to conditionalize a unit depending on whether an
15695 AC power source is connected or not, of whether the system
15696 is running on battery power.
15697
15698 * systemctl gained a new "is-failed" verb that may be used in
15699 shell scripts and suchlike to check whether a specific unit
15700 is in the "failed" state.
15701
15702 * The EnvironmentFile= setting in unit files now supports file
15703 globbing, and can hence be used to easily read a number of
15704 environment files at once.
15705
15706 * systemd will no longer detect and recognize specific
15707 distributions. All distribution-specific #ifdeffery has been
15708 removed, systemd is now fully generic and
15709 distribution-agnostic. Effectively, not too much is lost as
15710 a lot of the code is still accessible via explicit configure
15711 switches. However, support for some distribution specific
15712 legacy configuration file formats has been dropped. We
15713 recommend distributions to simply adopt the configuration
15714 files everybody else uses now and convert the old
15715 configuration from packaging scripts. Most distributions
15716 already did that. If that's not possible or desirable,
15717 distributions are welcome to forward port the specific
15718 pieces of code locally from the git history.
15719
15720 * When logging a message about a unit systemd will now always
15721 log the unit name in the message meta data.
15722
15723 * localectl will now also discover system locale data that is
15724 not stored in locale archives, but directly unpacked.
15725
15726 * logind will no longer unconditionally use framebuffer
15727 devices as seat masters, i.e. as devices that are required
15728 to be existing before a seat is considered preset. Instead,
15729 it will now look for all devices that are tagged as
15730 "seat-master" in udev. By default, framebuffer devices will
15731 be marked as such, but depending on local systems, other
15732 devices might be marked as well. This may be used to
15733 integrate graphics cards using closed source drivers (such
15734 as NVidia ones) more nicely into logind. Note however, that
15735 we recommend using the open source NVidia drivers instead,
15736 and no udev rules for the closed-source drivers will be
15737 shipped from us upstream.
15738
15739 Contributions from: Adam Williamson, Alessandro Crismani, Auke
15740 Kok, Colin Walters, Daniel Wallace, Dave Reisner, David
15741 Herrmann, David Strauss, Dimitrios Apostolou, Eelco Dolstra,
15742 Eric Benoit, Giovanni Campagna, Hannes Reinecke, Henrik
15743 Grindal Bakken, Hermann Gausterer, Kay Sievers, Lennart
15744 Poettering, Lukas Nykryn, Mantas Mikulėnas, Marcel Holtmann,
15745 Martin Pitt, Matthew Monaco, Michael Biebl, Michael Terry,
15746 Michal Schmidt, Michal Sekletar, Michał Bartoszkiewicz, Oleg
15747 Samarin, Pekka Lundstrom, Philip Nilsson, Ramkumar
15748 Ramachandra, Richard Yao, Robert Millan, Sami Kerola, Shawn
15749 Landden, Thomas Hindoe Paaboel Andersen, Thomas Jarosch,
15750 Tollef Fog Heen, Tom Gundersen, Umut Tezduyar, Zbigniew
15751 Jędrzejewski-Szmek
15752
15753 CHANGES WITH 196:
15754
15755 * udev gained support for loading additional device properties
15756 from an indexed database that is keyed by vendor/product IDs
15757 and similar device identifiers. For the beginning this
15758 "hwdb" is populated with data from the well-known PCI and
15759 USB database, but also includes PNP, ACPI and OID data. In
15760 the longer run this indexed database shall grow into
15761 becoming the one central database for non-essential
15762 userspace device metadata. Previously, data from the PCI/USB
15763 database was only attached to select devices, since the
15764 lookup was a relatively expensive operation due to O(n) time
15765 complexity (with n being the number of entries in the
15766 database). Since this is now O(1), we decided to add in this
15767 data for all devices where this is available, by
15768 default. Note that the indexed database needs to be rebuilt
15769 when new data files are installed. To achieve this you need
15770 to update your packaging scripts to invoke "udevadm hwdb
15771 --update" after installation of hwdb data files. For
15772 RPM-based distributions we introduced the new
15773 %udev_hwdb_update macro for this purpose.
15774
15775 * The Journal gained support for the "Message Catalog", an
15776 indexed database to link up additional information with
15777 journal entries. For further details please check:
15778
15779 https://www.freedesktop.org/wiki/Software/systemd/catalog
15780
15781 The indexed message catalog database also needs to be
15782 rebuilt after installation of message catalog files. Use
15783 "journalctl --update-catalog" for this. For RPM-based
15784 distributions we introduced the %journal_catalog_update
15785 macro for this purpose.
15786
15787 * The Python Journal bindings gained support for the standard
15788 Python logging framework.
15789
15790 * The Journal API gained new functions for checking whether
15791 the underlying file system of a journal file is capable of
15792 properly reporting file change notifications, or whether
15793 applications that want to reflect journal changes "live"
15794 need to recheck journal files continuously in appropriate
15795 time intervals.
15796
15797 * It is now possible to set the "age" field for tmpfiles
15798 entries to 0, indicating that files matching this entry
15799 shall always be removed when the directories are cleaned up.
15800
15801 * coredumpctl gained a new "gdb" verb which invokes gdb
15802 right-away on the selected coredump.
15803
15804 * There's now support for "hybrid sleep" on kernels that
15805 support this, in addition to "suspend" and "hibernate". Use
15806 "systemctl hybrid-sleep" to make use of this.
15807
15808 * logind's HandleSuspendKey= setting (and related settings)
15809 now gained support for a new "lock" setting to simply
15810 request the screen lock on all local sessions, instead of
15811 actually executing a suspend or hibernation.
15812
15813 * systemd will now mount the EFI variables file system by
15814 default.
15815
15816 * Socket units now gained support for configuration of the
15817 SMACK security label.
15818
15819 * timedatectl will now output the time of the last and next
15820 daylight saving change.
15821
15822 * We dropped support for various legacy and distro-specific
15823 concepts, such as insserv, early-boot SysV services
15824 (i.e. those for non-standard runlevels such as 'b' or 'S')
15825 or ArchLinux /etc/rc.conf support. We recommend the
15826 distributions who still need support this to either continue
15827 to maintain the necessary patches downstream, or find a
15828 different solution. (Talk to us if you have questions!)
15829
15830 * Various systemd components will now bypass polkit checks for
15831 root and otherwise handle properly if polkit is not found to
15832 be around. This should fix most issues for polkit-less
15833 systems. Quite frankly this should have been this way since
15834 day one. It is absolutely our intention to make systemd work
15835 fine on polkit-less systems, and we consider it a bug if
15836 something does not work as it should if polkit is not around.
15837
15838 * For embedded systems it is now possible to build udev and
15839 systemd without blkid and/or kmod support.
15840
15841 * "systemctl switch-root" is now capable of switching root
15842 more than once. I.e. in addition to transitions from the
15843 initrd to the host OS it is now possible to transition to
15844 further OS images from the host. This is useful to implement
15845 offline updating tools.
15846
15847 * Various other additions have been made to the RPM macros
15848 shipped with systemd. Use %udev_rules_update() after
15849 installing new udev rules files. %_udevhwdbdir,
15850 %_udevrulesdir, %_journalcatalogdir, %_tmpfilesdir,
15851 %_sysctldir are now available which resolve to the right
15852 directories for packages to place various data files in.
15853
15854 * journalctl gained the new --full switch (in addition to
15855 --all, to disable ellipsation for long messages.
15856
15857 Contributions from: Anders Olofsson, Auke Kok, Ben Boeckel,
15858 Colin Walters, Cosimo Cecchi, Daniel Wallace, Dave Reisner,
15859 Eelco Dolstra, Holger Hans Peter Freyther, Kay Sievers,
15860 Chun-Yi Lee, Lekensteyn, Lennart Poettering, Mantas Mikulėnas,
15861 Marti Raudsepp, Martin Pitt, Mauro Dreissig, Michael Biebl,
15862 Michal Schmidt, Michal Sekletar, Miklos Vajna, Nis Martensen,
15863 Oleksii Shevchuk, Olivier Brunel, Ramkumar Ramachandra, Thomas
15864 Bächler, Thomas Hindoe Paaboel Andersen, Tom Gundersen, Tony
15865 Camuso, Umut Tezduyar, Zbigniew Jędrzejewski-Szmek
15866
15867 CHANGES WITH 195:
15868
15869 * journalctl gained new --since= and --until= switches to
15870 filter by time. It also now supports nice filtering for
15871 units via --unit=/-u.
15872
15873 * Type=oneshot services may use ExecReload= and do the
15874 right thing.
15875
15876 * The journal daemon now supports time-based rotation and
15877 vacuuming, in addition to the usual disk-space based
15878 rotation.
15879
15880 * The journal will now index the available field values for
15881 each field name. This enables clients to show pretty drop
15882 downs of available match values when filtering. The bash
15883 completion of journalctl has been updated
15884 accordingly. journalctl gained a new switch -F to list all
15885 values a certain field takes in the journal database.
15886
15887 * More service events are now written as structured messages
15888 to the journal, and made recognizable via message IDs.
15889
15890 * The timedated, localed and hostnamed mini-services which
15891 previously only provided support for changing time, locale
15892 and hostname settings from graphical DEs such as GNOME now
15893 also have a minimal (but very useful) text-based client
15894 utility each. This is probably the nicest way to changing
15895 these settings from the command line now, especially since
15896 it lists available options and is fully integrated with bash
15897 completion.
15898
15899 * There's now a new tool "systemd-coredumpctl" to list and
15900 extract coredumps from the journal.
15901
15902 * We now install a README each in /var/log/ and
15903 /etc/rc.d/init.d explaining where the system logs and init
15904 scripts went. This hopefully should help folks who go to
15905 that dirs and look into the otherwise now empty void and
15906 scratch their heads.
15907
15908 * When user-services are invoked (by systemd --user) the
15909 $MANAGERPID env var is set to the PID of systemd.
15910
15911 * SIGRTMIN+24 when sent to a --user instance will now result
15912 in immediate termination of systemd.
15913
15914 * gatewayd received numerous feature additions such as a
15915 "follow" mode, for live syncing and filtering.
15916
15917 * browse.html now allows filtering and showing detailed
15918 information on specific entries. Keyboard navigation and
15919 mouse screen support has been added.
15920
15921 * gatewayd/journalctl now supports HTML5/JSON
15922 Server-Sent-Events as output.
15923
15924 * The SysV init script compatibility logic will now
15925 heuristically determine whether a script supports the
15926 "reload" verb, and only then make this available as
15927 "systemctl reload".
15928
15929 * "systemctl status --follow" has been removed, use "journalctl
15930 -u" instead.
15931
15932 * journald.conf's RuntimeMinSize=, PersistentMinSize= settings
15933 have been removed since they are hardly useful to be
15934 configured.
15935
15936 * And I'd like to take the opportunity to specifically mention
15937 Zbigniew for his great contributions. Zbigniew, you rock!
15938
15939 Contributions from: Andrew Eikum, Christian Hesse, Colin
15940 Guthrie, Daniel J Walsh, Dave Reisner, Eelco Dolstra, Ferenc
15941 Wágner, Kay Sievers, Lennart Poettering, Lukas Nykryn, Mantas
15942 Mikulėnas, Martin Mikkelsen, Martin Pitt, Michael Olbrich,
15943 Michael Stapelberg, Michal Schmidt, Sebastian Ott, Thomas
15944 Bächler, Umut Tezduyar, Will Woods, Wulf C. Krueger, Zbigniew
15945 Jędrzejewski-Szmek, Сковорода Никита Андреевич
15946
15947 CHANGES WITH 194:
15948
15949 * If /etc/vconsole.conf is non-existent or empty we will no
15950 longer load any console font or key map at boot by
15951 default. Instead the kernel defaults will be left
15952 intact. This is definitely the right thing to do, as no
15953 configuration should mean no configuration, and hard-coding
15954 font names that are different on all archs is probably a bad
15955 idea. Also, the kernel default key map and font should be
15956 good enough for most cases anyway, and mostly identical to
15957 the userspace fonts/key maps we previously overloaded them
15958 with. If distributions want to continue to default to a
15959 non-kernel font or key map they should ship a default
15960 /etc/vconsole.conf with the appropriate contents.
15961
15962 Contributions from: Colin Walters, Daniel J Walsh, Dave
15963 Reisner, Kay Sievers, Lennart Poettering, Lukas Nykryn, Tollef
15964 Fog Heen, Tom Gundersen, Zbigniew Jędrzejewski-Szmek
15965
15966 CHANGES WITH 193:
15967
15968 * journalctl gained a new --cursor= switch to show entries
15969 starting from the specified location in the journal.
15970
15971 * We now enforce a size limit on journal entry fields exported
15972 with "-o json" in journalctl. Fields larger than 4K will be
15973 assigned null. This can be turned off with --all.
15974
15975 * An (optional) journal gateway daemon is now available as
15976 "systemd-journal-gatewayd.service". This service provides
15977 access to the journal via HTTP and JSON. This functionality
15978 will be used to implement live log synchronization in both
15979 pull and push modes, but has various other users too, such
15980 as easy log access for debugging of embedded devices. Right
15981 now it is already useful to retrieve the journal via HTTP:
15982
15983 # systemctl start systemd-journal-gatewayd.service
15984 # wget http://localhost:19531/entries
15985
15986 This will download the journal contents in a
15987 /var/log/messages compatible format. The same as JSON:
15988
15989 # curl -H"Accept: application/json" http://localhost:19531/entries
15990
15991 This service is also accessible via a web browser where a
15992 single static HTML5 app is served that uses the JSON logic
15993 to enable the user to do some basic browsing of the
15994 journal. This will be extended later on. Here's an example
15995 screenshot of this app in its current state:
15996
15997 https://0pointer.de/public/journal-gatewayd
15998
15999 Contributions from: Kay Sievers, Lennart Poettering, Robert
16000 Milasan, Tom Gundersen
16001
16002 CHANGES WITH 192:
16003
16004 * The bash completion logic is now available for journalctl
16005 too.
16006
16007 * We do not mount the "cpuset" controller anymore together with
16008 "cpu" and "cpuacct", as "cpuset" groups generally cannot be
16009 started if no parameters are assigned to it. "cpuset" hence
16010 broke code that assumed it could create "cpu" groups and
16011 just start them.
16012
16013 * journalctl -f will now subscribe to terminal size changes,
16014 and line break accordingly.
16015
16016 Contributions from: Dave Reisner, Kay Sievers, Lennart
16017 Poettering, Lukas Nykrynm, Mirco Tischler, Václav Pavlín
16018
16019 CHANGES WITH 191:
16020
16021 * nspawn will now create a symlink /etc/localtime in the
16022 container environment, copying the host's timezone
16023 setting. Previously this has been done via a bind mount, but
16024 since symlinks cannot be bind mounted this has now been
16025 changed to create/update the appropriate symlink.
16026
16027 * journalctl -n's line number argument is now optional, and
16028 will default to 10 if omitted.
16029
16030 * journald will now log the maximum size the journal files may
16031 take up on disk. This is particularly useful if the default
16032 built-in logic of determining this parameter from the file
16033 system size is used. Use "systemctl status
16034 systemd-journald.service" to see this information.
16035
16036 * The multi-seat X wrapper tool has been stripped down. As X
16037 is now capable of enumerating graphics devices via udev in a
16038 seat-aware way the wrapper is not strictly necessary
16039 anymore. A stripped down temporary stop-gap is still shipped
16040 until the upstream display managers have been updated to
16041 fully support the new X logic. Expect this wrapper to be
16042 removed entirely in one of the next releases.
16043
16044 * HandleSleepKey= in logind.conf has been split up into
16045 HandleSuspendKey= and HandleHibernateKey=. The old setting
16046 is not available anymore. X11 and the kernel are
16047 distinguishing between these keys and we should too. This
16048 also means the inhibition lock for these keys has been split
16049 into two.
16050
16051 Contributions from: Dave Airlie, Eelco Dolstra, Lennart
16052 Poettering, Lukas Nykryn, Václav Pavlín
16053
16054 CHANGES WITH 190:
16055
16056 * Whenever a unit changes state we will now log this to the
16057 journal and show along the unit's own log output in
16058 "systemctl status".
16059
16060 * ConditionPathIsMountPoint= can now properly detect bind
16061 mount points too. (Previously, a bind mount of one file
16062 system to another place in the same file system could not be
16063 detected as mount, since they shared struct stat's st_dev
16064 field.)
16065
16066 * We will now mount the cgroup controllers cpu, cpuacct,
16067 cpuset and the controllers net_cls, net_prio together by
16068 default.
16069
16070 * nspawn containers will now have a virtualized boot
16071 ID. (i.e. /proc/sys/kernel/random/boot_id is now mounted
16072 over with a randomized ID at container initialization). This
16073 has the effect of making "journalctl -b" do the right thing
16074 in a container.
16075
16076 * The JSON output journal serialization has been updated not
16077 to generate "endless" list objects anymore, but rather one
16078 JSON object per line. This is more in line how most JSON
16079 parsers expect JSON objects. The new output mode
16080 "json-pretty" has been added to provide similar output, but
16081 neatly aligned for readability by humans.
16082
16083 * We dropped all explicit sync() invocations in the shutdown
16084 code. The kernel does this implicitly anyway in the kernel
16085 reboot() syscall. halt(8)'s -n option is now a compatibility
16086 no-op.
16087
16088 * We now support virtualized reboot() in containers, as
16089 supported by newer kernels. We will fall back to exit() if
16090 CAP_SYS_REBOOT is not available to the container. Also,
16091 nspawn makes use of this now and will actually reboot the
16092 container if the containerized OS asks for that.
16093
16094 * journalctl will only show local log output by default
16095 now. Use --merge (-m) to show remote log output, too.
16096
16097 * libsystemd-journal gained the new sd_journal_get_usage()
16098 call to determine the current disk usage of all journal
16099 files. This is exposed in the new "journalctl --disk-usage"
16100 command.
16101
16102 * journald gained a new configuration setting SplitMode= in
16103 journald.conf which may be used to control how user journals
16104 are split off. See journald.conf(5) for details.
16105
16106 * A new condition type ConditionFileNotEmpty= has been added.
16107
16108 * tmpfiles' "w" lines now support file globbing, to write
16109 multiple files at once.
16110
16111 * We added Python bindings for the journal submission
16112 APIs. More Python APIs for a number of selected APIs will
16113 likely follow. Note that we intend to add native bindings
16114 only for the Python language, as we consider it common
16115 enough to deserve bindings shipped within systemd. There are
16116 various projects outside of systemd that provide bindings
16117 for languages such as PHP or Lua.
16118
16119 * Many conditions will now resolve specifiers such as %i. In
16120 addition, PathChanged= and related directives of .path units
16121 now support specifiers as well.
16122
16123 * There's now a new RPM macro definition for the system preset
16124 dir: %_presetdir.
16125
16126 * journald will now warn if it ca not forward a message to the
16127 syslog daemon because its socket is full.
16128
16129 * timedated will no longer write or process /etc/timezone,
16130 except on Debian. As we do not support late mounted /usr
16131 anymore /etc/localtime always being a symlink is now safe,
16132 and hence the information in /etc/timezone is not necessary
16133 anymore.
16134
16135 * logind will now always reserve one VT for a text getty (VT6
16136 by default). Previously if more than 6 X sessions where
16137 started they took up all the VTs with auto-spawned gettys,
16138 so that no text gettys were available anymore.
16139
16140 * udev will now automatically inform the btrfs kernel logic
16141 about btrfs RAID components showing up. This should make
16142 simple hotplug based btrfs RAID assembly work.
16143
16144 * PID 1 will now increase its RLIMIT_NOFILE to 64K by default
16145 (but not for its children which will stay at the kernel
16146 default). This should allow setups with a lot more listening
16147 sockets.
16148
16149 * systemd will now always pass the configured timezone to the
16150 kernel at boot. timedated will do the same when the timezone
16151 is changed.
16152
16153 * logind's inhibition logic has been updated. By default,
16154 logind will now handle the lid switch, the power and sleep
16155 keys all the time, even in graphical sessions. If DEs want
16156 to handle these events on their own they should take the new
16157 handle-power-key, handle-sleep-key and handle-lid-switch
16158 inhibitors during their runtime. A simple way to achieve
16159 that is to invoke the DE wrapped in an invocation of:
16160
16161 systemd-inhibit --what=handle-power-key:handle-sleep-key:handle-lid-switch …
16162
16163 * Access to unit operations is now checked via SELinux taking
16164 the unit file label and client process label into account.
16165
16166 * systemd will now notify the administrator in the journal
16167 when he over-mounts a non-empty directory.
16168
16169 * There are new specifiers that are resolved in unit files,
16170 for the hostname (%H), the machine ID (%m) and the boot ID
16171 (%b).
16172
16173 Contributions from: Allin Cottrell, Auke Kok, Brandon Philips,
16174 Colin Guthrie, Colin Walters, Daniel J Walsh, Dave Reisner,
16175 Eelco Dolstra, Jan Engelhardt, Kay Sievers, Lennart
16176 Poettering, Lucas De Marchi, Lukas Nykryn, Mantas Mikulėnas,
16177 Martin Pitt, Matthias Clasen, Michael Olbrich, Pierre Schmitz,
16178 Shawn Landden, Thomas Hindoe Paaboel Andersen, Tom Gundersen,
16179 Václav Pavlín, Yin Kangkai, Zbigniew Jędrzejewski-Szmek
16180
16181 CHANGES WITH 189:
16182
16183 * Support for reading structured kernel messages from
16184 /dev/kmsg has now been added and is enabled by default.
16185
16186 * Support for reading kernel messages from /proc/kmsg has now
16187 been removed. If you want kernel messages in the journal
16188 make sure to run a recent kernel (>= 3.5) that supports
16189 reading structured messages from /dev/kmsg (see
16190 above). /proc/kmsg is now exclusive property of classic
16191 syslog daemons again.
16192
16193 * The libudev API gained the new
16194 udev_device_new_from_device_id() call.
16195
16196 * The logic for file system namespace (ReadOnlyDirectory=,
16197 ReadWriteDirectoy=, PrivateTmp=) has been reworked not to
16198 require pivot_root() anymore. This means fewer temporary
16199 directories are created below /tmp for this feature.
16200
16201 * nspawn containers will now see and receive all submounts
16202 made on the host OS below the root file system of the
16203 container.
16204
16205 * Forward Secure Sealing is now supported for Journal files,
16206 which provide cryptographical sealing of journal files so
16207 that attackers cannot alter log history anymore without this
16208 being detectable. Lennart will soon post a blog story about
16209 this explaining it in more detail.
16210
16211 * There are two new service settings RestartPreventExitStatus=
16212 and SuccessExitStatus= which allow configuration of exit
16213 status (exit code or signal) which will be excepted from the
16214 restart logic, resp. consider successful.
16215
16216 * journalctl gained the new --verify switch that can be used
16217 to check the integrity of the structure of journal files and
16218 (if Forward Secure Sealing is enabled) the contents of
16219 journal files.
16220
16221 * nspawn containers will now be run with /dev/stdin, /dev/fd/
16222 and similar symlinks pre-created. This makes running shells
16223 as container init process a lot more fun.
16224
16225 * The fstab support can now handle PARTUUID= and PARTLABEL=
16226 entries.
16227
16228 * A new ConditionHost= condition has been added to match
16229 against the hostname (with globs) and machine ID. This is
16230 useful for clusters where a single OS image is used to
16231 provision a large number of hosts which shall run slightly
16232 different sets of services.
16233
16234 * Services which hit the restart limit will now be placed in a
16235 failure state.
16236
16237 Contributions from: Bertram Poettering, Dave Reisner, Huang
16238 Hang, Kay Sievers, Lennart Poettering, Lukas Nykryn, Martin
16239 Pitt, Simon Peeters, Zbigniew Jędrzejewski-Szmek
16240
16241 CHANGES WITH 188:
16242
16243 * When running in --user mode systemd will now become a
16244 subreaper (PR_SET_CHILD_SUBREAPER). This should make the ps
16245 tree a lot more organized.
16246
16247 * A new PartOf= unit dependency type has been introduced that
16248 may be used to group services in a natural way.
16249
16250 * "systemctl enable" may now be used to enable instances of
16251 services.
16252
16253 * journalctl now prints error log levels in red, and
16254 warning/notice log levels in bright white. It also supports
16255 filtering by log level now.
16256
16257 * cgtop gained a new -n switch (similar to top), to configure
16258 the maximum number of iterations to run for. It also gained
16259 -b, to run in batch mode (accepting no input).
16260
16261 * The suffix ".service" may now be omitted on most systemctl
16262 command lines involving service unit names.
16263
16264 * There's a new bus call in logind to lock all sessions, as
16265 well as a loginctl verb for it "lock-sessions".
16266
16267 * libsystemd-logind.so gained a new call sd_journal_perror()
16268 that works similar to libc perror() but logs to the journal
16269 and encodes structured information about the error number.
16270
16271 * /etc/crypttab entries now understand the new keyfile-size=
16272 option.
16273
16274 * shutdown(8) now can send a (configurable) wall message when
16275 a shutdown is cancelled.
16276
16277 * The mount propagation mode for the root file system will now
16278 default to "shared", which is useful to make containers work
16279 nicely out-of-the-box so that they receive new mounts from
16280 the host. This can be undone locally by running "mount
16281 --make-rprivate /" if needed.
16282
16283 * The prefdm.service file has been removed. Distributions
16284 should maintain this unit downstream if they intend to keep
16285 it around. However, we recommend writing normal unit files
16286 for display managers instead.
16287
16288 * Since systemd is a crucial part of the OS we will now
16289 default to a number of compiler switches that improve
16290 security (hardening) such as read-only relocations, stack
16291 protection, and suchlike.
16292
16293 * The TimeoutSec= setting for services is now split into
16294 TimeoutStartSec= and TimeoutStopSec= to allow configuration
16295 of individual time outs for the start and the stop phase of
16296 the service.
16297
16298 Contributions from: Artur Zaprzala, Arvydas Sidorenko, Auke
16299 Kok, Bryan Kadzban, Dave Reisner, David Strauss, Harald Hoyer,
16300 Jim Meyering, Kay Sievers, Lennart Poettering, Mantas
16301 Mikulėnas, Martin Pitt, Michal Schmidt, Michal Sekletar, Peter
16302 Alfredsen, Shawn Landden, Simon Peeters, Terence Honles, Tom
16303 Gundersen, Zbigniew Jędrzejewski-Szmek
16304
16305 CHANGES WITH 187:
16306
16307 * The journal and id128 C APIs are now fully documented as man
16308 pages.
16309
16310 * Extra safety checks have been added when transitioning from
16311 the initial RAM disk to the main system to avoid accidental
16312 data loss.
16313
16314 * /etc/crypttab entries now understand the new keyfile-offset=
16315 option.
16316
16317 * systemctl -t can now be used to filter by unit load state.
16318
16319 * The journal C API gained the new sd_journal_wait() call to
16320 make writing synchronous journal clients easier.
16321
16322 * journalctl gained the new -D switch to show journals from a
16323 specific directory.
16324
16325 * journalctl now displays a special marker between log
16326 messages of two different boots.
16327
16328 * The journal is now explicitly flushed to /var via a service
16329 systemd-journal-flush.service, rather than implicitly simply
16330 by seeing /var/log/journal to be writable.
16331
16332 * journalctl (and the journal C APIs) can now match for much
16333 more complex expressions, with alternatives and
16334 disjunctions.
16335
16336 * When transitioning from the initial RAM disk to the main
16337 system we will now kill all processes in a killing spree to
16338 ensure no processes stay around by accident.
16339
16340 * Three new specifiers may be used in unit files: %u, %h, %s
16341 resolve to the user name, user home directory resp. user
16342 shell. This is useful for running systemd user instances.
16343
16344 * We now automatically rotate journal files if their data
16345 object hash table gets a fill level > 75%. We also size the
16346 hash table based on the configured maximum file size. This
16347 together should lower hash collisions drastically and thus
16348 speed things up a bit.
16349
16350 * journalctl gained the new "--header" switch to introspect
16351 header data of journal files.
16352
16353 * A new setting SystemCallFilters= has been added to services which may
16354 be used to apply deny lists or allow lists to system calls. This is
16355 based on SECCOMP Mode 2 of Linux 3.5.
16356
16357 * nspawn gained a new --link-journal= switch (and quicker: -j)
16358 to link the container journal with the host. This makes it
16359 very easy to centralize log viewing on the host for all
16360 guests while still keeping the journal files separated.
16361
16362 * Many bugfixes and optimizations
16363
16364 Contributions from: Auke Kok, Eelco Dolstra, Harald Hoyer, Kay
16365 Sievers, Lennart Poettering, Malte Starostik, Paul Menzel, Rex
16366 Tsai, Shawn Landden, Tom Gundersen, Ville Skyttä, Zbigniew
16367 Jędrzejewski-Szmek
16368
16369 CHANGES WITH 186:
16370
16371 * Several tools now understand kernel command line arguments,
16372 which are only read when run in an initial RAM disk. They
16373 usually follow closely their normal counterparts, but are
16374 prefixed with rd.
16375
16376 * There's a new tool to analyze the readahead files that are
16377 automatically generated at boot. Use:
16378
16379 /usr/lib/systemd/systemd-readahead analyze /.readahead
16380
16381 * We now provide an early debug shell on tty9 if this enabled. Use:
16382
16383 systemctl enable debug-shell.service
16384
16385 * All plymouth related units have been moved into the Plymouth
16386 package. Please make sure to upgrade your Plymouth version
16387 as well.
16388
16389 * systemd-tmpfiles now supports getting passed the basename of
16390 a configuration file only, in which case it will look for it
16391 in all appropriate directories automatically.
16392
16393 * udevadm info now takes a /dev or /sys path as argument, and
16394 does the right thing. Example:
16395
16396 udevadm info /dev/sda
16397 udevadm info /sys/class/block/sda
16398
16399 * systemctl now prints a warning if a unit is stopped but a
16400 unit that might trigger it continues to run. Example: a
16401 service is stopped but the socket that activates it is left
16402 running.
16403
16404 * "systemctl status" will now mention if the log output was
16405 shortened due to rotation since a service has been started.
16406
16407 * The journal API now exposes functions to determine the
16408 "cutoff" times due to rotation.
16409
16410 * journald now understands SIGUSR1 and SIGUSR2 for triggering
16411 immediately flushing of runtime logs to /var if possible,
16412 resp. for triggering immediate rotation of the journal
16413 files.
16414
16415 * It is now considered an error if a service is attempted to
16416 be stopped that is not loaded.
16417
16418 * XDG_RUNTIME_DIR now uses numeric UIDs instead of usernames.
16419
16420 * systemd-analyze now supports Python 3
16421
16422 * tmpfiles now supports cleaning up directories via aging
16423 where the first level dirs are always kept around but
16424 directories beneath it automatically aged. This is enabled
16425 by prefixing the age field with '~'.
16426
16427 * Seat objects now expose CanGraphical, CanTTY properties
16428 which is required to deal with very fast bootups where the
16429 display manager might be running before the graphics drivers
16430 completed initialization.
16431
16432 * Seat objects now expose a State property.
16433
16434 * We now include RPM macros for service enabling/disabling
16435 based on the preset logic. We recommend RPM based
16436 distributions to make use of these macros if possible. This
16437 makes it simpler to reuse RPM spec files across
16438 distributions.
16439
16440 * We now make sure that the collected systemd unit name is
16441 always valid when services log to the journal via
16442 STDOUT/STDERR.
16443
16444 * There's a new man page kernel-command-line(7) detailing all
16445 command line options we understand.
16446
16447 * The fstab generator may now be disabled at boot by passing
16448 fstab=0 on the kernel command line.
16449
16450 * A new kernel command line option modules-load= is now understood
16451 to load a specific kernel module statically, early at boot.
16452
16453 * Unit names specified on the systemctl command line are now
16454 automatically escaped as needed. Also, if file system or
16455 device paths are specified they are automatically turned
16456 into the appropriate mount or device unit names. Example:
16457
16458 systemctl status /home
16459 systemctl status /dev/sda
16460
16461 * The SysVConsole= configuration option has been removed from
16462 system.conf parsing.
16463
16464 * The SysV search path is no longer exported on the D-Bus
16465 Manager object.
16466
16467 * The Names= option has been removed from unit file parsing.
16468
16469 * There's a new man page bootup(7) detailing the boot process.
16470
16471 * Every unit and every generator we ship with systemd now
16472 comes with full documentation. The self-explanatory boot is
16473 complete.
16474
16475 * A couple of services gained "systemd-" prefixes in their
16476 name if they wrap systemd code, rather than only external
16477 code. Among them fsck@.service which is now
16478 systemd-fsck@.service.
16479
16480 * The HaveWatchdog property has been removed from the D-Bus
16481 Manager object.
16482
16483 * systemd.confirm_spawn= on the kernel command line should now
16484 work sensibly.
16485
16486 * There's a new man page crypttab(5) which details all options
16487 we actually understand.
16488
16489 * systemd-nspawn gained a new --capability= switch to pass
16490 additional capabilities to the container.
16491
16492 * timedated will now read known NTP implementation unit names
16493 from /usr/lib/systemd/ntp-units.d/*.list,
16494 systemd-timedated-ntp.target has been removed.
16495
16496 * journalctl gained a new switch "-b" that lists log data of
16497 the current boot only.
16498
16499 * The notify socket is in the abstract namespace again, in
16500 order to support daemons which chroot() at start-up.
16501
16502 * There is a new Storage= configuration option for journald
16503 which allows configuration of where log data should go. This
16504 also provides a way to disable journal logging entirely, so
16505 that data collected is only forwarded to the console, the
16506 kernel log buffer or another syslog implementation.
16507
16508 * Many bugfixes and optimizations
16509
16510 Contributions from: Auke Kok, Colin Guthrie, Dave Reisner,
16511 David Strauss, Eelco Dolstra, Kay Sievers, Lennart Poettering,
16512 Lukas Nykryn, Michal Schmidt, Michal Sekletar, Paul Menzel,
16513 Shawn Landden, Tom Gundersen
16514
16515 CHANGES WITH 185:
16516
16517 * "systemctl help <unit>" now shows the man page if one is
16518 available.
16519
16520 * Several new man pages have been added.
16521
16522 * MaxLevelStore=, MaxLevelSyslog=, MaxLevelKMsg=,
16523 MaxLevelConsole= can now be specified in
16524 journald.conf. These options allow reducing the amount of
16525 data stored on disk or forwarded by the log level.
16526
16527 * TimerSlackNSec= can now be specified in system.conf for
16528 PID1. This allows system-wide power savings.
16529
16530 Contributions from: Dave Reisner, Kay Sievers, Lauri Kasanen,
16531 Lennart Poettering, Malte Starostik, Marc-Antoine Perennou,
16532 Matthias Clasen
16533
16534 CHANGES WITH 184:
16535
16536 * logind is now capable of (optionally) handling power and
16537 sleep keys as well as the lid switch.
16538
16539 * journalctl now understands the syntax "journalctl
16540 /usr/bin/avahi-daemon" to get all log output of a specific
16541 daemon.
16542
16543 * CapabilityBoundingSet= in system.conf now also influences
16544 the capability bound set of usermode helpers of the kernel.
16545
16546 Contributions from: Daniel Drake, Daniel J. Walsh, Gert
16547 Michael Kulyk, Harald Hoyer, Jean Delvare, Kay Sievers,
16548 Lennart Poettering, Matthew Garrett, Matthias Clasen, Paul
16549 Menzel, Shawn Landden, Tero Roponen, Tom Gundersen
16550
16551 CHANGES WITH 183:
16552
16553 * Note that we skipped 139 releases here in order to set the
16554 new version to something that is greater than both udev's
16555 and systemd's most recent version number.
16556
16557 * udev: all udev sources are merged into the systemd source tree now.
16558 All future udev development will happen in the systemd tree. It
16559 is still fully supported to use the udev daemon and tools without
16560 systemd running, like in initramfs or other init systems. Building
16561 udev though, will require the *build* of the systemd tree, but
16562 udev can be properly *run* without systemd.
16563
16564 * udev: /lib/udev/devices/ are not read anymore; systemd-tmpfiles
16565 should be used to create dead device nodes as workarounds for broken
16566 subsystems.
16567
16568 * udev: RUN+="socket:…" and udev_monitor_new_from_socket() is
16569 no longer supported. udev_monitor_new_from_netlink() needs to be
16570 used to subscribe to events.
16571
16572 * udev: when udevd is started by systemd, processes which are left
16573 behind by forking them off of udev rules, are unconditionally cleaned
16574 up and killed now after the event handling has finished. Services or
16575 daemons must be started as systemd services. Services can be
16576 pulled-in by udev to get started, but they can no longer be directly
16577 forked by udev rules.
16578
16579 * udev: the daemon binary is called systemd-udevd now and installed
16580 in /usr/lib/systemd/. Standalone builds or non-systemd systems need
16581 to adapt to that, create symlink, or rename the binary after building
16582 it.
16583
16584 * libudev no longer provides these symbols:
16585 udev_monitor_from_socket()
16586 udev_queue_get_failed_list_entry()
16587 udev_get_{dev,sys,run}_path()
16588 The versions number was bumped and symbol versioning introduced.
16589
16590 * systemd-loginctl and systemd-journalctl have been renamed
16591 to loginctl and journalctl to match systemctl.
16592
16593 * The config files: /etc/systemd/systemd-logind.conf and
16594 /etc/systemd/systemd-journald.conf have been renamed to
16595 logind.conf and journald.conf. Package updates should rename
16596 the files to the new names on upgrade.
16597
16598 * For almost all files the license is now LGPL2.1+, changed
16599 from the previous GPL2.0+. Exceptions are some minor stuff
16600 of udev (which will be changed to LGPL2.1 eventually, too),
16601 and the MIT licensed sd-daemon.[ch] library that is suitable
16602 to be used as drop-in files.
16603
16604 * systemd and logind now handle system sleep states, in
16605 particular suspending and hibernating.
16606
16607 * logind now implements a sleep/shutdown/idle inhibiting logic
16608 suitable for a variety of uses. Soonishly Lennart will blog
16609 about this in more detail.
16610
16611 * var-run.mount and var-lock.mount are no longer provided
16612 (which previously bind mounted these directories to their new
16613 places). Distributions which have not converted these
16614 directories to symlinks should consider stealing these files
16615 from git history and add them downstream.
16616
16617 * We introduced the Documentation= field for units and added
16618 this to all our shipped units. This is useful to make it
16619 easier to explore the boot and the purpose of the various
16620 units.
16621
16622 * All smaller setup units (such as
16623 systemd-vconsole-setup.service) now detect properly if they
16624 are run in a container and are skipped when
16625 appropriate. This guarantees an entirely noise-free boot in
16626 Linux container environments such as systemd-nspawn.
16627
16628 * A framework for implementing offline system updates is now
16629 integrated, for details see:
16630 https://www.freedesktop.org/software/systemd/man/systemd.offline-updates.html
16631
16632 * A new service type Type=idle is available now which helps us
16633 avoiding ugly interleaving of getty output and boot status
16634 messages.
16635
16636 * There's now a system-wide CapabilityBoundingSet= option to
16637 globally reduce the set of capabilities for the
16638 system. This is useful to drop CAP_SYS_MKNOD, CAP_SYS_RAWIO,
16639 CAP_NET_RAW, CAP_SYS_MODULE, CAP_SYS_TIME, CAP_SYS_PTRACE or
16640 even CAP_NET_ADMIN system-wide for secure systems.
16641
16642 * There are now system-wide DefaultLimitXXX= options to
16643 globally change the defaults of the various resource limits
16644 for all units started by PID 1.
16645
16646 * Harald Hoyer's systemd test suite has been integrated into
16647 systemd which allows easy testing of systemd builds in qemu
16648 and nspawn. (This is really awesome! Ask us for details!)
16649
16650 * The fstab parser is now implemented as generator, not inside
16651 of PID 1 anymore.
16652
16653 * systemctl will now warn you if .mount units generated from
16654 /etc/fstab are out of date due to changes in fstab that
16655 have not been read by systemd yet.
16656
16657 * systemd is now suitable for usage in initrds. Dracut has
16658 already been updated to make use of this. With this in place
16659 initrds get a slight bit faster but primarily are much
16660 easier to introspect and debug since "systemctl status" in
16661 the host system can be used to introspect initrd services,
16662 and the journal from the initrd is kept around too.
16663
16664 * systemd-delta has been added, a tool to explore differences
16665 between user/admin configuration and vendor defaults.
16666
16667 * PrivateTmp= now affects both /tmp and /var/tmp.
16668
16669 * Boot time status messages are now much prettier and feature
16670 proper english language. Booting up systemd has never been
16671 so sexy.
16672
16673 * Read-ahead pack files now include the inode number of all
16674 files to pre-cache. When the inode changes the pre-caching
16675 is not attempted. This should be nicer to deal with updated
16676 packages which might result in changes of read-ahead
16677 patterns.
16678
16679 * We now temporaritly lower the kernel's read_ahead_kb variable
16680 when collecting read-ahead data to ensure the kernel's
16681 built-in read-ahead does not add noise to our measurements
16682 of necessary blocks to pre-cache.
16683
16684 * There's now RequiresMountsFor= to add automatic dependencies
16685 for all mounts necessary for a specific file system path.
16686
16687 * MountAuto= and SwapAuto= have been removed from
16688 system.conf. Mounting file systems at boot has to take place
16689 in systemd now.
16690
16691 * nspawn now learned a new switch --uuid= to set the machine
16692 ID on the command line.
16693
16694 * nspawn now learned the -b switch to automatically search
16695 for an init system.
16696
16697 * vt102 is now the default TERM for serial TTYs, upgraded from
16698 vt100.
16699
16700 * systemd-logind now works on VT-less systems.
16701
16702 * The build tree has been reorganized. The individual
16703 components now have directories of their own.
16704
16705 * A new condition type ConditionPathIsReadWrite= is now available.
16706
16707 * nspawn learned the new -C switch to create cgroups for the
16708 container in other hierarchies.
16709
16710 * We now have support for hardware watchdogs, configurable in
16711 system.conf.
16712
16713 * The scheduled shutdown logic now has a public API.
16714
16715 * We now mount /tmp as tmpfs by default, but this can be
16716 masked and /etc/fstab can override it.
16717
16718 * Since udisks does not make use of /media anymore we are not
16719 mounting a tmpfs on it anymore.
16720
16721 * journalctl gained a new --local switch to only interleave
16722 locally generated journal files.
16723
16724 * We can now load the IMA policy at boot automatically.
16725
16726 * The GTK tools have been split off into a systemd-ui.
16727
16728 Contributions from: Andreas Schwab, Auke Kok, Ayan George,
16729 Colin Guthrie, Daniel Mack, Dave Reisner, David Ward, Elan
16730 Ruusamäe, Frederic Crozat, Gergely Nagy, Guillermo Vidal,
16731 Hannes Reinecke, Harald Hoyer, Javier Jardón, Kay Sievers,
16732 Lennart Poettering, Lucas De Marchi, Léo Gillot-Lamure,
16733 Marc-Antoine Perennou, Martin Pitt, Matthew Monaco, Maxim
16734 A. Mikityanskiy, Michael Biebl, Michael Olbrich, Michal
16735 Schmidt, Nis Martensen, Patrick McCarty, Roberto Sassu, Shawn
16736 Landden, Sjoerd Simons, Sven Anders, Tollef Fog Heen, Tom
16737 Gundersen
16738
16739 CHANGES WITH 44:
16740
16741 * This is mostly a bugfix release
16742
16743 * Support optional initialization of the machine ID from the
16744 KVM or container configured UUID.
16745
16746 * Support immediate reboots with "systemctl reboot -ff"
16747
16748 * Show /etc/os-release data in systemd-analyze output
16749
16750 * Many bugfixes for the journal, including endianness fixes and
16751 ensuring that disk space enforcement works
16752
16753 * sd-login.h is C++ compatible again
16754
16755 * Extend the /etc/os-release format on request of the Debian
16756 folks
16757
16758 * We now refuse non-UTF8 strings used in various configuration
16759 and unit files. This is done to ensure we do not pass invalid
16760 data over D-Bus or expose it elsewhere.
16761
16762 * Register Mimo USB Screens as suitable for automatic seat
16763 configuration
16764
16765 * Read SELinux client context from journal clients in a race
16766 free fashion
16767
16768 * Reorder configuration file lookup order. /etc now always
16769 overrides /run in order to allow the administrator to always
16770 and unconditionally override vendor-supplied or
16771 automatically generated data.
16772
16773 * The various user visible bits of the journal now have man
16774 pages. We still lack man pages for the journal API calls
16775 however.
16776
16777 * We now ship all man pages in HTML format again in the
16778 tarball.
16779
16780 Contributions from: Dave Reisner, Dirk Eibach, Frederic
16781 Crozat, Harald Hoyer, Kay Sievers, Lennart Poettering, Marti
16782 Raudsepp, Michal Schmidt, Shawn Landden, Tero Roponen, Thierry
16783 Reding
16784
16785 CHANGES WITH 43:
16786
16787 * This is mostly a bugfix release
16788
16789 * systems lacking /etc/os-release are no longer supported.
16790
16791 * Various functionality updates to libsystemd-login.so
16792
16793 * Track class of PAM logins to distinguish greeters from
16794 normal user logins.
16795
16796 Contributions from: Kay Sievers, Lennart Poettering, Michael
16797 Biebl
16798
16799 CHANGES WITH 42:
16800
16801 * This is an important bugfix release for v41.
16802
16803 * Building man pages is now optional which should be useful
16804 for those building systemd from git but unwilling to install
16805 xsltproc.
16806
16807 * Watchdog support for supervising services is now usable. In
16808 a future release support for hardware watchdogs
16809 (i.e. /dev/watchdog) will be added building on this.
16810
16811 * Service start rate limiting is now configurable and can be
16812 turned off per service. When a start rate limit is hit a
16813 reboot can automatically be triggered.
16814
16815 * New CanReboot(), CanPowerOff() bus calls in systemd-logind.
16816
16817 Contributions from: Benjamin Franzke, Bill Nottingham,
16818 Frederic Crozat, Lennart Poettering, Michael Olbrich, Michal
16819 Schmidt, Michał Górny, Piotr Drąg
16820
16821 CHANGES WITH 41:
16822
16823 * The systemd binary is installed /usr/lib/systemd/systemd now;
16824 An existing /sbin/init symlink needs to be adapted with the
16825 package update.
16826
16827 * The code that loads kernel modules has been ported to invoke
16828 libkmod directly, instead of modprobe. This means we do not
16829 support systems with module-init-tools anymore.
16830
16831 * Watchdog support is now already useful, but still not
16832 complete.
16833
16834 * A new kernel command line option systemd.setenv= is
16835 understood to set system wide environment variables
16836 dynamically at boot.
16837
16838 * We now limit the set of capabilities of systemd-journald.
16839
16840 * We now set SIGPIPE to ignore by default, since it only is
16841 useful in shell pipelines, and has little use in general
16842 code. This can be disabled with IgnoreSIPIPE=no in unit
16843 files.
16844
16845 Contributions from: Benjamin Franzke, Kay Sievers, Lennart
16846 Poettering, Michael Olbrich, Michal Schmidt, Tom Gundersen,
16847 William Douglas
16848
16849 CHANGES WITH 40:
16850
16851 * This is mostly a bugfix release
16852
16853 * We now expose the reason why a service failed in the
16854 "Result" D-Bus property.
16855
16856 * Rudimentary service watchdog support (will be completed over
16857 the next few releases.)
16858
16859 * When systemd forks off in order execute some service we will
16860 now immediately changes its argv[0] to reflect which process
16861 it will execute. This is useful to minimize the time window
16862 with a generic argv[0], which makes bootcharts more useful
16863
16864 Contributions from: Alvaro Soliverez, Chris Paulson-Ellis, Kay
16865 Sievers, Lennart Poettering, Michael Olbrich, Michal Schmidt,
16866 Mike Kazantsev, Ray Strode
16867
16868 CHANGES WITH 39:
16869
16870 * This is mostly a test release, but incorporates many
16871 bugfixes.
16872
16873 * New systemd-cgtop tool to show control groups by their
16874 resource usage.
16875
16876 * Linking against libacl for ACLs is optional again. If
16877 disabled, support tracking device access for active logins
16878 goes becomes unavailable, and so does access to the user
16879 journals by the respective users.
16880
16881 * If a group "adm" exists, journal files are automatically
16882 owned by them, thus allow members of this group full access
16883 to the system journal as well as all user journals.
16884
16885 * The journal now stores the SELinux context of the logging
16886 client for all entries.
16887
16888 * Add C++ inclusion guards to all public headers
16889
16890 * New output mode "cat" in the journal to print only text
16891 messages, without any meta data like date or time.
16892
16893 * Include tiny X server wrapper as a temporary stop-gap to
16894 teach XOrg udev display enumeration. This is used by display
16895 managers such as gdm, and will go away as soon as XOrg
16896 learned native udev hotplugging for display devices.
16897
16898 * Add new systemd-cat tool for executing arbitrary programs
16899 with STDERR/STDOUT connected to the journal. Can also act as
16900 BSD logger replacement, and does so by default.
16901
16902 * Optionally store all locally generated coredumps in the
16903 journal along with meta data.
16904
16905 * systemd-tmpfiles learnt four new commands: n, L, c, b, for
16906 writing short strings to files (for usage for /sys), and for
16907 creating symlinks, character and block device nodes.
16908
16909 * New unit file option ControlGroupPersistent= to make cgroups
16910 persistent, following the mechanisms outlined in
16911 https://www.freedesktop.org/wiki/Software/systemd/PaxControlGroups
16912
16913 * Support multiple local RTCs in a sane way
16914
16915 * No longer monopolize IO when replaying readahead data on
16916 rotating disks, since we might starve non-file-system IO to
16917 death, since fanotify() will not see accesses done by blkid,
16918 or fsck.
16919
16920 * Do not show kernel threads in systemd-cgls anymore, unless
16921 requested with new -k switch.
16922
16923 Contributions from: Dan Horák, Kay Sievers, Lennart
16924 Poettering, Michal Schmidt
16925
16926 CHANGES WITH 38:
16927
16928 * This is mostly a test release, but incorporates many
16929 bugfixes.
16930
16931 * The git repository moved to:
16932 git://anongit.freedesktop.org/systemd/systemd
16933 ssh://git.freedesktop.org/git/systemd/systemd
16934
16935 * First release with the journal
16936 https://0pointer.de/blog/projects/the-journal.html
16937
16938 * The journal replaces both systemd-kmsg-syslogd and
16939 systemd-stdout-bridge.
16940
16941 * New sd_pid_get_unit() API call in libsystemd-logind
16942
16943 * Many systemadm clean-ups
16944
16945 * Introduce remote-fs-pre.target which is ordered before all
16946 remote mounts and may be used to start services before all
16947 remote mounts.
16948
16949 * Added Mageia support
16950
16951 * Add bash completion for systemd-loginctl
16952
16953 * Actively monitor PID file creation for daemons which exit in
16954 the parent process before having finished writing the PID
16955 file in the daemon process. Daemons which do this need to be
16956 fixed (i.e. PID file creation must have finished before the
16957 parent exits), but we now react a bit more gracefully to them.
16958
16959 * Add colourful boot output, mimicking the well-known output
16960 of existing distributions.
16961
16962 * New option PassCredentials= for socket units, for
16963 compatibility with a recent kernel ABI breakage.
16964
16965 * /etc/rc.local is now hooked in via a generator binary, and
16966 thus will no longer act as synchronization point during
16967 boot.
16968
16969 * systemctl list-unit-files now supports --root=.
16970
16971 * systemd-tmpfiles now understands two new commands: z, Z for
16972 relabelling files according to the SELinux database. This is
16973 useful to apply SELinux labels to specific files in /sys,
16974 among other things.
16975
16976 * Output of SysV services is now forwarded to both the console
16977 and the journal by default, not only just the console.
16978
16979 * New man pages for all APIs from libsystemd-login.
16980
16981 * The build tree got reorganized and the build system is a
16982 lot more modular allowing embedded setups to specifically
16983 select the components of systemd they are interested in.
16984
16985 * Support for Linux systems lacking the kernel VT subsystem is
16986 restored.
16987
16988 * configure's --with-rootdir= got renamed to
16989 --with-rootprefix= to follow the naming used by udev and
16990 kmod
16991
16992 * Unless specified otherwise we will now install to /usr instead
16993 of /usr/local by default.
16994
16995 * Processes with '@' in argv[0][0] are now excluded from the
16996 final shut-down killing spree, following the logic explained
16997 in:
16998 https://systemd.io/ROOT_STORAGE_DAEMONS/
16999
17000 * All processes remaining in a service cgroup when we enter
17001 the START or START_PRE states are now killed with
17002 SIGKILL. That means it is no longer possible to spawn
17003 background processes from ExecStart= lines (which was never
17004 supported anyway, and bad style).
17005
17006 * New PropagateReloadTo=/PropagateReloadFrom= options to bind
17007 reloading of units together.
17008
17009 Contributions from: Bill Nottingham, Daniel J. Walsh, Dave
17010 Reisner, Dexter Morgan, Gregs Gregs, Jonathan Nieder, Kay
17011 Sievers, Lennart Poettering, Michael Biebl, Michal Schmidt,
17012 Michał Górny, Ran Benita, Thomas Jarosch, Tim Waugh, Tollef
17013 Fog Heen, Tom Gundersen, Zbigniew Jędrzejewski-Szmek