]> git.ipfire.org Git - thirdparty/systemd.git/blob - NEWS
Merge pull request #22761 from poettering/pcr-fix
[thirdparty/systemd.git] / NEWS
1 systemd System and Service Manager
2
3 CHANGES WITH 251:
4 * Incompatibility and Regression note:
5 In v250, the feature that automatically configures routes to addresses
6 specified in AllowedIPs= was added and enabled by default. However,
7 this feature causes network connectivity issues on many existing
8 setups. Hence, this is disabled by default since v250.3. The feature
9 can still be used by explicitly configuring RouteTable= setting in
10 .netdev files.
11
12 * Jobs started via StartUnitWithFlags() will no longer return 'skipped'
13 when a Condition*= check does not succeed, restoring the JobRemoved
14 signal to the behaviour it had before v250.
15
16 * The org.freedesktop.portable1 methods GetMetadataWithExtensions and
17 GetImageMetadataWithExtensions have been fixed to provide an extra return
18 parameter, containing the actual extensions release metadata. The
19 current implementation was judged to be broken and unusable, and thus
20 the usual procedure of adding a new set of methods is skipped, opting
21 for breaking backward compatibility instead, as nobody should be
22 affected, given the state of the current interface.
23
24 * Service monitor environment variables will only be passed to
25 OnFailure=/OnSuccess= handlers if exactly one unit lists the handler
26 unit as OnFailure=/OnSuccess=. Therefore, $MONITOR_METADATA is no
27 longer used, and instead separate variables are used:
28 $MONITOR_SERVICE_RESULT, $MONITOR_EXIT_CODE, $MONITOR_EXIT_STATUS,
29 $MONITOR_INVOCATION_ID and $MONITOR_UNIT. For cases when a single
30 handler needs to watch multiple units, use a templated handler.
31
32 * kernel-install's and bootctl's Boot Loader Specification Type #1
33 entry generation logic has been reworked. The user may now pick
34 explicitly by which "token" string to name the installation's boot
35 entries, through the new /etc/kernel/entry-token file or the new
36 --entry-token= switch to bootctl. By default — as before — the
37 entries are named after the local machine ID. However, in "golden
38 image" environments, where the machine ID shall be initialized on
39 first boot (as opposed to at installation time before first boot) the
40 machine ID is not be available at build time to name the entry
41 after. In this case the the --entry-token= switch to bootctl (or the
42 /etc/kernel/entry-token file) may be used to override the "token" to
43 identify the entry by, and use another ID, for example the IMAGE_ID=
44 or ID= fields from /etc/os-release. This will make the OS images
45 independent of any machine ID, and ensure that the images will not
46 carry any identifiable information before first boot, but on the
47 other hand means that multiple parallel installations of the very
48 same image on the same disk cannot be supported. Summary: if you are
49 building golden images that shall acquire identity information
50 exclusively on first boot, make sure to both remove /etc/machine-id
51 *and* to write /etc/kernel/entry-token to the value of the IMAGE_ID
52 or ID field of /etc/os-release or another suitable identifier before
53 deploying the image.
54
55 * sd-boot gained a new *experimental* setting "reboot-for-bitlocker" in
56 loader.conf that implements booting Microsoft Windows from the
57 sd-boot in a way that first reboots the system, to reset the TPM
58 PCRs. This improves compatibility with BitLocker's TPM use, as the
59 PCRs will only record the Windows boot process, and not sd-boot
60 itself, thus retaining the PCR measurements not involving
61 sd-boot. Note that this feature is experimental for now, and is
62 likely going to be generalized, renamed and removed in its current
63 form in a future release, without retaining compatibility with its
64 current implementation.
65
66 * The --make-machine-id-directory= switch to bootctl has been replaced
67 by --make-entry-directory=, given that the entry directory is not
68 necessarily named after the machine ID, but after some other suitable
69 ID as selected via --entry-token= described above. The old name of
70 the option is still understood to maximize compatibility.
71
72 * Services with Restart=always and a failing ExecCondition= will no longer
73 be restarted, to bring ExecCondition= in line with Condition*= settings.
74
75 * Starting with v250 systemd-homed uses UID/GID mapping on the mounts
76 of activated home directories it manages (if the kernel and selected
77 file systems support it). So far it mapped three UID ranges: the
78 range from 0…60000, the user's own UID, and the range 60514…65534,
79 leaving everything else unmapped (in other words, the 16bit UID range
80 is mapped almost fully, with the exception of the UID subrange used
81 for systemd-homed users, with one exception from that: the user's own
82 UID). Unmapped UIDs may not be used for file ownership in the home
83 directory — any chown() attempts with them will fail. With this
84 release a fourth range is added to these mappings:
85 524288…1879048191. This range is the UID range intended for container
86 uses, see:
87
88 https://systemd.io/UIDS-GIDS
89
90 This range may be used for container managers that place container OS
91 trees in the home directory (which is a questionable approach, for
92 quota, permission, SUID handling and network file system
93 compatibility reasons, but nonetheless apparently commonplace). Note
94 that this mapping is mapped 1:1 in a pass-through fashion, i.e. the
95 UID assignments from the range are not managed or mapped by
96 `systemd-homed`, and must be managed with other mechanisms, in the
97 context of the local system.
98
99 Typically, a better approach to user namespacing in relevant
100 container managers would be to leave container OS trees on disk at
101 UID offset 0, but then map them to a dynamically allocated runtime
102 UID range via another UID mount map at container invocation
103 time. That way user namespace UID ranges become strictly a runtime
104 concept, and do not leak into persistent file systems, persistent
105 user databases or persistent configuration, thus greatly simplifying
106 handling, and improving compatibility with home directories intended
107 to be portable like the ones managed by systemd-homed.
108
109 * All kernels supported by systemd mix RDRAND (or similar) into the
110 entropy pool at early boot. This means that on those systems, even
111 if /dev/urandom is not yet initialized, it still returns bytes that
112 that are at least as high quality as RDRAND. For that reason, we no
113 longer have reason to invoke RDRAND from systemd itself, which has
114 historically been a source of bugs. Furthermore, kernels ≥5.6 provide
115 the getrandom(GRND_INSECURE) interface for returning random bytes
116 before the entropy pool is initialized without warning into kmsg,
117 which is what we attempt to use if available. By removing systemd's
118 direct usage of RDRAND, x86 systems ≥Broadwell that are running an
119 older kernel may experience kmsg warnings that were not seen with
120 250. For newer kernels, non-x86 systems, or older x86 systems,
121 there should be no visible changes.
122
123 * sd-boot will now measure the kernel command line into TPM PCR 12
124 rather than PCR 8. This improves usefulness of the measurements on
125 sytems where sd-boot is chainloaded from Grub. Grub measures all
126 commands its executes into PCR 8, which makes it very hard to use
127 reasonably, hence separate ourselves from that and use PCR 12
128 instead, which is already what certain Ubuntu editions use it for. To
129 retain compatibility with systems running older systemd systems a new
130 Meson option 'efi-tpm-pcr-compat' has been added (which defaults to
131 false). If enabled, the measurement is done twice: into the new-style
132 PCR 12 *and* the old-style PCR 8. It's strongly advised to migrate
133 all users to PCR 12 for this purpose in the long run, as we intend to
134 remove this compatibility feature again in two year's time.
135
136 CHANGES WITH 250:
137
138 * Support for encrypted and authenticated credentials has been added.
139 This extends the credential logic introduced with v247 to support
140 non-interactive symmetric encryption and authentication, based on a
141 key that is stored on the /var/ file system or in the TPM2 chip (if
142 available), or the combination of both (by default if a TPM2 chip
143 exists the combination is used, otherwise the /var/ key only). The
144 credentials are automatically decrypted at the moment a service is
145 started, and are made accessible to the service itself in unencrypted
146 form. A new tool 'systemd-creds' encrypts credentials for this
147 purpose, and two new service file settings LoadCredentialEncrypted=
148 and SetCredentialEncrypted= configure such credentials.
149
150 This feature is useful to store sensitive material such as SSL
151 certificates, passwords and similar securely at rest and only decrypt
152 them when needed, and in a way that is tied to the local OS
153 installation or hardware.
154
155 * systemd-gpt-auto-generator can now automatically set up discoverable
156 LUKS2 encrypted swap partitions.
157
158 * The GPT Discoverable Partitions Specification has been substantially
159 extended with support for root and /usr/ partitions for the majority
160 of architectures systemd supports. This includes platforms that do
161 not natively support UEFI, because even though GPT is specified under
162 UEFI umbrella, it is useful on other systems too. Specifically,
163 systemd-nspawn, systemd-sysext, systemd-gpt-auto-generator and
164 Portable Services use the concept without requiring UEFI.
165
166 * The GPT Discoverable Partitions Specifications has been extended with
167 a new set of partitions that may carry PKCS#7 signatures for Verity
168 partitions, encoded in a simple JSON format. This implements a simple
169 mechanism for building disk images that are fully authenticated and
170 can be tested against a set of cryptographic certificates. This is
171 now implemented for the various systemd tools that can operate with
172 disk images, such as systemd-nspawn, systemd-sysext, systemd-dissect,
173 Portable services/RootImage=, systemd-tmpfiles, and systemd-sysusers.
174 The PKCS#7 signatures are passed to the kernel (where they are
175 checked against certificates from the kernel keyring), or can be
176 verified against certificates provided in userspace (via a simple
177 drop-in file mechanism).
178
179 * systemd-dissect's inspection logic will now report for which uses a
180 disk image is intended. Specifically, it will display whether an
181 image is suitable for booting on UEFI or in a container (using
182 systemd-nspawn's --image= switch), whether it can be used as portable
183 service, or attached as system extension.
184
185 * The system-extension.d/ drop-in files now support a new field
186 SYSEXT_SCOPE= that may encode which purpose a system extension image
187 is for: one of "initrd", "system" or "portable". This is useful to
188 make images more self-descriptive, and to ensure system extensions
189 cannot be attached in the wrong contexts.
190
191 * The os-release file learnt a new PORTABLE_PREFIXES= field which may
192 be used in portable service images to indicate which unit prefixes
193 are supported.
194
195 * The GPT image dissection logic in systemd-nspawn/systemd-dissect/…
196 now is able to decode images for non-native architectures as well.
197 This allows systemd-nspawn to boot images of non-native architectures
198 if the corresponding user mode emulator is installed and
199 systemd-binfmtd is running.
200
201 * systemd-logind gained new settings HandlePowerKeyLongPress=,
202 HandleRebootKeyLongPress=, HandleSuspendKeyLongPress= and
203 HandleHibernateKeyLongPress= which may be used to configure actions
204 when the relevant keys are pressed for more than 5s. This is useful
205 on devices that only have hardware for a subset of these keys. By
206 default, if the reboot key is pressed long the poweroff operation is
207 now triggered, and when the suspend key is pressed long the hibernate
208 operation is triggered. Long pressing the other two keys currently
209 does not trigger any operation by default.
210
211 * When showing unit status updates on the console during boot and
212 shutdown, and a service is slow to start so that the cylon animation
213 is shown, the most recent sd_notify() STATUS= text is now shown as
214 well. Services may use this to make the boot/shutdown output easier
215 to understand, and to indicate what precisely a service that is slow
216 to start or stop is waiting for. In particular, the per-user service
217 manager instance now reports what it is doing and which service it is
218 waiting for this way to the system service manager.
219
220 * The service manager will now re-execute on reception of the
221 SIGRTMIN+25 signal. It previously already did that on SIGTERM — but
222 only when running as PID 1. There was no signal to request this when
223 running as per-user service manager, i.e. as any other PID than 1.
224 SIGRTMIN+25 works for both system and user managers.
225
226 * The hardware watchdog logic in PID 1 gained support for operating
227 with the default timeout configured in the hardware, instead of
228 insisting on re-configuring it. Set RuntimeWatchdogSec=default to
229 request this behavior.
230
231 * A new kernel command line option systemd.watchdog_sec= is now
232 understood which may be used to override the hardware watchdog
233 time-out for the boot.
234
235 * A new setting DefaultOOMScoreAdjust= is now supported in
236 /etc/systemd/system.conf + /etc/systemd/user.conf that may be used to
237 set the default process OOM score adjustment value for processes
238 forked off the service manager. For per-user service managers this
239 now defaults to 100, but for per-system service managers is left as
240 is. This means that by default now services forked off the user
241 service manager are more likely to be killed by the OOM killer than
242 system services or the managers themselves.
243
244 * A new per-service setting RestrictFileSystems= as been added that
245 restricts the file systems a service has access to by their type.
246 This is based on the new BPF LSM of the Linux kernel. It provides an
247 effective way to make certain API file systems unavailable to
248 services (and thus minimizing attack surface). A new command
249 "systemd-analyze filesystems" has been added that lists all known
250 file system types (and how they are grouped together under useful
251 group handles).
252
253 * Services now support a new setting RestrictNetworkInterfaces= for
254 restricting access to specific network interfaces.
255
256 * Service unit files gained new settings StartupAllowedCPUs= and
257 StartupAllowedMemoryNodes=. These are similar to their counterparts
258 without the "Startup" prefix and apply during the boot process
259 only. This is useful to improve boot-time behavior of the system and
260 assign resources differently during boot than during regular
261 runtime. This is similar to the preexisting StartupCPUWeight=
262 vs. CPUWeight.
263
264 * Related to this: the various StartupXYZ= settings
265 (i.e. StartupCPUWeight=, StartupAllowedCPUs=, …) are now also applied
266 during shutdown. The settings not prefixed with "Startup" hence apply
267 during regular runtime, and those that are prefixed like that apply
268 during boot and shutdown.
269
270 * A new per-unit set of conditions/asserts
271 [Condition|Assert][Memory|CPU|IO]Pressure= have been added to make a
272 unit skip/fail activation if the system's (or a slice's) memory/cpu/io
273 pressure is above the configured threshold, using the kernel PSI
274 feature. For more details see systemd.unit(5) and
275 https://www.kernel.org/doc/html/latest/accounting/psi.html
276
277 * The combination of ProcSubset=pid and ProtectKernelTunables=yes and/or
278 ProtectKernelLogs=yes can now be used.
279
280 * The default maximum numbers of inodes have been raised from 64k to 1M
281 for /dev/, and from 400k to 1M for /tmp/.
282
283 * The per-user service manager learnt support for communicating with
284 systemd-oomd to acquire OOM kill information.
285
286 * A new service setting ExecSearchPath= has been added that allows
287 changing the search path for executables for services. It affects
288 where we look for the binaries specified in ExecStart= and similar,
289 and the specified directories are also added the $PATH environment
290 variable passed to invoked processes.
291
292 * A new setting RuntimeRandomizedExtraSec= has been added for service
293 and scope units that allows extending the runtime time-out as
294 configured by RuntimeMaxSec= with a randomized amount.
295
296 * The syntax of the service unit settings RuntimeDirectory=,
297 StateDirectory=, CacheDirectory=, LogsDirectory= has been extended:
298 if the specified value is now suffixed with a colon, followed by
299 another filename, the latter will be created as symbolic link to the
300 specified directory. This allows creating these service directories
301 together with alias symlinks to make them available under multiple
302 names.
303
304 * Service unit files gained two new settings TTYRows=/TTYColumns= for
305 configuring rows/columns of the TTY device passed to
306 stdin/stdout/stderr of the service. This is useful to propagate TTY
307 dimensions to a virtual machine.
308
309 * A new service unit file setting ExitType= has been added that
310 specifies when to assume a service has exited. By default systemd
311 only watches the main process of a service. By setting
312 ExitType=cgroup it can be told to wait for the last process in a
313 cgroup instead.
314
315 * Automount unit files gained a new setting ExtraOptions= that can be
316 used to configure additional mount options to pass to the kernel when
317 mounting the autofs instance.
318
319 * "Urlification" (generation of ESC sequences that generate clickable
320 hyperlinks in modern terminals) may now be turned off altogether
321 during build-time.
322
323 * Path units gained new TriggerLimitBurst= and TriggerLimitIntervalSec=
324 settings that default to 200 and 2 s respectively. The ratelimit
325 ensures that a path unit cannot cause PID1 to busy-loop when it is
326 trying to trigger a service that is skipped because of a Condition*=
327 not being satisfied. This matches the configuration and behaviour of
328 socket units.
329
330 * The TPM2/FIDO2/PKCS11 support in systemd-cryptsetup is now also built
331 as a plug-in for cryptsetup. This means the plain cryptsetup command
332 may now be used to unlock volumes set up this way.
333
334 * The TPM2 logic in cryptsetup will now automatically detect systems
335 where the TPM2 chip advertises SHA256 PCR banks but the firmware only
336 updates the SHA1 banks. In such a case PCR policies will be
337 automatically bound to the latter, not the former. This makes the PCR
338 policies reliable, but of course do not provide the same level of
339 trust as SHA256 banks.
340
341 * The TPM2 logic in systemd-cryptsetup/systemd-cryptsetup now supports
342 RSA primary keys in addition to ECC, improving compatibility with
343 TPM2 chips that do not support ECC. RSA keys are much slower to use
344 than ECC, and hence are only used if ECC is not available.
345
346 * /etc/crypttab gained support for a new token-timeout= setting for
347 encrypted volumes that allows configuration of the maximum time to
348 wait for PKCS#11/FIDO2 tokens to be plugged in. If the time elapses
349 the logic will query the user for a regular passphrase/recovery key
350 instead.
351
352 * Support for activating dm-integrity volumes at boot via a new file
353 /etc/integritytab and the tool systemd-integritysetup have been
354 added. This is similar to /etc/crypttab and /etc/veritytab, but deals
355 with dm-integrity instead of dm-crypt/dm-verity.
356
357 * The systemd-veritysetup-generator now understands a new usrhash=
358 kernel command line option for specifying the Verity root hash for
359 the partition backing the /usr/ file system. A matching set of
360 systemd.verity_usr_* kernel command line options has been added as
361 well. These all work similar to the corresponding options for the
362 root partition.
363
364 * The sd-device API gained a new API call sd_device_get_diskseq() to
365 return the DISKSEQ property of a device structure. The "disk
366 sequence" concept is a new feature recently introduced to the Linux
367 kernel that allows detecting reuse cycles of block devices, i.e. can
368 be used to recognize when loopback block devices are reused for a
369 different purpose or CD-ROM drives get their media changed.
370
371 * A new unit systemd-boot-update.service has been added. If enabled
372 (the default) and the sd-boot loader is detected to be installed, it
373 is automatically updated to the newest version when out of date. This
374 is useful to ensure the boot loader remains up-to-date, and updates
375 automatically propagate from the OS tree in /usr/.
376
377 * sd-boot will now build with SBAT by default in order to facilitate
378 working with recent versions of Shim that require it to be present.
379
380 * sd-boot can now parse Microsoft Windows' Boot Configuration Data.
381 This is used to robustly generate boot entry titles for Windows.
382
383 * A new generic target unit factory-reset.target has been added. It is
384 hooked into systemd-logind similar in fashion to
385 reboot/poweroff/suspend/hibernate, and is supposed to be used to
386 initiate a factory reset operation. What precisely this operation
387 entails is up for the implementer to decide, the primary goal of the
388 new unit is provide a framework where to plug in the implementation
389 and how to trigger it.
390
391 * A new meson build-time option 'clock-valid-range-usec-max' has been
392 added which takes a time in µs and defaults to 15 years. If the RTC
393 time is noticed to be more than the specified time ahead of the
394 built-in epoch of systemd (which by default is the release timestamp
395 of systemd) it is assumed that the RTC is not working correctly, and
396 the RTC is reset to the epoch. (It already is reset to the epoch when
397 noticed to be before it.) This should increase the chance that time
398 doesn't accidentally jump too far ahead due to faulty hardware or
399 batteries.
400
401 * A new setting SaveIntervalSec= has been added to systemd-timesyncd,
402 which may be used to automatically save the current system time to
403 disk in regular intervals. This is useful to maintain a roughly
404 monotonic clock even without RTC hardware and with some robustness
405 against abnormal system shutdown.
406
407 * systemd-analyze verify gained support for a pair of new --image= +
408 --root= switches for verifying units below a specific root
409 directory/image instead of on the host.
410
411 * systemd-analyze verify gained support for verifying unit files under
412 an explicitly specified unit name, independently of what the filename
413 actually is.
414
415 * systemd-analyze verify gained a new switch --recursive-errors= which
416 controls whether to only fail on errors found in the specified units
417 or recursively any dependent units.
418
419 * systemd-analyze security now supports a new --offline mode for
420 analyzing unit files stored on disk instead of loaded units. It may
421 be combined with --root=/--image to analyze unit files under a root
422 directory or disk image. It also learnt a new --threshold= parameter
423 for specifying an exposure level threshold: if the exposure level
424 exceeds the specified value the call will fail. It also gained a new
425 --security-policy= switch for configuring security policies to
426 enforce on the units. A policy is a JSON file that lists which tests
427 shall be weighted how much to determine the overall exposure
428 level. Altogether these new features are useful for fully automatic
429 analysis and enforcement of security policies on unit files.
430
431 * systemd-analyze security gain a new --json= switch for JSON output.
432
433 * systemd-analyze learnt a new --quiet switch for reducing
434 non-essential output. It's honored by the "dot", "syscall-filter",
435 "filesystems" commands.
436
437 * systemd-analyze security gained a --profile= option that can be used
438 to take into account a portable profile when analyzing portable
439 services, since a lot of the security-related settings are enabled
440 through them.
441
442 * systemd-analyze learnt a new inspect-elf verb that parses ELF core
443 files, binaries and executables and prints metadata information,
444 including the build-id and other info described on:
445 https://systemd.io/COREDUMP_PACKAGE_METADATA/
446
447 * .network files gained a new UplinkInterface= in the [IPv6SendRA]
448 section, for automatically propagating DNS settings from other
449 interfaces.
450
451 * The static lease DHCP server logic in systemd-networkd may now serve
452 IP addresses outside of the configured IP pool range for the server.
453
454 * CAN support in systemd-networkd gained four new settings Loopback=,
455 OneShot=, PresumeAck=, ClassicDataLengthCode= for tweaking CAN
456 control modes. It gained a number of further settings for tweaking
457 CAN timing quanta.
458
459 * The [CAN] section in .network file gained new TimeQuantaNSec=,
460 PropagationSegment=, PhaseBufferSegment1=, PhaseBufferSegment2=,
461 SyncJumpWidth=, DataTimeQuantaNSec=, DataPropagationSegment=,
462 DataPhaseBufferSegment1=, DataPhaseBufferSegment2=, and
463 DataSyncJumpWidth= settings to control bit-timing processed by the
464 CAN interface.
465
466 * DHCPv4 client support in systemd-networkd learnt a new Label= option
467 for configuring the address label to apply to configure IPv4
468 addresses.
469
470 * The [IPv6AcceptRA] section of .network files gained support for a new
471 UseMTU= setting that may be used to control whether to apply the
472 announced MTU settings to the local interface.
473
474 * The [DHCPv4] section in .network file gained a new Use6RD= boolean
475 setting to control whether the DHCPv4 client request and process the
476 DHCP 6RD option.
477
478 * The [DHCPv6PrefixDelegation] section in .network file is renamed to
479 [DHCPPrefixDelegation], as now the prefix delegation is also supported
480 with DHCPv4 protocol by enabling the Use6RD= setting.
481
482 * The [DHCPPrefixDelegation] section in .network file gained a new
483 setting UplinkInterface= to specify the upstream interface.
484
485 * The [DHCPv6] section in .network file gained a new setting
486 UseDelegatedPrefix= to control whether the delegated prefixes will be
487 propagated to the downstream interfaces.
488
489 * The [IPv6AcceptRA] section of .network files now understands two new
490 settings UseGateway=/UseRoutePrefix= for explicitly configuring
491 whether to use the relevant fields from the IPv6 Router Advertisement
492 records.
493
494 * The ForceDHCPv6PDOtherInformation= setting in the [DHCPv6] section
495 has been removed. Please use the WithoutRA= and UseDelegatedPrefix=
496 settings in the [DHCPv6] section and the DHCPv6Client= setting in the
497 [IPv6AcceptRA] section to control when the DHCPv6 client is started
498 and how the delegated prefixes are handled by the DHCPv6 client.
499
500 * The IPv6Token= section in the [Network] section is deprecated, and
501 the [IPv6AcceptRA] section gained the Token= setting for its
502 replacement. The [IPv6Prefix] section also gained the Token= setting.
503 The Token= setting gained 'eui64' mode to explicitly configure an
504 address with the EUI64 algorithm based on the interface MAC address.
505 The 'prefixstable' mode can now optionally take a secret key. The
506 Token= setting in the [DHCPPrefixDelegation] section now supports all
507 algorithms supported by the same settings in the other sections.
508
509 * The [RoutingPolicyRule] section of .network file gained a new
510 SuppressInterfaceGroup= setting.
511
512 * The IgnoreCarrierLoss= setting in the [Network] section of .network
513 files now allows a duration to be specified, controlling how long to
514 wait before reacting to carrier loss.
515
516 * The [DHCPServer] section of .network file gained a new Router=
517 setting to specify the router address.
518
519 * The [CAKE] section of .network files gained various new settings
520 AutoRateIngress=, CompensationMode=, FlowIsolationMode=, NAT=,
521 MPUBytes=, PriorityQueueingPreset=, FirewallMark=, Wash=, SplitGSO=,
522 and UseRawPacketSize= for configuring CAKE.
523
524 * systemd-networkd now ships with new default .network files:
525 80-container-vb.network which matches host-side network bridge device
526 created by systemd-nspawn's --network-bridge or --network-zone
527 switch, and 80-6rd-tunnel.network which matches automatically created
528 sit tunnel with 6rd prefix when the DHCP 6RD option is received.
529
530 * systemd-networkd's handling of Endpoint= resolution for WireGuard
531 interfaces has been improved.
532
533 * systemd-networkd will now automatically configure routes to addresses
534 specified in AllowedIPs=. This feature can be controlled via
535 RouteTable= and RouteMetric= settings in [WireGuard] or
536 [WireGuardPeer] sections.
537
538 * systemd-networkd will now once again automatically generate persistent
539 MAC addresses for batadv and bridge interfaces. Users can disable this
540 by using MACAddress=none in .netdev files.
541
542 * systemd-networkd and systemd-udevd now support IP over InfiniBand
543 interfaces. The Kind= setting in .netdev file accepts "ipoib". And
544 systemd.netdev files gained the [IPoIB] section.
545
546 * systemd-networkd and systemd-udevd now support net.ifname-policy=
547 option on the kernel command-line. This is implemented through the
548 systemd-network-generator service that automatically generates
549 appropriate .link, .network, and .netdev files.
550
551 * The various systemd-udevd "ethtool" buffer settings now understand
552 the special value "max" to configure the buffers to the maximum the
553 hardware supports.
554
555 * systemd-udevd's .link files may now configure a large variety of
556 NIC coalescing settings, plus more hardware offload settings.
557
558 * .link files gained a new WakeOnLanPassword= setting in the [Link]
559 section that allows to specify a WoL "SecureOn" password on hardware
560 that supports this.
561
562 * systemd-nspawn's --setenv= switch now supports an additional syntax:
563 if only a variable name is specified (i.e. without being suffixed by
564 a '=' character and a value) the current value of the environment
565 variable is propagated to the container. e.g. --setenv=FOO will
566 lookup the current value of $FOO in the environment, and pass it down
567 to the container. Similar behavior has been added to homectl's,
568 machinectl's and systemd-run's --setenv= switch.
569
570 * systemd-nspawn gained a new switch --suppress-sync= which may be used
571 to optionally suppress the effect of the sync()/fsync()/fdatasync()
572 system calls for the container payload. This is useful for build
573 system environments where safety against abnormal system shutdown is
574 not essential as all build artifacts can be regenerated any time, but
575 the performance win is beneficial.
576
577 * systemd-nspawn will now raise the RLIMIT_NOFILE hard limit to the
578 same value that PID 1 uses for most forked off processes.
579
580 * systemd-nspawn's --bind=/--bind-ro= switches now optionally take
581 uidmap/nouidmap options as last parameter. If "uidmap" is used the
582 bind mounts are created with UID mapping taking place that ensures
583 the host's file ownerships are mapped 1:1 to container file
584 ownerships, even if user namespacing is used. This way
585 files/directories bound into containers will no longer show up as
586 owned by the nobody user as they typically did if no special care was
587 taken to shift them manually.
588
589 * When discovering Windows installations sd-boot will now attempt to
590 show the Windows version.
591
592 * The color scheme to use in sd-boot may now be configured at
593 build-time.
594
595 * sd-boot gained the ability to change screen resolution during
596 boot-time, by hitting the "r" key. This will cycle through available
597 resolutions and save the last selection.
598
599 * sd-boot learnt a new hotkey "f". When pressed the system will enter
600 firmware setup. This is useful in environments where it is difficult
601 to hit the right keys early enough to enter the firmware, and works
602 on any firmware regardless which key it natively uses.
603
604 * sd-boot gained support for automatically booting into the menu item
605 selected on the last boot (using the "@saved" identifier for menu
606 items).
607
608 * sd-boot gained support for automatically loading all EFI drivers
609 placed in the /EFI/systemd/drivers/ subdirectory of the EFI System
610 Partition (ESP). These drivers are loaded before the menu entries are
611 loaded. This is useful e.g. to load additional file system drivers
612 for the XBOOTLDR partition.
613
614 * systemd-boot will now paint the input cursor on its own instead of
615 relying on the firmware to do so, increasing compatibility with broken
616 firmware that doesn't make the cursor reasonably visible.
617
618 * sd-boot now embeds a .osrel PE section like we expect from Boot
619 Loader Specification Type #2 Unified Kernels. This means sd-boot
620 itself may be used in place of a Type #2 Unified Kernel. This is
621 useful for debugging purposes as it allows chain-loading one a
622 (development) sd-boot instance from another.
623
624 * sd-boot now supports a new "devicetree" field in Boot Loader
625 Specification Type #1 entries: if configured the specified device
626 tree file is installed before the kernel is invoked. This is useful
627 for installing/applying new devicetree files without updating the
628 kernel image.
629
630 * Similarly, sd-stub now can read devicetree data from a PE section
631 ".dtb" and apply it before invoking the kernel.
632
633 * sd-stub (the EFI stub that can be glued in front of a Linux kernel)
634 gained the ability to pick up credentials and sysext files, wrap them
635 in a cpio archive, and pass as an additional initrd to the invoked
636 Linux kernel, in effect placing those files in the /.extra/ directory
637 of the initrd environment. This is useful to implement trusted initrd
638 environments which are fully authenticated but still can be extended
639 (via sysexts) and parameterized (via encrypted/authenticated
640 credentials, see above).
641
642 Credentials can be located next to the kernel image file (credentials
643 specific to a single boot entry), or in one of the shared directories
644 (credentials applicable to multiple boot entries).
645
646 * sd-stub now comes with a full man page, that explains its feature set
647 and how to combine a kernel image, an initrd and the stub to build a
648 complete EFI unified kernel image, implementing Boot Loader
649 Specification Type #2.
650
651 * sd-stub may now provide the initrd to the executed kernel via the
652 LINUX_EFI_INITRD_MEDIA_GUID EFI protocol, adding compatibility for
653 non-x86 architectures.
654
655 * bootctl learnt new set-timeout and set-timeout-oneshot commands that
656 may be used to set the boot menu time-out of the boot loader (for all
657 or just the subsequent boot).
658
659 * bootctl and kernel-install will now read KERNEL_INSTALL_MACHINE_ID
660 and KERNEL_INSTALL_LAYOUT from kernel/install.conf. The first
661 variable specifies the machine-id to use for installation. It would
662 previously be used if set in the environment, and now it'll also be
663 read automatically from the config file. The second variable is new.
664 When set, it specifies the layout to use for installation directories
665 on the boot partition, so that tools don't need to guess it based on
666 the already-existing directories. The only value that is defined
667 natively is "bls", corresponding to the layout specified in
668 https://systemd.io/BOOT_LOADER_SPECIFICATION/. Plugins for
669 kernel-install that implement a different layout can declare other
670 values for this variable.
671
672 'bootctl install' will now write KERNEL_INSTALL_LAYOUT=bls, on the
673 assumption that if the user installed sd-boot to the ESP, they intend
674 to use the entry layout understood by sd-boot. It'll also write
675 KERNEL_INSTALL_MACHINE_ID= if it creates any directories using the ID
676 (and it wasn't specified in the config file yet). Similarly,
677 kernel-install will now write KERNEL_INSTALL_MACHINE_ID= (if it
678 wasn't specified in the config file yet). Effectively, those changes
679 mean that the machine-id used for boot loader entry installation is
680 "frozen" upon first use and becomes independent of the actual
681 machine-id.
682
683 Configuring KERNEL_INSTALL_MACHINE_ID fixes the following problem:
684 images created for distribution ("golden images") are built with no
685 machine-id, so that a unique machine-id can be created on the first
686 boot. But those images may contain boot loader entries with the
687 machine-id used during build included in paths. Using a "frozen"
688 value allows unambiguously identifying entries that match the
689 specific installation, while still permitting parallel installations
690 without conflict.
691
692 Configuring KERNEL_INSTALL_LAYOUT obviates the need for
693 kernel-install to guess the installation layout. This fixes the
694 problem where a (possibly empty) directory in the boot partition is
695 created from a different layout causing kernel-install plugins to
696 assume the wrong layout. A particular example of how this may happen
697 is the grub2 package in Fedora which includes directories under /boot
698 directly in its file list. Various other packages pull in grub2 as a
699 dependency, so it may be installed even if unused, breaking
700 installations that use the bls layout.
701
702 * bootctl and systemd-bless-boot can now be linked statically.
703
704 * systemd-sysext now optionally doesn't insist on extension-release.d/
705 files being placed in the image under the image's file name. If the
706 file system xattr user.extension-release.strict is set on the
707 extension release file, it is accepted regardless of its name. This
708 relaxes security restrictions a bit, as system extension may be
709 attached under a wrong name this way.
710
711 * udevadm's test-builtin command learnt a new --action= switch for
712 testing the built-in with the specified action (in place of the
713 default 'add').
714
715 * udevadm info gained new switches --property=/--value for showing only
716 specific udev properties/values instead of all.
717
718 * A new hwdb database has been added that contains matches for various
719 types of signal analyzers (protocol analyzers, logic analyzers,
720 oscilloscopes, multimeters, bench power supplies, etc.) that should
721 be accessible to regular users.
722
723 * A new hwdb database entry has been added that carries information
724 about types of cameras (regular or infrared), and in which direction
725 they point (front or back).
726
727 * A new rule to allow console users access to rfkill by default has been
728 added to hwdb.
729
730 * Device nodes for the Software Guard eXtension enclaves (sgx_vepc) are
731 now also owned by the system group "sgx".
732
733 * A new build-time meson option "extra-net-naming-schemes=" has been
734 added to define additional naming schemes schemes for udev's network
735 interface naming logic. This is useful for enterprise distributions
736 and similar which want to pin the schemes of certain distribution
737 releases under a specific name and previously had to patch the
738 sources to introduce new named schemes.
739
740 * The predictable naming logic for network interfaces has been extended
741 to generate stable names from Xen netfront device information.
742
743 * hostnamed's chassis property can now be sourced from chassis-type
744 field encoded in devicetree (in addition to the existing DMI
745 support).
746
747 * systemd-cgls now optionally displays cgroup IDs and extended
748 attributes for each cgroup. (Controllable via the new --xattr= +
749 --cgroup-id= switches.)
750
751 * coredumpctl gained a new --all switch for operating on all
752 Journal files instead of just the local ones.
753
754 * systemd-coredump will now use libdw/libelf via dlopen() rather than
755 directly linking, allowing users to easily opt-out of backtrace/metadata
756 analysis of core files, and reduce image sizes when this is not needed.
757
758 * systemd-coredump will now analyze core files with libdw/libelf in a
759 forked, sandboxed process.
760
761 * systemd-homed will now try to unmount an activate home area in
762 regular intervals once the user logged out fully. Previously this was
763 attempted exactly once but if the home directory was busy for some
764 reason it was not tried again.
765
766 * systemd-homed's LUKS2 home area backend will now create a BSD file
767 system lock on the image file while the home area is active
768 (i.e. mounted). If a home area is found to be locked, logins are
769 politely refused. This should improve behavior when using home areas
770 images that are accessible via the network from multiple clients, and
771 reduce the chance of accidental file system corruption in that case.
772
773 * Optionally, systemd-homed will now drop the kernel buffer cache once
774 a user has fully logged out, configurable via the new --drop-caches=
775 homectl switch.
776
777 * systemd-homed now makes use of UID mapped mounts for the home areas.
778 If the kernel and used file system support it, files are now
779 internally owned by the "nobody" user (i.e. the user typically used
780 for indicating "this ownership is not mapped"), and dynamically
781 mapped to the UID used locally on the system via the UID mapping
782 mount logic of recent kernels. This makes migrating home areas
783 between different systems cheaper because recursively chown()ing file
784 system trees is no longer necessary.
785
786 * systemd-homed's CIFS backend now optionally supports CIFS service
787 names with a directory suffix, in order to place home directories in
788 a subdirectory of a CIFS share, instead of the top-level directory.
789
790 * systemd-homed's CIFS backend gained support for specifying additional
791 mount options in the JSON user record (cifsExtraMountOptions field,
792 and --cifs-extra-mount-options= homectl switch). This is for example
793 useful for configuring mount options such as "noserverino" that some
794 SMB3 services require (use that to run a homed home directory from a
795 FritzBox SMB3 share this way).
796
797 * systemd-homed will now default to btrfs' zstd compression for home
798 areas. This is inspired by Fedora's recent decision to switch to zstd
799 by default.
800
801 * Additional mount options to use when mounting the file system of
802 LUKS2 volumes in systemd-homed has been added. Via the
803 $SYSTEMD_HOME_MOUNT_OPTIONS_BTRFS, $SYSTEMD_HOME_MOUNT_OPTIONS_EXT4,
804 $SYSTEMD_HOME_MOUNT_OPTIONS_XFS environment variables to
805 systemd-homed or via the luksExtraMountOptions user record JSON
806 property. (Exposed via homectl --luks-extra-mount-options)
807
808 * homectl's resize command now takes the special size specifications
809 "min" and "max" to shrink/grow the home area to the minimum/maximum
810 size possible, taking disk usage/space constraints and file system
811 limitations into account. Resizing is now generally graceful: the
812 logic will try to get as close to the specified size as possible, but
813 not consider it a failure if the request couldn't be fulfilled
814 precisely.
815
816 * systemd-homed gained the ability to automatically shrink home areas
817 on logout to their minimal size and grow them again on next
818 login. This ensures that while inactive, a home area only takes up
819 the minimal space necessary, but once activated, it provides
820 sufficient space for the user's needs. This behavior is only
821 supported if btrfs is used as file system inside the home area
822 (because only for btrfs online growing/shrinking is implemented in
823 the kernel). This behavior is now enabled by default, but may be
824 controlled via the new --auto-resize-mode= setting of homectl.
825
826 * systemd-homed gained support for automatically re-balancing free disk
827 space among active home areas, in case the LUKS2 backends are used,
828 and no explicit disk size was requested. This way disk space is
829 automatically managed and home areas resized in regular intervals and
830 manual resizing when disk space becomes scarce should not be
831 necessary anymore. This behavior is only supported if btrfs is used
832 within the home areas (as only then online shrinking and growing is
833 supported), and may be configured via the new rebalanceWeight JSON
834 user record field (as exposed via the new --rebalance-weight= homectl
835 setting). Re-balancing is mostly automatic, but can also be requested
836 explicitly via "homectl rebalance", which is synchronous, and thus
837 may be used to wait until the rebalance run is complete.
838
839 * userdbctl gained a --json= switch for configured the JSON formatting
840 to use when outputting user or group records.
841
842 * userdbctl gained a new --multiplexer= switch for explicitly
843 configuring whether to use the systemd-userdbd server side user
844 record resolution logic.
845
846 * userdbctl's ssh-authorized-keys command learnt a new --chain switch,
847 for chaining up another command to execute after completing the
848 look-up. Since the OpenSSH's AuthorizedKeysCommand only allows
849 configuration of a single command to invoke, this maybe used to
850 invoke multiple: first userdbctl's own implementation, and then any
851 other also configured in the command line.
852
853 * The sd-event API gained a new function sd_event_add_inotify_fd() that
854 is similar to sd_event_add_inotify() but accepts a file descriptor
855 instead of a path in the file system for referencing the inode to
856 watch.
857
858 * The sd-event API gained a new function
859 sd_event_source_set_ratelimit_expire_callback() that may be used to
860 define a callback function that is called whenever an event source
861 leaves the rate limiting phase.
862
863 * New documentation has been added explaining which steps are necessary
864 to port systemd to a new architecture:
865
866 https://systemd.io/PORTING_TO_NEW_ARCHITECTURES
867
868 * The x-systemd.makefs option in /etc/fstab now explicitly supports
869 ext2, ext3, and f2fs file systems.
870
871 * Mount units and units generated from /etc/fstab entries with 'noauto'
872 are now ordered the same as other units. Effectively, they will be
873 started earlier (if something actually pulled them in) and stopped
874 later, similarly to normal mount units that are part of
875 fs-local.target. This change should be invisible to users, but
876 should prevent those units from being stopped too early during
877 shutdown.
878
879 * The systemd-getty-generator now honors a new kernel command line
880 argument systemd.getty_auto= and a new environment variable
881 $SYSTEMD_GETTY_AUTO that allows turning it off at boot. This is for
882 example useful to turn off gettys inside of containers or similar
883 environments.
884
885 * systemd-resolved now listens on a second DNS stub address: 127.0.0.54
886 (in addition to 127.0.0.53, as before). If DNS requests are sent to
887 this address they are propagated in "bypass" mode only, i.e. are
888 almost not processed locally, but mostly forwarded as-is to the
889 current upstream DNS servers. This provides a stable DNS server
890 address that proxies all requests dynamically to the right upstream
891 DNS servers even if these dynamically change. This stub does not do
892 mDNS/LLMNR resolution. However, it will translate look-ups to
893 DNS-over-TLS if necessary. This new stub is particularly useful in
894 container/VM environments, or for tethering setups: use DNAT to
895 redirect traffic to any IP address to this stub.
896
897 * systemd-importd now honors new environment variables
898 $SYSTEMD_IMPORT_BTRFS_SUBVOL, $SYSTEMD_IMPORT_BTRFS_QUOTA,
899 $SYSTEMD_IMPORT_SYNC, which may be used disable btrfs subvolume
900 generation, btrfs quota setup and disk synchronization.
901
902 * systemd-importd and systemd-resolved can now be optionally built with
903 OpenSSL instead of libgcrypt.
904
905 * systemd-repart no longer requires OpenSSL.
906
907 * systemd-sysusers will no longer create the redundant 'nobody' group
908 by default, as the 'nobody' user is already created with an
909 appropriate primary group.
910
911 * If a unit uses RuntimeMaxSec, systemctl show will now display it.
912
913 * systemctl show-environment gained support for --output=json.
914
915 * pam_systemd will now first try to use the X11 abstract socket, and
916 fallback to the socket file in /tmp/.X11-unix/ only if that does not
917 work.
918
919 * systemd-journald will no longer go back to volatile storage
920 regardless of configuration when its unit is restarted.
921
922 * Initial support for the LoongArch architecture has been added (system
923 call lists, GPT partition table UUIDs, etc).
924
925 * systemd-journald's own logging messages are now also logged to the
926 journal itself when systemd-journald logs to /dev/kmsg.
927
928 * systemd-journald now re-enables COW for archived journal files on
929 filesystems that support COW. One benefit of this change is that
930 archived journal files will now get compressed on btrfs filesystems
931 that have compression enabled.
932
933 * systemd-journald now deduplicates fields in a single log message
934 before adding it to the journal. In archived journal files, it will
935 also punch holes for unused parts and truncate the file as
936 appropriate, leading to reductions in disk usage.
937
938 * journalctl --verify was extended with more informative error
939 messages.
940
941 * More of sd-journal's functions are now resistant against journal file
942 corruption.
943
944 * The shutdown command learnt a new option --show, to display the
945 scheduled shutdown.
946
947 * A LICENSES/ directory is now included in the git tree. It contains a
948 README.md file that explains the licenses used by source files in
949 this repository. It also contains the text of all applicable
950 licenses as they appear on spdx.org.
951
952 Contributions from: Aakash Singh, acsfer, Adolfo Jayme Barrientos,
953 Adrian Vovk, Albert Brox, Alberto Mardegan, Alexander Kanavin,
954 alexlzhu, Alfonso Sánchez-Beato, Alvin Šipraga, Alyssa Ross,
955 Amir Omidi, Anatol Pomozov, Andika Triwidada, Andreas Rammhold,
956 Andreas Valder, Andrej Lajovic, Andrew Soutar, Andrew Stone, Andy Chi,
957 Anita Zhang, Anssi Hannula, Antonio Alvarez Feijoo,
958 Antony Deepak Thomas, Arnaud Ferraris, Arvid E. Picciani,
959 Bastien Nocera, Benjamin Berg, Benjamin Herrenschmidt, Ben Stockett,
960 Bogdan Seniuc, Boqun Feng, Carl Lei, chlorophyll-zz, Chris Packham,
961 Christian Brauner, Christian Göttsche, Christian Wehrli,
962 Christoph Anton Mitterer, Cristian Rodríguez, Daan De Meyer,
963 Daniel Maixner, Dann Frazier, Dan Streetman, Davide Cavalca,
964 David Seifert, David Tardon, dependabot[bot], Dimitri John Ledkov,
965 Dimitri Papadopoulos, Dimitry Ishenko, Dmitry Khlebnikov,
966 Dominique Martinet, duament, Egor, Egor Ignatov, Emil Renner Berthing,
967 Emily Gonyer, Ettore Atalan, Evgeny Vereshchagin, Florian Klink,
968 Franck Bui, Frantisek Sumsal, Geass-LL, Gibeom Gwon, GnunuX,
969 Gogo Gogsi, gregzuro, Greg Zuro, Gustavo Costa, Hans de Goede,
970 Hela Basa, Henri Chain, hikigaya58, Hugo Carvalho,
971 Hugo Osvaldo Barrera, Iago Lopez Galeiras, Iago López Galeiras,
972 I-dont-need-name, igo95862, Jack Dähn, James Hilliard, Jan Janssen,
973 Jan Kuparinen, Jan Macku, Jan Palus, Jarkko Sakkinen, Jayce Fayne,
974 jiangchuangang, jlempen, John Lindgren, Jonas Dreßler, Jonas Jelten,
975 Jonas Witschel, Joris Hartog, José Expósito, Julia Kartseva,
976 Kai-Heng Feng, Kai Wohlfahrt, Kay Siver Bø, KennthStailey,
977 Kevin Kuehler, Kevin Orr, Khem Raj, Kristian Klausen, Kyle Laker,
978 lainahai, LaserEyess, Lennart Poettering, Lia Lenckowski, longpanda,
979 Luca Boccassi, Luca BRUNO, Ludwig Nussel, Lukas Senionis,
980 Maanya Goenka, Maciek Borzecki, Marcel Menzel, Marco Scardovi,
981 Marcus Harrison, Mark Boudreau, Matthijs van Duin, Mauricio Vásquez,
982 Maxime de Roucy, Max Resch, MertsA, Michael Biebl, Michael Catanzaro,
983 Michal Koutný, Michal Sekletár, Miika Karanki, Mike Gilbert,
984 Milo Turner, ml, monosans, Nacho Barrientos, nassir90, Nishal Kulkarni,
985 nl6720, Ondrej Kozina, Paulo Neves, Pavel Březina, pedro martelletto,
986 Peter Hutterer, Peter Morrow, Piotr Drąg, Rasmus Villemoes, ratijas,
987 Raul Tambre, rene, Riccardo Schirone, Robert-L-Turner, Robert Scheck,
988 Ross Jennings, saikat0511, Scott Lamb, Scott Worley,
989 Sergei Trofimovich, Sho Iizuka, Slava Bacherikov, Slimane Selyan Amiri,
990 StefanBruens, Steven Siloti, svonohr, Taiki Sugawara, Takashi Sakamoto,
991 Takuro Onoue, Thomas Blume, Thomas Haller, Thomas Mühlbacher,
992 Tianlu Shao, Toke Høiland-Jørgensen, Tom Yan, Tony Asleson,
993 Topi Miettinen, Ulrich Ölmann, Urs Ritzmann, Vincent Bernat,
994 Vito Caputo, Vladimir Panteleev, WANG Xuerui, Wind/owZ, Wu Xiaotian,
995 xdavidwu, Xiaotian Wu, xujing, yangmingtai, Yao Wei, Yao Wei (魏銘廷),
996 Yegor Alexeyev, Yu Watanabe, Zbigniew Jędrzejewski-Szmek,
997 Дамјан Георгиевски, наб
998
999 — Warsaw, 2021-12-23
1000
1001 CHANGES WITH 249:
1002
1003 * When operating on disk images via the --image= switch of various
1004 tools (such as systemd-nspawn or systemd-dissect), or when udev finds
1005 no 'root=' parameter on the kernel command line, and multiple
1006 suitable root or /usr/ partitions exist in the image, then a simple
1007 comparison inspired by strverscmp() is done on the GPT partition
1008 label, and the newest partition is picked. This permits a simple and
1009 generic whole-file-system A/B update logic where new operating system
1010 versions are dropped into partitions whose label is then updated with
1011 a matching version identifier.
1012
1013 * systemd-sysusers now supports querying the passwords to set for the
1014 users it creates via the "credentials" logic introduced in v247: the
1015 passwd.hashed-password.<user> and passwd.plaintext-password.<user>
1016 credentials are consulted for the password to use (either in UNIX
1017 hashed form, or literally). By default these credentials are inherited
1018 down from PID1 (which in turn imports it from a container manager if
1019 there is one). This permits easy configuration of user passwords
1020 during first boot. Example:
1021
1022 # systemd-nspawn -i foo.raw --volatile=yes --set-credential=passwd.plaintext-password.root:foo
1023
1024 Note that systemd-sysusers operates in purely additive mode: it
1025 executes no operation if the declared users already exist, and hence
1026 doesn't set any passwords as effect of the command line above if the
1027 specified root user exists already in the image. (Note that
1028 --volatile=yes ensures it doesn't, though.)
1029
1030 * systemd-firstboot now also supports querying various system
1031 parameters via the credential subsystems. Thus, as above this may be
1032 used to initialize important system parameters on first boot of
1033 previously unprovisioned images (i.e. images with a mostly empty
1034 /etc/).
1035
1036 * PID 1 may now show both the unit name and the unit description
1037 strings in its status output during boot. This may be configured with
1038 StatusUnitFormat=combined in system.conf or
1039 systemd.status-unit-format=combined on the kernel command line.
1040
1041 * The systemd-machine-id-setup tool now supports a --image= switch for
1042 provisioning a machine ID file into an OS disk image, similar to how
1043 --root= operates on an OS file tree. This matches the existing switch
1044 of the same name for systemd-tmpfiles, systemd-firstboot, and
1045 systemd-sysusers tools.
1046
1047 * Similarly, systemd-repart gained support for the --image= switch too.
1048 In combination with the existing --size= option, this makes the tool
1049 particularly useful for easily growing disk images in a single
1050 invocation, following the declarative rules included in the image
1051 itself.
1052
1053 * systemd-repart's partition configuration files gained support for a
1054 new switch MakeDirectories= which may be used to create arbitrary
1055 directories inside file systems that are created, before registering
1056 them in the partition table. This is useful in particular for root
1057 partitions to create mount point directories for other partitions
1058 included in the image. For example, a disk image that contains a
1059 root, /home/, and /var/ partitions, may set MakeDirectories=yes to
1060 create /home/ and /var/ as empty directories in the root file system
1061 on its creation, so that the resulting image can be mounted
1062 immediately, even in read-only mode.
1063
1064 * systemd-repart's CopyBlocks= setting gained support for the special
1065 value "auto". If used, a suitable matching partition on the booted OS
1066 is found as source to copy blocks from. This is useful when
1067 implementing replicating installers, that are booted from one medium
1068 and then stream their own root partition onto the target medium.
1069
1070 * systemd-repart's partition configuration files gained support for a
1071 Flags=, a ReadOnly= and a NoAuto= setting, allowing control of these
1072 GPT partition flags for the created partitions: this is useful for
1073 marking newly created partitions as read-only, or as not being
1074 subject for automatic mounting from creation on.
1075
1076 * The /etc/os-release file has been extended with two new (optional)
1077 variables IMAGE_VERSION= and IMAGE_ID=, carrying identity and version
1078 information for OS images that are updated comprehensively and
1079 atomically as one image. Two new specifiers %M, %A now resolve to
1080 these two fields in the various configuration options that resolve
1081 specifiers.
1082
1083 * portablectl gained a new switch --extension= for enabling portable
1084 service images with extensions that follow the extension image
1085 concept introduced with v248, and thus allows layering multiple
1086 images when setting up the root filesystem of the service.
1087
1088 * systemd-coredump will now extract ELF build-id information from
1089 processes dumping core and include it in the coredump report.
1090 Moreover, it will look for ELF .note.package sections with
1091 distribution packaging meta-information about the crashing process.
1092 This is useful to directly embed the rpm or deb (or any other)
1093 package name and version in ELF files, making it easy to match
1094 coredump reports with the specific package for which the software was
1095 compiled. This is particularly useful on environments with ELF files
1096 from multiple vendors, different distributions and versions, as is
1097 common today in our containerized and sand-boxed world. For further
1098 information, see:
1099
1100 https://systemd.io/COREDUMP_PACKAGE_METADATA
1101
1102 * A new udev hardware database has been added for FireWire devices
1103 (IEEE 1394).
1104
1105 * The "net_id" built-in of udev has been updated with three
1106 backwards-incompatible changes:
1107
1108 - PCI hotplug slot names on s390 systems are now parsed as
1109 hexadecimal numbers. They were incorrectly parsed as decimal
1110 previously, or ignored if the name was not a valid decimal
1111 number.
1112
1113 - PCI onboard indices up to 65535 are allowed. Previously, numbers
1114 above 16383 were rejected. This primarily impacts s390 systems,
1115 where values up to 65535 are used.
1116
1117 - Invalid characters in interface names are replaced with "_".
1118
1119 The new version of the net naming scheme is "v249". The previous
1120 scheme can be selected via the "net.naming-scheme=v247" kernel
1121 command line parameter.
1122
1123 * sd-bus' sd_bus_is_ready() and sd_bus_is_open() calls now accept a
1124 NULL bus object, for which they will return false. Or in other words,
1125 an unallocated bus connection is neither ready nor open.
1126
1127 * The sd-device API acquired a new API function
1128 sd_device_get_usec_initialized() that returns the monotonic time when
1129 the udev device first appeared in the database.
1130
1131 * sd-device gained a new APIs sd_device_trigger_with_uuid() and
1132 sd_device_get_trigger_uuid(). The former is similar to
1133 sd_device_trigger() but returns a randomly generated UUID that is
1134 associated with the synthetic uevent generated by the call. This UUID
1135 may be read from the sd_device object a monitor eventually receives,
1136 via the sd_device_get_trigger_uuid(). This interface requires kernel
1137 4.13 or above to work, and allows tracking a synthetic uevent through
1138 the entire device management stack. The "udevadm trigger --settle"
1139 logic has been updated to make use of this concept if available to
1140 wait precisely for the uevents it generates. "udevadm trigger" also
1141 gained a new parameter --uuid that prints the UUID for each generated
1142 uevent.
1143
1144 * sd-device also gained new APIs sd_device_new_from_ifname() and
1145 sd_device_new_from_ifindex() for allocating an sd-device object for
1146 the specified network interface. The former accepts an interface name
1147 (either a primary or an alternative name), the latter an interface
1148 index.
1149
1150 * The native Journal protocol has been documented. Clients may talk
1151 this as alternative to the classic BSD syslog protocol for locally
1152 delivering log records to the Journal. The protocol has been stable
1153 for a long time and in fact been implemented already in a variety
1154 of alternative client libraries. This documentation makes the support
1155 for that official:
1156
1157 https://systemd.io/JOURNAL_NATIVE_PROTOCOL
1158
1159 * A new BPFProgram= setting has been added to service files. It may be
1160 set to a path to a loaded kernel BPF program, i.e. a path to a bpffs
1161 file, or a bind mount or symlink to one. This may be used to upload
1162 and manage BPF programs externally and then hook arbitrary systemd
1163 services into them.
1164
1165 * The "home.arpa" domain that has been officially declared as the
1166 choice for domain for local home networks per RFC 8375 has been added
1167 to the default NTA list of resolved, since DNSSEC is generally not
1168 available on private domains.
1169
1170 * The CPUAffinity= setting of unit files now resolves "%" specifiers.
1171
1172 * A new ManageForeignRoutingPolicyRules= setting has been added to
1173 .network files which may be used to exclude foreign-created routing
1174 policy rules from systemd-networkd management.
1175
1176 * systemd-network-wait-online gained two new switches -4 and -6 that
1177 may be used to tweak whether to wait for only IPv4 or only IPv6
1178 connectivity.
1179
1180 * .network files gained a new RequiredFamilyForOnline= setting to
1181 fine-tune whether to require an IPv4 or IPv6 address in order to
1182 consider an interface "online".
1183
1184 * networkctl will now show an over-all "online" state in the per-link
1185 information.
1186
1187 * In .network files a new OutgoingInterface= setting has been added to
1188 specify the output interface in bridge FDB setups.
1189
1190 * In .network files the Multipath group ID may now be configured for
1191 [NextHop] entries, via the new Group= setting.
1192
1193 * The DHCP server logic configured in .network files gained a new
1194 setting RelayTarget= that turns the server into a DHCP server relay.
1195 The RelayAgentCircuitId= and RelayAgentRemoteId= settings may be used
1196 to further tweak the DHCP relay behaviour.
1197
1198 * The DHCP server logic also gained a new ServerAddress= setting in
1199 .network files that explicitly specifies the server IP address to
1200 use. If not specified, the address is determined automatically, as
1201 before.
1202
1203 * The DHCP server logic in systemd-networkd gained support for static
1204 DHCP leases, configurable via the [DHCPServerStaticLease]
1205 section. This allows explicitly mapping specific MAC addresses to
1206 fixed IP addresses and vice versa.
1207
1208 * The RestrictAddressFamilies= setting in service files now supports a
1209 new special value "none". If specified sockets of all address
1210 families will be made unavailable to services configured that way.
1211
1212 * systemd-fstab-generator and systemd-repart have been updated to
1213 support booting from disks that carry only a /usr/ partition but no
1214 root partition yet, and where systemd-repart can add it in on the
1215 first boot. This is useful for implementing systems that ship with a
1216 single /usr/ file system, and whose root file system shall be set up
1217 and formatted on a LUKS-encrypted volume whose key is generated
1218 locally (and possibly enrolled in the TPM) during the first boot.
1219
1220 * The [Address] section of .network files now accepts a new
1221 RouteMetric= setting that configures the routing metric to use for
1222 the prefix route created as effect of the address configuration.
1223 Similarly, the [DHCPv6PrefixDelegation] and [IPv6Prefix] sections
1224 gained matching settings for their prefix routes. (The option of the
1225 same name in the [DHCPv6] section is moved to [IPv6AcceptRA], since
1226 it conceptually belongs there; the old option is still understood for
1227 compatibility.)
1228
1229 * The DHCPv6 IAID and DUID are now explicitly configurable in .network
1230 files.
1231
1232 * A new udev property ID_NET_DHCP_BROADCAST on network interface
1233 devices is now honoured by systemd-networkd, controlling whether to
1234 issue DHCP offers via broadcasting. This is used to ensure that s390
1235 layer 3 network interfaces work out-of-the-box with systemd-networkd.
1236
1237 * nss-myhostname and systemd-resolved will now synthesize address
1238 records for a new special hostname "_outbound". The name will always
1239 resolve to the local IP addresses most likely used for outbound
1240 connections towards the default routes. On multi-homed hosts this is
1241 useful to have a stable handle referring to "the" local IP address
1242 that matters most, to the point where this is defined.
1243
1244 * The Discoverable Partition Specification has been updated with a new
1245 GPT partition flag "grow-file-system" defined for its partition
1246 types. Whenever partitions with this flag set are automatically
1247 mounted (i.e. via systemd-gpt-auto-generator or the --image= switch
1248 of systemd-nspawn or other tools; and as opposed to explicit mounting
1249 via /etc/fstab), the file system within the partition is
1250 automatically grown to the full size of the partition. If the file
1251 system size already matches the partition size this flag has no
1252 effect. Previously, this functionality has been available via the
1253 explicit x-systemd.growfs mount option, and this new flag extends
1254 this to automatically discovered mounts. A new GrowFileSystem=
1255 setting has been added to systemd-repart drop-in files that allows
1256 configuring this partition flag. This new flag defaults to on for
1257 partitions automatically created by systemd-repart, except if they
1258 are marked read-only. See the specification for further details:
1259
1260 https://systemd.io/DISCOVERABLE_PARTITIONS
1261
1262 * .network files gained a new setting RoutesToNTP= in the [DHCPv4]
1263 section. If enabled (which is the default), and an NTP server address
1264 is acquired through a DHCP lease on this interface an explicit route
1265 to this address is created on this interface to ensure that NTP
1266 traffic to the NTP server acquired on an interface is also routed
1267 through that interface. The pre-existing RoutesToDNS= setting that
1268 implements the same for DNS servers is now enabled by default.
1269
1270 * A pair of service settings SocketBindAllow= + SocketBindDeny= have
1271 been added that may be used to restrict the network interfaces
1272 sockets created by the service may be bound to. This is implemented
1273 via BPF.
1274
1275 * A new ConditionFirmware= setting has been added to unit files to
1276 conditionalize on certain firmware features. At the moment it may
1277 check whether running on an UEFI system, a device.tree system, or if
1278 the system is compatible with some specified device-tree feature.
1279
1280 * A new ConditionOSRelease= setting has been added to unit files to
1281 check os-release(5) fields. The "=", "!=", "<", "<=", ">=", ">"
1282 operators may be used to check if some field has some specific value
1283 or do an alphanumerical comparison. Equality comparisons are useful
1284 for fields like ID, but relative comparisons for fields like
1285 VERSION_ID or IMAGE_VERSION.
1286
1287 * hostnamed gained a new Describe() D-Bus method that returns a JSON
1288 serialization of the host data it exposes. This is exposed via
1289 "hostnamectl --json=" to acquire a host identity description in JSON.
1290 It's our intention to add a similar features to most services and
1291 objects systemd manages, in order to simplify integration with
1292 program code that can consume JSON.
1293
1294 * Similarly, networkd gained a Describe() method on its Manager and
1295 Link bus objects. This is exposed via "networkctl --json=".
1296
1297 * hostnamectl's various "get-xyz"/"set-xyz" verb pairs
1298 (e.g. "hostnamectl get-hostname", "hostnamectl "set-hostname") have
1299 been replaced by a single "xyz" verb (e.g. "hostnamectl hostname")
1300 that is used both to get the value (when no argument is given), and
1301 to set the value (when an argument is specified). The old names
1302 continue to be supported for compatibility.
1303
1304 * systemd-detect-virt and ConditionVirtualization= are now able to
1305 correctly identify Amazon EC2 environments.
1306
1307 * The LogLevelMax= setting of unit files now applies not only to log
1308 messages generated *by* the service, but also to log messages
1309 generated *about* the service by PID 1. To suppress logs concerning a
1310 specific service comprehensively, set this option to a high log
1311 level.
1312
1313 * bootctl gained support for a new --make-machine-id-directory= switch
1314 that allows precise control on whether to create the top-level
1315 per-machine directory in the boot partition that typically contains
1316 Type 1 boot loader entries.
1317
1318 * During build SBAT data to include in the systemd-boot EFI PE binaries
1319 may be specified now.
1320
1321 * /etc/crypttab learnt a new option "headless". If specified any
1322 requests to query the user interactively for passwords or PINs will
1323 be skipped. This is useful on systems that are headless, i.e. where
1324 an interactive user is generally not present.
1325
1326 * /etc/crypttab also learnt a new option "password-echo=" that allows
1327 configuring whether the encryption password prompt shall echo the
1328 typed password and if so, do so literally or via asterisks. (The
1329 default is the same behaviour as before: provide echo feedback via
1330 asterisks.)
1331
1332 * FIDO2 support in systemd-cryptenroll/systemd-cryptsetup and
1333 systemd-homed has been updated to allow explicit configuration of the
1334 "user presence" and "user verification" checks, as well as whether a
1335 PIN is required for authentication, via the new switches
1336 --fido2-with-user-presence=, --fido2-with-user-verification=,
1337 --fido2-with-client-pin= to systemd-cryptenroll and homectl. Which
1338 features are available, and may be enabled or disabled depends on the
1339 used FIDO2 token.
1340
1341 * systemd-nspawn's --private-user= switch now accepts the special value
1342 "identity" which configures a user namespacing environment with an
1343 identity mapping of 65535 UIDs. This means the container UID 0 is
1344 mapped to the host UID 0, and the UID 1 to host UID 1. On first look
1345 this doesn't appear to be useful, however it does reduce the attack
1346 surface a bit, since the resulting container will possess process
1347 capabilities only within its namespace and not on the host.
1348
1349 * systemd-nspawn's --private-user-chown switch has been replaced by a
1350 more generic --private-user-ownership= switch that accepts one of
1351 three values: "chown" is equivalent to the old --private-user-chown,
1352 and "off" is equivalent to the absence of the old switch. The value
1353 "map" uses the new UID mapping mounts of Linux 5.12 to map ownership
1354 of files and directories of the underlying image to the chosen UID
1355 range for the container. "auto" is equivalent to "map" if UID mapping
1356 mount are supported, otherwise it is equivalent to "chown". The short
1357 -U switch systemd-nspawn now implies --private-user-ownership=auto
1358 instead of the old --private-user-chown. Effectively this means: if
1359 the backing file system supports UID mapping mounts the feature is
1360 now used by default if -U is used. Generally, it's a good idea to use
1361 UID mapping mounts instead of recursive chown()ing, since it allows
1362 running containers off immutable images (since no modifications of
1363 the images need to take place), and share images between multiple
1364 instances. Moreover, the recursive chown()ing operation is slow and
1365 can be avoided. Conceptually it's also a good thing if transient UID
1366 range uses do not leak into persistent file ownership anymore. TLDR:
1367 finally, the last major drawback of user namespacing has been
1368 removed, and -U should always be used (unless you use btrfs, where
1369 UID mapped mounts do not exist; or your container actually needs
1370 privileges on the host).
1371
1372 * nss-systemd now synthesizes user and group shadow records in addition
1373 to the main user and group records. Thus, hashed passwords managed by
1374 systemd-homed are now accessible via the shadow database.
1375
1376 * The userdb logic (and thus nss-systemd, and so on) now read
1377 additional user/group definitions in JSON format from the drop-in
1378 directories /etc/userdb/, /run/userdb/, /run/host/userdb/ and
1379 /usr/lib/userdb/. This is a simple and powerful mechanism for making
1380 additional users available to the system, with full integration into
1381 NSS including the shadow databases. Since the full JSON user/group
1382 record format is supported this may also be used to define users with
1383 resource management settings and other runtime settings that
1384 pam_systemd and systemd-logind enforce at login.
1385
1386 * The userdbctl tool gained two new switches --with-dropin= and
1387 --with-varlink= which can be used to fine-tune the sources used for
1388 user database lookups.
1389
1390 * systemd-nspawn gained a new switch --bind-user= for binding a host
1391 user account into the container. This does three things: the user's
1392 home directory is bind mounted from the host into the container,
1393 below the /run/userdb/home/ hierarchy. A free UID is picked in the
1394 container, and a user namespacing UID mapping to the host user's UID
1395 installed. And finally, a minimal JSON user and group record (along
1396 with its hashed password) is dropped into /run/host/userdb/. These
1397 records are picked up automatically by the userdb drop-in logic
1398 describe above, and allow the user to login with the same password as
1399 on the host. Effectively this means: if host and container run new
1400 enough systemd versions making a host user available to the container
1401 is trivially simple.
1402
1403 * systemd-journal-gatewayd now supports the switches --user, --system,
1404 --merge, --file= that are equivalent to the same switches of
1405 journalctl, and permit exposing only the specified subset of the
1406 Journal records.
1407
1408 * The OnFailure= dependency between units is now augmented with a
1409 implicit reverse dependency OnFailureOf= (this new dependency cannot
1410 be configured directly it's only created as effect of an OnFailure=
1411 dependency in the reverse order — it's visible in "systemctl show"
1412 however). Similar, Slice= now has an reverse dependency SliceOf=,
1413 that is also not configurable directly, but useful to determine all
1414 units that are members of a slice.
1415
1416 * A pair of new dependency types between units PropagatesStopTo= +
1417 StopPropagatedFrom= has been added, that allows propagation of unit
1418 stop events between two units. It operates similar to the existing
1419 PropagatesReloadTo= + ReloadPropagatedFrom= dependencies.
1420
1421 * A new dependency type OnSuccess= has been added (plus the reverse
1422 dependency OnSuccessOf=, which cannot be configured directly, but
1423 exists only as effect of the reverse OnSuccess=). It is similar to
1424 OnFailure=, but triggers in the opposite case: when a service exits
1425 cleanly. This allows "chaining up" of services where one or more
1426 services are started once another service has successfully completed.
1427
1428 * A new dependency type Upholds= has been added (plus the reverse
1429 dependency UpheldBy=, which cannot be configured directly, but exists
1430 only as effect of Upholds=). This dependency type is a stronger form
1431 of Wants=: if a unit has an UpHolds= dependency on some other unit
1432 and the former is active then the latter is started whenever it is
1433 found inactive (and no job is queued for it). This is an alternative
1434 to Restart= inside service units, but less configurable, and the
1435 request to uphold a unit is not encoded in the unit itself but in
1436 another unit that intends to uphold it.
1437
1438 * The systemd-ask-password tool now also supports reading passwords
1439 from the credentials subsystem, via the new --credential= switch.
1440
1441 * The systemd-ask-password tool learnt a new switch --emoji= which may
1442 be used to explicit control whether the lock and key emoji (🔐) is
1443 shown in the password prompt on suitable TTYs.
1444
1445 * The --echo switch of systemd-ask-password now optionally takes a
1446 parameter that controls character echo. It may either show asterisks
1447 (default, as before), turn echo off entirely, or echo the typed
1448 characters literally.
1449
1450 * The systemd-ask-password tool also gained a new -n switch for
1451 suppressing output of a trailing newline character when writing the
1452 acquired password to standard output, similar to /bin/echo's -n
1453 switch.
1454
1455 * New documentation has been added that describes the organization of
1456 the systemd source code tree:
1457
1458 https://systemd.io/ARCHITECTURE
1459
1460 * Units using ConditionNeedsUpdate= will no longer be activated in
1461 the initrd.
1462
1463 * It is now possible to list a template unit in the WantedBy= or
1464 RequiredBy= settings of the [Install] section of another template
1465 unit, which will be instantiated using the same instance name.
1466
1467 * A new MemoryAvailable property is available for units. If the unit,
1468 or the slice(s) it is part of, have a memory limit set via MemoryMax=/
1469 MemoryHigh=, MemoryAvailable will indicate how much more memory the
1470 unit can claim before hitting the limit(s).
1471
1472 * systemd-coredump will now try to stay below the cgroup memory limit
1473 placed on itself or one of the slices it runs under, if the storage
1474 area for core files (/var/lib/systemd/coredump/) is placed on a tmpfs,
1475 since files written on such filesystems count toward the cgroup memory
1476 limit. If there is not enough available memory in such cases to store
1477 the core file uncompressed, systemd-coredump will skip to compressed
1478 storage directly (if enabled) and it will avoid analyzing the core file
1479 to print backtrace and metadata in the journal.
1480
1481 * tmpfiles.d/ drop-ins gained a new '=' modifier to check if the type
1482 of a path matches the configured expectations, and remove it if not.
1483
1484 * tmpfiles.d/'s 'Age' now accepts an 'age-by' argument, which allows to
1485 specify which of the several available filesystem timestamps (access
1486 time, birth time, change time, modification time) to look at when
1487 deciding whether a path has aged enough to be cleaned.
1488
1489 * A new IPv6StableSecretAddress= setting has been added to .network
1490 files, which takes an IPv6 address to use as secret for IPv6 address
1491 generation.
1492
1493 * The [DHCPServer] logic in .network files gained support for a new
1494 UplinkInterface= setting that permits configuration of the uplink
1495 interface name to propagate DHCP lease information from.
1496
1497 * The WakeOnLan= setting in .link files now accepts a list of flags
1498 instead of a single one, to configure multiple wake-on-LAN policies.
1499
1500 * User-space defined tracepoints (USDT) have been added to udev at
1501 strategic locations. This is useful for tracing udev behaviour and
1502 performance with bpftrace and similar tools.
1503
1504 * systemd-journald-upload gained a new NetworkTimeoutSec= option for
1505 setting a network timeout time.
1506
1507 * If a system service is running in a new mount namespace (RootDirectory=
1508 and friends), all file systems will be mounted with MS_NOSUID by
1509 default, unless the system is running with SELinux enabled.
1510
1511 * When enumerating time zones the timedatectl tool will now consult the
1512 'tzdata.zi' file shipped by the IANA time zone database package, in
1513 addition to 'zone1970.tab', as before. This makes sure time zone
1514 aliases are now correctly supported. Some distributions so far did
1515 not install this additional file, most do however. If you
1516 distribution does not install it yet, it might make sense to change
1517 that.
1518
1519 * Intel HID rfkill event is no longer masked, since it's the only
1520 source of rfkill event on newer HP laptops. To have both backward and
1521 forward compatibility, userspace daemon needs to debounce duplicated
1522 events in a short time window.
1523
1524 Contributions from: Aakash Singh, adrian5, Albert Brox,
1525 Alexander Sverdlin, Alexander Tsoy, Alexey Rubtsov, alexlzhu,
1526 Allen Webb, Alvin Šipraga, Alyssa Ross, Anders Wenhaug,
1527 Andrea Pappacoda, Anita Zhang, asavah, Balint Reczey, Bertrand Jacquin,
1528 borna-blazevic, caoxia2008cxx, Carlo Teubner, Christian Göttsche,
1529 Christian Hesse, Daniel Schaefer, Dan Streetman,
1530 David Santamaría Rogado, David Tardon, Deepak Rawat, dgcampea,
1531 Dimitri John Ledkov, ei-ke, Emilio Herrera, Emil Renner Berthing,
1532 Eric Cook, Flos Lonicerae, Franck Bui, Francois Gervais,
1533 Frantisek Sumsal, Gibeom Gwon, gitm0, Hamish Moffatt, Hans de Goede,
1534 Harsh Barsaiyan, Henri Chain, Hristo Venev, Icenowy Zheng, Igor Zhbanov,
1535 imayoda, Jakub Warczarek, James Buren, Jan Janssen, Jan Macku,
1536 Jan Synacek, Jason Francis, Jayanth Ananthapadmanaban, Jeremy Szu,
1537 Jérôme Carretero, Jesse Stricker, jiangchuangang, Joerg Behrmann,
1538 Jóhann B. Guðmundsson, Jörg Deckert, Jörg Thalheim, Juergen Hoetzel,
1539 Julia Kartseva, Kai-Heng Feng, Khem Raj, KoyamaSohei, laineantti,
1540 Lennart Poettering, LetzteInstanz, Luca Adrian L, Luca Boccassi,
1541 Lucas Magasweran, Mantas Mikulėnas, Marco Antonio Mauro, Mark Wielaard,
1542 Masahiro Matsuya, Matt Johnston, Michael Catanzaro, Michal Koutný,
1543 Michal Sekletár, Mike Crowe, Mike Kazantsev, Milan, milaq,
1544 Miroslav Suchý, Morten Linderud, nerdopolis, nl6720, Noah Meyerhans,
1545 Oleg Popov, Olle Lundberg, Ondrej Kozina, Paweł Marciniak, Perry.Yuan,
1546 Peter Hutterer, Peter Kjellerstedt, Peter Morrow, Phaedrus Leeds,
1547 plattrap, qhill, Raul Tambre, Roman Beranek, Roshan Shariff,
1548 Ryan Hendrickson, Samuel BF, scootergrisen, Sebastian Blunt,
1549 Seong-ho Cho, Sergey Bugaev, Sevan Janiyan, Sibo Dong, simmon,
1550 Simon Watts, Srinidhi Kaushik, Štěpán Němec, Steve Bonds, Susant Sahani,
1551 sverdlin, syyhao1994, Takashi Sakamoto, Topi Miettinen, tramsay,
1552 Trent Piepho, Uwe Kleine-König, Viktor Mihajlovski, Vincent Dechenaux,
1553 Vito Caputo, William A. Kennington III, Yangyang Shen, Yegor Alexeyev,
1554 Yi Gao, Yu Watanabe, Zbigniew Jędrzejewski-Szmek, zsien, наб
1555
1556 — Edinburgh, 2021-07-07
1557
1558 CHANGES WITH 248:
1559
1560 * A concept of system extension images is introduced. Such images may
1561 be used to extend the /usr/ and /opt/ directory hierarchies at
1562 runtime with additional files (even if the file system is read-only).
1563 When a system extension image is activated, its /usr/ and /opt/
1564 hierarchies and os-release information are combined via overlayfs
1565 with the file system hierarchy of the host OS.
1566
1567 A new systemd-sysext tool can be used to merge, unmerge, list, and
1568 refresh system extension hierarchies. See
1569 https://www.freedesktop.org/software/systemd/man/systemd-sysext.html.
1570
1571 The systemd-sysext.service automatically merges installed system
1572 extensions during boot (before basic.target, but not in very early
1573 boot, since various file systems have to be mounted first).
1574
1575 The SYSEXT_LEVEL= field in os-release(5) may be used to specify the
1576 supported system extension level.
1577
1578 * A new ExtensionImages= unit setting can be used to apply the same
1579 system extension image concept from systemd-sysext to the namespaced
1580 file hierarchy of specific services, following the same rules and
1581 constraints.
1582
1583 * Support for a new special "root=tmpfs" kernel command-line option has
1584 been added. When specified, a tmpfs is mounted on /, and mount.usr=
1585 should be used to point to the operating system implementation.
1586
1587 * A new configuration file /etc/veritytab may be used to configure
1588 dm-verity integrity protection for block devices. Each line is in the
1589 format "volume-name data-device hash-device roothash options",
1590 similar to /etc/crypttab.
1591
1592 * A new kernel command-line option systemd.verity.root_options= may be
1593 used to configure dm-verity behaviour for the root device.
1594
1595 * The key file specified in /etc/crypttab (the third field) may now
1596 refer to an AF_UNIX/SOCK_STREAM socket in the file system. The key is
1597 acquired by connecting to that socket and reading from it. This
1598 allows the implementation of a service to provide key information
1599 dynamically, at the moment when it is needed.
1600
1601 * When the hostname is set explicitly to "localhost", systemd-hostnamed
1602 will respect this. Previously such a setting would be mostly silently
1603 ignored. The goal is to honour configuration as specified by the
1604 user.
1605
1606 * The fallback hostname that will be used by the system manager and
1607 systemd-hostnamed can now be configured in two new ways: by setting
1608 DEFAULT_HOSTNAME= in os-release(5), or by setting
1609 $SYSTEMD_DEFAULT_HOSTNAME in the environment block. As before, it can
1610 also be configured during compilation. The environment variable is
1611 intended for testing and local overrides, the os-release(5) field is
1612 intended to allow customization by different variants of a
1613 distribution that share the same compiled packages.
1614
1615 * The environment block of the manager itself may be configured through
1616 a new ManagerEnvironment= setting in system.conf or user.conf. This
1617 complements existing ways to set the environment block (the kernel
1618 command line for the system manager, the inherited environment and
1619 user@.service unit file settings for the user manager).
1620
1621 * systemd-hostnamed now exports the default hostname and the source of
1622 the configured hostname ("static", "transient", or "default") as
1623 D-Bus properties.
1624
1625 * systemd-hostnamed now exports the "HardwareVendor" and
1626 "HardwareModel" D-Bus properties, which are supposed to contain a
1627 pair of cleaned up, human readable strings describing the system's
1628 vendor and model. It's typically sourced from the firmware's DMI
1629 tables, but may be augmented from a new hwdb database. hostnamectl
1630 shows this in the status output.
1631
1632 * Support has been added to systemd-cryptsetup for extracting the
1633 PKCS#11 token URI and encrypted key from the LUKS2 JSON embedded
1634 metadata header. This allows the information how to open the
1635 encrypted device to be embedded directly in the device and obviates
1636 the need for configuration in an external file.
1637
1638 * systemd-cryptsetup gained support for unlocking LUKS2 volumes using
1639 TPM2 hardware, as well as FIDO2 security tokens (in addition to the
1640 pre-existing support for PKCS#11 security tokens).
1641
1642 * systemd-repart may enroll encrypted partitions using TPM2
1643 hardware. This may be useful for example to create an encrypted /var
1644 partition bound to the machine on first boot.
1645
1646 * A new systemd-cryptenroll tool has been added to enroll TPM2, FIDO2
1647 and PKCS#11 security tokens to LUKS volumes, list and destroy
1648 them. See:
1649
1650 http://0pointer.net/blog/unlocking-luks2-volumes-with-tpm2-fido2-pkcs11-security-hardware-on-systemd-248.html
1651
1652 It also supports enrolling "recovery keys" and regular passphrases.
1653
1654 * The libfido2 dependency is now based on dlopen(), so that the library
1655 is used at runtime when installed, but is not a hard runtime
1656 dependency.
1657
1658 * systemd-cryptsetup gained support for two new options in
1659 /etc/crypttab: "no-write-workqueue" and "no-read-workqueue" which
1660 request synchronous processing of encryption/decryption IO.
1661
1662 * The manager may be configured at compile time to use the fexecve()
1663 instead of the execve() system call when spawning processes. Using
1664 fexecve() closes a window between checking the security context of an
1665 executable and spawning it, but unfortunately the kernel displays
1666 stale information in the process' "comm" field, which impacts ps
1667 output and such.
1668
1669 * The configuration option -Dcompat-gateway-hostname has been dropped.
1670 "_gateway" is now the only supported name.
1671
1672 * The ConditionSecurity=tpm2 unit file setting may be used to check if
1673 the system has at least one TPM2 (tpmrm class) device.
1674
1675 * A new ConditionCPUFeature= has been added that may be used to
1676 conditionalize units based on CPU features. For example,
1677 ConditionCPUFeature=rdrand will condition a unit so that it is only
1678 run when the system CPU supports the RDRAND opcode.
1679
1680 * The existing ConditionControlGroupController= setting has been
1681 extended with two new values "v1" and "v2". "v2" means that the
1682 unified v2 cgroup hierarchy is used, and "v1" means that legacy v1
1683 hierarchy or the hybrid hierarchy are used.
1684
1685 * A new PrivateIPC= setting on a unit file allows executed processes to
1686 be moved into a private IPC namespace, with separate System V IPC
1687 identifiers and POSIX message queues.
1688
1689 A new IPCNamespacePath= allows the unit to be joined to an existing
1690 IPC namespace.
1691
1692 * The tables of system calls in seccomp filters are now automatically
1693 generated from kernel lists exported on
1694 https://fedora.juszkiewicz.com.pl/syscalls.html.
1695
1696 The following architectures should now have complete lists:
1697 alpha, arc, arm64, arm, i386, ia64, m68k, mips64n32, mips64, mipso32,
1698 powerpc, powerpc64, s390, s390x, tilegx, sparc, x86_64, x32.
1699
1700 * The MountAPIVFS= service file setting now additionally mounts a tmpfs
1701 on /run/ if it is not already a mount point. A writable /run/ has
1702 always been a requirement for a functioning system, but this was not
1703 guaranteed when using a read-only image.
1704
1705 Users can always specify BindPaths= or InaccessiblePaths= as
1706 overrides, and they will take precedence. If the host's root mount
1707 point is used, there is no change in behaviour.
1708
1709 * New bind mounts and file system image mounts may be injected into the
1710 mount namespace of a service (without restarting it). This is exposed
1711 respectively as 'systemctl bind <unit> <path>…' and
1712 'systemctl mount-image <unit> <image>…'.
1713
1714 * The StandardOutput= and StandardError= settings can now specify files
1715 to be truncated for output (as "truncate:<path>").
1716
1717 * The ExecPaths= and NoExecPaths= settings may be used to specify
1718 noexec for parts of the file system.
1719
1720 * sd-bus has a new function sd_bus_open_user_machine() to open a
1721 connection to the session bus of a specific user in a local container
1722 or on the local host. This is exposed in the existing -M switch to
1723 systemctl and similar tools:
1724
1725 systemctl --user -M lennart@foobar start foo
1726
1727 This will connect to the user bus of a user "lennart" in container
1728 "foobar". If no container name is specified, the specified user on
1729 the host itself is connected to
1730
1731 systemctl --user -M lennart@ start quux
1732
1733 * sd-bus also gained a convenience function sd_bus_message_send() to
1734 simplify invocations of sd_bus_send(), taking only a single
1735 parameter: the message to send.
1736
1737 * sd-event allows rate limits to be set on event sources, for dealing
1738 with high-priority event sources that might starve out others. See
1739 the new man page sd_event_source_set_ratelimit(3) for details.
1740
1741 * systemd.link files gained a [Link] Promiscuous= switch, which allows
1742 the device to be raised in promiscuous mode.
1743
1744 New [Link] TransmitQueues= and ReceiveQueues= settings allow the
1745 number of TX and RX queues to be configured.
1746
1747 New [Link] TransmitQueueLength= setting allows the size of the TX
1748 queue to be configured.
1749
1750 New [Link] GenericSegmentOffloadMaxBytes= and
1751 GenericSegmentOffloadMaxSegments= allow capping the packet size and
1752 the number of segments accepted in Generic Segment Offload.
1753
1754 * systemd-networkd gained support for the "B.A.T.M.A.N. advanced"
1755 wireless routing protocol that operates on ISO/OSI Layer 2 only and
1756 uses ethernet frames to route/bridge packets. This encompasses a new
1757 "batadv" netdev Type=, a new [BatmanAdvanced] section with a bunch of
1758 new settings in .netdev files, and a new BatmanAdvanced= setting in
1759 .network files.
1760
1761 * systemd.network files gained a [Network] RouteTable= configuration
1762 switch to select the routing policy table.
1763
1764 systemd.network files gained a [RoutingPolicyRule] Type=
1765 configuration switch (one of "blackhole, "unreachable", "prohibit").
1766
1767 systemd.network files gained a [IPv6AcceptRA] RouteDenyList= and
1768 RouteAllowList= settings to ignore/accept route advertisements from
1769 routers matching specified prefixes. The DenyList= setting has been
1770 renamed to PrefixDenyList= and a new PrefixAllowList= option has been
1771 added.
1772
1773 systemd.network files gained a [DHCPv6] UseAddress= setting to
1774 optionally ignore the address provided in the lease.
1775
1776 systemd.network files gained a [DHCPv6PrefixDelegation]
1777 ManageTemporaryAddress= switch.
1778
1779 systemd.network files gained a new ActivationPolicy= setting which
1780 allows configuring how the UP state of an interface shall be managed,
1781 i.e. whether the interface is always upped, always downed, or may be
1782 upped/downed by the user using "ip link set dev".
1783
1784 * The default for the Broadcast= setting in .network files has slightly
1785 changed: the broadcast address will not be configured for wireguard
1786 devices.
1787
1788 * systemd.netdev files gained a [VLAN] Protocol=, IngressQOSMaps=,
1789 EgressQOSMaps=, and [MACVLAN] BroadcastMulticastQueueLength=
1790 configuration options for VLAN packet handling.
1791
1792 * udev rules may now set log_level= option. This allows debug logs to
1793 be enabled for select events, e.g. just for a specific subsystem or
1794 even a single device.
1795
1796 * udev now exports the VOLUME_ID, LOGICAL_VOLUME_ID, VOLUME_SET_ID, and
1797 DATA_PREPARED_ID properties for block devices with ISO9660 file
1798 systems.
1799
1800 * udev now exports decoded DMI information about installed memory slots
1801 as device properties under the /sys/class/dmi/id/ pseudo device.
1802
1803 * /dev/ is not mounted noexec anymore. This didn't provide any
1804 significant security benefits and would conflict with the executable
1805 mappings used with /dev/sgx device nodes. The previous behaviour can
1806 be restored for individual services with NoExecPaths=/dev (or by allow-
1807 listing and excluding /dev from ExecPaths=).
1808
1809 * Permissions for /dev/vsock are now set to 0o666, and /dev/vhost-vsock
1810 and /dev/vhost-net are owned by the kvm group.
1811
1812 * The hardware database has been extended with a list of fingerprint
1813 readers that correctly support USB auto-suspend using data from
1814 libfprint.
1815
1816 * systemd-resolved can now answer DNSSEC questions through the stub
1817 resolver interface in a way that allows local clients to do DNSSEC
1818 validation themselves. For a question with DO+CD set, it'll proxy the
1819 DNS query and respond with a mostly unmodified packet received from
1820 the upstream server.
1821
1822 * systemd-resolved learnt a new boolean option CacheFromLocalhost= in
1823 resolved.conf. If true the service will provide caching even for DNS
1824 lookups made to an upstream DNS server on the 127.0.0.1/::1
1825 addresses. By default (and when the option is false) systemd-resolved
1826 will not cache such lookups, in order to avoid duplicate local
1827 caching, under the assumption the local upstream server caches
1828 anyway.
1829
1830 * systemd-resolved now implements RFC5001 NSID in its local DNS
1831 stub. This may be used by local clients to determine whether they are
1832 talking to the DNS resolver stub or a different DNS server.
1833
1834 * When resolving host names and other records resolvectl will now
1835 report where the data was acquired from (i.e. the local cache, the
1836 network, locally synthesized, …) and whether the network traffic it
1837 effected was encrypted or not. Moreover the tool acquired a number of
1838 new options --cache=, --synthesize=, --network=, --zone=,
1839 --trust-anchor=, --validate= that take booleans and may be used to
1840 tweak a lookup, i.e. whether it may be answered from cached
1841 information, locally synthesized information, information acquired
1842 through the network, the local mDNS/LLMNR zone, the DNSSEC trust
1843 anchor, and whether DNSSEC validation shall be executed for the
1844 lookup.
1845
1846 * systemd-nspawn gained a new --ambient-capability= setting
1847 (AmbientCapability= in .nspawn files) to configure ambient
1848 capabilities passed to the container payload.
1849
1850 * systemd-nspawn gained the ability to configure the firewall using the
1851 nftables subsystem (in addition to the existing iptables
1852 support). Similarly, systemd-networkd's IPMasquerade= option now
1853 supports nftables as back-end, too. In both cases NAT on IPv6 is now
1854 supported too, in addition to IPv4 (the iptables back-end still is
1855 IPv4-only).
1856
1857 "IPMasquerade=yes", which was the same as "IPMasquerade=ipv4" before,
1858 retains its meaning, but has been deprecated. Please switch to either
1859 "ivp4" or "both" (if covering IPv6 is desired).
1860
1861 * systemd-importd will now download .verity and .roothash.p7s files
1862 along with the machine image (as exposed via machinectl pull-raw).
1863
1864 * systemd-oomd now gained a new DefaultMemoryPressureDurationSec=
1865 setting to configure the time a unit's cgroup needs to exceed memory
1866 pressure limits before action will be taken, and a new
1867 ManagedOOMPreference=none|avoid|omit setting to avoid killing certain
1868 units.
1869
1870 systemd-oomd is now considered fully supported (the usual
1871 backwards-compatiblity promises apply). Swap is not required for
1872 operation, but it is still recommended.
1873
1874 * systemd-timesyncd gained a new ConnectionRetrySec= setting which
1875 configures the retry delay when trying to contact servers.
1876
1877 * systemd-stdio-bridge gained --system/--user options to connect to the
1878 system bus (previous default) or the user session bus.
1879
1880 * systemd-localed may now call locale-gen to generate missing locales
1881 on-demand (UTF-8-only). This improves integration with Debian-based
1882 distributions (Debian/Ubuntu/PureOS/Tanglu/...) and Arch Linux.
1883
1884 * systemctl --check-inhibitors=true may now be used to obey inhibitors
1885 even when invoked non-interactively. The old --ignore-inhibitors
1886 switch is now deprecated and replaced by --check-inhibitors=false.
1887
1888 * systemctl import-environment will now emit a warning when called
1889 without any arguments (i.e. to import the full environment block of
1890 the called program). This command will usually be invoked from a
1891 shell, which means that it'll inherit a bunch of variables which are
1892 specific to that shell, and usually to the TTY the shell is connected
1893 to, and don't have any meaning in the global context of the system or
1894 user service manager. Instead, only specific variables should be
1895 imported into the manager environment block.
1896
1897 Similarly, programs which update the manager environment block by
1898 directly calling the D-Bus API of the manager, should also push
1899 specific variables, and not the full inherited environment.
1900
1901 * systemctl's status output now shows unit state with a more careful
1902 choice of Unicode characters: units in maintenance show a "○" symbol
1903 instead of the usual "●", failed units show "×", and services being
1904 reloaded "↻".
1905
1906 * coredumpctl gained a --debugger-arguments= switch to pass arguments
1907 to the debugger. It also gained support for showing coredump info in
1908 a simple JSON format.
1909
1910 * systemctl/loginctl/machinectl's --signal= option now accept a special
1911 value "list", which may be used to show a brief table with known
1912 process signals and their numbers.
1913
1914 * networkctl now shows the link activation policy in status.
1915
1916 * Various tools gained --pager/--no-pager/--json= switches to
1917 enable/disable the pager and provide JSON output.
1918
1919 * Various tools now accept two new values for the SYSTEMD_COLORS
1920 environment variable: "16" and "256", to configure how many terminal
1921 colors are used in output.
1922
1923 * less 568 or newer is now required for the auto-paging logic of the
1924 various tools. Hyperlink ANSI sequences in terminal output are now
1925 used even if a pager is used, and older versions of less are not able
1926 to display these sequences correctly. SYSTEMD_URLIFY=0 may be used to
1927 disable this output again.
1928
1929 * Builds with support for separate / and /usr/ hierarchies ("split-usr"
1930 builds, non-merged-usr builds) are now officially deprecated. A
1931 warning is emitted during build. Support is slated to be removed in
1932 about a year (when the Debian Bookworm release development starts).
1933
1934 * Systems with the legacy cgroup v1 hierarchy are now marked as
1935 "tainted", to make it clearer that using the legacy hierarchy is not
1936 recommended.
1937
1938 * systemd-localed will now refuse to configure a keymap which is not
1939 installed in the file system. This is intended as a bug fix, but
1940 could break cases where systemd-localed was used to configure the
1941 keymap in advanced of it being installed. It is necessary to install
1942 the keymap file first.
1943
1944 * The main git development branch has been renamed to 'main'.
1945
1946 * mmcblk[0-9]boot[0-9] devices will no longer be probed automatically
1947 for partitions, as in the vast majority of cases they contain none
1948 and are used internally by the bootloader (eg: uboot).
1949
1950 * systemd will now set the $SYSTEMD_EXEC_PID environment variable for
1951 spawned processes to the PID of the process itself. This may be used
1952 by programs for detecting whether they were forked off by the service
1953 manager itself or are a process forked off further down the tree.
1954
1955 * The sd-device API gained four new calls: sd_device_get_action() to
1956 determine the uevent add/remove/change/… action the device object has
1957 been seen for, sd_device_get_seqno() to determine the uevent sequence
1958 number, sd_device_new_from_stat_rdev() to allocate a new sd_device
1959 object from stat(2) data of a device node, and sd_device_trigger() to
1960 write to the 'uevent' attribute of a device.
1961
1962 * For most tools the --no-legend= switch has been replaced by
1963 --legend=no and --legend=yes, to force whether tables are shown with
1964 headers/legends.
1965
1966 * Units acquired a new property "Markers" that takes a list of zero,
1967 one or two of the following strings: "needs-reload" and
1968 "needs-restart". These markers may be set via "systemctl
1969 set-property". Once a marker is set, "systemctl reload-or-restart
1970 --marked" may be invoked to execute the operation the units are
1971 marked for. This is useful for package managers that want to mark
1972 units for restart/reload while updating, but effect the actual
1973 operations at a later step at once.
1974
1975 * The sd_bus_message_read_strv() API call of sd-bus may now also be
1976 used to parse arrays of D-Bus signatures and D-Bus paths, in addition
1977 to regular strings.
1978
1979 * bootctl will now report whether the UEFI firmware used a TPM2 device
1980 and measured the boot process into it.
1981
1982 * systemd-tmpfiles learnt support for a new environment variable
1983 $SYSTEMD_TMPFILES_FORCE_SUBVOL which takes a boolean value. If true
1984 the v/q/Q lines in tmpfiles.d/ snippets will create btrfs subvolumes
1985 even if the root fs of the system is not itself a btrfs volume.
1986
1987 * systemd-detect-virt/ConditionVirtualization= will now explicitly
1988 detect Docker/Podman environments where possible. Moreover, they
1989 should be able to generically detect any container manager as long as
1990 it assigns the container a cgroup.
1991
1992 * portablectl gained a new "reattach" verb for detaching/reattaching a
1993 portable service image, useful for updating images on-the-fly.
1994
1995 * Intel SGX enclave device nodes (which expose a security feature of
1996 newer Intel CPUs) will now be owned by a new system group "sgx".
1997
1998 Contributions from: Adam Nielsen, Adrian Vovk, AJ Jordan, Alan Perry,
1999 Alastair Pharo, Alexander Batischev, Ali Abdallah, Andrew Balmos,
2000 Anita Zhang, Annika Wickert, Ansgar Burchardt, Antonio Terceiro,
2001 Antonius Frie, Ardy, Arian van Putten, Ariel Fermani, Arnaud T,
2002 A S Alam, Bastien Nocera, Benjamin Berg, Benjamin Robin, Björn Daase,
2003 caoxia, Carlo Wood, Charles Lee, ChopperRob, chri2, Christian Ehrhardt,
2004 Christian Hesse, Christopher Obbard, clayton craft, corvusnix, cprn,
2005 Daan De Meyer, Daniele Medri, Daniel Rusek, Dan Sanders, Dan Streetman,
2006 Darren Ng, David Edmundson, David Tardon, Deepak Rawat, Devon Pringle,
2007 Dmitry Borodaenko, dropsignal, Einsler Lee, Endre Szabo,
2008 Evgeny Vereshchagin, Fabian Affolter, Fangrui Song, Felipe Borges,
2009 feliperodriguesfr, Felix Stupp, Florian Hülsmann, Florian Klink,
2010 Florian Westphal, Franck Bui, Frantisek Sumsal, Gablegritule,
2011 Gaël PORTAY, Gaurav, Giedrius Statkevičius, Greg Depoire-Ferrer,
2012 Gustavo Costa, Hans de Goede, Hela Basa, heretoenhance, hide,
2013 Iago López Galeiras, igo95862, Ilya Dmitrichenko, Jameer Pathan,
2014 Jan Tojnar, Jiehong, Jinyuan Si, Joerg Behrmann, John Slade,
2015 Jonathan G. Underwood, Jonathan McDowell, Josh Triplett, Joshua Watt,
2016 Julia Cartwright, Julien Humbert, Kairui Song, Karel Zak,
2017 Kevin Backhouse, Kevin P. Fleming, Khem Raj, Konomi, krissgjeng,
2018 l4gfcm, Lajos Veres, Lennart Poettering, Lincoln Ramsay, Luca Boccassi,
2019 Luca BRUNO, Lucas Werkmeister, Luka Kudra, Luna Jernberg,
2020 Marc-André Lureau, Martin Wilck, Matthias Klumpp, Matt Turner,
2021 Michael Gisbers, Michael Marley, Michael Trapp, Michal Fabik,
2022 Michał Kopeć, Michal Koutný, Michal Sekletár, Michele Guerini Rocco,
2023 Mike Gilbert, milovlad, moson-mo, Nick, nihilix-melix, Oğuz Ersen,
2024 Ondrej Mosnacek, pali, Pavel Hrdina, Pavel Sapezhko, Perry Yuan,
2025 Peter Hutterer, Pierre Dubouilh, Piotr Drąg, Pjotr Vertaalt,
2026 Richard Laager, RussianNeuroMancer, Sam Lunt, Sebastiaan van Stijn,
2027 Sergey Bugaev, shenyangyang4, simmon, Simonas Kazlauskas,
2028 Slimane Selyan Amiri, Stefan Agner, Steve Ramage, Susant Sahani,
2029 Sven Mueller, Tad Fisher, Takashi Iwai, Thomas Haller, Tom Shield,
2030 Topi Miettinen, Torsten Hilbrich, tpgxyz, Tyler Hicks, ulf-f,
2031 Ulrich Ölmann, Vincent Pelletier, Vinnie Magro, Vito Caputo, Vlad,
2032 walbit-de, Whired Planck, wouter bolsterlee, Xℹ Ruoyao, Yangyang Shen,
2033 Yuri Chornoivan, Yu Watanabe, Zach Smith, Zbigniew Jędrzejewski-Szmek,
2034 Zmicer Turok, Дамјан Георгиевски
2035
2036 — Berlin, 2021-03-30
2037
2038 CHANGES WITH 247:
2039
2040 * KERNEL API INCOMPATIBILITY: Linux 4.14 introduced two new uevents
2041 "bind" and "unbind" to the Linux device model. When this kernel
2042 change was made, systemd-udevd was only minimally updated to handle
2043 and propagate these new event types. The introduction of these new
2044 uevents (which are typically generated for USB devices and devices
2045 needing a firmware upload before being functional) resulted in a
2046 number of issues which we so far didn't address. We hoped the kernel
2047 maintainers would themselves address these issues in some form, but
2048 that did not happen. To handle them properly, many (if not most) udev
2049 rules files shipped in various packages need updating, and so do many
2050 programs that monitor or enumerate devices with libudev or sd-device,
2051 or otherwise process uevents. Please note that this incompatibility
2052 is not fault of systemd or udev, but caused by an incompatible kernel
2053 change that happened back in Linux 4.14, but is becoming more and
2054 more visible as the new uevents are generated by more kernel drivers.
2055
2056 To minimize issues resulting from this kernel change (but not avoid
2057 them entirely) starting with systemd-udevd 247 the udev "tags"
2058 concept (which is a concept for marking and filtering devices during
2059 enumeration and monitoring) has been reworked: udev tags are now
2060 "sticky", meaning that once a tag is assigned to a device it will not
2061 be removed from the device again until the device itself is removed
2062 (i.e. unplugged). This makes sure that any application monitoring
2063 devices that match a specific tag is guaranteed to both see uevents
2064 where the device starts being relevant, and those where it stops
2065 being relevant (the latter now regularly happening due to the new
2066 "unbind" uevent type). The udev tags concept is hence now a concept
2067 tied to a *device* instead of a device *event* — unlike for example
2068 udev properties whose lifecycle (as before) is generally tied to a
2069 device event, meaning that the previously determined properties are
2070 forgotten whenever a new uevent is processed.
2071
2072 With the newly redefined udev tags concept, sometimes it's necessary
2073 to determine which tags are the ones applied by the most recent
2074 uevent/database update, in order to discern them from those
2075 originating from earlier uevents/database updates of the same
2076 device. To accommodate for this a new automatic property CURRENT_TAGS
2077 has been added that works similar to the existing TAGS property but
2078 only lists tags set by the most recent uevent/database
2079 update. Similarly, the libudev/sd-device API has been updated with
2080 new functions to enumerate these 'current' tags, in addition to the
2081 existing APIs that now enumerate the 'sticky' ones.
2082
2083 To properly handle "bind"/"unbind" on Linux 4.14 and newer it is
2084 essential that all udev rules files and applications are updated to
2085 handle the new events. Specifically:
2086
2087 • All rule files that currently use a header guard similar to
2088 ACTION!="add|change",GOTO="xyz_end" should be updated to use
2089 ACTION=="remove",GOTO="xyz_end" instead, so that the
2090 properties/tags they add are also applied whenever "bind" (or
2091 "unbind") is seen. (This is most important for all physical device
2092 types — those for which "bind" and "unbind" are currently
2093 generated, for all other device types this change is still
2094 recommended but not as important — but certainly prepares for
2095 future kernel uevent type additions).
2096
2097 • Similarly, all code monitoring devices that contains an 'if' branch
2098 discerning the "add" + "change" uevent actions from all other
2099 uevents actions (i.e. considering devices only relevant after "add"
2100 or "change", and irrelevant on all other events) should be reworked
2101 to instead negatively check for "remove" only (i.e. considering
2102 devices relevant after all event types, except for "remove", which
2103 invalidates the device). Note that this also means that devices
2104 should be considered relevant on "unbind", even though conceptually
2105 this — in some form — invalidates the device. Since the precise
2106 effect of "unbind" is not generically defined, devices should be
2107 considered relevant even after "unbind", however I/O errors
2108 accessing the device should then be handled gracefully.
2109
2110 • Any code that uses device tags for deciding whether a device is
2111 relevant or not most likely needs to be updated to use the new
2112 udev_device_has_current_tag() API (or sd_device_has_current_tag()
2113 in case sd-device is used), to check whether the tag is set at the
2114 moment an uevent is seen (as opposed to the existing
2115 udev_device_has_tag() API which checks if the tag ever existed on
2116 the device, following the API concept redefinition explained
2117 above).
2118
2119 We are very sorry for this breakage and the requirement to update
2120 packages using these interfaces. We'd again like to underline that
2121 this is not caused by systemd/udev changes, but result of a kernel
2122 behaviour change.
2123
2124 * UPCOMING INCOMPATIBILITY: So far most downstream distribution
2125 packages have not retriggered devices once the udev package (or any
2126 auxiliary package installing additional udev rules) is updated. We
2127 intend to work with major distributions to change this, so that
2128 "udevadm trigger -a change" is issued on such upgrades, ensuring that
2129 the updated ruleset is applied to the devices already discovered, so
2130 that (asynchronously) after the upgrade completed the udev database
2131 is consistent with the updated rule set. This means udev rules must
2132 be ready to be retriggered with a "change" action any time, and
2133 result in correct and complete udev database entries. While the
2134 majority of udev rule files known to us currently get this right,
2135 some don't. Specifically, there are udev rules files included in
2136 various packages that only set udev properties on the "add" action,
2137 but do not handle the "change" action. If a device matching those
2138 rules is retriggered with the "change" action (as is intended here)
2139 it would suddenly lose the relevant properties. This always has been
2140 problematic, but as soon as all udev devices are triggered on relevant
2141 package upgrades this will become particularly so. It is strongly
2142 recommended to fix offending rules so that they can handle a "change"
2143 action at any time, and acquire all necessary udev properties even
2144 then. Or in other words: the header guard mentioned above
2145 (ACTION=="remove",GOTO="xyz_end") is the correct approach to handle
2146 this, as it makes sure rules are rerun on "change" correctly, and
2147 accumulate the correct and complete set of udev properties. udev rule
2148 definitions that cannot handle "change" events being triggered at
2149 arbitrary times should be considered buggy.
2150
2151 * The MountAPIVFS= service file setting now defaults to on if
2152 RootImage= and RootDirectory= are used, which means that with those
2153 two settings /proc/, /sys/ and /dev/ are automatically properly set
2154 up for services. Previous behaviour may be restored by explicitly
2155 setting MountAPIVFS=off.
2156
2157 * Since PAM 1.2.0 (2015) configuration snippets may be placed in
2158 /usr/lib/pam.d/ in addition to /etc/pam.d/. If a file exists in the
2159 latter it takes precedence over the former, similar to how most of
2160 systemd's own configuration is handled. Given that PAM stack
2161 definitions are primarily put together by OS vendors/distributions
2162 (though possibly overridden by users), this systemd release moves its
2163 own PAM stack configuration for the "systemd-user" PAM service (i.e.
2164 for the PAM session invoked by the per-user user@.service instance)
2165 from /etc/pam.d/ to /usr/lib/pam.d/. We recommend moving all
2166 packages' vendor versions of their PAM stack definitions from
2167 /etc/pam.d/ to /usr/lib/pam.d/, but if such OS-wide migration is not
2168 desired the location to which systemd installs its PAM stack
2169 configuration may be changed via the -Dpamconfdir Meson option.
2170
2171 * The runtime dependencies on libqrencode, libpcre2, libidn/libidn2,
2172 libpwquality and libcryptsetup have been changed to be based on
2173 dlopen(): instead of regular dynamic library dependencies declared in
2174 the binary ELF headers, these libraries are now loaded on demand
2175 only, if they are available. If the libraries cannot be found the
2176 relevant operations will fail gracefully, or a suitable fallback
2177 logic is chosen. This is supposed to be useful for general purpose
2178 distributions, as it allows minimizing the list of dependencies the
2179 systemd packages pull in, permitting building of more minimal OS
2180 images, while still making use of these "weak" dependencies should
2181 they be installed. Since many package managers automatically
2182 synthesize package dependencies from ELF shared library dependencies,
2183 some additional manual packaging work has to be done now to replace
2184 those (slightly downgraded from "required" to "recommended" or
2185 whatever is conceptually suitable for the package manager). Note that
2186 this change does not alter build-time behaviour: as before the
2187 build-time dependencies have to be installed during build, even if
2188 they now are optional during runtime.
2189
2190 * sd-event.h gained a new call sd_event_add_time_relative() for
2191 installing timers relative to the current time. This is mostly a
2192 convenience wrapper around the pre-existing sd_event_add_time() call
2193 which installs absolute timers.
2194
2195 * sd-event event sources may now be placed in a new "exit-on-failure"
2196 mode, which may be controlled via the new
2197 sd_event_source_get_exit_on_failure() and
2198 sd_event_source_set_exit_on_failure() functions. If enabled, any
2199 failure returned by the event source handler functions will result in
2200 exiting the event loop (unlike the default behaviour of just
2201 disabling the event source but continuing with the event loop). This
2202 feature is useful to set for all event sources that define "primary"
2203 program behaviour (where failure should be fatal) in contrast to
2204 "auxiliary" behaviour (where failure should remain local).
2205
2206 * Most event source types sd-event supports now accept a NULL handler
2207 function, in which case the event loop is exited once the event
2208 source is to be dispatched, using the userdata pointer — converted to
2209 a signed integer — as exit code of the event loop. Previously this
2210 was supported for IO and signal event sources already. Exit event
2211 sources still do not support this (simply because it makes little
2212 sense there, as the event loop is already exiting when they are
2213 dispatched).
2214
2215 * A new per-unit setting RootImageOptions= has been added which allows
2216 tweaking the mount options for any file system mounted as effect of
2217 the RootImage= setting.
2218
2219 * Another new per-unit setting MountImages= has been added, that allows
2220 mounting additional disk images into the file system tree accessible
2221 to the service.
2222
2223 * Timer units gained a new FixedRandomDelay= boolean setting. If
2224 enabled, the random delay configured with RandomizedDelaySec= is
2225 selected in a way that is stable on a given system (though still
2226 different for different units).
2227
2228 * Socket units gained a new setting Timestamping= that takes "us", "ns"
2229 or "off". This controls the SO_TIMESTAMP/SO_TIMESTAMPNS socket
2230 options.
2231
2232 * systemd-repart now generates JSON output when requested with the new
2233 --json= switch.
2234
2235 * systemd-machined's OpenMachineShell() bus call will now pass
2236 additional policy metadata data fields to the PolicyKit
2237 authentication request.
2238
2239 * systemd-tmpfiles gained a new -E switch, which is equivalent to
2240 --exclude-prefix=/dev --exclude-prefix=/proc --exclude=/run
2241 --exclude=/sys. It's particularly useful in combination with --root=,
2242 when operating on OS trees that do not have any of these four runtime
2243 directories mounted, as this means no files below these subtrees are
2244 created or modified, since those mount points should probably remain
2245 empty.
2246
2247 * systemd-tmpfiles gained a new --image= switch which is like --root=,
2248 but takes a disk image instead of a directory as argument. The
2249 specified disk image is mounted inside a temporary mount namespace
2250 and the tmpfiles.d/ drop-ins stored in the image are executed and
2251 applied to the image. systemd-sysusers similarly gained a new
2252 --image= switch, that allows the sysusers.d/ drop-ins stored in the
2253 image to be applied onto the image.
2254
2255 * Similarly, the journalctl command also gained an --image= switch,
2256 which is a quick one-step solution to look at the log data included
2257 in OS disk images.
2258
2259 * journalctl's --output=cat option (which outputs the log content
2260 without any metadata, just the pure text messages) will now make use
2261 of terminal colors when run on a suitable terminal, similarly to the
2262 other output modes.
2263
2264 * JSON group records now support a "description" string that may be
2265 used to add a human-readable textual description to such groups. This
2266 is supposed to match the user's GECOS field which traditionally
2267 didn't have a counterpart for group records.
2268
2269 * The "systemd-dissect" tool that may be used to inspect OS disk images
2270 and that was previously installed to /usr/lib/systemd/ has now been
2271 moved to /usr/bin/, reflecting its updated status of an officially
2272 supported tool with a stable interface. It gained support for a new
2273 --mkdir switch which when combined with --mount has the effect of
2274 creating the directory to mount the image to if it is missing
2275 first. It also gained two new commands --copy-from and --copy-to for
2276 copying files and directories in and out of an OS image without the
2277 need to manually mount it. It also acquired support for a new option
2278 --json= to generate JSON output when inspecting an OS image.
2279
2280 * The cgroup2 file system is now mounted with the
2281 "memory_recursiveprot" mount option, supported since kernel 5.7. This
2282 means that the MemoryLow= and MemoryMin= unit file settings now apply
2283 recursively to whole subtrees.
2284
2285 * systemd-homed now defaults to using the btrfs file system — if
2286 available — when creating home directories in LUKS volumes. This may
2287 be changed with the DefaultFileSystemType= setting in homed.conf.
2288 It's now the default file system in various major distributions and
2289 has the major benefit for homed that it can be grown and shrunk while
2290 mounted, unlike the other contenders ext4 and xfs, which can both be
2291 grown online, but not shrunk (in fact xfs is the technically most
2292 limited option here, as it cannot be shrunk at all).
2293
2294 * JSON user records managed by systemd-homed gained support for
2295 "recovery keys". These are basically secondary passphrases that can
2296 unlock user accounts/home directories. They are computer-generated
2297 rather than user-chosen, and typically have greater entropy.
2298 homectl's --recovery-key= option may be used to add a recovery key to
2299 a user account. The generated recovery key is displayed as a QR code,
2300 so that it can be scanned to be kept in a safe place. This feature is
2301 particularly useful in combination with systemd-homed's support for
2302 FIDO2 or PKCS#11 authentication, as a secure fallback in case the
2303 security tokens are lost. Recovery keys may be entered wherever the
2304 system asks for a password.
2305
2306 * systemd-homed now maintains a "dirty" flag for each LUKS encrypted
2307 home directory which indicates that a home directory has not been
2308 deactivated cleanly when offline. This flag is useful to identify
2309 home directories for which the offline discard logic did not run when
2310 offlining, and where it would be a good idea to log in again to catch
2311 up.
2312
2313 * systemctl gained a new parameter --timestamp= which may be used to
2314 change the style in which timestamps are output, i.e. whether to show
2315 them in local timezone or UTC, or whether to show µs granularity.
2316
2317 * Alibaba's "pouch" container manager is now detected by
2318 systemd-detect-virt, ConditionVirtualization= and similar
2319 constructs. Similar, they now also recognize IBM PowerVM machine
2320 virtualization.
2321
2322 * systemd-nspawn has been reworked to use the /run/host/incoming/ as
2323 place to use for propagating external mounts into the
2324 container. Similarly /run/host/notify is now used as the socket path
2325 for container payloads to communicate with the container manager
2326 using sd_notify(). The container manager now uses the
2327 /run/host/inaccessible/ directory to place "inaccessible" file nodes
2328 of all relevant types which may be used by the container payload as
2329 bind mount source to over-mount inodes to make them inaccessible.
2330 /run/host/container-manager will now be initialized with the same
2331 string as the $container environment variable passed to the
2332 container's PID 1. /run/host/container-uuid will be initialized with
2333 the same string as $container_uuid. This means the /run/host/
2334 hierarchy is now the primary way to make host resources available to
2335 the container. The Container Interface documents these new files and
2336 directories:
2337
2338 https://systemd.io/CONTAINER_INTERFACE
2339
2340 * Support for the "ConditionNull=" unit file condition has been
2341 deprecated and undocumented for 6 years. systemd started to warn
2342 about its use 1.5 years ago. It has now been removed entirely.
2343
2344 * sd-bus.h gained a new API call sd_bus_error_has_names(), which takes
2345 a sd_bus_error struct and a list of error names, and checks if the
2346 error matches one of these names. It's a convenience wrapper that is
2347 useful in cases where multiple errors shall be handled the same way.
2348
2349 * A new system call filter list "@known" has been added, that contains
2350 all system calls known at the time systemd was built.
2351
2352 * Behaviour of system call filter allow lists has changed slightly:
2353 system calls that are contained in @known will result in EPERM by
2354 default, while those not contained in it result in ENOSYS. This
2355 should improve compatibility because known system calls will thus be
2356 communicated as prohibited, while unknown (and thus newer ones) will
2357 be communicated as not implemented, which hopefully has the greatest
2358 chance of triggering the right fallback code paths in client
2359 applications.
2360
2361 * "systemd-analyze syscall-filter" will now show two separate sections
2362 at the bottom of the output: system calls known during systemd build
2363 time but not included in any of the filter groups shown above, and
2364 system calls defined on the local kernel but known during systemd
2365 build time.
2366
2367 * If the $SYSTEMD_LOG_SECCOMP=1 environment variable is set for
2368 systemd-nspawn all system call filter violations will be logged by
2369 the kernel (audit). This is useful for tracking down system calls
2370 invoked by container payloads that are prohibited by the container's
2371 system call filter policy.
2372
2373 * If the $SYSTEMD_SECCOMP=0 environment variable is set for
2374 systemd-nspawn (and other programs that use seccomp) all seccomp
2375 filtering is turned off.
2376
2377 * Two new unit file settings ProtectProc= and ProcSubset= have been
2378 added that expose the hidepid= and subset= mount options of procfs.
2379 All processes of the unit will only see processes in /proc that are
2380 are owned by the unit's user. This is an important new sandboxing
2381 option that is recommended to be set on all system services. All
2382 long-running system services that are included in systemd itself set
2383 this option now. This option is only supported on kernel 5.8 and
2384 above, since the hidepid= option supported on older kernels was not a
2385 per-mount option but actually applied to the whole PID namespace.
2386
2387 * Socket units gained a new boolean setting FlushPending=. If enabled
2388 all pending socket data/connections are flushed whenever the socket
2389 unit enters the "listening" state, i.e. after the associated service
2390 exited.
2391
2392 * The unit file setting NUMAMask= gained a new "all" value: when used,
2393 all existing NUMA nodes are added to the NUMA mask.
2394
2395 * A new "credentials" logic has been added to system services. This is
2396 a simple mechanism to pass privileged data to services in a safe and
2397 secure way. It's supposed to be used to pass per-service secret data
2398 such as passwords or cryptographic keys but also associated less
2399 private information such as user names, certificates, and similar to
2400 system services. Each credential is identified by a short user-chosen
2401 name and may contain arbitrary binary data. Two new unit file
2402 settings have been added: SetCredential= and LoadCredential=. The
2403 former allows setting a credential to a literal string, the latter
2404 sets a credential to the contents of a file (or data read from a
2405 user-chosen AF_UNIX stream socket). Credentials are passed to the
2406 service via a special credentials directory, one file for each
2407 credential. The path to the credentials directory is passed in a new
2408 $CREDENTIALS_DIRECTORY environment variable. Since the credentials
2409 are passed in the file system they may be easily referenced in
2410 ExecStart= command lines too, thus no explicit support for the
2411 credentials logic in daemons is required (though ideally daemons
2412 would look for the bits they need in $CREDENTIALS_DIRECTORY
2413 themselves automatically, if set). The $CREDENTIALS_DIRECTORY is
2414 backed by unswappable memory if privileges allow it, immutable if
2415 privileges allow it, is accessible only to the service's UID, and is
2416 automatically destroyed when the service stops.
2417
2418 * systemd-nspawn supports the same credentials logic. It can both
2419 consume credentials passed to it via the aforementioned
2420 $CREDENTIALS_DIRECTORY protocol as well as pass these credentials on
2421 to its payload. The service manager/PID 1 has been updated to match
2422 this: it can also accept credentials from the container manager that
2423 invokes it (in fact: any process that invokes it), and passes them on
2424 to its services. Thus, credentials can be propagated recursively down
2425 the tree: from a system's service manager to a systemd-nspawn
2426 service, to the service manager that runs as container payload and to
2427 the service it runs below. Credentials may also be added on the
2428 systemd-nspawn command line, using new --set-credential= and
2429 --load-credential= command line switches that match the
2430 aforementioned service settings.
2431
2432 * systemd-repart gained new settings Format=, Encrypt=, CopyFiles= in
2433 the partition drop-ins which may be used to format/LUKS
2434 encrypt/populate any created partitions. The partitions are
2435 encrypted/formatted/populated before they are registered in the
2436 partition table, so that they appear atomically: either the
2437 partitions do not exist yet or they exist fully encrypted, formatted,
2438 and populated — there is no time window where they are
2439 "half-initialized". Thus the system is robust to abrupt shutdown: if
2440 the tool is terminated half-way during its operations on next boot it
2441 will start from the beginning.
2442
2443 * systemd-repart's --size= operation gained a new "auto" value. If
2444 specified, and operating on a loopback file it is automatically sized
2445 to the minimal size the size constraints permit. This is useful to
2446 use "systemd-repart" as an image builder for minimally sized images.
2447
2448 * systemd-resolved now gained a third IPC interface for requesting name
2449 resolution: besides D-Bus and local DNS to 127.0.0.53 a Varlink
2450 interface is now supported. The nss-resolve NSS module has been
2451 modified to use this new interface instead of D-Bus. Using Varlink
2452 has a major benefit over D-Bus: it works without a broker service,
2453 and thus already during earliest boot, before the dbus daemon has
2454 been started. This means name resolution via systemd-resolved now
2455 works at the same time systemd-networkd operates: from earliest boot
2456 on, including in the initrd.
2457
2458 * systemd-resolved gained support for a new DNSStubListenerExtra=
2459 configuration file setting which may be used to specify additional IP
2460 addresses the built-in DNS stub shall listen on, in addition to the
2461 main one on 127.0.0.53:53.
2462
2463 * Name lookups issued via systemd-resolved's D-Bus and Varlink
2464 interfaces (and thus also via glibc NSS if nss-resolve is used) will
2465 now honour a trailing dot in the hostname: if specified the search
2466 path logic is turned off. Thus "resolvectl query foo." is now
2467 equivalent to "resolvectl query --search=off foo.".
2468
2469 * systemd-resolved gained a new D-Bus property "ResolvConfMode" that
2470 exposes how /etc/resolv.conf is currently managed: by resolved (and
2471 in which mode if so) or another subsystem. "resolvctl" will display
2472 this property in its status output.
2473
2474 * The resolv.conf snippets systemd-resolved provides will now set "."
2475 as the search domain if no other search domain is known. This turns
2476 off the derivation of an implicit search domain by nss-dns for the
2477 hostname, when the hostname is set to an FQDN. This change is done to
2478 make nss-dns using resolv.conf provided by systemd-resolved behave
2479 more similarly to nss-resolve.
2480
2481 * systemd-tmpfiles' file "aging" logic (i.e. the automatic clean-up of
2482 /tmp/ and /var/tmp/ based on file timestamps) now looks at the
2483 "birth" time (btime) of a file in addition to the atime, mtime, and
2484 ctime.
2485
2486 * systemd-analyze gained a new verb "capability" that lists all known
2487 capabilities by the systemd build and by the kernel.
2488
2489 * If a file /usr/lib/clock-epoch exists, PID 1 will read its mtime and
2490 advance the system clock to it at boot if it is noticed to be before
2491 that time. Previously, PID 1 would only advance the time to an epoch
2492 time that is set during build-time. With this new file OS builders
2493 can change this epoch timestamp on individual OS images without
2494 having to rebuild systemd.
2495
2496 * systemd-logind will now listen to the KEY_RESTART key from the Linux
2497 input layer and reboot the system if it is pressed, similarly to how
2498 it already handles KEY_POWER, KEY_SUSPEND or KEY_SLEEP. KEY_RESTART
2499 was originally defined in the Multimedia context (to restart playback
2500 of a song or film), but is now primarily used in various embedded
2501 devices for "Reboot" buttons. Accordingly, systemd-logind will now
2502 honour it as such. This may configured in more detail via the new
2503 HandleRebootKey= and RebootKeyIgnoreInhibited=.
2504
2505 * systemd-nspawn/systemd-machined will now reconstruct hardlinks when
2506 copying OS trees, for example in "systemd-nspawn --ephemeral",
2507 "systemd-nspawn --template=", "machinectl clone" and similar. This is
2508 useful when operating with OSTree images, which use hardlinks heavily
2509 throughout, and where such copies previously resulting in "exploding"
2510 hardlinks.
2511
2512 * systemd-nspawn's --console= setting gained support for a new
2513 "autopipe" value, which is identical to "interactive" when invoked on
2514 a TTY, and "pipe" otherwise.
2515
2516 * systemd-networkd's .network files gained support for explicitly
2517 configuring the multicast membership entries of bridge devices in the
2518 [BridgeMDB] section. It also gained support for the PIE queuing
2519 discipline in the [FlowQueuePIE] sections.
2520
2521 * systemd-networkd's .netdev files may now be used to create "BareUDP"
2522 tunnels, configured in the new [BareUDP] setting.
2523
2524 * systemd-networkd's Gateway= setting in .network files now accepts the
2525 special values "_dhcp4" and "_ipv6ra" to configure additional,
2526 locally defined, explicit routes to the gateway acquired via DHCP or
2527 IPv6 Router Advertisements. The old setting "_dhcp" is deprecated,
2528 but still accepted for backwards compatibility.
2529
2530 * systemd-networkd's [IPv6PrefixDelegation] section and
2531 IPv6PrefixDelegation= options have been renamed as [IPv6SendRA] and
2532 IPv6SendRA= (the old names are still accepted for backwards
2533 compatibility).
2534
2535 * systemd-networkd's .network files gained the DHCPv6PrefixDelegation=
2536 boolean setting in [Network] section. If enabled, the delegated prefix
2537 gained by another link will be configured, and an address within the
2538 prefix will be assigned.
2539
2540 * systemd-networkd's .network files gained the Announce= boolean setting
2541 in [DHCPv6PrefixDelegation] section. When enabled, the delegated
2542 prefix will be announced through IPv6 router advertisement (IPv6 RA).
2543 The setting is enabled by default.
2544
2545 * VXLAN tunnels may now be marked as independent of any underlying
2546 network interface via the new Independent= boolean setting.
2547
2548 * systemctl gained support for two new verbs: "service-log-level" and
2549 "service-log-target" may be used on services that implement the
2550 generic org.freedesktop.LogControl1 D-Bus interface to dynamically
2551 adjust the log level and target. All of systemd's long-running
2552 services support this now, but ideally all system services would
2553 implement this interface to make the system more uniformly
2554 debuggable.
2555
2556 * The SystemCallErrorNumber= unit file setting now accepts the new
2557 "kill" and "log" actions, in addition to arbitrary error number
2558 specifications as before. If "kill" the processes are killed on the
2559 event, if "log" the offending system call is audit logged.
2560
2561 * A new SystemCallLog= unit file setting has been added that accepts a
2562 list of system calls that shall be logged about (audit).
2563
2564 * The OS image dissection logic (as used by RootImage= in unit files or
2565 systemd-nspawn's --image= switch) has gained support for identifying
2566 and mounting explicit /usr/ partitions, which are now defined in the
2567 discoverable partition specification. This should be useful for
2568 environments where the root file system is
2569 generated/formatted/populated dynamically on first boot and combined
2570 with an immutable /usr/ tree that is supplied by the vendor.
2571
2572 * In the final phase of shutdown, within the systemd-shutdown binary
2573 we'll now try to detach MD devices (i.e software RAID) in addition to
2574 loopback block devices and DM devices as before. This is supposed to
2575 be a safety net only, in order to increase robustness if things go
2576 wrong. Storage subsystems are expected to properly detach their
2577 storage volumes during regular shutdown already (or in case of
2578 storage backing the root file system: in the initrd hook we return to
2579 later).
2580
2581 * If the SYSTEMD_LOG_TID environment variable is set all systemd tools
2582 will now log the thread ID in their log output. This is useful when
2583 working with heavily threaded programs.
2584
2585 * If the SYSTEMD_RDRAND environment variable is set to "0", systemd will
2586 not use the RDRAND CPU instruction. This is useful in environments
2587 such as replay debuggers where non-deterministic behaviour is not
2588 desirable.
2589
2590 * The autopaging logic in systemd's various tools (such as systemctl)
2591 has been updated to turn on "secure" mode in "less"
2592 (i.e. $LESSECURE=1) if execution in a "sudo" environment is
2593 detected. This disables invoking external programs from the pager,
2594 via the pipe logic. This behaviour may be overridden via the new
2595 $SYSTEMD_PAGERSECURE environment variable.
2596
2597 * Units which have resource limits (.service, .mount, .swap, .slice,
2598 .socket, and .slice) gained new configuration settings
2599 ManagedOOMSwap=, ManagedOOMMemoryPressure=, and
2600 ManagedOOMMemoryPressureLimitPercent= that specify resource pressure
2601 limits and optional action taken by systemd-oomd.
2602
2603 * A new service systemd-oomd has been added. It monitors resource
2604 contention for selected parts of the unit hierarchy using the PSI
2605 information reported by the kernel, and kills processes when memory
2606 or swap pressure is above configured limits. This service is only
2607 enabled by default in developer mode (see below) and should be
2608 considered a preview in this release. Behaviour details and option
2609 names are subject to change without the usual backwards-compatibility
2610 promises.
2611
2612 * A new helper oomctl has been added to introspect systemd-oomd state.
2613 It is only enabled by default in developer mode and should be
2614 considered a preview without the usual backwards-compatibility
2615 promises.
2616
2617 * New meson option -Dcompat-mutable-uid-boundaries= has been added. If
2618 enabled, systemd reads the system UID boundaries from /etc/login.defs
2619 at runtime, instead of using the built-in values selected during
2620 build. This is an option to improve compatibility for upgrades from
2621 old systems. It's strongly recommended not to make use of this
2622 functionality on new systems (or even enable it during build), as it
2623 makes something runtime-configurable that is mostly an implementation
2624 detail of the OS, and permits avoidable differences in deployments
2625 that create all kinds of problems in the long run.
2626
2627 * New meson option '-Dmode=developer|release' has been added. When
2628 'developer', additional checks and features are enabled that are
2629 relevant during upstream development, e.g. verification that
2630 semi-automatically-generated documentation has been properly updated
2631 following API changes. Those checks are considered hints for
2632 developers and are not actionable in downstream builds. In addition,
2633 extra features that are not ready for general consumption may be
2634 enabled in developer mode. It is thus recommended to set
2635 '-Dmode=release' in end-user and distro builds.
2636
2637 * systemd-cryptsetup gained support for processing detached LUKS
2638 headers specified on the kernel command line via the header=
2639 parameter of the luks.options= kernel command line option. The same
2640 device/path syntax as for key files is supported for header files
2641 like this.
2642
2643 * The "net_id" built-in of udev has been updated to ignore ACPI _SUN
2644 slot index data for devices that are connected through a PCI bridge
2645 where the _SUN index is associated with the bridge instead of the
2646 network device itself. Previously this would create ambiguous device
2647 naming if multiple network interfaces were connected to the same PCI
2648 bridge. Since this is a naming scheme incompatibility on systems that
2649 possess hardware like this it has been introduced as new naming
2650 scheme "v247". The previous scheme can be selected via the
2651 "net.naming-scheme=v245" kernel command line parameter.
2652
2653 * ConditionFirstBoot= semantics have been modified to be safe towards
2654 abnormal system power-off during first boot. Specifically, the
2655 "systemd-machine-id-commit.service" service now acts as boot
2656 milestone indicating when the first boot process is sufficiently
2657 complete in order to not consider the next following boot also a
2658 first boot. If the system is reset before this unit is reached the
2659 first time, the next boot will still be considered a first boot; once
2660 it has been reached, no further boots will be considered a first
2661 boot. The "first-boot-complete.target" unit now acts as official hook
2662 point to order against this. If a service shall be run on every boot
2663 until the first boot fully succeeds it may thus be ordered before
2664 this target unit (and pull it in) and carry ConditionFirstBoot=
2665 appropriately.
2666
2667 * bootctl's set-default and set-oneshot commands now accept the three
2668 special strings "@default", "@oneshot", "@current" in place of a boot
2669 entry id. These strings are resolved to the current default and
2670 oneshot boot loader entry, as well as the currently booted one. Thus
2671 a command "bootctl set-default @current" may be used to make the
2672 currently boot menu item the new default for all subsequent boots.
2673
2674 * "systemctl edit" has been updated to show the original effective unit
2675 contents in commented form in the text editor.
2676
2677 * Units in user mode are now segregated into three new slices:
2678 session.slice (units that form the core of graphical session),
2679 app.slice ("normal" user applications), and background.slice
2680 (low-priority tasks). Unless otherwise configured, user units are
2681 placed in app.slice. The plan is to add resource limits and
2682 protections for the different slices in the future.
2683
2684 * New GPT partition types for RISCV32/64 for the root and /usr
2685 partitions, and their associated Verity partitions have been defined,
2686 and are now understood by systemd-gpt-auto-generator, and the OS
2687 image dissection logic.
2688
2689 Contributions from: Adolfo Jayme Barrientos, afg, Alec Moskvin, Alyssa
2690 Ross, Amitanand Chikorde, Andrew Hangsleben, Anita Zhang, Ansgar
2691 Burchardt, Arian van Putten, Aurelien Jarno, Axel Rasmussen, bauen1,
2692 Beniamino Galvani, Benjamin Berg, Bjørn Mork, brainrom, Chandradeep
2693 Dey, Charles Lee, Chris Down, Christian Göttsche, Christof Efkemann,
2694 Christoph Ruegge, Clemens Gruber, Daan De Meyer, Daniele Medri, Daniel
2695 Mack, Daniel Rusek, Dan Streetman, David Tardon, Dimitri John Ledkov,
2696 Dmitry Borodaenko, Elias Probst, Elisei Roca, ErrantSpore, Etienne
2697 Doms, Fabrice Fontaine, fangxiuning, Felix Riemann, Florian Klink,
2698 Franck Bui, Frantisek Sumsal, fwSmit, George Rawlinson, germanztz,
2699 Gibeom Gwon, Glen Whitney, Gogo Gogsi, Göran Uddeborg, Grant Mathews,
2700 Hans de Goede, Hans Ulrich Niedermann, Haochen Tong, Harald Seiler,
2701 huangyong, Hubert Kario, igo95862, Ikey Doherty, Insun Pyo, Jan Chren,
2702 Jan Schlüter, Jérémy Nouhaud, Jian-Hong Pan, Joerg Behrmann, Jonathan
2703 Lebon, Jörg Thalheim, Josh Brobst, Juergen Hoetzel, Julien Humbert,
2704 Kai-Chuan Hsieh, Kairui Song, Kamil Dudka, Kir Kolyshkin, Kristijan
2705 Gjoshev, Kyle Huey, Kyle Russell, Lee Whalen, Lennart Poettering,
2706 lichangze, Luca Boccassi, Lucas Werkmeister, Luca Weiss, Marc
2707 Kleine-Budde, Marco Wang, Martin Wilck, Marti Raudsepp, masmullin2000,
2708 Máté Pozsgay, Matt Fenwick, Michael Biebl, Michael Scherer, Michal
2709 Koutný, Michal Sekletár, Michal Suchanek, Mikael Szreder, Milo
2710 Casagrande, mirabilos, Mitsuha_QuQ, mog422, Muhammet Kara, Nazar
2711 Vinnichuk, Nicholas Narsing, Nicolas Fella, Njibhu, nl6720, Oğuz Ersen,
2712 Olivier Le Moal, Ondrej Kozina, onlybugreports, Pass Automated Testing
2713 Suite, Pat Coulthard, Pavel Sapezhko, Pedro Ruiz, perry_yuan, Peter
2714 Hutterer, Phaedrus Leeds, PhoenixDiscord, Piotr Drąg, Plan C,
2715 Purushottam choudhary, Rasmus Villemoes, Renaud Métrich, Robert Marko,
2716 Roman Beranek, Ronan Pigott, Roy Chen (陳彥廷), RussianNeuroMancer,
2717 Samanta Navarro, Samuel BF, scootergrisen, Sorin Ionescu, Steve Dodd,
2718 Susant Sahani, Timo Rothenpieler, Tobias Hunger, Tobias Kaufmann, Topi
2719 Miettinen, vanou, Vito Caputo, Weblate, Wen Yang, Whired Planck,
2720 williamvds, Yu, Li-Yu, Yuri Chornoivan, Yu Watanabe, Zbigniew
2721 Jędrzejewski-Szmek, Zmicer Turok, Дамјан Георгиевски
2722
2723 – Warsaw, 2020-11-26
2724
2725 CHANGES WITH 246:
2726
2727 * The service manager gained basic support for cgroup v2 freezer. Units
2728 can now be suspended or resumed either using new systemctl verbs,
2729 freeze and thaw respectively, or via D-Bus.
2730
2731 * PID 1 may now automatically load pre-compiled AppArmor policies from
2732 /etc/apparmor/earlypolicy during early boot.
2733
2734 * The CPUAffinity= setting in service unit files now supports a new
2735 special value "numa" that causes the CPU affinity masked to be set
2736 based on the NUMA mask.
2737
2738 * systemd will now log about all left-over processes remaining in a
2739 unit when the unit is stopped. It will now warn about services using
2740 KillMode=none, as this is generally an unsafe thing to make use of.
2741
2742 * Two new unit file settings
2743 ConditionPathIsEncrypted=/AssertPathIsEncrypted= have been
2744 added. They may be used to check whether a specific file system path
2745 resides on a block device that is encrypted on the block level
2746 (i.e. using dm-crypt/LUKS).
2747
2748 * Another pair of new settings ConditionEnvironment=/AssertEnvironment=
2749 has been added that may be used for simple environment checks. This
2750 is particularly useful when passing in environment variables from a
2751 container manager (or from PAM in case of the systemd --user
2752 instance).
2753
2754 * .service unit files now accept a new setting CoredumpFilter= which
2755 allows configuration of the memory sections coredumps of the
2756 service's processes shall include.
2757
2758 * .mount units gained a new ReadWriteOnly= boolean option. If set
2759 it will not be attempted to mount a file system read-only if mounting
2760 in read-write mode doesn't succeed. An option x-systemd.rw-only is
2761 available in /etc/fstab to control the same.
2762
2763 * .socket units gained a new boolean setting PassPacketInfo=. If
2764 enabled, the kernel will attach additional per-packet metadata to all
2765 packets read from the socket, as an ancillary message. This controls
2766 the IP_PKTINFO, IPV6_RECVPKTINFO, NETLINK_PKTINFO socket options,
2767 depending on socket type.
2768
2769 * .service units gained a new setting RootHash= which may be used to
2770 specify the root hash for verity enabled disk images which are
2771 specified in RootImage=. RootVerity= may be used to specify a path to
2772 the Verity data matching a RootImage= file system. (The latter is
2773 only useful for images that do not contain the Verity data embedded
2774 into the same image that carries a GPT partition table following the
2775 Discoverable Partition Specification). Similarly, systemd-nspawn
2776 gained a new switch --verity-data= that takes a path to a file with
2777 the verity data of the disk image supplied in --image=, if the image
2778 doesn't contain the verity data itself.
2779
2780 * .service units gained a new setting RootHashSignature= which takes
2781 either a base64 encoded PKCS#7 signature of the root hash specified
2782 with RootHash=, or a path to a file to read the signature from. This
2783 allows validation of the root hash against public keys available in
2784 the kernel keyring, and is only supported on recent kernels
2785 (>= 5.4)/libcryptsetup (>= 2.30). A similar switch has been added to
2786 systemd-nspawn and systemd-dissect (--root-hash-sig=). Support for
2787 this mechanism has also been added to systemd-veritysetup.
2788
2789 * .service unit files gained two new options
2790 TimeoutStartFailureMode=/TimeoutStopFailureMode= that may be used to
2791 tune behaviour if a start or stop timeout is hit, i.e. whether to
2792 terminate the service with SIGTERM, SIGABRT or SIGKILL.
2793
2794 * Most options in systemd that accept hexadecimal values prefixed with
2795 0x in additional to the usual decimal notation now also support octal
2796 notation when the 0o prefix is used and binary notation if the 0b
2797 prefix is used.
2798
2799 * Various command line parameters and configuration file settings that
2800 configure key or certificate files now optionally take paths to
2801 AF_UNIX sockets in the file system. If configured that way a stream
2802 connection is made to the socket and the required data read from
2803 it. This is a simple and natural extension to the existing regular
2804 file logic, and permits other software to provide keys or
2805 certificates via simple IPC services, for example when unencrypted
2806 storage on disk is not desired. Specifically, systemd-networkd's
2807 Wireguard and MACSEC key file settings as well as
2808 systemd-journal-gatewayd's and systemd-journal-remote's PEM
2809 key/certificate parameters support this now.
2810
2811 * Unit files, tmpfiles.d/ snippets, sysusers.d/ snippets and other
2812 configuration files that support specifier expansion learnt six new
2813 specifiers: %a resolves to the current architecture, %o/%w/%B/%W
2814 resolve to the various ID fields from /etc/os-release, %l resolves to
2815 the "short" hostname of the system, i.e. the hostname configured in
2816 the kernel truncated at the first dot.
2817
2818 * Support for the .include syntax in unit files has been removed. The
2819 concept has been obsolete for 6 years and we started warning about
2820 its pending removal 2 years ago (also see NEWS file below). It's
2821 finally gone now.
2822
2823 * StandardError= and StandardOutput= in unit files no longer support
2824 the "syslog" and "syslog-console" switches. They were long removed
2825 from the documentation, but will now result in warnings when used,
2826 and be converted to "journal" and "journal+console" automatically.
2827
2828 * If the service setting User= is set to the "nobody" user, a warning
2829 message is now written to the logs (but the value is nonetheless
2830 accepted). Setting User=nobody is unsafe, since the primary purpose
2831 of the "nobody" user is to own all files whose owner cannot be mapped
2832 locally. It's in particular used by the NFS subsystem and in user
2833 namespacing. By running a service under this user's UID it might get
2834 read and even write access to all these otherwise unmappable files,
2835 which is quite likely a major security problem.
2836
2837 * tmpfs mounts automatically created by systemd (/tmp, /run, /dev/shm,
2838 and others) now have a size and inode limits applied (50% of RAM for
2839 /tmp and /dev/shm, 10% of RAM for other mounts, etc.). Please note
2840 that the implicit kernel default is 50% too, so there is no change
2841 in the size limit for /tmp and /dev/shm.
2842
2843 * nss-mymachines lost support for resolution of users and groups, and
2844 now only does resolution of hostnames. This functionality is now
2845 provided by nss-systemd. Thus, the 'mymachines' entry should be
2846 removed from the 'passwd:' and 'group:' lines in /etc/nsswitch.conf
2847 (and 'systemd' added if it is not already there).
2848
2849 * A new kernel command line option systemd.hostname= has been added
2850 that allows controlling the hostname that is initialized early during
2851 boot.
2852
2853 * A kernel command line option "udev.blockdev_read_only" has been
2854 added. If specified all hardware block devices that show up are
2855 immediately marked as read-only by udev. This option is useful for
2856 making sure that a specific boot under no circumstances modifies data
2857 on disk. Use "blockdev --setrw" to undo the effect of this, per
2858 device.
2859
2860 * A new boolean kernel command line option systemd.swap= has been
2861 added, which may be used to turn off automatic activation of swap
2862 devices listed in /etc/fstab.
2863
2864 * New kernel command line options systemd.condition-needs-update= and
2865 systemd.condition-first-boot= have been added, which override the
2866 result of the ConditionNeedsUpdate= and ConditionFirstBoot=
2867 conditions.
2868
2869 * A new kernel command line option systemd.clock-usec= has been added
2870 that allows setting the system clock to the specified time in µs
2871 since Jan 1st, 1970 early during boot. This is in particular useful
2872 in order to make test cases more reliable.
2873
2874 * The fs.suid_dumpable sysctl is set to 2 / "suidsafe". This allows
2875 systemd-coredump to save core files for suid processes. When saving
2876 the core file, systemd-coredump will use the effective uid and gid of
2877 the process that faulted.
2878
2879 * The /sys/module/kernel/parameters/crash_kexec_post_notifiers file is
2880 now automatically set to "Y" at boot, in order to enable pstore
2881 generation for collection with systemd-pstore.
2882
2883 * We provide a set of udev rules to enable auto-suspend on PCI and USB
2884 devices that were tested to correctly support it. Previously, this
2885 was distributed as a set of udev rules, but has now been replaced by
2886 by a set of hwdb entries (and a much shorter udev rule to take action
2887 if the device modalias matches one of the new hwdb entries).
2888
2889 As before, entries are periodically imported from the database
2890 maintained by the ChromiumOS project. If you have a device that
2891 supports auto-suspend correctly and where it should be enabled by
2892 default, please submit a patch that adds it to the database (see
2893 /usr/lib/udev/hwdb.d/60-autosuspend.hwdb).
2894
2895 * systemd-udevd gained the new configuration option timeout_signal= as well
2896 as a corresponding kernel command line option udev.timeout_signal=.
2897 The option can be used to configure the UNIX signal that the main
2898 daemon sends to the worker processes on timeout. Setting the signal
2899 to SIGABRT is useful for debugging.
2900
2901 * .link files managed by systemd-udevd gained options RxFlowControl=,
2902 TxFlowControl=, AutoNegotiationFlowControl= in the [Link] section, in
2903 order to configure various flow control parameters. They also gained
2904 RxMiniBufferSize= and RxJumboBufferSize= in order to configure jumbo
2905 frame ring buffer sizes.
2906
2907 * networkd.conf gained a new boolean setting ManageForeignRoutes=. If
2908 enabled systemd-networkd manages all routes configured by other tools.
2909
2910 * .network files managed by systemd-networkd gained a new section
2911 [SR-IOV], in order to configure SR-IOV capable network devices.
2912
2913 * systemd-networkd's [IPv6Prefix] section in .network files gained a
2914 new boolean setting Assign=. If enabled an address from the prefix is
2915 automatically assigned to the interface.
2916
2917 * systemd-networkd gained a new section [DHCPv6PrefixDelegation] which
2918 controls delegated prefixes assigned by DHCPv6 client. The section
2919 has three settings: SubnetID=, Assign=, and Token=. The setting
2920 SubnetID= allows explicit configuration of the preferred subnet that
2921 systemd-networkd's Prefix Delegation logic assigns to interfaces. If
2922 Assign= is enabled (which is the default) an address from any acquired
2923 delegated prefix is automatically chosen and assigned to the
2924 interface. The setting Token= specifies an optional address generation
2925 mode for Assign=.
2926
2927 * systemd-networkd's [Network] section gained a new setting
2928 IPv4AcceptLocal=. If enabled the interface accepts packets with local
2929 source addresses.
2930
2931 * systemd-networkd gained support for configuring the HTB queuing
2932 discipline in the [HierarchyTokenBucket] and
2933 [HierarchyTokenBucketClass] sections. Similar the "pfifo" qdisc may
2934 be configured in the [PFIFO] section, "GRED" in
2935 [GenericRandomEarlyDetection], "SFB" in [StochasticFairBlue], "cake"
2936 in [CAKE], "PIE" in [PIE], "DRR" in [DeficitRoundRobinScheduler] and
2937 [DeficitRoundRobinSchedulerClass], "BFIFO" in [BFIFO],
2938 "PFIFOHeadDrop" in [PFIFOHeadDrop], "PFIFOFast" in [PFIFOFast], "HHF"
2939 in [HeavyHitterFilter], "ETS" in [EnhancedTransmissionSelection] and
2940 "QFQ" in [QuickFairQueueing] and [QuickFairQueueingClass].
2941
2942 * systemd-networkd gained support for a new Termination= setting in the
2943 [CAN] section for configuring the termination resistor. It also
2944 gained a new ListenOnly= setting for controlling whether to only
2945 listen on CAN interfaces, without interfering with traffic otherwise
2946 (which is useful for debugging/monitoring CAN network
2947 traffic). DataBitRate=, DataSamplePoint=, FDMode=, FDNonISO= have
2948 been added to configure various CAN-FD aspects.
2949
2950 * systemd-networkd's [DHCPv6] section gained a new option WithoutRA=.
2951 When enabled, DHCPv6 will be attempted right-away without requiring an
2952 Router Advertisement packet suggesting it first (i.e. without the 'M'
2953 or 'O' flags set). The [IPv6AcceptRA] section gained a boolean option
2954 DHCPv6Client= that may be used to turn off the DHCPv6 client even if
2955 the RA packets suggest it.
2956
2957 * systemd-networkd's [DHCPv4] section gained a new setting UseGateway=
2958 which may be used to turn off use of the gateway information provided
2959 by the DHCP lease. A new FallbackLeaseLifetimeSec= setting may be
2960 used to configure how to process leases that lack a lifetime option.
2961
2962 * systemd-networkd's [DHCPv4] and [DHCPServer] sections gained a new
2963 setting SendVendorOption= allowing configuration of additional vendor
2964 options to send in the DHCP requests/responses. The [DHCPv6] section
2965 gained a new SendOption= setting for sending arbitrary DHCP
2966 options. RequestOptions= has been added to request arbitrary options
2967 from the server. UserClass= has been added to set the DHCP user class
2968 field.
2969
2970 * systemd-networkd's [DHCPServer] section gained a new set of options
2971 EmitPOP3=/POP3=, EmitSMTP=/SMTP=, EmitLPR=/LPR= for including server
2972 information about these three protocols in the DHCP lease. It also
2973 gained support for including "MUD" URLs ("Manufacturer Usage
2974 Description"). Support for "MUD" URLs was also added to the LLDP
2975 stack, configurable in the [LLDP] section in .network files.
2976
2977 * The Mode= settings in [MACVLAN] and [MACVTAP] now support 'source'
2978 mode. Also, the sections now support a new setting SourceMACAddress=.
2979
2980 * systemd-networkd's .netdev files now support a new setting
2981 VLANProtocol= in the [Bridge] section that allows configuration of
2982 the VLAN protocol to use.
2983
2984 * systemd-networkd supports a new Group= setting in the [Link] section
2985 of the .network files, to control the link group.
2986
2987 * systemd-networkd's [Network] section gained a new
2988 IPv6LinkLocalAddressGenerationMode= setting, which specifies how IPv6
2989 link local address is generated.
2990
2991 * A new default .network file is now shipped that matches TUN/TAP
2992 devices that begin with "vt-" in their name. Such interfaces will
2993 have IP routing onto the host links set up automatically. This is
2994 supposed to be used by VM managers to trivially acquire a network
2995 interface which is fully set up for host communication, simply by
2996 carefully picking an interface name to use.
2997
2998 * systemd-networkd's [DHCPv6] section gained a new setting RouteMetric=
2999 which sets the route priority for routes specified by the DHCP server.
3000
3001 * systemd-networkd's [DHCPv6] section gained a new setting VendorClass=
3002 which configures the vendor class information sent to DHCP server.
3003
3004 * The BlackList= settings in .network files' [DHCPv4] and
3005 [IPv6AcceptRA] sections have been renamed DenyList=. The old names
3006 are still understood to provide compatibility.
3007
3008 * networkctl gained the new "forcerenew" command for forcing all DHCP
3009 server clients to renew their lease. The interface "status" output
3010 will now show numerous additional fields of information about an
3011 interface. There are new "up" and "down" commands to bring specific
3012 interfaces up or down.
3013
3014 * systemd-resolved's DNS= configuration option now optionally accepts a
3015 port number (after ":") and a host name (after "#"). When the host
3016 name is specified, the DNS-over-TLS certificate is validated to match
3017 the specified hostname. Additionally, in case of IPv6 addresses, an
3018 interface may be specified (after "%").
3019
3020 * systemd-resolved may be configured to forward single-label DNS names.
3021 This is not standard-conformant, but may make sense in setups where
3022 public DNS servers are not used.
3023
3024 * systemd-resolved's DNS-over-TLS support gained SNI validation.
3025
3026 * systemd-nspawn's --resolv-conf= switch gained a number of new
3027 supported values. Specifically, options starting with "replace-" are
3028 like those prefixed "copy-" but replace any existing resolv.conf
3029 file. And options ending in "-uplink" and "-stub" can now be used to
3030 propagate other flavours of resolv.conf into the container (as
3031 defined by systemd-resolved).
3032
3033 * The various programs included in systemd can now optionally output
3034 their log messages on stderr prefixed with a timestamp, controlled by
3035 the $SYSTEMD_LOG_TIME environment variable.
3036
3037 * systemctl gained a new "-P" switch that is a shortcut for "--value
3038 --property=…".
3039
3040 * "systemctl list-units" and "systemctl list-machines" no longer hide
3041 their first output column with --no-legend. To hide the first column,
3042 use --plain.
3043
3044 * "systemctl reboot" takes the option "--reboot-argument=".
3045 The optional positional argument to "systemctl reboot" is now
3046 being deprecated in favor of this option.
3047
3048 * systemd-run gained a new switch --slice-inherit. If specified the
3049 unit it generates is placed in the same slice as the systemd-run
3050 process itself.
3051
3052 * systemd-journald gained support for zstd compression of large fields
3053 in journal files. The hash tables in journal files have been hardened
3054 against hash collisions. This is an incompatible change and means
3055 that journal files created with new systemd versions are not readable
3056 with old versions. If the $SYSTEMD_JOURNAL_KEYED_HASH boolean
3057 environment variable for systemd-journald.service is set to 0 this
3058 new hardening functionality may be turned off, so that generated
3059 journal files remain compatible with older journalctl
3060 implementations.
3061
3062 * journalctl will now include a clickable link in the default output for
3063 each log message for which an URL with further documentation is
3064 known. This is only supported on terminal emulators that support
3065 clickable hyperlinks, and is turned off if a pager is used (since
3066 "less" still doesn't support hyperlinks,
3067 unfortunately). Documentation URLs may be included in log messages
3068 either by including a DOCUMENTATION= journal field in it, or by
3069 associating a journal message catalog entry with the log message's
3070 MESSAGE_ID, which then carries a "Documentation:" tag.
3071
3072 * journald.conf gained a new boolean setting Audit= that may be used to
3073 control whether systemd-journald will enable audit during
3074 initialization.
3075
3076 * when systemd-journald's log stream is broken up into multiple lines
3077 because the PID of the sender changed this is indicated in the
3078 generated log records via the _LINE_BREAK=pid-change field.
3079
3080 * journalctl's "-o cat" output mode will now show one or more journal
3081 fields specified with --output-fields= instead of unconditionally
3082 MESSAGE=. This is useful to retrieve a very specific set of fields
3083 without any decoration.
3084
3085 * The sd-journal.h API gained two new functions:
3086 sd_journal_enumerate_available_unique() and
3087 sd_journal_enumerate_available_data() that operate like their
3088 counterparts that lack the _available_ in the name, but skip items
3089 that cannot be read and processed by the local implementation
3090 (i.e. are compressed in an unsupported format or such),
3091
3092 * coredumpctl gained a new --file= switch, matching the same one in
3093 journalctl: a specific journal file may be specified to read the
3094 coredump data from.
3095
3096 * coredumps collected by systemd-coredump may now be compressed using
3097 the zstd algorithm.
3098
3099 * systemd-binfmt gained a new switch --unregister for unregistering all
3100 registered entries at once. This is now invoked automatically at
3101 shutdown, so that binary formats registered with the "F" flag will
3102 not block clean file system unmounting.
3103
3104 * systemd-notify's --pid= switch gained new values: "parent", "self",
3105 "auto" for controlling which PID to send to the service manager: the
3106 systemd-notify process' PID, or the one of the process invoking it.
3107
3108 * systemd-logind's Session bus object learnt a new method call
3109 SetType() for temporarily updating the session type of an already
3110 allocated session. This is useful for upgrading tty sessions to
3111 graphical ones once a compositor is invoked.
3112
3113 * systemd-socket-proxy gained a new switch --exit-idle-time= for
3114 configuring an exit-on-idle time.
3115
3116 * systemd-repart's --empty= setting gained a new value "create". If
3117 specified a new empty regular disk image file is created under the
3118 specified name. Its size may be specified with the new --size=
3119 option. The latter is also supported without the "create" mode, in
3120 order to grow existing disk image files to the specified size. These
3121 two new options are useful when creating or manipulating disk images
3122 instead of operating on actual block devices.
3123
3124 * systemd-repart drop-ins now support a new UUID= setting to control
3125 the UUID to assign to a newly created partition.
3126
3127 * systemd-repart's SizeMin= per-partition parameter now defaults to 10M
3128 instead of 0.
3129
3130 * systemd-repart's Label= setting now support the usual, simple
3131 specifier expansion.
3132
3133 * systemd-homed's LUKS backend gained the ability to discard empty file
3134 system blocks automatically when the user logs out. This is enabled
3135 by default to ensure that home directories take minimal space when
3136 logged out but get full size guarantees when logged in. This may be
3137 controlled with the new --luks-offline-discard= switch to homectl.
3138
3139 * If systemd-homed detects that /home/ is encrypted as a whole it will
3140 now default to the directory or subvolume backends instead of the
3141 LUKS backend, in order to avoid double encryption. The default
3142 storage and file system may now be configured explicitly, too, via
3143 the new /etc/systemd/homed.conf configuration file.
3144
3145 * systemd-homed now supports unlocking home directories with FIDO2
3146 security tokens that support the 'hmac-secret' extension, in addition
3147 to the existing support for PKCS#11 security token unlocking
3148 support. Note that many recent hardware security tokens support both
3149 interfaces. The FIDO2 support is accessible via homectl's
3150 --fido2-device= option.
3151
3152 * homectl's --pkcs11-uri= setting now accepts two special parameters:
3153 if "auto" is specified and only one suitable PKCS#11 security token
3154 is plugged in, its URL is automatically determined and enrolled for
3155 unlocking the home directory. If "list" is specified a brief table of
3156 suitable PKCS#11 security tokens is shown. Similar, the new
3157 --fido2-device= option also supports these two special values, for
3158 automatically selecting and listing suitable FIDO2 devices.
3159
3160 * The /etc/crypttab tmp option now optionally takes an argument
3161 selecting the file system to use. Moreover, the default is now
3162 changed from ext2 to ext4.
3163
3164 * There's a new /etc/crypttab option "keyfile-erase". If specified the
3165 key file listed in the same line is removed after use, regardless if
3166 volume activation was successful or not. This is useful if the key
3167 file is only acquired transiently at runtime and shall be erased
3168 before the system continues to boot.
3169
3170 * There's also a new /etc/crypttab option "try-empty-password". If
3171 specified, before asking the user for a password it is attempted to
3172 unlock the volume with an empty password. This is useful for
3173 installing encrypted images whose password shall be set on first boot
3174 instead of at installation time.
3175
3176 * systemd-cryptsetup will now attempt to load the keys to unlock
3177 volumes with automatically from files in
3178 /etc/cryptsetup-keys.d/<volume>.key and
3179 /run/cryptsetup-keys.d/<volume>.key, if any of these files exist.
3180
3181 * systemd-cryptsetup may now activate Microsoft BitLocker volumes via
3182 /etc/crypttab, during boot.
3183
3184 * logind.conf gained a new RuntimeDirectoryInodesMax= setting to
3185 control the inode limit for the per-user $XDG_RUNTIME_DIR tmpfs
3186 instance.
3187
3188 * A new generator systemd-xdg-autostart-generator has been added. It
3189 generates systemd unit files from XDG autostart .desktop files, and
3190 may be used to let the systemd user instance manage services that are
3191 started automatically as part of the desktop session.
3192
3193 * "bootctl" gained a new verb "reboot-to-firmware" that may be used
3194 to query and change the firmware's 'reboot into firmware' setup flag.
3195
3196 * systemd-firstboot gained a new switch --kernel-command-line= that may
3197 be used to initialize the /etc/kernel/cmdline file of the image. It
3198 also gained a new switch --root-password-hashed= which is like
3199 --root-password= but accepts a pre-hashed UNIX password as
3200 argument. The new option --delete-root-password may be used to unset
3201 any password for the root user (dangerous!). The --root-shell= switch
3202 may be used to control the shell to use for the root account. A new
3203 --force option may be used to override any already set settings with
3204 the parameters specified on the command line (by default, the tool
3205 will not override what has already been set before, i.e. is purely
3206 incremental).
3207
3208 * systemd-firstboot gained support for a new --image= switch, which is
3209 similar to --root= but accepts the path to a disk image file, on
3210 which it then operates.
3211
3212 * A new sd-path.h API has been added to libsystemd. It provides a
3213 simple API for retrieving various search paths and primary
3214 directories for various resources.
3215
3216 * A new call sd_notify_barrier() has been added to the sd-daemon.h
3217 API. The call will block until all previously sent sd_notify()
3218 messages have been processed by the service manager. This is useful
3219 to remove races caused by a process already having disappeared at the
3220 time a notification message is processed by the service manager,
3221 making correct attribution impossible. The systemd-notify tool will
3222 now make use of this call implicitly, but this can be turned off again
3223 via the new --no-block switch.
3224
3225 * When sending a file descriptor (fd) to the service manager to keep
3226 track of, using the sd_notify() mechanism, a new parameter FDPOLL=0
3227 may be specified. If passed the service manager will refrain from
3228 poll()ing on the file descriptor. Traditionally (and when the
3229 parameter is not specified), the service manager will poll it for
3230 POLLHUP or POLLERR events, and immediately close the fds in that
3231 case.
3232
3233 * The service manager (PID1) gained a new D-Bus method call
3234 SetShowStatus() which may be used to control whether it shall show
3235 boot-time status output on the console. This method has a similar
3236 effect to sending SIGRTMIN+20/SIGRTMIN+21 to PID 1.
3237
3238 * The sd-bus API gained a number of convenience functions that take
3239 va_list arguments rather than "...". For example, there's now
3240 sd_bus_call_methodv() to match sd_bus_call_method(). Those calls make
3241 it easier to build wrappers that accept variadic arguments and want
3242 to pass a ready va_list structure to sd-bus.
3243
3244 * sd-bus vtable entries can have a new SD_BUS_VTABLE_ABSOLUTE_OFFSET
3245 flag which alters how the userdata pointer to pass to the callbacks
3246 is determined. When the flag is set, the offset field is converted
3247 as-is into a pointer, without adding it to the object pointer the
3248 vtable is associated with.
3249
3250 * sd-bus now exposes four new functions:
3251 sd_bus_interface_name_is_valid() + sd_bus_service_name_is_valid() +
3252 sd_bus_member_name_is_valid() + sd_bus_object_path_is_valid() will
3253 validate strings to check if they qualify as various D-Bus concepts.
3254
3255 * The sd-bus API gained the SD_BUS_METHOD_WITH_ARGS(),
3256 SD_BUS_METHOD_WITH_ARGS_OFFSET() and SD_BUS_SIGNAL_WITH_ARGS() macros
3257 that simplify adding argument names to D-Bus methods and signals.
3258
3259 * The man pages for the sd-bus and sd-hwdb APIs have been completed.
3260
3261 * Various D-Bus APIs of systemd daemons now have man pages that
3262 document the methods, signals and properties.
3263
3264 * The expectations on user/group name syntax are now documented in
3265 detail; documentation on how classic home directories may be
3266 converted into home directories managed by homed has been added;
3267 documentation regarding integration of homed/userdb functionality in
3268 desktops has been added:
3269
3270 https://systemd.io/USER_NAMES
3271 https://systemd.io/CONVERTING_TO_HOMED
3272 https://systemd.io/USERDB_AND_DESKTOPS
3273
3274 * Documentation for the on-disk Journal file format has been updated
3275 and has now moved to:
3276
3277 https://systemd.io/JOURNAL_FILE_FORMAT
3278
3279 * The interface for containers (https://systemd.io/CONTAINER_INTERFACE)
3280 has been extended by a set of environment variables that expose
3281 select fields from the host's os-release file to the container
3282 payload. Similarly, host's os-release files can be mounted into the
3283 container underneath /run/host. Together, those mechanisms provide a
3284 standardized way to expose information about the host to the
3285 container payload. Both interfaces are implemented in systemd-nspawn.
3286
3287 * All D-Bus services shipped in systemd now implement the generic
3288 LogControl1 D-Bus API which allows clients to change log level +
3289 target of the service during runtime.
3290
3291 * Only relevant for developers: the mkosi.default symlink has been
3292 dropped from version control. Please create a symlink to one of the
3293 distribution-specific defaults in .mkosi/ based on your preference.
3294
3295 Contributions from: 24bisquitz, Adam Nielsen, Alan Perry, Alexander
3296 Malafeev, Amitanand.Chikorde, Alin Popa, Alvin Šipraga, Amos Bird,
3297 Andreas Rammhold, AndreRH, Andrew Doran, Anita Zhang, Ankit Jain,
3298 antznin, Arnaud Ferraris, Arthur Moraes do Lago, Arusekk, Balaji
3299 Punnuru, Balint Reczey, Bastien Nocera, bemarek, Benjamin Berg,
3300 Benjamin Dahlhoff, Benjamin Robin, Chris Down, Chris Kerr, Christian
3301 Göttsche, Christian Hesse, Christian Oder, Ciprian Hacman, Clinton Roy,
3302 codicodi, Corey Hinshaw, Daan De Meyer, Dana Olson, Dan Callaghan,
3303 Daniel Fullmer, Daniel Rusek, Dan Streetman, Dave Reisner, David
3304 Edmundson, David Wood, Denis Pronin, Diego Escalante Urrelo, Dimitri
3305 John Ledkov, dolphrundgren, duguxy, Einsler Lee, Elisei Roca, Emmanuel
3306 Garette, Eric Anderson, Eric DeVolder, Evgeny Vereshchagin,
3307 ExtinctFire, fangxiuning, Ferran Pallarès Roca, Filipe Brandenburger,
3308 Filippo Falezza, Finn, Florian Klink, Florian Mayer, Franck Bui,
3309 Frantisek Sumsal, gaurav, Georg Müller, Gergely Polonkai, Giedrius
3310 Statkevičius, Gigadoc2, gogogogi, Gaurav Singh, gzjsgdsb, Hans de
3311 Goede, Haochen Tong, ianhi, ignapk, Jakov Smolic, James T. Lee, Jan
3312 Janssen, Jan Klötzke, Jan Palus, Jay Burger, Jeremy Cline, Jérémy
3313 Rosen, Jian-Hong Pan, Jiri Slaby, Joel Shapiro, Joerg Behrmann, Jörg
3314 Thalheim, Jouke Witteveen, Kai-Heng Feng, Kenny Levinsen, Kevin
3315 Kuehler, Kumar Kartikeya Dwivedi, layderv, laydervus, Lénaïc Huard,
3316 Lennart Poettering, Lidong Zhong, Luca Boccassi, Luca BRUNO, Lucas
3317 Werkmeister, Lukas Klingsbo, Lukáš Nykrýn, Łukasz Stelmach, Maciej
3318 S. Szmigiero, MadMcCrow, Marc-André Lureau, Marcel Holtmann, Marc
3319 Kleine-Budde, Martin Hundebøll, Matthew Leeds, Matt Ranostay, Maxim
3320 Fomin, MaxVerevkin, Michael Biebl, Michael Chapman, Michael Gubbels,
3321 Michael Marley, Michał Bartoszkiewicz, Michal Koutný, Michal Sekletár,
3322 Mike Gilbert, Mike Kazantsev, Mikhail Novosyolov, ml, Motiejus Jakštys,
3323 nabijaczleweli, nerdopolis, Niccolò Maggioni, Niklas Hambüchen, Norbert
3324 Lange, Paul Cercueil, pelzvieh, Peter Hutterer, Piero La Terza, Pieter
3325 Lexis, Piotr Drąg, Rafael Fontenelle, Richard Petri, Ronan Pigott, Ross
3326 Lagerwall, Rubens Figueiredo, satmandu, Sean-StarLabs, Sebastian
3327 Jennen, sterlinghughes, Surhud More, Susant Sahani, szb512, Thomas
3328 Haller, Tobias Hunger, Tom, Tomáš Pospíšek, Tomer Shechner, Tom Hughes,
3329 Topi Miettinen, Tudor Roman, Uwe Kleine-König, Valery0xff, Vito Caputo,
3330 Vladimir Panteleev, Vladyslav Tronko, Wen Yang, Yegor Vialov, Yigal
3331 Korman, Yi Gao, YmrDtnJu, Yuri Chornoivan, Yu Watanabe, Zbigniew
3332 Jędrzejewski-Szmek, Zhu Li, Дамјан Георгиевски, наб
3333
3334 – Warsaw, 2020-07-30
3335
3336 CHANGES WITH 245:
3337
3338 * A new tool "systemd-repart" has been added, that operates as an
3339 idempotent declarative repartitioner for GPT partition tables.
3340 Specifically, a set of partitions that must or may exist can be
3341 configured via drop-in files, and during every boot the partition
3342 table on disk is compared with these files, creating missing
3343 partitions or growing existing ones based on configurable relative
3344 and absolute size constraints. The tool is strictly incremental,
3345 i.e. does not delete, shrink or move partitions, but only adds and
3346 grows them. The primary use-case is OS images that ship in minimized
3347 form, that on first boot are grown to the size of the underlying
3348 block device or augmented with additional partitions. For example,
3349 the root partition could be extended to cover the whole disk, or a
3350 swap or /home partitions could be added on first boot. It can also be
3351 used for systems that use an A/B update scheme but ship images with
3352 just the A partition, with B added on first boot. The tool is
3353 primarily intended to be run in the initrd, shortly before
3354 transitioning into the host OS, but can also be run after the
3355 transition took place. It automatically discovers the disk backing
3356 the root file system, and should hence not require any additional
3357 configuration besides the partition definition drop-ins. If no
3358 configuration drop-ins are present, no action is taken.
3359
3360 * A new component "userdb" has been added, along with a small daemon
3361 "systemd-userdbd.service" and a client tool "userdbctl". The framework
3362 allows defining rich user and group records in a JSON format,
3363 extending on the classic "struct passwd" and "struct group"
3364 structures. Various components in systemd have been updated to
3365 process records in this format, including systemd-logind and
3366 pam-systemd. The user records are intended to be extensible, and
3367 allow setting various resource management, security and runtime
3368 parameters that shall be applied to processes and sessions of the
3369 user as they log in. This facility is intended to allow associating
3370 such metadata directly with user/group records so that they can be
3371 produced, extended and consumed in unified form. We hope that
3372 eventually frameworks such as sssd will generate records this way, so
3373 that for the first time resource management and various other
3374 per-user settings can be configured in LDAP directories and then
3375 provided to systemd (specifically to systemd-logind and pam-system)
3376 to apply on login. For further details see:
3377
3378 https://systemd.io/USER_RECORD
3379 https://systemd.io/GROUP_RECORD
3380 https://systemd.io/USER_GROUP_API
3381
3382 * A small new service systemd-homed.service has been added, that may be
3383 used to securely manage home directories with built-in encryption.
3384 The complete user record data is unified with the home directory,
3385 thus making home directories naturally migratable. Its primary
3386 back-end is based on LUKS volumes, but fscrypt, plain directories,
3387 and other storage schemes are also supported. This solves a couple of
3388 problems we saw with traditional ways to manage home directories, in
3389 particular when it comes to encryption. For further discussion of
3390 this, see the video of Lennart's talk at AllSystemsGo! 2019:
3391
3392 https://media.ccc.de/v/ASG2019-164-reinventing-home-directories
3393
3394 For further details about the format and expectations on home
3395 directories this new daemon makes, see:
3396
3397 https://systemd.io/HOME_DIRECTORY
3398
3399 * systemd-journald is now multi-instantiable. In addition to the main
3400 instance systemd-journald.service there's now a template unit
3401 systemd-journald@.service, with each instance defining a new named
3402 log 'namespace' (whose name is specified via the instance part of the
3403 unit name). A new unit file setting LogNamespace= has been added,
3404 taking such a namespace name, that assigns services to the specified
3405 log namespaces. As each log namespace is serviced by its own
3406 independent journal daemon, this functionality may be used to improve
3407 performance and increase isolation of applications, at the price of
3408 losing global message ordering. Each instance of journald has a
3409 separate set of configuration files, with possibly different disk
3410 usage limitations and other settings.
3411
3412 journalctl now takes a new option --namespace= to show logs from a
3413 specific log namespace. The sd-journal.h API gained
3414 sd_journal_open_namespace() for opening the log stream of a specific
3415 log namespace. systemd-journald also gained the ability to exit on
3416 idle, which is useful in the context of log namespaces, as this means
3417 log daemons for log namespaces can be activated automatically on
3418 demand and will stop automatically when no longer used, minimizing
3419 resource usage.
3420
3421 * When systemd-tmpfiles copies a file tree using the 'C' line type it
3422 will now label every copied file according to the SELinux database.
3423
3424 * When systemd/PID 1 detects it is used in the initrd it will now boot
3425 into initrd.target rather than default.target by default. This should
3426 make it simpler to build initrds with systemd as for many cases the
3427 only difference between a host OS image and an initrd image now is
3428 the presence of the /etc/initrd-release file.
3429
3430 * A new kernel command line option systemd.cpu_affinity= is now
3431 understood. It's equivalent to the CPUAffinity= option in
3432 /etc/systemd/system.conf and allows setting the CPU mask for PID 1
3433 itself and the default for all other processes.
3434
3435 * When systemd/PID 1 is reloaded (with systemctl daemon-reload or
3436 equivalent), the SELinux database is now reloaded, ensuring that
3437 sockets and other file system objects are generated taking the new
3438 database into account.
3439
3440 * systemd/PID 1 accepts a new "systemd.show-status=error" setting, and
3441 "quiet" has been changed to imply that instead of
3442 "systemd.show-status=auto". In this mode, only messages about errors
3443 and significant delays in boot are shown on the console.
3444
3445 * The sd-event.h API gained native support for the new Linux "pidfd"
3446 concept. This permits watching processes using file descriptors
3447 instead of PID numbers, which fixes a number of races and makes
3448 process supervision more robust and efficient. All of systemd's
3449 components will now use pidfds if the kernel supports it for process
3450 watching, with the exception of PID 1 itself, unfortunately. We hope
3451 to move PID 1 to exclusively using pidfds too eventually, but this
3452 requires some more kernel work first. (Background: PID 1 watches
3453 processes using waitid() with the P_ALL flag, and that does not play
3454 together nicely with pidfds yet.)
3455
3456 * Closely related to this, the sd-event.h API gained two new calls
3457 sd_event_source_send_child_signal() (for sending a signal to a
3458 watched process) and sd_event_source_get_child_process_own() (for
3459 marking a process so that it is killed automatically whenever the
3460 event source watching it is freed).
3461
3462 * systemd-networkd gained support for configuring Token Bucket Filter
3463 (TBF) parameters in its qdisc configuration support. Similarly,
3464 support for Stochastic Fairness Queuing (SFQ), Controlled-Delay
3465 Active Queue Management (CoDel), and Fair Queue (FQ) has been added.
3466
3467 * systemd-networkd gained support for Intermediate Functional Block
3468 (IFB) network devices.
3469
3470 * systemd-networkd gained support for configuring multi-path IP routes,
3471 using the new MultiPathRoute= setting in the [Route] section.
3472
3473 * systemd-networkd's DHCPv4 client has been updated to support a new
3474 SendDecline= option. If enabled, duplicate address detection is done
3475 after a DHCP offer is received from the server. If a conflict is
3476 detected, the address is declined. The DHCPv4 client also gained
3477 support for a new RouteMTUBytes= setting that allows to configure the
3478 MTU size to be used for routes generated from DHCPv4 leases.
3479
3480 * The PrefixRoute= setting in systemd-networkd's [Address] section of
3481 .network files has been deprecated, and replaced by AddPrefixRoute=,
3482 with its sense inverted.
3483
3484 * The Gateway= setting of [Route] sections of .network files gained
3485 support for a special new value "_dhcp". If set, the configured
3486 static route uses the gateway host configured via DHCP.
3487
3488 * New User= and SuppressPrefixLength= settings have been implemented
3489 for the [RoutingPolicyRule] section of .network files to configure
3490 source routing based on UID ranges and prefix length, respectively.
3491
3492 * The Type= match property of .link files has been generalized to
3493 always match the device type shown by 'networkctl status', even for
3494 devices where udev does not set DEVTYPE=. This allows e.g. Type=ether
3495 to be used.
3496
3497 * sd-bus gained a new API call sd_bus_message_sensitive() that marks a
3498 D-Bus message object as "sensitive". Those objects are erased from
3499 memory when they are freed. This concept is intended to be used for
3500 messages that contain security sensitive data. A new flag
3501 SD_BUS_VTABLE_SENSITIVE has been introduced as well to mark methods
3502 in sd-bus vtables, causing any incoming and outgoing messages of
3503 those methods to be implicitly marked as "sensitive".
3504
3505 * sd-bus gained a new API call sd_bus_message_dump() for dumping the
3506 contents of a message (or parts thereof) to standard output for
3507 debugging purposes.
3508
3509 * systemd-sysusers gained support for creating users with the primary
3510 group named differently than the user.
3511
3512 * systemd-growfs (i.e. the x-systemd.growfs mount option in /etc/fstab)
3513 gained support for growing XFS partitions. Previously it supported
3514 only ext4 and btrfs partitions.
3515
3516 * The support for /etc/crypttab gained a new x-initrd.attach option. If
3517 set, the specified encrypted volume is unlocked already in the
3518 initrd. This concept corresponds to the x-initrd.mount option in
3519 /etc/fstab.
3520
3521 * systemd-cryptsetup gained native support for unlocking encrypted
3522 volumes utilizing PKCS#11 smartcards, i.e. for example to bind
3523 encryption of volumes to YubiKeys. This is exposed in the new
3524 pkcs11-uri= option in /etc/crypttab.
3525
3526 * The /etc/fstab support in systemd now supports two new mount options
3527 x-systemd.{required,wanted}-by=, for explicitly configuring the units
3528 that the specified mount shall be pulled in by, in place of
3529 the usual local-fs.target/remote-fs.target.
3530
3531 * The https://systemd.io/ web site has been relaunched, directly
3532 populated with most of the documentation included in the systemd
3533 repository. systemd also acquired a new logo, thanks to Tobias
3534 Bernard.
3535
3536 * systemd-udevd gained support for managing "alternative" network
3537 interface names, as supported by new Linux kernels. For the first
3538 time this permits assigning multiple (and longer!) names to a network
3539 interface. systemd-udevd will now by default assign the names
3540 generated via all supported naming schemes to each interface. This
3541 may be further tweaked with .link files and the AlternativeName= and
3542 AlternativeNamesPolicy= settings. Other components of systemd have
3543 been updated to support the new alternative names wherever
3544 appropriate. For example, systemd-nspawn will now generate
3545 alternative interface names for the host-facing side of container
3546 veth links based on the full container name without truncation.
3547
3548 * systemd-nspawn interface naming logic has been updated in another way
3549 too: if the main interface name (i.e. as opposed to new-style
3550 "alternative" names) based on the container name is truncated, a
3551 simple hashing scheme is used to give different interface names to
3552 multiple containers whose names all begin with the same prefix. Since
3553 this changes the primary interface names pointing to containers if
3554 truncation happens, the old scheme may still be requested by
3555 selecting an older naming scheme, via the net.naming-scheme= kernel
3556 command line option.
3557
3558 * PrivateUsers= in service files now works in services run by the
3559 systemd --user per-user instance of the service manager.
3560
3561 * A new per-service sandboxing option ProtectClock= has been added that
3562 locks down write access to the system clock. It takes away device
3563 node access to /dev/rtc as well as the system calls that set the
3564 system clock and the CAP_SYS_TIME and CAP_WAKE_ALARM capabilities.
3565 Note that this option does not affect access to auxiliary services
3566 that allow changing the clock, for example access to
3567 systemd-timedated.
3568
3569 * The systemd-id128 tool gained a new "show" verb for listing or
3570 resolving a number of well-known UUIDs/128bit IDs, currently mostly
3571 GPT partition table types.
3572
3573 * The Discoverable Partitions Specification has been updated to support
3574 /var and /var/tmp partition discovery. Support for this has been
3575 added to systemd-gpt-auto-generator. For details see:
3576
3577 https://systemd.io/DISCOVERABLE_PARTITIONS
3578
3579 * "systemctl list-unit-files" has been updated to show a new column
3580 with the suggested enablement state based on the vendor preset files
3581 for the respective units.
3582
3583 * "systemctl" gained a new option "--with-dependencies". If specified
3584 commands such as "systemctl status" or "systemctl cat" will now show
3585 all specified units along with all units they depend on.
3586
3587 * networkctl gained support for showing per-interface logs in its
3588 "status" output.
3589
3590 * systemd-networkd-wait-online gained support for specifying the maximum
3591 operational state to wait for, and to wait for interfaces to
3592 disappear.
3593
3594 * The [Match] section of .link and .network files now supports a new
3595 option PermanentMACAddress= which may be used to check against the
3596 permanent MAC address of a network device even if a randomized MAC
3597 address is used.
3598
3599 * The [TrafficControlQueueingDiscipline] section in .network files has
3600 been renamed to [NetworkEmulator] with the "NetworkEmulator" prefix
3601 dropped from the individual setting names.
3602
3603 * Any .link and .network files that have an empty [Match] section (this
3604 also includes empty and commented-out files) will now be
3605 rejected. systemd-udev and systemd-networkd started warning about
3606 such files in version 243.
3607
3608 * systemd-logind will now validate access to the operation of changing
3609 the virtual terminal via a polkit action. By default, only users
3610 with at least one session on a local VT are granted permission.
3611
3612 * When systemd sets up PAM sessions that invoked service processes
3613 shall run in, the pam_setcred() API is now invoked, thus permitting
3614 PAM modules to set additional credentials for the processes.
3615
3616 * portablectl attach/detach verbs now accept --now and --enable options
3617 to combine attachment with enablement and invocation, or detachment
3618 with stopping and disablement.
3619
3620 * UPGRADE ISSUE: a bug where some jobs were trimmed as redundant was
3621 fixed, which in turn exposed bugs in unit configuration of services
3622 which have Type=oneshot and should only run once, but do not have
3623 RemainAfterExit=yes set. Without RemainAfterExit=yes, a one-shot
3624 service may be started again after exiting successfully, for example
3625 as a dependency in another transaction. Affected services included
3626 some internal systemd services (most notably
3627 systemd-vconsole-setup.service, which was updated to have
3628 RemainAfterExit=yes), and plymouth-start.service. Please ensure that
3629 plymouth has been suitably updated or patched before upgrading to
3630 this systemd release. See
3631 https://bugzilla.redhat.com/show_bug.cgi?id=1807771 for some
3632 additional discussion.
3633
3634 Contributions from: AJ Bagwell, Alin Popa, Andreas Rammhold, Anita
3635 Zhang, Ansgar Burchardt, Antonio Russo, Arian van Putten, Ashley Davis,
3636 Balint Reczey, Bart Willems, Bastien Nocera, Benjamin Dahlhoff, Charles
3637 (Chas) Williams, cheese1, Chris Down, Chris Murphy, Christian Ehrhardt,
3638 Christian Göttsche, cvoinf, Daan De Meyer, Daniele Medri, Daniel Rusek,
3639 Daniel Shahaf, Dann Frazier, Dan Streetman, Dariusz Gadomski, David
3640 Michael, Dimitri John Ledkov, Emmanuel Bourg, Evgeny Vereshchagin,
3641 ezst036, Felipe Sateler, Filipe Brandenburger, Florian Klink, Franck
3642 Bui, Fran Dieguez, Frantisek Sumsal, Greg "GothAck" Miell, Guilhem
3643 Lettron, Guillaume Douézan-Grard, Hans de Goede, HATAYAMA Daisuke, Iain
3644 Lane, James Buren, Jan Alexander Steffens (heftig), Jérémy Rosen, Jin
3645 Park, Jun'ichi Nomura, Kai Krakow, Kevin Kuehler, Kevin P. Fleming,
3646 Lennart Poettering, Leonid Bloch, Leonid Evdokimov, lothrond, Luca
3647 Boccassi, Lukas K, Lynn Kirby, Mario Limonciello, Mark Deneen, Matthew
3648 Leeds, Michael Biebl, Michal Koutný, Michal Sekletár, Mike Auty, Mike
3649 Gilbert, mtron, nabijaczleweli, Naïm Favier, Nate Jones, Norbert Lange,
3650 Oliver Giles, Paul Davey, Paul Menzel, Peter Hutterer, Piotr Drąg, Rafa
3651 Couto, Raphael, rhn, Robert Scheck, Rocka, Romain Naour, Ryan Attard,
3652 Sascha Dewald, Shengjing Zhu, Slava Kardakov, Spencer Michaels, Sylvain
3653 Plantefeve, Stanislav Angelovič, Susant Sahani, Thomas Haller, Thomas
3654 Schmitt, Timo Schlüßler, Timo Wilken, Tobias Bernard, Tobias Klauser,
3655 Tobias Stoeckmann, Topi Miettinen, tsia, WataruMatsuoka, Wieland
3656 Hoffmann, Wilhelm Schuster, Will Fleming, xduugu, Yong Cong Sin, Yuri
3657 Chornoivan, Yu Watanabe, Zach Smith, Zbigniew Jędrzejewski-Szmek, Zeyu
3658 DONG
3659
3660 – Warsaw, 2020-03-06
3661
3662 CHANGES WITH 244:
3663
3664 * Support for the cpuset cgroups v2 controller has been added.
3665 Processes may be restricted to specific CPUs using the new
3666 AllowedCPUs= setting, and to specific memory NUMA nodes using the new
3667 AllowedMemoryNodes= setting.
3668
3669 * The signal used in restart jobs (as opposed to e.g. stop jobs) may
3670 now be configured using a new RestartKillSignal= setting. This
3671 allows units which signals to request termination to implement
3672 different behaviour when stopping in preparation for a restart.
3673
3674 * "systemctl clean" may now be used also for socket, mount, and swap
3675 units.
3676
3677 * systemd will also read configuration options from the EFI variable
3678 SystemdOptions. This may be used to configure systemd behaviour when
3679 modifying the kernel command line is inconvenient, but configuration
3680 on disk is read too late, for example for the options related to
3681 cgroup hierarchy setup. 'bootctl systemd-efi-options' may be used to
3682 set the EFI variable.
3683
3684 * systemd will now disable printk ratelimits in early boot. This should
3685 allow us to capture more logs from the early boot phase where normal
3686 storage is not available and the kernel ring buffer is used for
3687 logging. Configuration on the kernel command line has higher priority
3688 and overrides the systemd setting.
3689
3690 systemd programs which log to /dev/kmsg directly use internal
3691 ratelimits to prevent runaway logging. (Normally this is only used
3692 during early boot, so in practice this change has very little
3693 effect.)
3694
3695 * Unit files now support top level dropin directories of the form
3696 <unit_type>.d/ (e.g. service.d/) that may be used to add configuration
3697 that affects all corresponding unit files.
3698
3699 * systemctl gained support for 'stop --job-mode=triggering' which will
3700 stop the specified unit and any units which could trigger it.
3701
3702 * Unit status display now includes units triggering and triggered by
3703 the unit being shown.
3704
3705 * The RuntimeMaxSec= setting is now supported by scopes, not just
3706 .service units. This is particularly useful for PAM sessions which
3707 create a scope unit for the user login. systemd.runtime_max_sec=
3708 setting may used with the pam_systemd module to limit the duration
3709 of the PAM session, for example for time-limited logins.
3710
3711 * A new @pkey system call group is now defined to make it easier to
3712 allow-list memory protection syscalls for containers and services
3713 which need to use them.
3714
3715 * systemd-udevd: removed the 30s timeout for killing stale workers on
3716 exit. systemd-udevd now waits for workers to finish. The hard-coded
3717 exit timeout of 30s was too short for some large installations, where
3718 driver initialization could be prematurely interrupted during initrd
3719 processing if the root file system had been mounted and init was
3720 preparing to switch root. If udevd is run without systemd and workers
3721 are hanging while udevd receives an exit signal, udevd will now exit
3722 when udev.event_timeout is reached for the last hanging worker. With
3723 systemd, the exit timeout can additionally be configured using
3724 TimeoutStopSec= in systemd-udevd.service.
3725
3726 * udev now provides a program (fido_id) that identifies FIDO CTAP1
3727 ("U2F")/CTAP2 security tokens based on the usage declared in their
3728 report and descriptor and outputs suitable environment variables.
3729 This replaces the externally maintained allow lists of all known
3730 security tokens that were used previously.
3731
3732 * Automatically generated autosuspend udev rules for allow-listed
3733 devices have been imported from the Chromium OS project. This should
3734 improve power saving with many more devices.
3735
3736 * udev gained a new "CONST{key}=value" setting that allows matching
3737 against system-wide constants without forking a helper binary.
3738 Currently "arch" and "virt" keys are supported.
3739
3740 * udev now opens CDROMs in non-exclusive mode when querying their
3741 capabilities. This should fix issues where other programs trying to
3742 use the CDROM cannot gain access to it, but carries a risk of
3743 interfering with programs writing to the disk, if they did not open
3744 the device in exclusive mode as they should.
3745
3746 * systemd-networkd does not create a default route for IPv4 link local
3747 addressing anymore. The creation of the route was unexpected and was
3748 breaking routing in various cases, but people who rely on it being
3749 created implicitly will need to adjust. Such a route may be requested
3750 with DefaultRouteOnDevice=yes.
3751
3752 Similarly, systemd-networkd will not assign a link-local IPv6 address
3753 when IPv6 link-local routing is not enabled.
3754
3755 * Receive and transmit buffers may now be configured on links with
3756 the new RxBufferSize= and TxBufferSize= settings.
3757
3758 * systemd-networkd may now advertise additional IPv6 routes. A new
3759 [IPv6RoutePrefix] section with Route= and LifetimeSec= options is
3760 now supported.
3761
3762 * systemd-networkd may now configure "next hop" routes using the
3763 [NextHop] section and Gateway= and Id= settings.
3764
3765 * systemd-networkd will now retain DHCP config on restarts by default
3766 (but this may be overridden using the KeepConfiguration= setting).
3767 The default for SendRelease= has been changed to true.
3768
3769 * The DHCPv4 client now uses the OPTION_INFORMATION_REFRESH_TIME option
3770 received from the server.
3771
3772 The client will use the received SIP server list if UseSIP=yes is
3773 set.
3774
3775 The client may be configured to request specific options from the
3776 server using a new RequestOptions= setting.
3777
3778 The client may be configured to send arbitrary options to the server
3779 using a new SendOption= setting.
3780
3781 A new IPServiceType= setting has been added to configure the "IP
3782 service type" value used by the client.
3783
3784 * The DHCPv6 client learnt a new PrefixDelegationHint= option to
3785 request prefix hints in the DHCPv6 solicitation.
3786
3787 * The DHCPv4 server may be configured to send arbitrary options using
3788 a new SendOption= setting.
3789
3790 * The DHCPv4 server may now be configured to emit SIP server list using
3791 the new EmitSIP= and SIP= settings.
3792
3793 * systemd-networkd and networkctl may now renew DHCP leases on demand.
3794 networkctl has a new 'networkctl renew' verb.
3795
3796 * systemd-networkd may now reconfigure links on demand. networkctl
3797 gained two new verbs: "reload" will reload the configuration, and
3798 "reconfigure DEVICE…" will reconfigure one or more devices.
3799
3800 * .network files may now match on SSID and BSSID of a wireless network,
3801 i.e. the access point name and hardware address using the new SSID=
3802 and BSSID= options. networkctl will display the current SSID and
3803 BSSID for wireless links.
3804
3805 .network files may also match on the wireless network type using the
3806 new WLANInterfaceType= option.
3807
3808 * systemd-networkd now includes default configuration that enables
3809 link-local addressing when connected to an ad-hoc wireless network.
3810
3811 * systemd-networkd may configure the Traffic Control queueing
3812 disciplines in the kernel using the new
3813 [TrafficControlQueueingDiscipline] section and Parent=,
3814 NetworkEmulatorDelaySec=, NetworkEmulatorDelayJitterSec=,
3815 NetworkEmulatorPacketLimit=, NetworkEmulatorLossRate=,
3816 NetworkEmulatorDuplicateRate= settings.
3817
3818 * systemd-tmpfiles gained a new w+ setting to append to files.
3819
3820 * systemd-analyze dump will now report when the memory configuration in
3821 the kernel does not match what systemd has configured (usually,
3822 because some external program has modified the kernel configuration
3823 on its own).
3824
3825 * systemd-analyze gained a new --base-time= switch instructs the
3826 'calendar' verb to resolve times relative to that timestamp instead
3827 of the present time.
3828
3829 * journalctl --update-catalog now produces deterministic output (making
3830 reproducible image builds easier).
3831
3832 * A new devicetree-overlay setting is now documented in the Boot Loader
3833 Specification.
3834
3835 * The default value of the WatchdogSec= setting used in systemd
3836 services (the ones bundled with the project itself) may be set at
3837 configuration time using the -Dservice-watchdog= setting. If set to
3838 empty, the watchdogs will be disabled.
3839
3840 * systemd-resolved validates IP addresses in certificates now when GnuTLS
3841 is being used.
3842
3843 * libcryptsetup >= 2.0.1 is now required.
3844
3845 * A configuration option -Duser-path= may be used to override the $PATH
3846 used by the user service manager. The default is again to use the same
3847 path as the system manager.
3848
3849 * The systemd-id128 tool gained a new switch "-u" (or "--uuid") for
3850 outputting the 128bit IDs in UUID format (i.e. in the "canonical
3851 representation").
3852
3853 * Service units gained a new sandboxing option ProtectKernelLogs= which
3854 makes sure the program cannot get direct access to the kernel log
3855 buffer anymore, i.e. the syslog() system call (not to be confused
3856 with the API of the same name in libc, which is not affected), the
3857 /proc/kmsg and /dev/kmsg nodes and the CAP_SYSLOG capability are made
3858 inaccessible to the service. It's recommended to enable this setting
3859 for all services that should not be able to read from or write to the
3860 kernel log buffer, which are probably almost all.
3861
3862 Contributions from: Aaron Plattner, Alcaro, Anita Zhang, Balint Reczey,
3863 Bastien Nocera, Baybal Ni, Benjamin Bouvier, Benjamin Gilbert, Carlo
3864 Teubner, cbzxt, Chen Qi, Chris Down, Christian Rebischke, Claudio
3865 Zumbo, ClydeByrdIII, crashfistfight, Cyprien Laplace, Daniel Edgecumbe,
3866 Daniel Gorbea, Daniel Rusek, Daniel Stuart, Dan Streetman, David
3867 Pedersen, David Tardon, Dimitri John Ledkov, Dominique Martinet, Donald
3868 A. Cupp Jr, Evgeny Vereshchagin, Fabian Henneke, Filipe Brandenburger,
3869 Franck Bui, Frantisek Sumsal, Georg Müller, Hans de Goede, Haochen
3870 Tong, HATAYAMA Daisuke, Iwan Timmer, Jan Janssen, Jan Kundrát, Jan
3871 Synacek, Jan Tojnar, Jay Strict, Jérémy Rosen, Jóhann B. Guðmundsson,
3872 Jonas Jelten, Jonas Thelemann, Justin Trudell, J. Xing, Kai-Heng Feng,
3873 Kenneth D'souza, Kevin Becker, Kevin Kuehler, Lennart Poettering,
3874 Léonard Gérard, Lorenz Bauer, Luca Boccassi, Maciej Stanczew, Mario
3875 Limonciello, Marko Myllynen, Mark Stosberg, Martin Wilck, matthiasroos,
3876 Michael Biebl, Michael Olbrich, Michael Tretter, Michal Sekletar,
3877 Michal Sekletár, Michal Suchanek, Mike Gilbert, Mike Kazantsev, Nicolas
3878 Douma, nikolas, Norbert Lange, pan93412, Pascal de Bruijn, Paul Menzel,
3879 Pavel Hrdina, Peter Wu, Philip Withnall, Piotr Drąg, Rafael Fontenelle,
3880 Renaud Métrich, Riccardo Schirone, RoadrunnerWMC, Ronan Pigott, Ryan
3881 Attard, Sebastian Wick, Serge, Siddharth Chandrasekara, Steve Ramage,
3882 Steve Traylen, Susant Sahani, Thibault Nélis, Tim Teichmann, Tom
3883 Fitzhenry, Tommy J, Torsten Hilbrich, Vito Caputo, ypf791, Yu Watanabe,
3884 Zach Smith, Zbigniew Jędrzejewski-Szmek
3885
3886 – Warsaw, 2019-11-29
3887
3888 CHANGES WITH 243:
3889
3890 * This release enables unprivileged programs (i.e. requiring neither
3891 setuid nor file capabilities) to send ICMP Echo (i.e. ping) requests
3892 by turning on the "net.ipv4.ping_group_range" sysctl of the Linux
3893 kernel for the whole UNIX group range, i.e. all processes. This
3894 change should be reasonably safe, as the kernel support for it was
3895 specifically implemented to allow safe access to ICMP Echo for
3896 processes lacking any privileges. If this is not desirable, it can be
3897 disabled again by setting the parameter to "1 0".
3898
3899 * Previously, filters defined with SystemCallFilter= would have the
3900 effect that any calling of an offending system call would terminate
3901 the calling thread. This behaviour never made much sense, since
3902 killing individual threads of unsuspecting processes is likely to
3903 create more problems than it solves. With this release the default
3904 action changed from killing the thread to killing the whole
3905 process. For this to work correctly both a kernel version (>= 4.14)
3906 and a libseccomp version (>= 2.4.0) supporting this new seccomp
3907 action is required. If an older kernel or libseccomp is used the old
3908 behaviour continues to be used. This change does not affect any
3909 services that have no system call filters defined, or that use
3910 SystemCallErrorNumber= (and thus see EPERM or another error instead
3911 of being killed when calling an offending system call). Note that
3912 systemd documentation always claimed that the whole process is
3913 killed. With this change behaviour is thus adjusted to match the
3914 documentation.
3915
3916 * On 64 bit systems, the "kernel.pid_max" sysctl is now bumped to
3917 4194304 by default, i.e. the full 22bit range the kernel allows, up
3918 from the old 16bit range. This should improve security and
3919 robustness, as PID collisions are made less likely (though certainly
3920 still possible). There are rumours this might create compatibility
3921 problems, though at this moment no practical ones are known to
3922 us. Downstream distributions are hence advised to undo this change in
3923 their builds if they are concerned about maximum compatibility, but
3924 for everybody else we recommend leaving the value bumped. Besides
3925 improving security and robustness this should also simplify things as
3926 the maximum number of allowed concurrent tasks was previously bounded
3927 by both "kernel.pid_max" and "kernel.threads-max" and now effectively
3928 only a single knob is left ("kernel.threads-max"). There have been
3929 concerns that usability is affected by this change because larger PID
3930 numbers are harder to type, but we believe the change from 5 digits
3931 to 7 digits doesn't hamper usability.
3932
3933 * MemoryLow= and MemoryMin= gained hierarchy-aware counterparts,
3934 DefaultMemoryLow= and DefaultMemoryMin=, which can be used to
3935 hierarchically set default memory protection values for a particular
3936 subtree of the unit hierarchy.
3937
3938 * Memory protection directives can now take a value of zero, allowing
3939 explicit opting out of a default value propagated by an ancestor.
3940
3941 * systemd now defaults to the "unified" cgroup hierarchy setup during
3942 build-time, i.e. -Ddefault-hierarchy=unified is now the build-time
3943 default. Previously, -Ddefault-hierarchy=hybrid was the default. This
3944 change reflects the fact that cgroupsv2 support has matured
3945 substantially in both systemd and in the kernel, and is clearly the
3946 way forward. Downstream production distributions might want to
3947 continue to use -Ddefault-hierarchy=hybrid (or even =legacy) for
3948 their builds as unfortunately the popular container managers have not
3949 caught up with the kernel API changes.
3950
3951 * Man pages are not built by default anymore (html pages were already
3952 disabled by default), to make development builds quicker. When
3953 building systemd for a full installation with documentation, meson
3954 should be called with -Dman=true and/or -Dhtml=true as appropriate.
3955 The default was changed based on the assumption that quick one-off or
3956 repeated development builds are much more common than full optimized
3957 builds for installation, and people need to pass various other
3958 options to when doing "proper" builds anyway, so the gain from making
3959 development builds quicker is bigger than the one time disruption for
3960 packagers.
3961
3962 Two scripts are created in the *build* directory to generate and
3963 preview man and html pages on demand, e.g.:
3964
3965 build/man/man systemctl
3966 build/man/html systemd.index
3967
3968 * libidn2 is used by default if both libidn2 and libidn are installed.
3969 Please use -Dlibidn=true if libidn is preferred.
3970
3971 * The D-Bus "wire format" of the CPUAffinity= attribute is changed on
3972 big-endian machines. Before, bytes were written and read in native
3973 machine order as exposed by the native libc __cpu_mask interface.
3974 Now, little-endian order is always used (CPUs 0–7 are described by
3975 bits 0–7 in byte 0, CPUs 8–15 are described by byte 1, and so on).
3976 This change fixes D-Bus calls that cross endianness boundary.
3977
3978 The presentation format used for CPUAffinity= by "systemctl show" and
3979 "systemd-analyze dump" is changed to present CPU indices instead of
3980 the raw __cpu_mask bitmask. For example, CPUAffinity=0-1 would be
3981 shown as CPUAffinity=03000000000000000000000000000… (on
3982 little-endian) or CPUAffinity=00000000000000300000000000000… (on
3983 64-bit big-endian), and is now shown as CPUAffinity=0-1, matching the
3984 input format. The maximum integer that will be printed in the new
3985 format is 8191 (four digits), while the old format always used a very
3986 long number (with the length varying by architecture), so they can be
3987 unambiguously distinguished.
3988
3989 * /usr/sbin/halt.local is no longer supported. Implementation in
3990 distributions was inconsistent and it seems this functionality was
3991 very rarely used.
3992
3993 To replace this functionality, users should:
3994 - either define a new unit and make it a dependency of final.target
3995 (systemctl add-wants final.target my-halt-local.service)
3996 - or move the shutdown script to /usr/lib/systemd/system-shutdown/
3997 and ensure that it accepts "halt", "poweroff", "reboot", and
3998 "kexec" as an argument, see the description in systemd-shutdown(8).
3999
4000 * When a [Match] section in .link or .network file is empty (contains
4001 no match patterns), a warning will be emitted. Please add any "match
4002 all" pattern instead, e.g. OriginalName=* or Name=* in case all
4003 interfaces should really be matched.
4004
4005 * A new setting NUMAPolicy= may be used to set process memory
4006 allocation policy. This setting can be specified in
4007 /etc/systemd/system.conf and hence will set the default policy for
4008 PID1. The default policy can be overridden on a per-service
4009 basis. The related setting NUMAMask= is used to specify NUMA node
4010 mask that should be associated with the selected policy.
4011
4012 * PID 1 will now listen to Out-Of-Memory (OOM) events the kernel
4013 generates when processes it manages are reaching their memory limits,
4014 and will place their units in a special state, and optionally kill or
4015 stop the whole unit.
4016
4017 * The service manager will now expose bus properties for the IO
4018 resources used by units. This information is also shown in "systemctl
4019 status" now (for services that have IOAccounting=yes set). Moreover,
4020 the IO accounting data is included in the resource log message
4021 generated whenever a unit stops.
4022
4023 * Units may now configure an explicit timeout to wait for when killed
4024 with SIGABRT, for example when a service watchdog is hit. Previously,
4025 the regular TimeoutStopSec= timeout was applied in this case too —
4026 now a separate timeout may be set using TimeoutAbortSec=.
4027
4028 * Services may now send a special WATCHDOG=trigger message with
4029 sd_notify() to trigger an immediate "watchdog missed" event, and thus
4030 trigger service termination. This is useful both for testing watchdog
4031 handling, but also for defining error paths in services, that shall
4032 be handled the same way as watchdog events.
4033
4034 * There are two new per-unit settings IPIngressFilterPath= and
4035 IPEgressFilterPath= which allow configuration of a BPF program
4036 (usually by specifying a path to a program uploaded to /sys/fs/bpf/)
4037 to apply to the IP packet ingress/egress path of all processes of a
4038 unit. This is useful to allow running systemd services with BPF
4039 programs set up externally.
4040
4041 * systemctl gained a new "clean" verb for removing the state, cache,
4042 runtime or logs directories of a service while it is terminated. The
4043 new verb may also be used to remove the state maintained on disk for
4044 timer units that have Persistent= configured.
4045
4046 * During the last phase of shutdown systemd will now automatically
4047 increase the log level configured in the "kernel.printk" sysctl so
4048 that any relevant loggable events happening during late shutdown are
4049 made visible. Previously, loggable events happening so late during
4050 shutdown were generally lost if the "kernel.printk" sysctl was set to
4051 high thresholds, as regular logging daemons are terminated at that
4052 time and thus nothing is written to disk.
4053
4054 * If processes terminated during the last phase of shutdown do not exit
4055 quickly systemd will now show their names after a short time, to make
4056 debugging easier. After a longer timeout they are forcibly killed,
4057 as before.
4058
4059 * journalctl (and the other tools that display logs) will now highlight
4060 warnings in yellow (previously, both LOG_NOTICE and LOG_WARNING where
4061 shown in bright bold, now only LOG_NOTICE is). Moreover, audit logs
4062 are now shown in blue color, to separate them visually from regular
4063 logs. References to configuration files are now turned into clickable
4064 links on terminals that support that.
4065
4066 * systemd-journald will now stop logging to /var/log/journal during
4067 shutdown when /var/ is on a separate mount, so that it can be
4068 unmounted safely during shutdown.
4069
4070 * systemd-resolved gained support for a new 'strict' DNS-over-TLS mode.
4071
4072 * systemd-resolved "Cache=" configuration option in resolved.conf has
4073 been extended to also accept the 'no-negative' value. Previously,
4074 only a boolean option was allowed (yes/no), having yes as the
4075 default. If this option is set to 'no-negative', negative answers are
4076 not cached while the old cache heuristics are used positive answers.
4077 The default remains unchanged.
4078
4079 * The predictable naming scheme for network devices now supports
4080 generating predictable names for "netdevsim" devices.
4081
4082 Moreover, the "en" prefix was dropped from the ID_NET_NAME_ONBOARD
4083 udev property.
4084
4085 Those two changes form a new net.naming-policy-scheme= entry.
4086 Distributions which want to preserve naming stability may want to set
4087 the -Ddefault-net-naming-scheme= configuration option.
4088
4089 * systemd-networkd now supports MACsec, nlmon, IPVTAP and Xfrm
4090 interfaces natively.
4091
4092 * systemd-networkd's bridge FDB support now allows configuration of a
4093 destination address for each entry (Destination=), as well as the
4094 VXLAN VNI (VNI=), as well as an option to declare what an entry is
4095 associated with (AssociatedWith=).
4096
4097 * systemd-networkd's DHCPv4 support now understands a new MaxAttempts=
4098 option for configuring the maximum number of DHCP lease requests. It
4099 also learnt a new BlackList= option for deny-listing DHCP servers (a
4100 similar setting has also been added to the IPv6 RA client), as well
4101 as a SendRelease= option for configuring whether to send a DHCP
4102 RELEASE message when terminating.
4103
4104 * systemd-networkd's DHCPv4 and DHCPv6 stacks can now be configured
4105 separately in the [DHCPv4] and [DHCPv6] sections.
4106
4107 * systemd-networkd's DHCP support will now optionally create an
4108 implicit host route to the DNS server specified in the DHCP lease, in
4109 addition to the routes listed explicitly in the lease. This should
4110 ensure that in multi-homed systems DNS traffic leaves the systems on
4111 the interface that acquired the DNS server information even if other
4112 routes such as default routes exist. This behaviour may be turned on
4113 with the new RoutesToDNS= option.
4114
4115 * systemd-networkd's VXLAN support gained a new option
4116 GenericProtocolExtension= for enabling VXLAN Generic Protocol
4117 Extension support, as well as IPDoNotFragment= for setting the IP
4118 "Don't fragment" bit on outgoing packets. A similar option has been
4119 added to the GENEVE support.
4120
4121 * In systemd-networkd's [Route] section you may now configure
4122 FastOpenNoCookie= for configuring per-route TCP fast-open support, as
4123 well as TTLPropagate= for configuring Label Switched Path (LSP) TTL
4124 propagation. The Type= setting now supports local, broadcast,
4125 anycast, multicast, any, xresolve routes, too.
4126
4127 * systemd-networkd's [Network] section learnt a new option
4128 DefaultRouteOnDevice= for automatically configuring a default route
4129 onto the network device.
4130
4131 * systemd-networkd's bridging support gained two new options ProxyARP=
4132 and ProxyARPWifi= for configuring proxy ARP behaviour as well as
4133 MulticastRouter= for configuring multicast routing behaviour. A new
4134 option MulticastIGMPVersion= may be used to change bridge's multicast
4135 Internet Group Management Protocol (IGMP) version.
4136
4137 * systemd-networkd's FooOverUDP support gained the ability to configure
4138 local and peer IP addresses via Local= and Peer=. A new option
4139 PeerPort= may be used to configure the peer's IP port.
4140
4141 * systemd-networkd's TUN support gained a new setting VnetHeader= for
4142 tweaking Generic Segment Offload support.
4143
4144 * The address family for policy rules may be specified using the new
4145 Family= option in the [RoutingPolicyRule] section.
4146
4147 * networkctl gained a new "delete" command for removing virtual network
4148 devices, as well as a new "--stats" switch for showing device
4149 statistics.
4150
4151 * networkd.conf gained a new setting SpeedMeter= and
4152 SpeedMeterIntervalSec=, to measure bitrate of network interfaces. The
4153 measured speed may be shown by 'networkctl status'.
4154
4155 * "networkctl status" now displays MTU and queue lengths, and more
4156 detailed information about VXLAN and bridge devices.
4157
4158 * systemd-networkd's .network and .link files gained a new Property=
4159 setting in the [Match] section, to match against devices with
4160 specific udev properties.
4161
4162 * systemd-networkd's tunnel support gained a new option
4163 AssignToLoopback= for selecting whether to use the loopback device
4164 "lo" as underlying device.
4165
4166 * systemd-networkd's MACAddress= setting in the [Neighbor] section has
4167 been renamed to LinkLayerAddress=, and it now allows configuration of
4168 IP addresses, too.
4169
4170 * systemd-networkd's handling of the kernel's disable_ipv6 sysctl is
4171 simplified: systemd-networkd will disable the sysctl (enable IPv6) if
4172 IPv6 configuration (static or DHCPv6) was found for a given
4173 interface. It will not touch the sysctl otherwise.
4174
4175 * The order of entries is $PATH used by the user manager instance was
4176 changed to put bin/ entries before the corresponding sbin/ entries.
4177 It is recommended to not rely on this order, and only ever have one
4178 binary with a given name in the system paths under /usr.
4179
4180 * A new tool systemd-network-generator has been added that may generate
4181 .network, .netdev and .link files from IP configuration specified on
4182 the kernel command line in the format used by Dracut.
4183
4184 * The CriticalConnection= setting in .network files is now deprecated,
4185 and replaced by a new KeepConfiguration= setting which allows more
4186 detailed configuration of the IP configuration to keep in place.
4187
4188 * systemd-analyze gained a few new verbs:
4189
4190 - "systemd-analyze timestamp" parses and converts timestamps. This is
4191 similar to the existing "systemd-analyze calendar" command which
4192 does the same for recurring calendar events.
4193
4194 - "systemd-analyze timespan" parses and converts timespans (i.e.
4195 durations as opposed to points in time).
4196
4197 - "systemd-analyze condition" will parse and test ConditionXYZ=
4198 expressions.
4199
4200 - "systemd-analyze exit-status" will parse and convert exit status
4201 codes to their names and back.
4202
4203 - "systemd-analyze unit-files" will print a list of all unit
4204 file paths and unit aliases.
4205
4206 * SuccessExitStatus=, RestartPreventExitStatus=, and
4207 RestartForceExitStatus= now accept exit status names (e.g. "DATAERR"
4208 is equivalent to "65"). Those exit status name mappings may be
4209 displayed with the systemd-analyze exit-status verb describe above.
4210
4211 * systemd-logind now exposes a per-session SetBrightness() bus call,
4212 which may be used to securely change the brightness of a kernel
4213 brightness device, if it belongs to the session's seat. By using this
4214 call unprivileged clients can make changes to "backlight" and "leds"
4215 devices securely with strict requirements on session membership.
4216 Desktop environments may use this to generically make brightness
4217 changes to such devices without shipping private SUID binaries or
4218 udev rules for that purpose.
4219
4220 * "udevadm info" gained a --wait-for-initialization switch to wait for
4221 a device to be initialized.
4222
4223 * systemd-hibernate-resume-generator will now look for resumeflags= on
4224 the kernel command line, which is similar to rootflags= and may be
4225 used to configure device timeout for the hibernation device.
4226
4227 * sd-event learnt a new API call sd_event_source_disable_unref() for
4228 disabling and unref'ing an event source in a single function. A
4229 related call sd_event_source_disable_unrefp() has been added for use
4230 with gcc's cleanup extension.
4231
4232 * The sd-id128.h public API gained a new definition
4233 SD_ID128_UUID_FORMAT_STR for formatting a 128bit ID in UUID format
4234 with printf().
4235
4236 * "busctl introspect" gained a new switch --xml-interface for dumping
4237 XML introspection data unmodified.
4238
4239 * PID 1 may now show the unit name instead of the unit description
4240 string in its status output during boot. This may be configured in
4241 the StatusUnitFormat= setting in /etc/systemd/system.conf or the
4242 kernel command line option systemd.status_unit_format=.
4243
4244 * PID 1 now understands a new option KExecWatchdogSec= in
4245 /etc/systemd/system.conf to set a watchdog timeout for kexec reboots.
4246 Previously watchdog functionality was only available for regular
4247 reboots. The new setting defaults to off, because we don't know in
4248 the general case if the watchdog will be reset after kexec (some
4249 drivers do reset it, but not all), and the new userspace might not be
4250 configured to handle the watchdog.
4251
4252 Moreover, the old ShutdownWatchdogSec= setting has been renamed to
4253 RebootWatchdogSec= to more clearly communicate what it is about. The
4254 old name is still accepted for compatibility.
4255
4256 * The systemd.debug_shell kernel command line option now optionally
4257 takes a tty name to spawn the debug shell on, which allows a
4258 different tty to be selected than the built-in default.
4259
4260 * Service units gained a new ExecCondition= setting which will run
4261 before ExecStartPre= and either continue execution of the unit (for
4262 clean exit codes), stop execution without marking the unit failed
4263 (for exit codes 1 through 254), or stop execution and fail the unit
4264 (for exit code 255 or abnormal termination).
4265
4266 * A new service systemd-pstore.service has been added that pulls data
4267 from /sys/fs/pstore/ and saves it to /var/lib/pstore for later
4268 review.
4269
4270 * timedatectl gained new verbs for configuring per-interface NTP
4271 service configuration for systemd-timesyncd.
4272
4273 * "localectl list-locales" won't list non-UTF-8 locales anymore. It's
4274 2019. (You can set non-UTF-8 locales though, if you know their name.)
4275
4276 * If variable assignments in sysctl.d/ files are prefixed with "-" any
4277 failures to apply them are now ignored.
4278
4279 * systemd-random-seed.service now optionally credits entropy when
4280 applying the seed to the system. Set $SYSTEMD_RANDOM_SEED_CREDIT to
4281 true for the service to enable this behaviour, but please consult the
4282 documentation first, since this comes with a couple of caveats.
4283
4284 * systemd-random-seed.service is now a synchronization point for full
4285 initialization of the kernel's entropy pool. Services that require
4286 /dev/urandom to be correctly initialized should be ordered after this
4287 service.
4288
4289 * The systemd-boot boot loader has been updated to optionally maintain
4290 a random seed file in the EFI System Partition (ESP). During the boot
4291 phase, this random seed is read and updated with a new seed
4292 cryptographically derived from it. Another derived seed is passed to
4293 the OS. The latter seed is then credited to the kernel's entropy pool
4294 very early during userspace initialization (from PID 1). This allows
4295 systems to boot up with a fully initialized kernel entropy pool from
4296 earliest boot on, and thus entirely removes all entropy pool
4297 initialization delays from systems using systemd-boot. Special care
4298 is taken to ensure different seeds are derived on system images
4299 replicated to multiple systems. "bootctl status" will show whether
4300 a seed was received from the boot loader.
4301
4302 * bootctl gained two new verbs:
4303
4304 - "bootctl random-seed" will generate the file in ESP and an EFI
4305 variable to allow a random seed to be passed to the OS as described
4306 above.
4307
4308 - "bootctl is-installed" checks whether systemd-boot is currently
4309 installed.
4310
4311 * bootctl will warn if it detects that boot entries are misconfigured
4312 (for example if the kernel image was removed without purging the
4313 bootloader entry).
4314
4315 * A new document has been added describing systemd's use and support
4316 for the kernel's entropy pool subsystem:
4317
4318 https://systemd.io/RANDOM_SEEDS
4319
4320 * When the system is hibernated the swap device to write the
4321 hibernation image to is now automatically picked from all available
4322 swap devices, preferring the swap device with the highest configured
4323 priority over all others, and picking the device with the most free
4324 space if there are multiple devices with the highest priority.
4325
4326 * /etc/crypttab support has learnt a new keyfile-timeout= per-device
4327 option that permits selecting the timeout how long to wait for a
4328 device with an encryption key before asking for the password.
4329
4330 * IOWeight= has learnt to properly set the IO weight when using the
4331 BFQ scheduler officially found in kernels 5.0+.
4332
4333 * A new mailing list has been created for reporting of security issues:
4334 systemd-security@redhat.com. For mode details, see
4335 https://systemd.io/CONTRIBUTING#security-vulnerability-reports.
4336
4337 Contributions from: Aaron Barany, Adrian Bunk, Alan Jenkins, Albrecht
4338 Lohofener, Andrej Valek, Anita Zhang, Arian van Putten, Balint Reczey,
4339 Bastien Nocera, Ben Boeckel, Benjamin Robin, camoz, Chen Qi, Chris
4340 Chiu, Chris Down, Christian Göttsche, Christian Kellner, Clinton Roy,
4341 Connor Reeder, Daniel Black, Daniel Lublin, Daniele Medri, Dan
4342 Streetman, Dave Reisner, Dave Ross, David Art, David Tardon, Debarshi
4343 Ray, Dimitri John Ledkov, Dominick Grift, Donald Buczek, Douglas
4344 Christman, Eric DeVolder, EtherGraf, Evgeny Vereshchagin, Feldwor,
4345 Felix Riemann, Florian Dollinger, Francesco Pennica, Franck Bui,
4346 Frantisek Sumsal, Franz Pletz, frederik, Hans de Goede, Iago López
4347 Galeiras, Insun Pyo, Ivan Shapovalov, Iwan Timmer, Jack, Jakob
4348 Unterwurzacher, Jan Chren, Jan Klötzke, Jan Losinski, Jan Pokorný, Jan
4349 Synacek, Jan-Michael Brummer, Jeka Pats, Jeremy Soller, Jérémy Rosen,
4350 Jiri Pirko, Joe Lin, Joerg Behrmann, Joe Richey, Jóhann B. Guðmundsson,
4351 Johannes Christ, Johannes Schmitz, Jonathan Rouleau, Jorge Niedbalski,
4352 Jörg Thalheim, Kai Krakow, Kai Lüke, Karel Zak, Kashyap Chamarthy,
4353 Krayushkin Konstantin, Lennart Poettering, Lubomir Rintel, Luca
4354 Boccassi, Luís Ferreira, Marc-André Lureau, Markus Felten, Martin Pitt,
4355 Matthew Leeds, Mattias Jernberg, Michael Biebl, Michael Olbrich,
4356 Michael Prokop, Michael Stapelberg, Michael Zhivich, Michal Koutný,
4357 Michal Sekletar, Mike Gilbert, Milan Broz, Miroslav Lichvar, mpe85,
4358 Mr-Foo, Network Silence, Oliver Harley, pan93412, Paul Menzel, pEJipE,
4359 Peter A. Bigot, Philip Withnall, Piotr Drąg, Rafael Fontenelle, Robert
4360 Scheck, Roberto Santalla, Ronan Pigott, root, RussianNeuroMancer,
4361 Sebastian Jennen, shinygold, Shreyas Behera, Simon Schricker, Susant
4362 Sahani, Thadeu Lima de Souza Cascardo, Theo Ouzhinski, Thiebaud
4363 Weksteen, Thomas Haller, Thomas Weißschuh, Tomas Mraz, Tommi Rantala,
4364 Topi Miettinen, VD-Lycos, ven, Vladimir Yerilov, Wieland Hoffmann,
4365 William A. Kennington III, William Wold, Xi Ruoyao, Yuri Chornoivan,
4366 Yu Watanabe, Zach Smith, Zbigniew Jędrzejewski-Szmek, Zhang Xianwei
4367
4368 – Camerino, 2019-09-03
4369
4370 CHANGES WITH 242:
4371
4372 * In .link files, MACAddressPolicy=persistent (the default) is changed
4373 to cover more devices. For devices like bridges, tun, tap, bond, and
4374 similar interfaces that do not have other identifying information,
4375 the interface name is used as the basis for persistent seed for MAC
4376 and IPv4LL addresses. The way that devices that were handled
4377 previously is not changed, and this change is about covering more
4378 devices then previously by the "persistent" policy.
4379
4380 MACAddressPolicy=random may be used to force randomized MACs and
4381 IPv4LL addresses for a device if desired.
4382
4383 Hint: the log output from udev (at debug level) was enhanced to
4384 clarify what policy is followed and which attributes are used.
4385 `SYSTEMD_LOG_LEVEL=debug udevadm test-builtin net_setup_link /sys/class/net/<name>`
4386 may be used to view this.
4387
4388 Hint: if a bridge interface is created without any slaves, and gains
4389 a slave later, then now the bridge does not inherit slave's MAC.
4390 To inherit slave's MAC, for example, create the following file:
4391 ```
4392 # /etc/systemd/network/98-bridge-inherit-mac.link
4393 [Match]
4394 Type=bridge
4395
4396 [Link]
4397 MACAddressPolicy=none
4398 ```
4399
4400 * The .device units generated by systemd-fstab-generator and other
4401 generators do not automatically pull in the corresponding .mount unit
4402 as a Wants= dependency. This means that simply plugging in the device
4403 will not cause the mount unit to be started automatically. But please
4404 note that the mount unit may be started for other reasons, in
4405 particular if it is part of local-fs.target, and any unit which
4406 (transitively) depends on local-fs.target is started.
4407
4408 * networkctl list/status/lldp now accept globbing wildcards for network
4409 interface names to match against all existing interfaces.
4410
4411 * The $PIDFILE environment variable is set to point the absolute path
4412 configured with PIDFile= for processes of that service.
4413
4414 * The fallback DNS server list was augmented with Cloudflare public DNS
4415 servers. Use `-Ddns-servers=` to set a different fallback.
4416
4417 * A new special target usb-gadget.target will be started automatically
4418 when a USB Device Controller is detected (which means that the system
4419 is a USB peripheral).
4420
4421 * A new unit setting CPUQuotaPeriodSec= assigns the time period
4422 relatively to which the CPU time quota specified by CPUQuota= is
4423 measured.
4424
4425 * A new unit setting ProtectHostname= may be used to prevent services
4426 from modifying hostname information (even if they otherwise would
4427 have privileges to do so).
4428
4429 * A new unit setting NetworkNamespacePath= may be used to specify a
4430 namespace for service or socket units through a path referring to a
4431 Linux network namespace pseudo-file.
4432
4433 * The PrivateNetwork= setting and JoinsNamespaceOf= dependencies now
4434 have an effect on .socket units: when used the listening socket is
4435 created within the configured network namespace instead of the host
4436 namespace.
4437
4438 * ExecStart= command lines in unit files may now be prefixed with ':'
4439 in which case environment variable substitution is
4440 disabled. (Supported for the other ExecXYZ= settings, too.)
4441
4442 * .timer units gained two new boolean settings OnClockChange= and
4443 OnTimezoneChange= which may be used to also trigger a unit when the
4444 system clock is changed or the local timezone is
4445 modified. systemd-run has been updated to make these options easily
4446 accessible from the command line for transient timers.
4447
4448 * Two new conditions for units have been added: ConditionMemory= may be
4449 used to conditionalize a unit based on installed system
4450 RAM. ConditionCPUs= may be used to conditionalize a unit based on
4451 installed CPU cores.
4452
4453 * The @default system call filter group understood by SystemCallFilter=
4454 has been updated to include the new rseq() system call introduced in
4455 kernel 4.15.
4456
4457 * A new time-set.target has been added that indicates that the system
4458 time has been set from a local source (possibly imprecise). The
4459 existing time-sync.target is stronger and indicates that the time has
4460 been synchronized with a precise external source. Services where
4461 approximate time is sufficient should use the new target.
4462
4463 * "systemctl start" (and related commands) learnt a new
4464 --show-transaction option. If specified brief information about all
4465 jobs queued because of the requested operation is shown.
4466
4467 * systemd-networkd recognizes a new operation state 'enslaved', used
4468 (instead of 'degraded' or 'carrier') for interfaces which form a
4469 bridge, bond, or similar, and an new 'degraded-carrier' operational
4470 state used for the bond or bridge master interface when one of the
4471 enslaved devices is not operational.
4472
4473 * .network files learnt the new IgnoreCarrierLoss= option for leaving
4474 networks configured even if the carrier is lost.
4475
4476 * The RequiredForOnline= setting in .network files may now specify a
4477 minimum operational state required for the interface to be considered
4478 "online" by systemd-networkd-wait-online. Related to this
4479 systemd-networkd-wait-online gained a new option --operational-state=
4480 to configure the same, and its --interface= option was updated to
4481 optionally also take an operational state specific for an interface.
4482
4483 * systemd-networkd-wait-online gained a new setting --any for waiting
4484 for only one of the requested interfaces instead of all of them.
4485
4486 * systemd-networkd now implements L2TP tunnels.
4487
4488 * Two new .network settings UseAutonomousPrefix= and UseOnLinkPrefix=
4489 may be used to cause autonomous and onlink prefixes received in IPv6
4490 Router Advertisements to be ignored.
4491
4492 * New MulticastFlood=, NeighborSuppression=, and Learning= .network
4493 file settings may be used to tweak bridge behaviour.
4494
4495 * The new TripleSampling= option in .network files may be used to
4496 configure CAN triple sampling.
4497
4498 * A new .netdev settings PrivateKeyFile= and PresharedKeyFile= may be
4499 used to point to private or preshared key for a WireGuard interface.
4500
4501 * /etc/crypttab now supports the same-cpu-crypt and
4502 submit-from-crypt-cpus options to tweak encryption work scheduling
4503 details.
4504
4505 * systemd-tmpfiles will now take a BSD file lock before operating on a
4506 contents of directory. This may be used to temporarily exclude
4507 directories from aging by taking the same lock (useful for example
4508 when extracting a tarball into /tmp or /var/tmp as a privileged user,
4509 which might create files with really old timestamps, which
4510 nevertheless should not be deleted). For further details, see:
4511
4512 https://systemd.io/TEMPORARY_DIRECTORIES
4513
4514 * systemd-tmpfiles' h line type gained support for the
4515 FS_PROJINHERIT_FL ('P') file attribute (introduced in kernel 4.5),
4516 controlling project quota inheritance.
4517
4518 * sd-boot and bootctl now implement support for an Extended Boot Loader
4519 (XBOOTLDR) partition, that is intended to be mounted to /boot, in
4520 addition to the ESP partition mounted to /efi or /boot/efi.
4521 Configuration file fragments, kernels, initrds and other EFI images
4522 to boot will be loaded from both the ESP and XBOOTLDR partitions.
4523 The XBOOTLDR partition was previously described by the Boot Loader
4524 Specification, but implementation was missing in sd-boot. Support for
4525 this concept allows using the sd-boot boot loader in more
4526 conservative scenarios where the boot loader itself is placed in the
4527 ESP but the kernels to boot (and their metadata) in a separate
4528 partition.
4529
4530 * A system may now be booted with systemd.volatile=overlay on the
4531 kernel command line, which causes the root file system to be set up
4532 an overlayfs mount combining the root-only root directory with a
4533 writable tmpfs. In this setup, the underlying root device is not
4534 modified, and any changes are lost at reboot.
4535
4536 * Similar, systemd-nspawn can now boot containers with a volatile
4537 overlayfs root with the new --volatile=overlay switch.
4538
4539 * systemd-nspawn can now consume OCI runtime bundles using a new
4540 --oci-bundle= option. This implementation is fully usable, with most
4541 features in the specification implemented, but since this a lot of
4542 new code and functionality, this feature should most likely not
4543 be used in production yet.
4544
4545 * systemd-nspawn now supports various options described by the OCI
4546 runtime specification on the command-line and in .nspawn files:
4547 --inaccessible=/Inaccessible= may be used to mask parts of the file
4548 system tree, --console=/--pipe may be used to configure how standard
4549 input, output, and error are set up.
4550
4551 * busctl learned the `emit` verb to generate D-Bus signals.
4552
4553 * systemd-analyze cat-config may be used to gather and display
4554 configuration spread over multiple files, for example system and user
4555 presets, tmpfiles.d, sysusers.d, udev rules, etc.
4556
4557 * systemd-analyze calendar now takes an optional new parameter
4558 --iterations= which may be used to show a maximum number of iterations
4559 the specified expression will elapse next.
4560
4561 * The sd-bus C API gained support for naming method parameters in the
4562 introspection data.
4563
4564 * systemd-logind gained D-Bus APIs to specify the "reboot parameter"
4565 the reboot() system call expects.
4566
4567 * journalctl learnt a new --cursor-file= option that points to a file
4568 from which a cursor should be loaded in the beginning and to which
4569 the updated cursor should be stored at the end.
4570
4571 * ACRN hypervisor and Windows Subsystem for Linux (WSL) are now
4572 detected by systemd-detect-virt (and may also be used in
4573 ConditionVirtualization=).
4574
4575 * The behaviour of systemd-logind may now be modified with environment
4576 variables $SYSTEMD_REBOOT_TO_FIRMWARE_SETUP,
4577 $SYSTEMD_REBOOT_TO_BOOT_LOADER_MENU, and
4578 $SYSTEMD_REBOOT_TO_BOOT_LOADER_ENTRY. They cause logind to either
4579 skip the relevant operation completely (when set to false), or to
4580 create a flag file in /run/systemd (when set to true), instead of
4581 actually commencing the real operation when requested. The presence
4582 of /run/systemd/reboot-to-firmware-setup,
4583 /run/systemd/reboot-to-boot-loader-menu, and
4584 /run/systemd/reboot-to-boot-loader-entry, may be used by alternative
4585 boot loader implementations to replace some steps logind performs
4586 during reboot with their own operations.
4587
4588 * systemctl can be used to request a reboot into the boot loader menu
4589 or a specific boot loader entry with the new --boot-load-menu= and
4590 --boot-loader-entry= options to a reboot command. (This requires a
4591 boot loader that supports this, for example sd-boot.)
4592
4593 * kernel-install will no longer unconditionally create the output
4594 directory (e.g. /efi/<machine-id>/<kernel-version>) for boot loader
4595 snippets, but will do only if the machine-specific parent directory
4596 (i.e. /efi/<machine-id>/) already exists. bootctl has been modified
4597 to create this parent directory during sd-boot installation.
4598
4599 This makes it easier to use kernel-install with plugins which support
4600 a different layout of the bootloader partitions (for example grub2).
4601
4602 * During package installation (with `ninja install`), we would create
4603 symlinks for getty@tty1.service, systemd-networkd.service,
4604 systemd-networkd.socket, systemd-resolved.service,
4605 remote-cryptsetup.target, remote-fs.target,
4606 systemd-networkd-wait-online.service, and systemd-timesyncd.service
4607 in /etc, as if `systemctl enable` was called for those units, to make
4608 the system usable immediately after installation. Now this is not
4609 done anymore, and instead calling `systemctl preset-all` is
4610 recommended after the first installation of systemd.
4611
4612 * A new boolean sandboxing option RestrictSUIDSGID= has been added that
4613 is built on seccomp. When turned on creation of SUID/SGID files is
4614 prohibited.
4615
4616 * The NoNewPrivileges= and the new RestrictSUIDSGID= options are now
4617 implied if DynamicUser= is turned on for a service. This hardens
4618 these services, so that they neither can benefit from nor create
4619 SUID/SGID executables. This is a minor compatibility breakage, given
4620 that when DynamicUser= was first introduced SUID/SGID behaviour was
4621 unaffected. However, the security benefit of these two options is
4622 substantial, and the setting is still relatively new, hence we opted
4623 to make it mandatory for services with dynamic users.
4624
4625 Contributions from: Adam Jackson, Alexander Tsoy, Andrey Yashkin,
4626 Andrzej Pietrasiewicz, Anita Zhang, Balint Reczey, Beniamino Galvani,
4627 Ben Iofel, Benjamin Berg, Benjamin Dahlhoff, Chris, Chris Morin,
4628 Christopher Wong, Claudius Ellsel, Clemens Gruber, dana, Daniel Black,
4629 Davide Cavalca, David Michael, David Rheinsberg, emersion, Evgeny
4630 Vereshchagin, Filipe Brandenburger, Franck Bui, Frantisek Sumsal,
4631 Giacinto Cifelli, Hans de Goede, Hugo Kindel, Ignat Korchagin, Insun
4632 Pyo, Jan Engelhardt, Jonas Dorel, Jonathan Lebon, Jonathon Kowalski,
4633 Jörg Sommer, Jörg Thalheim, Jussi Pakkanen, Kai-Heng Feng, Lennart
4634 Poettering, Lubomir Rintel, Luís Ferreira, Martin Pitt, Matthias
4635 Klumpp, Michael Biebl, Michael Niewöhner, Michael Olbrich, Michal
4636 Sekletar, Mike Lothian, Paul Menzel, Piotr Drąg, Riccardo Schirone,
4637 Robin Elvedi, Roman Kulikov, Ronald Tschalär, Ross Burton, Ryan
4638 Gonzalez, Sebastian Krzyszkowiak, Stephane Chazelas, StKob, Susant
4639 Sahani, Sylvain Plantefève, Szabolcs Fruhwald, Taro Yamada, Theo
4640 Ouzhinski, Thomas Haller, Tobias Jungel, Tom Yan, Tony Asleson, Topi
4641 Miettinen, unixsysadmin, Van Laser, Vesa Jääskeläinen, Yu, Li-Yu,
4642 Yu Watanabe, Zbigniew Jędrzejewski-Szmek
4643
4644 — Warsaw, 2019-04-11
4645
4646 CHANGES WITH 241:
4647
4648 * The default locale can now be configured at compile time. Otherwise,
4649 a suitable default will be selected automatically (one of C.UTF-8,
4650 en_US.UTF-8, and C).
4651
4652 * The version string shown by systemd and other tools now includes the
4653 git commit hash when built from git. An override may be specified
4654 during compilation, which is intended to be used by distributions to
4655 include the package release information.
4656
4657 * systemd-cat can now filter standard input and standard error streams
4658 for different syslog priorities using the new --stderr-priority=
4659 option.
4660
4661 * systemd-journald and systemd-journal-remote reject entries which
4662 contain too many fields (CVE-2018-16865) and set limits on the
4663 process' command line length (CVE-2018-16864).
4664
4665 * $DBUS_SESSION_BUS_ADDRESS environment variable is set by pam_systemd
4666 again.
4667
4668 * A new network device NamePolicy "keep" is implemented for link files,
4669 and used by default in 99-default.link (the fallback configuration
4670 provided by systemd). With this policy, if the network device name
4671 was already set by userspace, the device will not be renamed again.
4672 This matches the naming scheme that was implemented before
4673 systemd-240. If naming-scheme < 240 is specified, the "keep" policy
4674 is also enabled by default, even if not specified. Effectively, this
4675 means that if naming-scheme >= 240 is specified, network devices will
4676 be renamed according to the configuration, even if they have been
4677 renamed already, if "keep" is not specified as the naming policy in
4678 the .link file. The 99-default.link file provided by systemd includes
4679 "keep" for backwards compatibility, but it is recommended for user
4680 installed .link files to *not* include it.
4681
4682 The "kernel" policy, which keeps kernel names declared to be
4683 "persistent", now works again as documented.
4684
4685 * kernel-install script now optionally takes the paths to one or more
4686 initrd files, and passes them to all plugins.
4687
4688 * The mincore() system call has been dropped from the @system-service
4689 system call filter group, as it is pretty exotic and may potentially
4690 used for side-channel attacks.
4691
4692 * -fPIE is dropped from compiler and linker options. Please specify
4693 -Db_pie=true option to meson to build position-independent
4694 executables. Note that the meson option is supported since meson-0.49.
4695
4696 * The fs.protected_regular and fs.protected_fifos sysctls, which were
4697 added in Linux 4.19 to make some data spoofing attacks harder, are
4698 now enabled by default. While this will hopefully improve the
4699 security of most installations, it is technically a backwards
4700 incompatible change; to disable these sysctls again, place the
4701 following lines in /etc/sysctl.d/60-protected.conf or a similar file:
4702
4703 fs.protected_regular = 0
4704 fs.protected_fifos = 0
4705
4706 Note that the similar hardlink and symlink protection has been
4707 enabled since v199, and may be disabled likewise.
4708
4709 * The files read from the EnvironmentFile= setting in unit files now
4710 parse backslashes inside quotes literally, matching the behaviour of
4711 POSIX shells.
4712
4713 * udevadm trigger, udevadm control, udevadm settle and udevadm monitor
4714 now automatically become NOPs when run in a chroot() environment.
4715
4716 * The tmpfiles.d/ "C" line type will now copy directory trees not only
4717 when the destination is so far missing, but also if it already exists
4718 as a directory and is empty. This is useful to cater for systems
4719 where directory trees are put together from multiple separate mount
4720 points but otherwise empty.
4721
4722 * A new function sd_bus_close_unref() (and the associated
4723 sd_bus_close_unrefp()) has been added to libsystemd, that combines
4724 sd_bus_close() and sd_bus_unref() in one.
4725
4726 * udevadm control learnt a new option for --ping for testing whether a
4727 systemd-udevd instance is running and reacting.
4728
4729 * udevadm trigger learnt a new option for --wait-daemon for waiting
4730 systemd-udevd daemon to be initialized.
4731
4732 Contributions from: Aaron Plattner, Alberts Muktupāvels, Alex Mayer,
4733 Ayman Bagabas, Beniamino Galvani, Burt P, Chris Down, Chris Lamb, Chris
4734 Morin, Christian Hesse, Claudius Ellsel, dana, Daniel Axtens, Daniele
4735 Medri, Dave Reisner, David Santamaría Rogado, Diego Canuhe, Dimitri
4736 John Ledkov, Evgeny Vereshchagin, Fabrice Fontaine, Filipe
4737 Brandenburger, Franck Bui, Frantisek Sumsal, govwin, Hans de Goede,
4738 James Hilliard, Jan Engelhardt, Jani Uusitalo, Jan Janssen, Jan
4739 Synacek, Jonathan McDowell, Jonathan Roemer, Jonathon Kowalski, Joost
4740 Heitbrink, Jörg Thalheim, Lance, Lennart Poettering, Louis Taylor,
4741 Lucas Werkmeister, Mantas Mikulėnas, Marc-Antoine Perennou,
4742 marvelousblack, Michael Biebl, Michael Sloan, Michal Sekletar, Mike
4743 Auty, Mike Gilbert, Mikhail Kasimov, Neil Brown, Niklas Hambüchen,
4744 Patrick Williams, Paul Seyfert, Peter Hutterer, Philip Withnall, Roger
4745 James, Ronnie P. Thomas, Ryan Gonzalez, Sam Morris, Stephan Edel,
4746 Stephan Gerhold, Susant Sahani, Taro Yamada, Thomas Haller, Topi
4747 Miettinen, YiFei Zhu, YmrDtnJu, YunQiang Su, Yu Watanabe, Zbigniew
4748 Jędrzejewski-Szmek, zsergeant77, Дамјан Георгиевски
4749
4750 — Berlin, 2019-02-14
4751
4752 CHANGES WITH 240:
4753
4754 * NoNewPrivileges=yes has been set for all long-running services
4755 implemented by systemd. Previously, this was problematic due to
4756 SELinux (as this would also prohibit the transition from PID1's label
4757 to the service's label). This restriction has since been lifted, but
4758 an SELinux policy update is required.
4759 (See e.g. https://github.com/fedora-selinux/selinux-policy/pull/234.)
4760
4761 * DynamicUser=yes is dropped from systemd-networkd.service,
4762 systemd-resolved.service and systemd-timesyncd.service, which was
4763 enabled in v239 for systemd-networkd.service and systemd-resolved.service,
4764 and since v236 for systemd-timesyncd.service. The users and groups
4765 systemd-network, systemd-resolve and systemd-timesync are created
4766 by systemd-sysusers again. Distributors or system administrators
4767 may need to create these users and groups if they not exist (or need
4768 to re-enable DynamicUser= for those units) while upgrading systemd.
4769 Also, the clock file for systemd-timesyncd may need to move from
4770 /var/lib/private/systemd/timesync/clock to /var/lib/systemd/timesync/clock.
4771
4772 * When unit files are loaded from disk, previously systemd would
4773 sometimes (depending on the unit loading order) load units from the
4774 target path of symlinks in .wants/ or .requires/ directories of other
4775 units. This meant that unit could be loaded from different paths
4776 depending on whether the unit was requested explicitly or as a
4777 dependency of another unit, not honouring the priority of directories
4778 in search path. It also meant that it was possible to successfully
4779 load and start units which are not found in the unit search path, as
4780 long as they were requested as a dependency and linked to from
4781 .wants/ or .requires/. The target paths of those symlinks are not
4782 used for loading units anymore and the unit file must be found in
4783 the search path.
4784
4785 * A new service type has been added: Type=exec. It's very similar to
4786 Type=simple but ensures the service manager will wait for both fork()
4787 and execve() of the main service binary to complete before proceeding
4788 with follow-up units. This is primarily useful so that the manager
4789 propagates any errors in the preparation phase of service execution
4790 back to the job that requested the unit to be started. For example,
4791 consider a service that has ExecStart= set to a file system binary
4792 that doesn't exist. With Type=simple starting the unit would be
4793 considered instantly successful, as only fork() has to complete
4794 successfully and the manager does not wait for execve(), and hence
4795 its failure is seen "too late". With the new Type=exec service type
4796 starting the unit will fail, as the manager will wait for the
4797 execve() and notice its failure, which is then propagated back to the
4798 start job.
4799
4800 NOTE: with the next release 241 of systemd we intend to change the
4801 systemd-run tool to default to Type=exec for transient services
4802 started by it. This should be mostly safe, but in specific corner
4803 cases might result in problems, as the systemd-run tool will then
4804 block on NSS calls (such as user name look-ups due to User=) done
4805 between the fork() and execve(), which under specific circumstances
4806 might cause problems. It is recommended to specify "-p Type=simple"
4807 explicitly in the few cases where this applies. For regular,
4808 non-transient services (i.e. those defined with unit files on disk)
4809 we will continue to default to Type=simple.
4810
4811 * The Linux kernel's current default RLIMIT_NOFILE resource limit for
4812 userspace processes is set to 1024 (soft) and 4096
4813 (hard). Previously, systemd passed this on unmodified to all
4814 processes it forked off. With this systemd release the hard limit
4815 systemd passes on is increased to 512K, overriding the kernel's
4816 defaults and substantially increasing the number of simultaneous file
4817 descriptors unprivileged userspace processes can allocate. Note that
4818 the soft limit remains at 1024 for compatibility reasons: the
4819 traditional UNIX select() call cannot deal with file descriptors >=
4820 1024 and increasing the soft limit globally might thus result in
4821 programs unexpectedly allocating a high file descriptor and thus
4822 failing abnormally when attempting to use it with select() (of
4823 course, programs shouldn't use select() anymore, and prefer
4824 poll()/epoll, but the call unfortunately remains undeservedly popular
4825 at this time). This change reflects the fact that file descriptor
4826 handling in the Linux kernel has been optimized in more recent
4827 kernels and allocating large numbers of them should be much cheaper
4828 both in memory and in performance than it used to be. Programs that
4829 want to take benefit of the increased limit have to "opt-in" into
4830 high file descriptors explicitly by raising their soft limit. Of
4831 course, when they do that they must acknowledge that they cannot use
4832 select() anymore (and neither can any shared library they use — or
4833 any shared library used by any shared library they use and so on).
4834 Which default hard limit is most appropriate is of course hard to
4835 decide. However, given reports that ~300K file descriptors are used
4836 in real-life applications we believe 512K is sufficiently high as new
4837 default for now. Note that there are also reports that using very
4838 high hard limits (e.g. 1G) is problematic: some software allocates
4839 large arrays with one element for each potential file descriptor
4840 (Java, …) — a high hard limit thus triggers excessively large memory
4841 allocations in these applications. Hopefully, the new default of 512K
4842 is a good middle ground: higher than what real-life applications
4843 currently need, and low enough for avoid triggering excessively large
4844 allocations in problematic software. (And yes, somebody should fix
4845 Java.)
4846
4847 * The fs.nr_open and fs.file-max sysctls are now automatically bumped
4848 to the highest possible values, as separate accounting of file
4849 descriptors is no longer necessary, as memcg tracks them correctly as
4850 part of the memory accounting anyway. Thus, from the four limits on
4851 file descriptors currently enforced (fs.file-max, fs.nr_open,
4852 RLIMIT_NOFILE hard, RLIMIT_NOFILE soft) we turn off the first two,
4853 and keep only the latter two. A set of build-time options
4854 (-Dbump-proc-sys-fs-file-max=false and -Dbump-proc-sys-fs-nr-open=false)
4855 has been added to revert this change in behaviour, which might be
4856 an option for systems that turn off memcg in the kernel.
4857
4858 * When no /etc/locale.conf file exists (and hence no locale settings
4859 are in place), systemd will now use the "C.UTF-8" locale by default,
4860 and set LANG= to it. This locale is supported by various
4861 distributions including Fedora, with clear indications that upstream
4862 glibc is going to make it available too. This locale enables UTF-8
4863 mode by default, which appears appropriate for 2018.
4864
4865 * The "net.ipv4.conf.all.rp_filter" sysctl will now be set to 2 by
4866 default. This effectively switches the RFC3704 Reverse Path filtering
4867 from Strict mode to Loose mode. This is more appropriate for hosts
4868 that have multiple links with routes to the same networks (e.g.
4869 a client with a Wi-Fi and Ethernet both connected to the internet).
4870
4871 Consult the kernel documentation for details on this sysctl:
4872 https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt
4873
4874 * The v239 change to turn on "net.ipv4.tcp_ecn" by default has been
4875 reverted.
4876
4877 * CPUAccounting=yes no longer enables the CPU controller when using
4878 kernel 4.15+ and the unified cgroup hierarchy, as required accounting
4879 statistics are now provided independently from the CPU controller.
4880
4881 * Support for disabling a particular cgroup controller within a sub-tree
4882 has been added through the DisableControllers= directive.
4883
4884 * cgroup_no_v1=all on the kernel command line now also implies
4885 using the unified cgroup hierarchy, unless one explicitly passes
4886 systemd.unified_cgroup_hierarchy=0 on the kernel command line.
4887
4888 * The new "MemoryMin=" unit file property may now be used to set the
4889 memory usage protection limit of processes invoked by the unit. This
4890 controls the cgroup v2 memory.min attribute. Similarly, the new
4891 "IODeviceLatencyTargetSec=" property has been added, wrapping the new
4892 cgroup v2 io.latency cgroup property for configuring per-service I/O
4893 latency.
4894
4895 * systemd now supports the cgroup v2 devices BPF logic, as counterpart
4896 to the cgroup v1 "devices" cgroup controller.
4897
4898 * systemd-escape now is able to combine --unescape with --template. It
4899 also learnt a new option --instance for extracting and unescaping the
4900 instance part of a unit name.
4901
4902 * sd-bus now provides the sd_bus_message_readv() which is similar to
4903 sd_bus_message_read() but takes a va_list object. The pair
4904 sd_bus_set_method_call_timeout() and sd_bus_get_method_call_timeout()
4905 has been added for configuring the default method call timeout to
4906 use. sd_bus_error_move() may be used to efficiently move the contents
4907 from one sd_bus_error structure to another, invalidating the
4908 source. sd_bus_set_close_on_exit() and sd_bus_get_close_on_exit() may
4909 be used to control whether a bus connection object is automatically
4910 flushed when an sd-event loop is exited.
4911
4912 * When processing classic BSD syslog log messages, journald will now
4913 save the original time-stamp string supplied in the new
4914 SYSLOG_TIMESTAMP= journal field. This permits consumers to
4915 reconstruct the original BSD syslog message more correctly.
4916
4917 * StandardOutput=/StandardError= in service files gained support for
4918 new "append:…" parameters, for connecting STDOUT/STDERR of a service
4919 to a file, and appending to it.
4920
4921 * The signal to use as last step of killing of unit processes is now
4922 configurable. Previously it was hard-coded to SIGKILL, which may now
4923 be overridden with the new KillSignal= setting. Note that this is the
4924 signal used when regular termination (i.e. SIGTERM) does not suffice.
4925 Similarly, the signal used when aborting a program in case of a
4926 watchdog timeout may now be configured too (WatchdogSignal=).
4927
4928 * The XDG_SESSION_DESKTOP environment variable may now be configured in
4929 the pam_systemd argument line, using the new desktop= switch. This is
4930 useful to initialize it properly from a display manager without
4931 having to touch C code.
4932
4933 * Most configuration options that previously accepted percentage values
4934 now also accept permille values with the '‰' suffix (instead of '%').
4935
4936 * systemd-resolved may now optionally use OpenSSL instead of GnuTLS for
4937 DNS-over-TLS.
4938
4939 * systemd-resolved's configuration file resolved.conf gained a new
4940 option ReadEtcHosts= which may be used to turn off processing and
4941 honoring /etc/hosts entries.
4942
4943 * The "--wait" switch may now be passed to "systemctl
4944 is-system-running", in which case the tool will synchronously wait
4945 until the system finished start-up.
4946
4947 * hostnamed gained a new bus call to determine the DMI product UUID.
4948
4949 * On x86-64 systemd will now prefer using the RDRAND processor
4950 instruction over /dev/urandom whenever it requires randomness that
4951 neither has to be crypto-grade nor should be reproducible. This
4952 should substantially reduce the amount of entropy systemd requests
4953 from the kernel during initialization on such systems, though not
4954 reduce it to zero. (Why not zero? systemd still needs to allocate
4955 UUIDs and such uniquely, which require high-quality randomness.)
4956
4957 * networkd gained support for Foo-Over-UDP, ERSPAN and ISATAP
4958 tunnels. It also gained a new option ForceDHCPv6PDOtherInformation=
4959 for forcing the "Other Information" bit in IPv6 RA messages. The
4960 bonding logic gained four new options AdActorSystemPriority=,
4961 AdUserPortKey=, AdActorSystem= for configuring various 802.3ad
4962 aspects, and DynamicTransmitLoadBalancing= for enabling dynamic
4963 shuffling of flows. The tunnel logic gained a new
4964 IPv6RapidDeploymentPrefix= option for configuring IPv6 Rapid
4965 Deployment. The policy rule logic gained four new options IPProtocol=,
4966 SourcePort= and DestinationPort=, InvertRule=. The bridge logic gained
4967 support for the MulticastToUnicast= option. networkd also gained
4968 support for configuring static IPv4 ARP or IPv6 neighbor entries.
4969
4970 * .preset files (as read by 'systemctl preset') may now be used to
4971 instantiate services.
4972
4973 * /etc/crypttab now understands the sector-size= option to configure
4974 the sector size for an encrypted partition.
4975
4976 * Key material for encrypted disks may now be placed on a formatted
4977 medium, and referenced from /etc/crypttab by the UUID of the file
4978 system, followed by "=" suffixed by the path to the key file.
4979
4980 * The "collect" udev component has been removed without replacement, as
4981 it is neither used nor maintained.
4982
4983 * When the RuntimeDirectory=, StateDirectory=, CacheDirectory=,
4984 LogsDirectory=, ConfigurationDirectory= settings are used in a
4985 service the executed processes will now receive a set of environment
4986 variables containing the full paths of these directories.
4987 Specifically, RUNTIME_DIRECTORY=, STATE_DIRECTORY, CACHE_DIRECTORY,
4988 LOGS_DIRECTORY, CONFIGURATION_DIRECTORY are now set if these options
4989 are used. Note that these options may be used multiple times per
4990 service in which case the resulting paths will be concatenated and
4991 separated by colons.
4992
4993 * Predictable interface naming has been extended to cover InfiniBand
4994 NICs. They will be exposed with an "ib" prefix.
4995
4996 * tmpfiles.d/ line types may now be suffixed with a '-' character, in
4997 which case the respective line failing is ignored.
4998
4999 * .link files may now be used to configure the equivalent to the
5000 "ethtool advertise" commands.
5001
5002 * The sd-device.h and sd-hwdb.h APIs are now exported, as an
5003 alternative to libudev.h. Previously, the latter was just an internal
5004 wrapper around the former, but now these two APIs are exposed
5005 directly.
5006
5007 * sd-id128.h gained a new function sd_id128_get_boot_app_specific()
5008 which calculates an app-specific boot ID similar to how
5009 sd_id128_get_machine_app_specific() generates an app-specific machine
5010 ID.
5011
5012 * A new tool systemd-id128 has been added that can be used to determine
5013 and generate various 128bit IDs.
5014
5015 * /etc/os-release gained two new standardized fields DOCUMENTATION_URL=
5016 and LOGO=.
5017
5018 * systemd-hibernate-resume-generator will now honor the "noresume"
5019 kernel command line option, in which case it will bypass resuming
5020 from any hibernated image.
5021
5022 * The systemd-sleep.conf configuration file gained new options
5023 AllowSuspend=, AllowHibernation=, AllowSuspendThenHibernate=,
5024 AllowHybridSleep= for prohibiting specific sleep modes even if the
5025 kernel exports them.
5026
5027 * portablectl is now officially supported and has thus moved to
5028 /usr/bin/.
5029
5030 * bootctl learnt the two new commands "set-default" and "set-oneshot"
5031 for setting the default boot loader item to boot to (either
5032 persistently or only for the next boot). This is currently only
5033 compatible with sd-boot, but may be implemented on other boot loaders
5034 too, that follow the boot loader interface. The updated interface is
5035 now documented here:
5036
5037 https://systemd.io/BOOT_LOADER_INTERFACE
5038
5039 * A new kernel command line option systemd.early_core_pattern= is now
5040 understood which may be used to influence the core_pattern PID 1
5041 installs during early boot.
5042
5043 * busctl learnt two new options -j and --json= for outputting method
5044 call replies, properties and monitoring output in JSON.
5045
5046 * journalctl's JSON output now supports simple ANSI coloring as well as
5047 a new "json-seq" mode for generating RFC7464 output.
5048
5049 * Unit files now support the %g/%G specifiers that resolve to the UNIX
5050 group/GID of the service manager runs as, similar to the existing
5051 %u/%U specifiers that resolve to the UNIX user/UID.
5052
5053 * systemd-logind learnt a new global configuration option
5054 UserStopDelaySec= that may be set in logind.conf. It specifies how
5055 long the systemd --user instance shall remain started after a user
5056 logs out. This is useful to speed up repetitive re-connections of the
5057 same user, as it means the user's service manager doesn't have to be
5058 stopped/restarted on each iteration, but can be reused between
5059 subsequent options. This setting defaults to 10s. systemd-logind also
5060 exports two new properties on its Manager D-Bus objects indicating
5061 whether the system's lid is currently closed, and whether the system
5062 is on AC power.
5063
5064 * systemd gained support for a generic boot counting logic, which
5065 generically permits automatic reverting to older boot loader entries
5066 if newer updated ones don't work. The boot loader side is implemented
5067 in sd-boot, but is kept open for other boot loaders too. For details
5068 see:
5069
5070 https://systemd.io/AUTOMATIC_BOOT_ASSESSMENT
5071
5072 * The SuccessAction=/FailureAction= unit file settings now learnt two
5073 new parameters: "exit" and "exit-force", which result in immediate
5074 exiting of the service manager, and are only useful in systemd --user
5075 and container environments.
5076
5077 * Unit files gained support for a pair of options
5078 FailureActionExitStatus=/SuccessActionExitStatus= for configuring the
5079 exit status to use as service manager exit status when
5080 SuccessAction=/FailureAction= is set to exit or exit-force.
5081
5082 * A pair of LogRateLimitIntervalSec=/LogRateLimitBurst= per-service
5083 options may now be used to configure the log rate limiting applied by
5084 journald per-service.
5085
5086 * systemd-analyze gained a new verb "timespan" for parsing and
5087 normalizing time span values (i.e. strings like "5min 7s 8us").
5088
5089 * systemd-analyze also gained a new verb "security" for analyzing the
5090 security and sand-boxing settings of services in order to determine an
5091 "exposure level" for them, indicating whether a service would benefit
5092 from more sand-boxing options turned on for them.
5093
5094 * "systemd-analyze syscall-filter" will now also show system calls
5095 supported by the local kernel but not included in any of the defined
5096 groups.
5097
5098 * .nspawn files now understand the Ephemeral= setting, matching the
5099 --ephemeral command line switch.
5100
5101 * sd-event gained the new APIs sd_event_source_get_floating() and
5102 sd_event_source_set_floating() for controlling whether a specific
5103 event source is "floating", i.e. destroyed along with the even loop
5104 object itself.
5105
5106 * Unit objects on D-Bus gained a new "Refs" property that lists all
5107 clients that currently have a reference on the unit (to ensure it is
5108 not unloaded).
5109
5110 * The JoinControllers= option in system.conf is no longer supported, as
5111 it didn't work correctly, is hard to support properly, is legacy (as
5112 the concept only exists on cgroup v1) and apparently wasn't used.
5113
5114 * Journal messages that are generated whenever a unit enters the failed
5115 state are now tagged with a unique MESSAGE_ID. Similarly, messages
5116 generated whenever a service process exits are now made recognizable,
5117 too. A tagged message is also emitted whenever a unit enters the
5118 "dead" state on success.
5119
5120 * systemd-run gained a new switch --working-directory= for configuring
5121 the working directory of the service to start. A shortcut -d is
5122 equivalent, setting the working directory of the service to the
5123 current working directory of the invoking program. The new --shell
5124 (or just -S) option has been added for invoking the $SHELL of the
5125 caller as a service, and implies --pty --same-dir --wait --collect
5126 --service-type=exec. Or in other words, "systemd-run -S" is now the
5127 quickest way to quickly get an interactive in a fully clean and
5128 well-defined system service context.
5129
5130 * machinectl gained a new verb "import-fs" for importing an OS tree
5131 from a directory. Moreover, when a directory or tarball is imported
5132 and single top-level directory found with the OS itself below the OS
5133 tree is automatically mangled and moved one level up.
5134
5135 * systemd-importd will no longer set up an implicit btrfs loop-back
5136 file system on /var/lib/machines. If one is already set up, it will
5137 continue to be used.
5138
5139 * A new generator "systemd-run-generator" has been added. It will
5140 synthesize a unit from one or more program command lines included in
5141 the kernel command line. This is very useful in container managers
5142 for example:
5143
5144 # systemd-nspawn -i someimage.raw -b systemd.run='"some command line"'
5145
5146 This will run "systemd-nspawn" on an image, invoke the specified
5147 command line and immediately shut down the container again, returning
5148 the command line's exit code.
5149
5150 * The block device locking logic is now documented:
5151
5152 https://systemd.io/BLOCK_DEVICE_LOCKING
5153
5154 * loginctl and machinectl now optionally output the various tables in
5155 JSON using the --output= switch. It is our intention to add similar
5156 support to systemctl and all other commands.
5157
5158 * udevadm's query and trigger verb now optionally take a .device unit
5159 name as argument.
5160
5161 * systemd-udevd's network naming logic now understands a new
5162 net.naming-scheme= kernel command line switch, which may be used to
5163 pick a specific version of the naming scheme. This helps stabilizing
5164 interface names even as systemd/udev are updated and the naming logic
5165 is improved.
5166
5167 * sd-id128.h learnt two new auxiliary helpers: sd_id128_is_allf() and
5168 SD_ID128_ALLF to test if a 128bit ID is set to all 0xFF bytes, and to
5169 initialize one to all 0xFF.
5170
5171 * After loading the SELinux policy systemd will now recursively relabel
5172 all files and directories listed in
5173 /run/systemd/relabel-extra.d/*.relabel (which should be simple
5174 newline separated lists of paths) in addition to the ones it already
5175 implicitly relabels in /run, /dev and /sys. After the relabelling is
5176 completed the *.relabel files (and /run/systemd/relabel-extra.d/) are
5177 removed. This is useful to permit initrds (i.e. code running before
5178 the SELinux policy is in effect) to generate files in the host
5179 filesystem safely and ensure that the correct label is applied during
5180 the transition to the host OS.
5181
5182 * KERNEL API BREAKAGE: Linux kernel 4.18 changed behaviour regarding
5183 mknod() handling in user namespaces. Previously mknod() would always
5184 fail with EPERM in user namespaces. Since 4.18 mknod() will succeed
5185 but device nodes generated that way cannot be opened, and attempts to
5186 open them result in EPERM. This breaks the "graceful fallback" logic
5187 in systemd's PrivateDevices= sand-boxing option. This option is
5188 implemented defensively, so that when systemd detects it runs in a
5189 restricted environment (such as a user namespace, or an environment
5190 where mknod() is blocked through seccomp or absence of CAP_SYS_MKNOD)
5191 where device nodes cannot be created the effect of PrivateDevices= is
5192 bypassed (following the logic that 2nd-level sand-boxing is not
5193 essential if the system systemd runs in is itself already sand-boxed
5194 as a whole). This logic breaks with 4.18 in container managers where
5195 user namespacing is used: suddenly PrivateDevices= succeeds setting
5196 up a private /dev/ file system containing devices nodes — but when
5197 these are opened they don't work.
5198
5199 At this point it is recommended that container managers utilizing
5200 user namespaces that intend to run systemd in the payload explicitly
5201 block mknod() with seccomp or similar, so that the graceful fallback
5202 logic works again.
5203
5204 We are very sorry for the breakage and the requirement to change
5205 container configurations for newer kernels. It's purely caused by an
5206 incompatible kernel change. The relevant kernel developers have been
5207 notified about this userspace breakage quickly, but they chose to
5208 ignore it.
5209
5210 * PermissionsStartOnly= setting is deprecated (but is still supported
5211 for backwards compatibility). The same functionality is provided by
5212 the more flexible "+", "!", and "!!" prefixes to ExecStart= and other
5213 commands.
5214
5215 * $DBUS_SESSION_BUS_ADDRESS environment variable is not set by
5216 pam_systemd anymore.
5217
5218 * The naming scheme for network devices was changed to always rename
5219 devices, even if they were already renamed by userspace. The "kernel"
5220 policy was changed to only apply as a fallback, if no other naming
5221 policy took effect.
5222
5223 * The requirements to build systemd is bumped to meson-0.46 and
5224 python-3.5.
5225
5226 Contributions from: afg, Alan Jenkins, Aleksei Timofeyev, Alexander
5227 Filippov, Alexander Kurtz, Alexey Bogdanenko, Andreas Henriksson,
5228 Andrew Jorgensen, Anita Zhang, apnix-uk, Arkan49, Arseny Maslennikov,
5229 asavah, Asbjørn Apeland, aszlig, Bastien Nocera, Ben Boeckel, Benedikt
5230 Morbach, Benjamin Berg, Bruce Zhang, Carlo Caione, Cedric Viou, Chen
5231 Qi, Chris Chiu, Chris Down, Chris Morin, Christian Rebischke, Claudius
5232 Ellsel, Colin Guthrie, dana, Daniel, Daniele Medri, Daniel Kahn
5233 Gillmor, Daniel Rusek, Daniel van Vugt, Dariusz Gadomski, Dave Reisner,
5234 David Anderson, Davide Cavalca, David Leeds, David Malcolm, David
5235 Strauss, David Tardon, Dimitri John Ledkov, Dmitry Torokhov, dj-kaktus,
5236 Dongsu Park, Elias Probst, Emil Soleyman, Erik Kooistra, Ervin Peters,
5237 Evgeni Golov, Evgeny Vereshchagin, Fabrice Fontaine, Faheel Ahmad,
5238 Faizal Luthfi, Felix Yan, Filipe Brandenburger, Franck Bui, Frank
5239 Schaefer, Frantisek Sumsal, Gautier Husson, Gianluca Boiano, Giuseppe
5240 Scrivano, glitsj16, Hans de Goede, Harald Hoyer, Harry Mallon, Harshit
5241 Jain, Helmut Grohne, Henry Tung, Hui Yiqun, imayoda, Insun Pyo, Iwan
5242 Timmer, Jan Janssen, Jan Pokorný, Jan Synacek, Jason A. Donenfeld,
5243 javitoom, Jérémy Nouhaud, Jeremy Su, Jiuyang Liu, João Paulo Rechi
5244 Vita, Joe Hershberger, Joe Rayhawk, Joerg Behrmann, Joerg Steffens,
5245 Jonas Dorel, Jon Ringle, Josh Soref, Julian Andres Klode, Jun Bo Bi,
5246 Jürg Billeter, Keith Busch, Khem Raj, Kirill Marinushkin, Larry
5247 Bernstone, Lennart Poettering, Lion Yang, Li Song, Lorenz
5248 Hübschle-Schneider, Lubomir Rintel, Lucas Werkmeister, Ludwin Janvier,
5249 Lukáš Nykrýn, Luke Shumaker, mal, Marc-Antoine Perennou, Marcin
5250 Skarbek, Marco Trevisan (Treviño), Marian Cepok, Mario Hros, Marko
5251 Myllynen, Markus Grimm, Martin Pitt, Martin Sobotka, Martin Wilck,
5252 Mathieu Trudel-Lapierre, Matthew Leeds, Michael Biebl, Michael Olbrich,
5253 Michael 'pbone' Pobega, Michael Scherer, Michal Koutný, Michal
5254 Sekletar, Michal Soltys, Mike Gilbert, Mike Palmer, Muhammet Kara, Neal
5255 Gompa, Neil Brown, Network Silence, Niklas Tibbling, Nikolas Nyby,
5256 Nogisaka Sadata, Oliver Smith, Patrik Flykt, Pavel Hrdina, Paweł
5257 Szewczyk, Peter Hutterer, Piotr Drąg, Ray Strode, Reinhold Mueller,
5258 Renaud Métrich, Roman Gushchin, Ronny Chevalier, Rubén Suárez Alvarez,
5259 Ruixin Bao, RussianNeuroMancer, Ryutaroh Matsumoto, Saleem Rashid, Sam
5260 Morris, Samuel Morris, Sandy Carter, scootergrisen, Sébastien Bacher,
5261 Sergey Ptashnick, Shawn Landden, Shengyao Xue, Shih-Yuan Lee
5262 (FourDollars), Silvio Knizek, Sjoerd Simons, Stasiek Michalski, Stephen
5263 Gallagher, Steven Allen, Steve Ramage, Susant Sahani, Sven Joachim,
5264 Sylvain Plantefève, Tanu Kaskinen, Tejun Heo, Thiago Macieira, Thomas
5265 Blume, Thomas Haller, Thomas H. P. Andersen, Tim Ruffing, TJ, Tobias
5266 Jungel, Todd Walton, Tommi Rantala, Tomsod M, Tony Novak, Tore
5267 Anderson, Trevonn, Victor Laskurain, Victor Tapia, Violet Halo, Vojtech
5268 Trefny, welaq, William A. Kennington III, William Douglas, Wyatt Ward,
5269 Xiang Fan, Xi Ruoyao, Xuanwo, Yann E. Morin, YmrDtnJu, Yu Watanabe,
5270 Zbigniew Jędrzejewski-Szmek, Zhang Xianwei, Zsolt Dollenstein
5271
5272 — Warsaw, 2018-12-21
5273
5274 CHANGES WITH 239:
5275
5276 * NETWORK INTERFACE DEVICE NAMING CHANGES: systemd-udevd's "net_id"
5277 builtin will name network interfaces differently than in previous
5278 versions for virtual network interfaces created with SR-IOV and NPAR
5279 and for devices where the PCI network controller device does not have
5280 a slot number associated.
5281
5282 SR-IOV virtual devices are now named based on the name of the parent
5283 interface, with a suffix of "v<N>", where <N> is the virtual device
5284 number. Previously those virtual devices were named as if completely
5285 independent.
5286
5287 The ninth and later NPAR virtual devices will be named following the
5288 scheme used for the first eight NPAR partitions. Previously those
5289 devices were not renamed and the kernel default (eth<n>) was used.
5290
5291 "net_id" will also generate names for PCI devices where the PCI
5292 network controller device does not have an associated slot number
5293 itself, but one of its parents does. Previously those devices were
5294 not renamed and the kernel default (eth<n>) was used.
5295
5296 * AF_INET and AF_INET6 are dropped from RestrictAddressFamilies= in
5297 systemd-logind.service. Since v235, IPAddressDeny=any has been set to
5298 the unit. So, it is expected that the default behavior of
5299 systemd-logind is not changed. However, if distribution packagers or
5300 administrators disabled or modified IPAddressDeny= setting by a
5301 drop-in config file, then it may be necessary to update the file to
5302 re-enable AF_INET and AF_INET6 to support network user name services,
5303 e.g. NIS.
5304
5305 * When the RestrictNamespaces= unit property is specified multiple
5306 times, then the specified types are merged now. Previously, only the
5307 last assignment was used. So, if distribution packagers or
5308 administrators modified the setting by a drop-in config file, then it
5309 may be necessary to update the file.
5310
5311 * When OnFailure= is used in combination with Restart= on a service
5312 unit, then the specified units will no longer be triggered on
5313 failures that result in restarting. Previously, the specified units
5314 would be activated each time the unit failed, even when the unit was
5315 going to be restarted automatically. This behaviour contradicted the
5316 documentation. With this release the code is adjusted to match the
5317 documentation.
5318
5319 * systemd-tmpfiles will now print a notice whenever it encounters
5320 tmpfiles.d/ lines referencing the /var/run/ directory. It will
5321 recommend reworking them to use the /run/ directory instead (for
5322 which /var/run/ is simply a symlinked compatibility alias). This way
5323 systemd-tmpfiles can properly detect line conflicts and merge lines
5324 referencing the same file by two paths, without having to access
5325 them.
5326
5327 * systemctl disable/unmask/preset/preset-all cannot be used with
5328 --runtime. Previously this was allowed, but resulted in unintuitive
5329 behaviour that wasn't useful. systemctl disable/unmask will now undo
5330 both runtime and persistent enablement/masking, i.e. it will remove
5331 any relevant symlinks both in /run and /etc.
5332
5333 * Note that all long-running system services shipped with systemd will
5334 now default to a system call allow list (rather than a deny list, as
5335 before). In particular, systemd-udevd will now enforce one too. For
5336 most cases this should be safe, however downstream distributions
5337 which disabled sandboxing of systemd-udevd (specifically the
5338 MountFlags= setting), might want to disable this security feature
5339 too, as the default allow-listing will prohibit all mount, swap,
5340 reboot and clock changing operations from udev rules.
5341
5342 * sd-boot acquired new loader configuration settings to optionally turn
5343 off Windows and MacOS boot partition discovery as well as
5344 reboot-into-firmware menu items. It is also able to pick a better
5345 screen resolution for HiDPI systems, and now provides loader
5346 configuration settings to change the resolution explicitly.
5347
5348 * systemd-resolved now supports DNS-over-TLS. It's still
5349 turned off by default, use DNSOverTLS=opportunistic to turn it on in
5350 resolved.conf. We intend to make this the default as soon as couple
5351 of additional techniques for optimizing the initial latency caused by
5352 establishing a TLS/TCP connection are implemented.
5353
5354 * systemd-resolved.service and systemd-networkd.service now set
5355 DynamicUser=yes. The users systemd-resolve and systemd-network are
5356 not created by systemd-sysusers anymore.
5357
5358 NOTE: This has a chance of breaking nss-ldap and similar NSS modules
5359 that embed a network facing module into any process using getpwuid()
5360 or related call: the dynamic allocation of the user ID for
5361 systemd-resolved.service means the service manager has to check NSS
5362 if the user name is already taken when forking off the service. Since
5363 the user in the common case won't be defined in /etc/passwd the
5364 lookup is likely to trigger nss-ldap which in turn might use NSS to
5365 ask systemd-resolved for hostname lookups. This will hence result in
5366 a deadlock: a user name lookup in order to start
5367 systemd-resolved.service will result in a hostname lookup for which
5368 systemd-resolved.service needs to be started already. There are
5369 multiple ways to work around this problem: pre-allocate the
5370 "systemd-resolve" user on such systems, so that nss-ldap won't be
5371 triggered; or use a different NSS package that doesn't do networking
5372 in-process but provides a local asynchronous name cache; or configure
5373 the NSS package to avoid lookups for UIDs in the range `pkg-config
5374 systemd --variable=dynamicuidmin` … `pkg-config systemd
5375 --variable=dynamicuidmax`, so that it does not consider itself
5376 authoritative for the same UID range systemd allocates dynamic users
5377 from.
5378
5379 * The systemd-resolve tool has been renamed to resolvectl (it also
5380 remains available under the old name, for compatibility), and its
5381 interface is now verb-based, similar in style to the other <xyz>ctl
5382 tools, such as systemctl or loginctl.
5383
5384 * The resolvectl/systemd-resolve tool also provides 'resolvconf'
5385 compatibility. It may be symlinked under the 'resolvconf' name, in
5386 which case it will take arguments and input compatible with the
5387 Debian and FreeBSD resolvconf tool.
5388
5389 * Support for suspend-then-hibernate has been added, i.e. a sleep mode
5390 where the system initially suspends, and after a timeout resumes and
5391 hibernates again.
5392
5393 * networkd's ClientIdentifier= now accepts a new option "duid-only". If
5394 set the client will only send a DUID as client identifier.
5395
5396 * The nss-systemd glibc NSS module will now enumerate dynamic users and
5397 groups in effect. Previously, it could resolve UIDs/GIDs to user
5398 names/groups and vice versa, but did not support enumeration.
5399
5400 * journald's Compress= configuration setting now optionally accepts a
5401 byte threshold value. All journal objects larger than this threshold
5402 will be compressed, smaller ones will not. Previously this threshold
5403 was not configurable and set to 512.
5404
5405 * A new system.conf setting NoNewPrivileges= is now available which may
5406 be used to turn off acquisition of new privileges system-wide
5407 (i.e. set Linux' PR_SET_NO_NEW_PRIVS for PID 1 itself, and thus also
5408 for all its children). Note that turning this option on means setuid
5409 binaries and file system capabilities lose their special powers.
5410 While turning on this option is a big step towards a more secure
5411 system, doing so is likely to break numerous pre-existing UNIX tools,
5412 in particular su and sudo.
5413
5414 * A new service systemd-time-sync-wait.service has been added. If
5415 enabled it will delay the time-sync.target unit at boot until time
5416 synchronization has been received from the network. This
5417 functionality is useful on systems lacking a local RTC or where it is
5418 acceptable that the boot process shall be delayed by external network
5419 services.
5420
5421 * When hibernating, systemd will now inform the kernel of the image
5422 write offset, on kernels new enough to support this. This means swap
5423 files should work for hibernation now.
5424
5425 * When loading unit files, systemd will now look for drop-in unit files
5426 extensions in additional places. Previously, for a unit file name
5427 "foo-bar-baz.service" it would look for dropin files in
5428 "foo-bar-baz.service.d/*.conf". Now, it will also look in
5429 "foo-bar-.service.d/*.conf" and "foo-.service.d/", i.e. at the
5430 service name truncated after all inner dashes. This scheme allows
5431 writing drop-ins easily that apply to a whole set of unit files at
5432 once. It's particularly useful for mount and slice units (as their
5433 naming is prefix based), but is also useful for service and other
5434 units, for packages that install multiple unit files at once,
5435 following a strict naming regime of beginning the unit file name with
5436 the package's name. Two new specifiers are now supported in unit
5437 files to match this: %j and %J are replaced by the part of the unit
5438 name following the last dash.
5439
5440 * Unit files and other configuration files that support specifier
5441 expansion now understand another three new specifiers: %T and %V will
5442 resolve to /tmp and /var/tmp respectively, or whatever temporary
5443 directory has been set for the calling user. %E will expand to either
5444 /etc (for system units) or $XDG_CONFIG_HOME (for user units).
5445
5446 * The ExecStart= lines of unit files are no longer required to
5447 reference absolute paths. If non-absolute paths are specified the
5448 specified binary name is searched within the service manager's
5449 built-in $PATH, which may be queried with 'systemd-path
5450 search-binaries-default'. It's generally recommended to continue to
5451 use absolute paths for all binaries specified in unit files.
5452
5453 * Units gained a new load state "bad-setting", which is used when a
5454 unit file was loaded, but contained fatal errors which prevent it
5455 from being started (for example, a service unit has been defined
5456 lacking both ExecStart= and ExecStop= lines).
5457
5458 * coredumpctl's "gdb" verb has been renamed to "debug", in order to
5459 support alternative debuggers, for example lldb. The old name
5460 continues to be available however, for compatibility reasons. Use the
5461 new --debugger= switch or the $SYSTEMD_DEBUGGER environment variable
5462 to pick an alternative debugger instead of the default gdb.
5463
5464 * systemctl and the other tools will now output escape sequences that
5465 generate proper clickable hyperlinks in various terminal emulators
5466 where useful (for example, in the "systemctl status" output you can
5467 now click on the unit file name to quickly open it in the
5468 editor/viewer of your choice). Note that not all terminal emulators
5469 support this functionality yet, but many do. Unfortunately, the
5470 "less" pager doesn't support this yet, hence this functionality is
5471 currently automatically turned off when a pager is started (which
5472 happens quite often due to auto-paging). We hope to remove this
5473 limitation as soon as "less" learns these escape sequences. This new
5474 behaviour may also be turned off explicitly with the $SYSTEMD_URLIFY
5475 environment variable. For details on these escape sequences see:
5476 https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda
5477
5478 * networkd's .network files now support a new IPv6MTUBytes= option for
5479 setting the MTU used by IPv6 explicitly as well as a new MTUBytes=
5480 option in the [Route] section to configure the MTU to use for
5481 specific routes. It also gained support for configuration of the DHCP
5482 "UserClass" option through the new UserClass= setting. It gained
5483 three new options in the new [CAN] section for configuring CAN
5484 networks. The MULTICAST and ALLMULTI interface flags may now be
5485 controlled explicitly with the new Multicast= and AllMulticast=
5486 settings.
5487
5488 * networkd will now automatically make use of the kernel's route
5489 expiration feature, if it is available.
5490
5491 * udevd's .link files now support setting the number of receive and
5492 transmit channels, using the RxChannels=, TxChannels=,
5493 OtherChannels=, CombinedChannels= settings.
5494
5495 * Support for UDPSegmentationOffload= has been removed, given its
5496 limited support in hardware, and waning software support.
5497
5498 * networkd's .netdev files now support creating "netdevsim" interfaces.
5499
5500 * PID 1 learnt a new bus call GetUnitByControlGroup() which may be used
5501 to query the unit belonging to a specific kernel control group.
5502
5503 * systemd-analyze gained a new verb "cat-config", which may be used to
5504 dump the contents of any configuration file, with all its matching
5505 drop-in files added in, and honouring the usual search and masking
5506 logic applied to systemd configuration files. For example use
5507 "systemd-analyze cat-config systemd/system.conf" to get the complete
5508 system configuration file of systemd how it would be loaded by PID 1
5509 itself. Similar to this, various tools such as systemd-tmpfiles or
5510 systemd-sysusers, gained a new option "--cat-config", which does the
5511 corresponding operation for their own configuration settings. For
5512 example, "systemd-tmpfiles --cat-config" will now output the full
5513 list of tmpfiles.d/ lines in place.
5514
5515 * timedatectl gained three new verbs: "show" shows bus properties of
5516 systemd-timedated, "timesync-status" shows the current NTP
5517 synchronization state of systemd-timesyncd, and "show-timesync"
5518 shows bus properties of systemd-timesyncd.
5519
5520 * systemd-timesyncd gained a bus interface on which it exposes details
5521 about its state.
5522
5523 * A new environment variable $SYSTEMD_TIMEDATED_NTP_SERVICES is now
5524 understood by systemd-timedated. It takes a colon-separated list of
5525 unit names of NTP client services. The list is used by
5526 "timedatectl set-ntp".
5527
5528 * systemd-nspawn gained a new --rlimit= switch for setting initial
5529 resource limits for the container payload. There's a new switch
5530 --hostname= to explicitly override the container's hostname. A new
5531 --no-new-privileges= switch may be used to control the
5532 PR_SET_NO_NEW_PRIVS flag for the container payload. A new
5533 --oom-score-adjust= switch controls the OOM scoring adjustment value
5534 for the payload. The new --cpu-affinity= switch controls the CPU
5535 affinity of the container payload. The new --resolv-conf= switch
5536 allows more detailed control of /etc/resolv.conf handling of the
5537 container. Similarly, the new --timezone= switch allows more detailed
5538 control of /etc/localtime handling of the container.
5539
5540 * systemd-detect-virt gained a new --list switch, which will print a
5541 list of all currently known VM and container environments.
5542
5543 * Support for "Portable Services" has been added, see
5544 doc/PORTABLE_SERVICES.md for details. Currently, the support is still
5545 experimental, but this is expected to change soon. Reflecting this
5546 experimental state, the "portablectl" binary is not installed into
5547 /usr/bin yet. The binary has to be called with the full path
5548 /usr/lib/systemd/portablectl instead.
5549
5550 * journalctl's and systemctl's -o switch now knows a new log output
5551 mode "with-unit". The output it generates is very similar to the
5552 regular "short" mode, but displays the unit name instead of the
5553 syslog tag for each log line. Also, the date is shown with timezone
5554 information. This mode is probably more useful than the classic
5555 "short" output mode for most purposes, except where pixel-perfect
5556 compatibility with classic /var/log/messages formatting is required.
5557
5558 * A new --dump-bus-properties switch has been added to the systemd
5559 binary, which may be used to dump all supported D-Bus properties.
5560 (Options which are still supported, but are deprecated, are *not*
5561 shown.)
5562
5563 * sd-bus gained a set of new calls:
5564 sd_bus_slot_set_floating()/sd_bus_slot_get_floating() may be used to
5565 enable/disable the "floating" state of a bus slot object,
5566 i.e. whether the slot object pins the bus it is allocated for into
5567 memory or if the bus slot object gets disconnected when the bus goes
5568 away. sd_bus_open_with_description(),
5569 sd_bus_open_user_with_description(),
5570 sd_bus_open_system_with_description() may be used to allocate bus
5571 objects and set their description string already during allocation.
5572
5573 * sd-event gained support for watching inotify events from the event
5574 loop, in an efficient way, sharing inotify handles between multiple
5575 users. For this a new function sd_event_add_inotify() has been added.
5576
5577 * sd-event and sd-bus gained support for calling special user-supplied
5578 destructor functions for userdata pointers associated with
5579 sd_event_source, sd_bus_slot, and sd_bus_track objects. For this new
5580 functions sd_bus_slot_set_destroy_callback,
5581 sd_bus_slot_get_destroy_callback, sd_bus_track_set_destroy_callback,
5582 sd_bus_track_get_destroy_callback,
5583 sd_event_source_set_destroy_callback,
5584 sd_event_source_get_destroy_callback have been added.
5585
5586 * The "net.ipv4.tcp_ecn" sysctl will now be turned on by default.
5587
5588 * PID 1 will now automatically reschedule .timer units whenever the
5589 local timezone changes. (They previously got rescheduled
5590 automatically when the system clock changed.)
5591
5592 * New documentation has been added to document cgroups delegation,
5593 portable services and the various code quality tools we have set up:
5594
5595 https://github.com/systemd/systemd/blob/master/docs/CGROUP_DELEGATION.md
5596 https://github.com/systemd/systemd/blob/master/docs/PORTABLE_SERVICES.md
5597 https://github.com/systemd/systemd/blob/master/docs/CODE_QUALITY.md
5598
5599 * The Boot Loader Specification has been added to the source tree.
5600
5601 https://github.com/systemd/systemd/blob/master/docs/BOOT_LOADER_SPECIFICATION.md
5602
5603 While moving it into our source tree we have updated it and further
5604 changes are now accepted through the usual github PR workflow.
5605
5606 * pam_systemd will now look for PAM userdata fields systemd.memory_max,
5607 systemd.tasks_max, systemd.cpu_weight, systemd.io_weight set by
5608 earlier PAM modules. The data in these fields is used to initialize
5609 the session scope's resource properties. Thus external PAM modules
5610 may now configure per-session limits, for example sourced from
5611 external user databases.
5612
5613 * socket units with Accept=yes will now maintain a "refused" counter in
5614 addition to the existing "accepted" counter, counting connections
5615 refused due to the enforced limits.
5616
5617 * The "systemd-path search-binaries-default" command may now be use to
5618 query the default, built-in $PATH PID 1 will pass to the services it
5619 manages.
5620
5621 * A new unit file setting PrivateMounts= has been added. It's a boolean
5622 option. If enabled the unit's processes are invoked in their own file
5623 system namespace. Note that this behaviour is also implied if any
5624 other file system namespacing options (such as PrivateTmp=,
5625 PrivateDevices=, ProtectSystem=, …) are used. This option is hence
5626 primarily useful for services that do not use any of the other file
5627 system namespacing options. One such service is systemd-udevd.service
5628 where this is now used by default.
5629
5630 * ConditionSecurity= gained a new value "uefi-secureboot" that is true
5631 when the system is booted in UEFI "secure mode".
5632
5633 * A new unit "system-update-pre.target" is added, which defines an
5634 optional synchronization point for offline system updates, as
5635 implemented by the pre-existing "system-update.target" unit. It
5636 allows ordering services before the service that executes the actual
5637 update process in a generic way.
5638
5639 * Systemd now emits warnings whenever .include syntax is used.
5640
5641 Contributions from: Adam Duskett, Alan Jenkins, Alessandro Casale,
5642 Alexander Kurtz, Alex Gartrell, Anssi Hannula, Arnaud Rebillout, Brian
5643 J. Murrell, Bruno Vernay, Chris Lamb, Chris Lesiak, Christian Brauner,
5644 Christian Hesse, Christian Rebischke, Colin Guthrie, Daniel Dao, Daniel
5645 Lin, Danylo Korostil, Davide Cavalca, David Tardon, Dimitri John
5646 Ledkov, Dmitriy Geels, Douglas Christman, Elia Geretto, emelenas, Emil
5647 Velikov, Evgeny Vereshchagin, Felipe Sateler, Feng Sun, Filipe
5648 Brandenburger, Franck Bui, futpib, Giuseppe Scrivano, Guillem Jover,
5649 guixxx, Hannes Reinecke, Hans de Goede, Harald Hoyer, Henrique Dante de
5650 Almeida, Hiram van Paassen, Ian Miell, Igor Gnatenko, Ivan Shapovalov,
5651 Iwan Timmer, James Cowgill, Jan Janssen, Jan Synacek, Jared Kazimir,
5652 Jérémy Rosen, João Paulo Rechi Vita, Joost Heitbrink, Jui-Chi Ricky
5653 Liang, Jürg Billeter, Kai-Heng Feng, Karol Augustin, Kay Sievers,
5654 Krzysztof Nowicki, Lauri Tirkkonen, Lennart Poettering, Leonard König,
5655 Long Li, Luca Boccassi, Lucas Werkmeister, Marcel Hoppe, Marc
5656 Kleine-Budde, Mario Limonciello, Martin Jansa, Martin Wilck, Mathieu
5657 Malaterre, Matteo F. Vescovi, Matthew McGinn, Matthias-Christian Ott,
5658 Michael Biebl, Michael Olbrich, Michael Prokop, Michal Koutný, Michal
5659 Sekletar, Mike Gilbert, Mikhail Kasimov, Milan Broz, Milan Pässler,
5660 Mladen Pejaković, Muhammet Kara, Nicolas Boichat, Omer Katz, Paride
5661 Legovini, Paul Menzel, Paul Milliken, Pavel Hrdina, Peter A. Bigot,
5662 Peter D'Hoye, Peter Hutterer, Peter Jones, Philip Sequeira, Philip
5663 Withnall, Piotr Drąg, Radostin Stoyanov, Ricardo Salveti de Araujo,
5664 Ronny Chevalier, Rosen Penev, Rubén Suárez Alvarez, Ryan Gonzalez,
5665 Salvo Tomaselli, Sebastian Reichel, Sergey Ptashnick, Sergio Lindo
5666 Mansilla, Stefan Schweter, Stephen Hemminger, Stuart Hayes, Susant
5667 Sahani, Sylvain Plantefève, Thomas H. P. Andersen, Tobias Jungel,
5668 Tomasz Torcz, Vito Caputo, Will Dietz, Will Thompson, Wim van Mourik,
5669 Yu Watanabe, Zbigniew Jędrzejewski-Szmek
5670
5671 — Berlin, 2018-06-22
5672
5673 CHANGES WITH 238:
5674
5675 * The MemoryAccounting= unit property now defaults to on. After
5676 discussions with the upstream control group maintainers we learnt
5677 that the negative impact of cgroup memory accounting on current
5678 kernels is finally relatively minimal, so that it should be safe to
5679 enable this by default without affecting system performance. Besides
5680 memory accounting only task accounting is turned on by default, all
5681 other forms of resource accounting (CPU, IO, IP) remain off for now,
5682 because it's not clear yet that their impact is small enough to move
5683 from opt-in to opt-out. We recommend downstreams to leave memory
5684 accounting on by default if kernel 4.14 or higher is primarily
5685 used. On very resource constrained systems or when support for old
5686 kernels is a necessity, -Dmemory-accounting-default=false can be used
5687 to revert this change.
5688
5689 * rpm scriptlets to update the udev hwdb and rules (%udev_hwdb_update,
5690 %udev_rules_update) and the journal catalog (%journal_catalog_update)
5691 from the upgrade scriptlets of individual packages now do nothing.
5692 Transfiletriggers have been added which will perform those updates
5693 once at the end of the transaction.
5694
5695 Similar transfiletriggers have been added to execute any sysctl.d
5696 and binfmt.d rules. Thus, it should be unnecessary to provide any
5697 scriptlets to execute this configuration from package installation
5698 scripts.
5699
5700 * systemd-sysusers gained a mode where the configuration to execute is
5701 specified on the command line, but this configuration is not executed
5702 directly, but instead it is merged with the configuration on disk,
5703 and the result is executed. This is useful for package installation
5704 scripts which want to create the user before installing any files on
5705 disk (in case some of those files are owned by that user), while
5706 still allowing local admin overrides.
5707
5708 This functionality is exposed to rpm scriptlets through a new
5709 %sysusers_create_package macro. Old %sysusers_create and
5710 %sysusers_create_inline macros are deprecated.
5711
5712 A transfiletrigger for sysusers.d configuration is now installed,
5713 which means that it should be unnecessary to call systemd-sysusers from
5714 package installation scripts, unless the package installs any files
5715 owned by those newly-created users, in which case
5716 %sysusers_create_package should be used.
5717
5718 * Analogous change has been done for systemd-tmpfiles: it gained a mode
5719 where the command-line configuration is merged with the configuration
5720 on disk. This is exposed as the new %tmpfiles_create_package macro,
5721 and %tmpfiles_create is deprecated. A transfiletrigger is installed
5722 for tmpfiles.d, hence it should be unnecessary to call systemd-tmpfiles
5723 from package installation scripts.
5724
5725 * sysusers.d configuration for a user may now also specify the group
5726 number, in addition to the user number ("u username 123:456"), or
5727 without the user number ("u username -:456").
5728
5729 * Configution items for systemd-sysusers can now be specified as
5730 positional arguments when the new --inline switch is used.
5731
5732 * The login shell of users created through sysusers.d may now be
5733 specified (previously, it was always /bin/sh for root and
5734 /sbin/nologin for other users).
5735
5736 * systemd-analyze gained a new --global switch to look at global user
5737 configuration. It also gained a unit-paths verb to list the unit load
5738 paths that are compiled into systemd (which can be used with
5739 --systemd, --user, or --global).
5740
5741 * udevadm trigger gained a new --settle/-w option to wait for any
5742 triggered events to finish (but just those, and not any other events
5743 which are triggered meanwhile).
5744
5745 * The action that systemd-logind takes when the lid is closed and the
5746 machine is connected to external power can now be configured using
5747 HandleLidSwitchExternalPower= in logind.conf. Previously, this action
5748 was determined by HandleLidSwitch=, and, for backwards compatibility,
5749 is still is, if HandleLidSwitchExternalPower= is not explicitly set.
5750
5751 * journalctl will periodically call sd_journal_process() to make it
5752 resilient against inotify queue overruns when journal files are
5753 rotated very quickly.
5754
5755 * Two new functions in libsystemd — sd_bus_get_n_queued_read and
5756 sd_bus_get_n_queued_write — may be used to check the number of
5757 pending bus messages.
5758
5759 * systemd gained a new
5760 org.freedesktop.systemd1.Manager.AttachProcessesToUnit dbus call
5761 which can be used to migrate foreign processes to scope and service
5762 units. The primary user for this new API is systemd itself: the
5763 systemd --user instance uses this call of the systemd --system
5764 instance to migrate processes if it itself gets the request to
5765 migrate processes and the kernel refuses this due to access
5766 restrictions. Thanks to this "systemd-run --scope --user …" works
5767 again in pure cgroup v2 environments when invoked from the user
5768 session scope.
5769
5770 * A new TemporaryFileSystem= setting can be used to mask out part of
5771 the real file system tree with tmpfs mounts. This may be combined
5772 with BindPaths= and BindReadOnlyPaths= to hide files or directories
5773 not relevant to the unit, while still allowing some paths lower in
5774 the tree to be accessed.
5775
5776 ProtectHome=tmpfs may now be used to hide user home and runtime
5777 directories from units, in a way that is mostly equivalent to
5778 "TemporaryFileSystem=/home /run/user /root".
5779
5780 * Non-service units are now started with KeyringMode=shared by default.
5781 This means that mount and swapon and other mount tools have access
5782 to keys in the main keyring.
5783
5784 * /sys/fs/bpf is now mounted automatically.
5785
5786 * QNX virtualization is now detected by systemd-detect-virt and may
5787 be used in ConditionVirtualization=.
5788
5789 * IPAccounting= may now be enabled also for slice units.
5790
5791 * A new -Dsplit-bin= build configuration switch may be used to specify
5792 whether bin and sbin directories are merged, or if they should be
5793 included separately in $PATH and various listings of executable
5794 directories. The build configuration scripts will try to autodetect
5795 the proper values of -Dsplit-usr= and -Dsplit-bin= based on build
5796 system, but distributions are encouraged to configure this
5797 explicitly.
5798
5799 * A new -Dok-color= build configuration switch may be used to change
5800 the colour of "OK" status messages.
5801
5802 * UPGRADE ISSUE: serialization of units using JoinsNamespaceOf= with
5803 PrivateNetwork=yes was buggy in previous versions of systemd. This
5804 means that after the upgrade and daemon-reexec, any such units must
5805 be restarted.
5806
5807 * INCOMPATIBILITY: as announced in the NEWS for 237, systemd-tmpfiles
5808 will not exclude read-only files owned by root from cleanup.
5809
5810 Contributions from: Alan Jenkins, Alexander F Rødseth, Alexis Jeandet,
5811 Andika Triwidada, Andrei Gherzan, Ansgar Burchardt, antizealot1337,
5812 Batuhan Osman Taşkaya, Beniamino Galvani, Bill Yodlowsky, Caio Marcelo
5813 de Oliveira Filho, CuBiC, Daniele Medri, Daniel Mouritzen, Daniel
5814 Rusek, Davide Cavalca, Dimitri John Ledkov, Douglas Christman, Evgeny
5815 Vereshchagin, Faalagorn, Filipe Brandenburger, Franck Bui, futpib,
5816 Giacomo Longo, Gunnar Hjalmarsson, Hans de Goede, Hermann Gausterer,
5817 Iago López Galeiras, Jakub Filak, Jan Synacek, Jason A. Donenfeld,
5818 Javier Martinez Canillas, Jérémy Rosen, Lennart Poettering, Lucas
5819 Werkmeister, Mao Huang, Marco Gulino, Michael Biebl, Michael Vogt,
5820 MilhouseVH, Neal Gompa (ニール・ゴンパ), Oleander Reis, Olof Mogren,
5821 Patrick Uiterwijk, Peter Hutterer, Peter Portante, Piotr Drąg, Robert
5822 Antoni Buj Gelonch, Sergey Ptashnick, Shawn Landden, Shuang Liu, Simon
5823 Fowler, SjonHortensius, snorreflorre, Susant Sahani, Sylvain
5824 Plantefève, Thomas Blume, Thomas Haller, Vito Caputo, Yu Watanabe,
5825 Zbigniew Jędrzejewski-Szmek, Марко М. Костић (Marko M. Kostić)
5826
5827 — Warsaw, 2018-03-05
5828
5829 CHANGES WITH 237:
5830
5831 * Some keyboards come with a zoom see-saw or rocker which until now got
5832 mapped to the Linux "zoomin/out" keys in hwdb. However, these
5833 keycodes are not recognized by any major desktop. They now produce
5834 Up/Down key events so that they can be used for scrolling.
5835
5836 * INCOMPATIBILITY: systemd-tmpfiles' "f" lines changed behaviour
5837 slightly: previously, if an argument was specified for lines of this
5838 type (i.e. the right-most column was set) this string was appended to
5839 existing files each time systemd-tmpfiles was run. This behaviour was
5840 different from what the documentation said, and not particularly
5841 useful, as repeated systemd-tmpfiles invocations would not be
5842 idempotent and grow such files without bounds. With this release
5843 behaviour has been altered to match what the documentation says:
5844 lines of this type only have an effect if the indicated files don't
5845 exist yet, and only then the argument string is written to the file.
5846
5847 * FUTURE INCOMPATIBILITY: In systemd v238 we intend to slightly change
5848 systemd-tmpfiles behaviour: previously, read-only files owned by root
5849 were always excluded from the file "aging" algorithm (i.e. the
5850 automatic clean-up of directories like /tmp based on
5851 atime/mtime/ctime). We intend to drop this restriction, and age files
5852 by default even when owned by root and read-only. This behaviour was
5853 inherited from older tools, but there have been requests to remove
5854 it, and it's not obvious why this restriction was made in the first
5855 place. Please speak up now, if you are aware of software that requires
5856 this behaviour, otherwise we'll remove the restriction in v238.
5857
5858 * A new environment variable $SYSTEMD_OFFLINE is now understood by
5859 systemctl. It takes a boolean argument. If on, systemctl assumes it
5860 operates on an "offline" OS tree, and will not attempt to talk to the
5861 service manager. Previously, this mode was implicitly enabled if a
5862 chroot() environment was detected, and this new environment variable
5863 now provides explicit control.
5864
5865 * .path and .socket units may now be created transiently, too.
5866 Previously only service, mount, automount and timer units were
5867 supported as transient units. The systemd-run tool has been updated
5868 to expose this new functionality, you may hence use it now to bind
5869 arbitrary commands to path or socket activation on-the-fly from the
5870 command line. Moreover, almost all properties are now exposed for the
5871 unit types that already supported transient operation.
5872
5873 * The systemd-mount command gained support for a new --owner= parameter
5874 which takes a user name, which is then resolved and included in uid=
5875 and gid= mount options string of the file system to mount.
5876
5877 * A new unit condition ConditionControlGroupController= has been added
5878 that checks whether a specific cgroup controller is available.
5879
5880 * Unit files, udev's .link files, and systemd-networkd's .netdev and
5881 .network files all gained support for a new condition
5882 ConditionKernelVersion= for checking against specific kernel
5883 versions.
5884
5885 * In systemd-networkd, the [IPVLAN] section in .netdev files gained
5886 support for configuring device flags in the Flags= setting. In the
5887 same files, the [Tunnel] section gained support for configuring
5888 AllowLocalRemote=. The [Route] section in .network files gained
5889 support for configuring InitialCongestionWindow=,
5890 InitialAdvertisedReceiveWindow= and QuickAck=. The [DHCP] section now
5891 understands RapidCommit=.
5892
5893 * systemd-networkd's DHCPv6 support gained support for Prefix
5894 Delegation.
5895
5896 * sd-bus gained support for a new "watch-bind" feature. When this
5897 feature is enabled, an sd_bus connection may be set up to connect to
5898 an AF_UNIX socket in the file system as soon as it is created. This
5899 functionality is useful for writing early-boot services that
5900 automatically connect to the system bus as soon as it is started,
5901 without ugly time-based polling. systemd-networkd and
5902 systemd-resolved have been updated to make use of this
5903 functionality. busctl exposes this functionality in a new
5904 --watch-bind= command line switch.
5905
5906 * sd-bus will now optionally synthesize a local "Connected" signal as
5907 soon as a D-Bus connection is set up fully. This message mirrors the
5908 already existing "Disconnected" signal which is synthesized when the
5909 connection is terminated. This signal is generally useful but
5910 particularly handy in combination with the "watch-bind" feature
5911 described above. Synthesizing of this message has to be requested
5912 explicitly through the new API call sd_bus_set_connected_signal(). In
5913 addition a new call sd_bus_is_ready() has been added that checks
5914 whether a connection is fully set up (i.e. between the "Connected" and
5915 "Disconnected" signals).
5916
5917 * sd-bus gained two new calls sd_bus_request_name_async() and
5918 sd_bus_release_name_async() for asynchronously registering bus
5919 names. Similar, there is now sd_bus_add_match_async() for installing
5920 a signal match asynchronously. All of systemd's own services have
5921 been updated to make use of these calls. Doing these operations
5922 asynchronously has two benefits: it reduces the risk of deadlocks in
5923 case of cyclic dependencies between bus services, and it speeds up
5924 service initialization since synchronization points for bus
5925 round-trips are removed.
5926
5927 * sd-bus gained two new calls sd_bus_match_signal() and
5928 sd_bus_match_signal_async(), which are similar to sd_bus_add_match()
5929 and sd_bus_add_match_async() but instead of taking a D-Bus match
5930 string take match fields as normal function parameters.
5931
5932 * sd-bus gained two new calls sd_bus_set_sender() and
5933 sd_bus_message_set_sender() for setting the sender name of outgoing
5934 messages (either for all outgoing messages or for just one specific
5935 one). These calls are only useful in direct connections as on
5936 brokered connections the broker fills in the sender anyway,
5937 overwriting whatever the client filled in.
5938
5939 * sd-event gained a new pseudo-handle that may be specified on all API
5940 calls where an "sd_event*" object is expected: SD_EVENT_DEFAULT. When
5941 used this refers to the default event loop object of the calling
5942 thread. Note however that this does not implicitly allocate one —
5943 which has to be done prior by using sd_event_default(). Similarly
5944 sd-bus gained three new pseudo-handles SD_BUS_DEFAULT,
5945 SD_BUS_DEFAULT_USER, SD_BUS_DEFAULT_SYSTEM that may be used to refer
5946 to the default bus of the specified type of the calling thread. Here
5947 too this does not implicitly allocate bus connection objects, this
5948 has to be done prior with sd_bus_default() and friends.
5949
5950 * sd-event gained a new call pair
5951 sd_event_source_{get|set}_io_fd_own(). This may be used to request
5952 automatic closure of the file descriptor an IO event source watches
5953 when the event source is destroyed.
5954
5955 * systemd-networkd gained support for natively configuring WireGuard
5956 connections.
5957
5958 * In previous versions systemd synthesized user records both for the
5959 "nobody" (UID 65534) and "root" (UID 0) users in nss-systemd and
5960 internally. In order to simplify distribution-wide renames of the
5961 "nobody" user (like it is planned in Fedora: nfsnobody → nobody), a
5962 new transitional flag file has been added: if
5963 /etc/systemd/dont-synthesize-nobody exists synthesizing of the 65534
5964 user and group record within the systemd codebase is disabled.
5965
5966 * systemd-notify gained a new --uid= option for selecting the source
5967 user/UID to use for notification messages sent to the service
5968 manager.
5969
5970 * journalctl gained a new --grep= option to list only entries in which
5971 the message matches a certain pattern. By default matching is case
5972 insensitive if the pattern is lowercase, and case sensitive
5973 otherwise. Option --case-sensitive=yes|no can be used to override
5974 this an specify case sensitivity or case insensitivity.
5975
5976 * There's now a "systemd-analyze service-watchdogs" command for printing
5977 the current state of the service runtime watchdog, and optionally
5978 enabling or disabling the per-service watchdogs system-wide if given a
5979 boolean argument (i.e. the concept you configure in WatchdogSec=), for
5980 debugging purposes. There's also a kernel command line option
5981 systemd.service_watchdogs= for controlling the same.
5982
5983 * Two new "log-level" and "log-target" options for systemd-analyze were
5984 added that merge the now deprecated get-log-level, set-log-level and
5985 get-log-target, set-log-target pairs. The deprecated options are still
5986 understood for backwards compatibility. The two new options print the
5987 current value when no arguments are given, and set them when a
5988 level/target is given as an argument.
5989
5990 * sysusers.d's "u" lines now optionally accept both a UID and a GID
5991 specification, separated by a ":" character, in order to create users
5992 where UID and GID do not match.
5993
5994 Contributions from: Adam Duskett, Alan Jenkins, Alexander Kuleshov,
5995 Alexis Deruelle, Andrew Jeddeloh, Armin Widegreen, Batuhan Osman
5996 Taşkaya, Björn Esser, bleep_blop, Bruce A. Johnson, Chris Down, Clinton
5997 Roy, Colin Walters, Daniel Rusek, Dimitri John Ledkov, Dmitry Rozhkov,
5998 Evgeny Vereshchagin, Ewout van Mansom, Felipe Sateler, Franck Bui,
5999 Frantisek Sumsal, George Gaydarov, Gianluca Boiano, Hans-Christian
6000 Noren Egtvedt, Hans de Goede, Henrik Grindal Bakken, Jan Alexander
6001 Steffens, Jan Klötzke, Jason A. Donenfeld, jdkbx, Jérémy Rosen,
6002 Jerónimo Borque, John Lin, John Paul Herold, Jonathan Rudenberg, Jörg
6003 Thalheim, Ken (Bitsko) MacLeod, Larry Bernstone, Lennart Poettering,
6004 Lucas Werkmeister, Maciej S. Szmigiero, Marek Čermák, Martin Pitt,
6005 Mathieu Malaterre, Matthew Thode, Matthias-Christian Ott, Max Harmathy,
6006 Michael Biebl, Michael Vogt, Michal Koutný, Michal Sekletar, Michał
6007 Szczepański, Mike Gilbert, Nathaniel McCallum, Nicolas Chauvet, Olaf
6008 Hering, Olivier Schwander, Patrik Flykt, Paul Cercueil, Peter Hutterer,
6009 Piotr Drąg, Raphael Vogelgsang, Reverend Homer, Robert Kolchmeyer,
6010 Samuel Dionne-Riel, Sergey Ptashnick, Shawn Landden, Susant Sahani,
6011 Sylvain Plantefève, Thomas H. P. Andersen, Thomas Huth, Tomasz
6012 Bachorski, Vladislav Vishnyakov, Wieland Hoffmann, Yu Watanabe, Zachary
6013 Winnerman, Zbigniew Jędrzejewski-Szmek, Дамјан Георгиевски, Дилян
6014 Палаузов
6015
6016 — Brno, 2018-01-28
6017
6018 CHANGES WITH 236:
6019
6020 * The modprobe.d/ drop-in for the bonding.ko kernel module introduced
6021 in v235 has been extended to also set the dummy.ko module option
6022 numdummies=0, preventing the kernel from automatically creating
6023 dummy0. All dummy interfaces must now be explicitly created.
6024
6025 * Unknown '%' specifiers in configuration files are now rejected. This
6026 applies to units and tmpfiles.d configuration. Any percent characters
6027 that are followed by a letter or digit that are not supposed to be
6028 interpreted as the beginning of a specifier should be escaped by
6029 doubling ("%%"). (So "size=5%" is still accepted, as well as
6030 "size=5%,foo=bar", but not "LABEL=x%y%z" since %y and %z are not
6031 valid specifiers today.)
6032
6033 * systemd-resolved now maintains a new dynamic
6034 /run/systemd/resolve/stub-resolv.conf compatibility file. It is
6035 recommended to make /etc/resolv.conf a symlink to it. This file
6036 points at the systemd-resolved stub DNS 127.0.0.53 resolver and
6037 includes dynamically acquired search domains, achieving more correct
6038 DNS resolution by software that bypasses local DNS APIs such as NSS.
6039
6040 * The "uaccess" udev tag has been dropped from /dev/kvm and
6041 /dev/dri/renderD*. These devices now have the 0666 permissions by
6042 default (but this may be changed at build-time). /dev/dri/renderD*
6043 will now be owned by the "render" group along with /dev/kfd.
6044
6045 * "DynamicUser=yes" has been enabled for systemd-timesyncd.service,
6046 systemd-journal-gatewayd.service and
6047 systemd-journal-upload.service. This means "nss-systemd" must be
6048 enabled in /etc/nsswitch.conf to ensure the UIDs assigned to these
6049 services are resolved properly.
6050
6051 * In /etc/fstab two new mount options are now understood:
6052 x-systemd.makefs and x-systemd.growfs. The former has the effect that
6053 the configured file system is formatted before it is mounted, the
6054 latter that the file system is resized to the full block device size
6055 after it is mounted (i.e. if the file system is smaller than the
6056 partition it resides on, it's grown). This is similar to the fsck
6057 logic in /etc/fstab, and pulls in systemd-makefs@.service and
6058 systemd-growfs@.service as necessary, similar to
6059 systemd-fsck@.service. Resizing is currently only supported on ext4
6060 and btrfs.
6061
6062 * In systemd-networkd, the IPv6 RA logic now optionally may announce
6063 DNS server and domain information.
6064
6065 * Support for the LUKS2 on-disk format for encrypted partitions has
6066 been added. This requires libcryptsetup2 during compilation and
6067 runtime.
6068
6069 * The systemd --user instance will now signal "readiness" when its
6070 basic.target unit has been reached, instead of when the run queue ran
6071 empty for the first time.
6072
6073 * Tmpfiles.d with user configuration are now also supported.
6074 systemd-tmpfiles gained a new --user switch, and snippets placed in
6075 ~/.config/user-tmpfiles.d/ and corresponding directories will be
6076 executed by systemd-tmpfiles --user running in the new
6077 systemd-tmpfiles-setup.service and systemd-tmpfiles-clean.service
6078 running in the user session.
6079
6080 * Unit files and tmpfiles.d snippets learnt three new % specifiers:
6081 %S resolves to the top-level state directory (/var/lib for the system
6082 instance, $XDG_CONFIG_HOME for the user instance), %C resolves to the
6083 top-level cache directory (/var/cache for the system instance,
6084 $XDG_CACHE_HOME for the user instance), %L resolves to the top-level
6085 logs directory (/var/log for the system instance,
6086 $XDG_CONFIG_HOME/log/ for the user instance). This matches the
6087 existing %t specifier, that resolves to the top-level runtime
6088 directory (/run for the system instance, and $XDG_RUNTIME_DIR for the
6089 user instance).
6090
6091 * journalctl learnt a new parameter --output-fields= for limiting the
6092 set of journal fields to output in verbose and JSON output modes.
6093
6094 * systemd-timesyncd's configuration file gained a new option
6095 RootDistanceMaxSec= for setting the maximum root distance of servers
6096 it'll use, as well as the new options PollIntervalMinSec= and
6097 PollIntervalMaxSec= to tweak the minimum and maximum poll interval.
6098
6099 * bootctl gained a new command "list" for listing all available boot
6100 menu items on systems that follow the boot loader specification.
6101
6102 * systemctl gained a new --dry-run switch that shows what would be done
6103 instead of doing it, and is currently supported by the shutdown and
6104 sleep verbs.
6105
6106 * ConditionSecurity= can now detect the TOMOYO security module.
6107
6108 * Unit file [Install] sections are now also respected in unit drop-in
6109 files. This is intended to be used by drop-ins under /usr/lib/.
6110
6111 * systemd-firstboot may now also set the initial keyboard mapping.
6112
6113 * Udev "changed" events for devices which are exposed as systemd
6114 .device units are now propagated to units specified in
6115 ReloadPropagatedFrom= as reload requests.
6116
6117 * If a udev device has a SYSTEMD_WANTS= property containing a systemd
6118 unit template name (i.e. a name in the form of 'foobar@.service',
6119 without the instance component between the '@' and - the '.'), then
6120 the escaped sysfs path of the device is automatically used as the
6121 instance.
6122
6123 * SystemCallFilter= in unit files has been extended so that an "errno"
6124 can be specified individually for each system call. Example:
6125 SystemCallFilter=~uname:EILSEQ.
6126
6127 * The cgroup delegation logic has been substantially updated. Delegate=
6128 now optionally takes a list of controllers (instead of a boolean, as
6129 before), which lists the controllers to delegate at least.
6130
6131 * The networkd DHCPv6 client now implements the FQDN option (RFC 4704).
6132
6133 * A new LogLevelMax= setting configures the maximum log level any
6134 process of the service may log at (i.e. anything with a lesser
6135 priority than what is specified is automatically dropped). A new
6136 LogExtraFields= setting allows configuration of additional journal
6137 fields to attach to all log records generated by any of the unit's
6138 processes.
6139
6140 * New StandardInputData= and StandardInputText= settings along with the
6141 new option StandardInput=data may be used to configure textual or
6142 binary data that shall be passed to the executed service process via
6143 standard input, encoded in-line in the unit file.
6144
6145 * StandardInput=, StandardOutput= and StandardError= may now be used to
6146 connect stdin/stdout/stderr of executed processes directly with a
6147 file or AF_UNIX socket in the file system, using the new "file:" option.
6148
6149 * A new unit file option CollectMode= has been added, that allows
6150 tweaking the garbage collection logic for units. It may be used to
6151 tell systemd to garbage collect units that have failed automatically
6152 (normally it only GCs units that exited successfully). systemd-run
6153 and systemd-mount expose this new functionality with a new -G option.
6154
6155 * "machinectl bind" may now be used to bind mount non-directories
6156 (i.e. regularfiles, devices, fifos, sockets).
6157
6158 * systemd-analyze gained a new verb "calendar" for validating and
6159 testing calendar time specifications to use for OnCalendar= in timer
6160 units. Besides validating the expression it will calculate the next
6161 time the specified expression would elapse.
6162
6163 * In addition to the pre-existing FailureAction= unit file setting
6164 there's now SuccessAction=, for configuring a shutdown action to
6165 execute when a unit completes successfully. This is useful in
6166 particular inside containers that shall terminate after some workload
6167 has been completed. Also, both options are now supported for all unit
6168 types, not just services.
6169
6170 * networkds's IP rule support gained two new options
6171 IncomingInterface= and OutgoingInterface= for configuring the incoming
6172 and outgoing interfaces of configured rules. systemd-networkd also
6173 gained support for "vxcan" network devices.
6174
6175 * networkd gained a new setting RequiredForOnline=, taking a
6176 boolean. If set, systemd-wait-online will take it into consideration
6177 when determining that the system is up, otherwise it will ignore the
6178 interface for this purpose.
6179
6180 * The sd_notify() protocol gained support for a new operation: with
6181 FDSTOREREMOVE=1 file descriptors may be removed from the per-service
6182 store again, ahead of POLLHUP or POLLERR when they are removed
6183 anyway.
6184
6185 * A new document doc/UIDS-GIDS.md has been added to the source tree,
6186 that documents the UID/GID range and assignment assumptions and
6187 requirements of systemd.
6188
6189 * The watchdog device PID 1 will ping may now be configured through the
6190 WatchdogDevice= configuration file setting, or by setting the
6191 systemd.watchdog_service= kernel commandline option.
6192
6193 * systemd-resolved's gained support for registering DNS-SD services on
6194 the local network using MulticastDNS. Services may either be
6195 registered by dropping in a .dnssd file in /etc/systemd/dnssd/ (or
6196 the same dir below /run, /usr/lib), or through its D-Bus API.
6197
6198 * The sd_notify() protocol can now with EXTEND_TIMEOUT_USEC=microsecond
6199 extend the effective start, runtime, and stop time. The service must
6200 continue to send EXTEND_TIMEOUT_USEC within the period specified to
6201 prevent the service manager from making the service as timedout.
6202
6203 * systemd-resolved's DNSSEC support gained support for RFC 8080
6204 (Ed25519 keys and signatures).
6205
6206 * The systemd-resolve command line tool gained a new set of options
6207 --set-dns=, --set-domain=, --set-llmnr=, --set-mdns=, --set-dnssec=,
6208 --set-nta= and --revert to configure per-interface DNS configuration
6209 dynamically during runtime. It's useful for pushing DNS information
6210 into systemd-resolved from DNS hook scripts that various interface
6211 managing software supports (such as pppd).
6212
6213 * systemd-nspawn gained a new --network-namespace-path= command line
6214 option, which may be used to make a container join an existing
6215 network namespace, by specifying a path to a "netns" file.
6216
6217 Contributions from: Alan Jenkins, Alan Robertson, Alessandro Ghedini,
6218 Andrew Jeddeloh, Antonio Rojas, Ari, asavah, bleep_blop, Carsten
6219 Strotmann, Christian Brauner, Christian Hesse, Clinton Roy, Collin
6220 Eggert, Cong Wang, Daniel Black, Daniel Lockyer, Daniel Rusek, Dimitri
6221 John Ledkov, Dmitry Rozhkov, Dongsu Park, Edward A. James, Evgeny
6222 Vereshchagin, Florian Klink, Franck Bui, Gwendal Grignou, Hans de
6223 Goede, Harald Hoyer, Hristo Venev, Iago López Galeiras, Ikey Doherty,
6224 Jakub Wilk, Jérémy Rosen, Jiahui Xie, John Lin, José Bollo, Josef
6225 Andersson, juga0, Krzysztof Nowicki, Kyle Walker, Lars Karlitski, Lars
6226 Kellogg-Stedman, Lauri Tirkkonen, Lennart Poettering, Lubomir Rintel,
6227 Luca Bruno, Lucas Werkmeister, Lukáš Nykrýn, Lukáš Říha, Lukasz
6228 Rubaszewski, Maciej S. Szmigiero, Mantas Mikulėnas, Marcus Folkesson,
6229 Martin Steuer, Mathieu Trudel-Lapierre, Matija Skala,
6230 Matthias-Christian Ott, Max Resch, Michael Biebl, Michael Vogt, Michal
6231 Koutný, Michal Sekletar, Mike Gilbert, Muhammet Kara, Neil Brown, Olaf
6232 Hering, Ondrej Kozina, Patrik Flykt, Patryk Kocielnik, Peter Hutterer,
6233 Piotr Drąg, Razvan Cojocaru, Robin McCorkell, Roland Hieber, Saran
6234 Tunyasuvunakool, Sergey Ptashnick, Shawn Landden, Shuang Liu, Simon
6235 Arlott, Simon Peeters, Stanislav Angelovič, Stefan Agner, Susant
6236 Sahani, Sylvain Plantefève, Thomas Blume, Thomas Haller, Tiago Salem
6237 Herrmann, Tinu Weber, Tom Stellard, Topi Miettinen, Torsten Hilbrich,
6238 Vito Caputo, Vladislav Vishnyakov, WaLyong Cho, Yu Watanabe, Zbigniew
6239 Jędrzejewski-Szmek, Zeal Jagannatha
6240
6241 — Berlin, 2017-12-14
6242
6243 CHANGES WITH 235:
6244
6245 * INCOMPATIBILITY: systemd-logind.service and other long-running
6246 services now run inside an IPv4/IPv6 sandbox, prohibiting them any IP
6247 communication with the outside. This generally improves security of
6248 the system, and is in almost all cases a safe and good choice, as
6249 these services do not and should not provide any network-facing
6250 functionality. However, systemd-logind uses the glibc NSS API to
6251 query the user database. This creates problems on systems where NSS
6252 is set up to directly consult network services for user database
6253 lookups. In particular, this creates incompatibilities with the
6254 "nss-nis" module, which attempts to directly contact the NIS/YP
6255 network servers it is configured for, and will now consistently
6256 fail. In such cases, it is possible to turn off IP sandboxing for
6257 systemd-logind.service (set IPAddressDeny= in its [Service] section
6258 to the empty string, via a .d/ unit file drop-in). Downstream
6259 distributions might want to update their nss-nis packaging to include
6260 such a drop-in snippet, accordingly, to hide this incompatibility
6261 from the user. Another option is to make use of glibc's nscd service
6262 to proxy such network requests through a privilege-separated, minimal
6263 local caching daemon, or to switch to more modern technologies such
6264 sssd, whose NSS hook-ups generally do not involve direct network
6265 access. In general, we think it's definitely time to question the
6266 implementation choices of nss-nis, i.e. whether it's a good idea
6267 today to embed a network-facing loadable module into all local
6268 processes that need to query the user database, including the most
6269 trivial and benign ones, such as "ls". For more details about
6270 IPAddressDeny= see below.
6271
6272 * A new modprobe.d drop-in is now shipped by default that sets the
6273 bonding module option max_bonds=0. This overrides the kernel default,
6274 to avoid conflicts and ambiguity as to whether or not bond0 should be
6275 managed by systemd-networkd or not. This resolves multiple issues
6276 with bond0 properties not being applied, when bond0 is configured
6277 with systemd-networkd. Distributors may choose to not package this,
6278 however in that case users will be prevented from correctly managing
6279 bond0 interface using systemd-networkd.
6280
6281 * systemd-analyze gained new verbs "get-log-level" and "get-log-target"
6282 which print the logging level and target of the system manager. They
6283 complement the existing "set-log-level" and "set-log-target" verbs
6284 used to change those values.
6285
6286 * journald.conf gained a new boolean setting ReadKMsg= which defaults
6287 to on. If turned off kernel log messages will not be read by
6288 systemd-journald or included in the logs. It also gained a new
6289 setting LineMax= for configuring the maximum line length in
6290 STDOUT/STDERR log streams. The new default for this value is 48K, up
6291 from the previous hardcoded 2048.
6292
6293 * A new unit setting RuntimeDirectoryPreserve= has been added, which
6294 allows more detailed control of what to do with a runtime directory
6295 configured with RuntimeDirectory= (i.e. a directory below /run or
6296 $XDG_RUNTIME_DIR) after a unit is stopped.
6297
6298 * The RuntimeDirectory= setting for units gained support for creating
6299 deeper subdirectories below /run or $XDG_RUNTIME_DIR, instead of just
6300 one top-level directory.
6301
6302 * Units gained new options StateDirectory=, CacheDirectory=,
6303 LogsDirectory= and ConfigurationDirectory= which are closely related
6304 to RuntimeDirectory= but manage per-service directories below
6305 /var/lib, /var/cache, /var/log and /etc. By making use of them it is
6306 possible to write unit files which when activated automatically gain
6307 properly owned service specific directories in these locations, thus
6308 making unit files self-contained and increasing compatibility with
6309 stateless systems and factory reset where /etc or /var are
6310 unpopulated at boot. Matching these new settings there's also
6311 StateDirectoryMode=, CacheDirectoryMode=, LogsDirectoryMode=,
6312 ConfigurationDirectoryMode= for configuring the access mode of these
6313 directories. These settings are particularly useful in combination
6314 with DynamicUser=yes as they provide secure, properly-owned,
6315 writable, and stateful locations for storage, excluded from the
6316 sandbox that such services live in otherwise.
6317
6318 * Automake support has been removed from this release. systemd is now
6319 Meson-only.
6320
6321 * systemd-journald will now aggressively cache client metadata during
6322 runtime, speeding up log write performance under pressure. This comes
6323 at a small price though: as much of the metadata is read
6324 asynchronously from /proc/ (and isn't implicitly attached to log
6325 datagrams by the kernel, like UID/GID/PID/SELinux are) this means the
6326 metadata stored alongside a log entry might be slightly
6327 out-of-date. Previously it could only be slightly newer than the log
6328 message. The time window is small however, and given that the kernel
6329 is unlikely to be improved anytime soon in this regard, this appears
6330 acceptable to us.
6331
6332 * nss-myhostname/systemd-resolved will now by default synthesize an
6333 A/AAAA resource record for the "_gateway" hostname, pointing to the
6334 current default IP gateway. Previously it did that for the "gateway"
6335 name, hampering adoption, as some distributions wanted to leave that
6336 hostname open for local use. The old behaviour may still be
6337 requested at build time.
6338
6339 * systemd-networkd's [Address] section in .network files gained a new
6340 Scope= setting for configuring the IP address scope. The [Network]
6341 section gained a new boolean setting ConfigureWithoutCarrier= that
6342 tells systemd-networkd to ignore link sensing when configuring the
6343 device. The [DHCP] section gained a new Anonymize= boolean option for
6344 turning on a number of options suggested in RFC 7844. A new
6345 [RoutingPolicyRule] section has been added for configuring the IP
6346 routing policy. The [Route] section has gained support for a new
6347 Type= setting which permits configuring
6348 blackhole/unreachable/prohibit routes.
6349
6350 * The [VRF] section in .netdev files gained a new Table= setting for
6351 configuring the routing table to use. The [Tunnel] section gained a
6352 new Independent= boolean field for configuring tunnels independent of
6353 an underlying network interface. The [Bridge] section gained a new
6354 GroupForwardMask= option for configuration of propagation of link
6355 local frames between bridge ports.
6356
6357 * The WakeOnLan= setting in .link files gained support for a number of
6358 new modes. A new TCP6SegmentationOffload= setting has been added for
6359 configuring TCP/IPv6 hardware segmentation offload.
6360
6361 * The IPv6 RA sender implementation may now optionally send out RDNSS
6362 and RDNSSL records to supply DNS configuration to peers.
6363
6364 * systemd-nspawn gained support for a new --system-call-filter= command
6365 line option for adding and removing entries in the default system
6366 call filter it applies. Moreover systemd-nspawn has been changed to
6367 implement a system call allow list instead of a deny list.
6368
6369 * systemd-run gained support for a new --pipe command line option. If
6370 used the STDIN/STDOUT/STDERR file descriptors passed to systemd-run
6371 are directly passed on to the activated transient service
6372 executable. This allows invoking arbitrary processes as systemd
6373 services (for example to take benefit of dependency management,
6374 accounting management, resource management or log management that is
6375 done automatically for services) — while still allowing them to be
6376 integrated in a classic UNIX shell pipeline.
6377
6378 * When a service sends RELOAD=1 via sd_notify() and reload propagation
6379 using ReloadPropagationTo= is configured, a reload is now propagated
6380 to configured units. (Previously this was only done on explicitly
6381 requested reloads, using "systemctl reload" or an equivalent
6382 command.)
6383
6384 * For each service unit a restart counter is now kept: it is increased
6385 each time the service is restarted due to Restart=, and may be
6386 queried using "systemctl show -p NRestarts …".
6387
6388 * New system call filter groups @aio, @sync, @chown, @setuid, @memlock,
6389 @signal and @timer have been added, for usage with SystemCallFilter=
6390 in unit files and the new --system-call-filter= command line option
6391 of systemd-nspawn (see above).
6392
6393 * ExecStart= lines in unit files gained two new modifiers: when a
6394 command line is prefixed with "!" the command will be executed as
6395 configured, except for the credentials applied by
6396 setuid()/setgid()/setgroups(). It is very similar to the pre-existing
6397 "+", but does still apply namespacing options unlike "+". There's
6398 also "!!" now, which is mostly identical, but becomes a NOP on
6399 systems that support ambient capabilities. This is useful to write
6400 unit files that work with ambient capabilities where possible but
6401 automatically fall back to traditional privilege dropping mechanisms
6402 on systems where this is not supported.
6403
6404 * ListenNetlink= settings in socket units now support RDMA netlink
6405 sockets.
6406
6407 * A new unit file setting LockPersonality= has been added which permits
6408 locking down the chosen execution domain ("personality") of a service
6409 during runtime.
6410
6411 * A new special target "getty-pre.target" has been added, which is
6412 ordered before all text logins, and may be used to order services
6413 before textual logins acquire access to the console.
6414
6415 * systemd will now attempt to load the virtio-rng.ko kernel module very
6416 early on if a VM environment supporting this is detected. This should
6417 improve entropy during early boot in virtualized environments.
6418
6419 * A _netdev option is now supported in /etc/crypttab that operates in a
6420 similar way as the same option in /etc/fstab: it permits configuring
6421 encrypted devices that need to be ordered after the network is up.
6422 Following this logic, two new special targets
6423 remote-cryptsetup-pre.target and remote-cryptsetup.target have been
6424 added that are to cryptsetup.target what remote-fs.target and
6425 remote-fs-pre.target are to local-fs.target.
6426
6427 * Service units gained a new UnsetEnvironment= setting which permits
6428 unsetting specific environment variables for services that are
6429 normally passed to it (for example in order to mask out locale
6430 settings for specific services that can't deal with it).
6431
6432 * Units acquired a new boolean option IPAccounting=. When turned on, IP
6433 traffic accounting (packet count as well as byte count) is done for
6434 the service, and shown as part of "systemctl status" or "systemd-run
6435 --wait".
6436
6437 * Service units acquired two new options IPAddressAllow= and
6438 IPAddressDeny=, taking a list of IPv4 or IPv6 addresses and masks,
6439 for configuring a simple IP access control list for all sockets of
6440 the unit. These options are available also on .slice and .socket
6441 units, permitting flexible access list configuration for individual
6442 services as well as groups of services (as defined by a slice unit),
6443 including system-wide. Note that IP ACLs configured this way are
6444 enforced on every single IPv4 and IPv6 socket created by any process
6445 of the service unit, and apply to ingress as well as egress traffic.
6446
6447 * If CPUAccounting= or IPAccounting= is turned on for a unit a new
6448 structured log message is generated each time the unit is stopped,
6449 containing information about the consumed resources of this
6450 invocation.
6451
6452 * A new setting KeyringMode= has been added to unit files, which may be
6453 used to control how the kernel keyring is set up for executed
6454 processes.
6455
6456 * "systemctl poweroff", "systemctl reboot", "systemctl halt",
6457 "systemctl kexec" and "systemctl exit" are now always asynchronous in
6458 behaviour (that is: these commands return immediately after the
6459 operation was enqueued instead of waiting for the operation to
6460 complete). Previously, "systemctl poweroff" and "systemctl reboot"
6461 were asynchronous on systems using systemd-logind (i.e. almost
6462 always, and like they were on sysvinit), and the other three commands
6463 were unconditionally synchronous. With this release this is cleaned
6464 up, and callers will see the same asynchronous behaviour on all
6465 systems for all five operations.
6466
6467 * systemd-logind gained new Halt() and CanHalt() bus calls for halting
6468 the system.
6469
6470 * .timer units now accept calendar specifications in other timezones
6471 than UTC or the local timezone.
6472
6473 * The tmpfiles snippet var.conf has been changed to create
6474 /var/log/btmp with access mode 0660 instead of 0600. It was owned by
6475 the "utmp" group already, and it appears to be generally understood
6476 that members of "utmp" can modify/flush the utmp/wtmp/lastlog/btmp
6477 databases. Previously this was implemented correctly for all these
6478 databases excepts btmp, which has been opened up like this now
6479 too. Note that while the other databases are world-readable
6480 (i.e. 0644), btmp is not and remains more restrictive.
6481
6482 * The systemd-resolve tool gained a new --reset-server-features
6483 switch. When invoked like this systemd-resolved will forget
6484 everything it learnt about the features supported by the configured
6485 upstream DNS servers, and restarts the feature probing logic on the
6486 next resolver look-up for them at the highest feature level
6487 again.
6488
6489 * The status dump systemd-resolved sends to the logs upon receiving
6490 SIGUSR1 now also includes information about all DNS servers it is
6491 configured to use, and the features levels it probed for them.
6492
6493 Contributions from: Abdó Roig-Maranges, Alan Jenkins, Alexander
6494 Kuleshov, Andreas Rammhold, Andrew Jeddeloh, Andrew Soutar, Ansgar
6495 Burchardt, Beniamino Galvani, Benjamin Berg, Benjamin Robin, Charles
6496 Huber, Christian Hesse, Daniel Berrange, Daniel Kahn Gillmor, Daniel
6497 Mack, Daniel Rusek, Daniel Șerbănescu, Davide Cavalca, Dimitri John
6498 Ledkov, Diogo Pereira, Djalal Harouni, Dmitriy Geels, Dmitry Torokhov,
6499 ettavolt, Evgeny Vereshchagin, Fabio Kung, Felipe Sateler, Franck Bui,
6500 Hans de Goede, Harald Hoyer, Insun Pyo, Ivan Kurnosov, Ivan Shapovalov,
6501 Jakub Wilk, Jan Synacek, Jason Gunthorpe, Jeremy Bicha, Jérémy Rosen,
6502 John Lin, jonasBoss, Jonathan Lebon, Jonathan Teh, Jon Ringle, Jörg
6503 Thalheim, Jouke Witteveen, juga0, Justin Capella, Justin Michaud,
6504 Kai-Heng Feng, Lennart Poettering, Lion Yang, Luca Bruno, Lucas
6505 Werkmeister, Lukáš Nykrýn, Marcel Hollerbach, Marcus Lundblad, Martin
6506 Pitt, Michael Biebl, Michael Grzeschik, Michal Sekletar, Mike Gilbert,
6507 Neil Brown, Nicolas Iooss, Patrik Flykt, pEJipE, Piotr Drąg, Russell
6508 Stuart, S. Fan, Shengyao Xue, Stefan Pietsch, Susant Sahani, Tejun Heo,
6509 Thomas Miller, Thomas Sailer, Tobias Hunger, Tomasz Pala, Tom
6510 Gundersen, Tommi Rantala, Topi Miettinen, Torstein Husebø, userwithuid,
6511 Vasilis Liaskovitis, Vito Caputo, WaLyong Cho, William Douglas, Xiang
6512 Fan, Yu Watanabe, Zbigniew Jędrzejewski-Szmek
6513
6514 — Berlin, 2017-10-06
6515
6516 CHANGES WITH 234:
6517
6518 * Meson is now supported as build system in addition to Automake. It is
6519 our plan to remove Automake in one of our next releases, so that
6520 Meson becomes our exclusive build system. Hence, please start using
6521 the Meson build system in your downstream packaging. There's plenty
6522 of documentation around how to use Meson, the extremely brief
6523 summary:
6524
6525 ./autogen.sh && ./configure && make && sudo make install
6526
6527 becomes:
6528
6529 meson build && ninja -C build && sudo ninja -C build install
6530
6531 * Unit files gained support for a new JobRunningTimeoutUSec= setting,
6532 which permits configuring a timeout on the time a job is
6533 running. This is particularly useful for setting timeouts on jobs for
6534 .device units.
6535
6536 * Unit files gained two new options ConditionUser= and ConditionGroup=
6537 for conditionalizing units based on the identity of the user/group
6538 running a systemd user instance.
6539
6540 * systemd-networkd now understands a new FlowLabel= setting in the
6541 [VXLAN] section of .network files, as well as a Priority= in
6542 [Bridge], GVRP= + MVRP= + LooseBinding= + ReorderHeader= in [VLAN]
6543 and GatewayOnlink= + IPv6Preference= + Protocol= in [Route]. It also
6544 gained support for configuration of GENEVE links, and IPv6 address
6545 labels. The [Network] section gained the new IPv6ProxyNDP= setting.
6546
6547 * .link files now understand a new Port= setting.
6548
6549 * systemd-networkd's DHCP support gained support for DHCP option 119
6550 (domain search list).
6551
6552 * systemd-networkd gained support for serving IPv6 address ranges using
6553 the Router Advertisement protocol. The new .network configuration
6554 section [IPv6Prefix] may be used to configure the ranges to
6555 serve. This is implemented based on a new, minimal, native server
6556 implementation of RA.
6557
6558 * journalctl's --output= switch gained support for a new parameter
6559 "short-iso-precise" for a mode where timestamps are shown as precise
6560 ISO date values.
6561
6562 * systemd-udevd's "net_id" builtin may now generate stable network
6563 interface names from IBM PowerVM VIO devices as well as ACPI platform
6564 devices.
6565
6566 * MulticastDNS support in systemd-resolved may now be explicitly
6567 enabled/disabled using the new MulticastDNS= configuration file
6568 option.
6569
6570 * systemd-resolved may now optionally use libidn2 instead of the libidn
6571 for processing internationalized domain names. Support for libidn2
6572 should be considered experimental and should not be enabled by
6573 default yet.
6574
6575 * "machinectl pull-tar" and related call may now do verification of
6576 downloaded images using SUSE-style .sha256 checksum files in addition
6577 to the already existing support for validating using Ubuntu-style
6578 SHA256SUMS files.
6579
6580 * sd-bus gained support for a new sd_bus_message_appendv() call which
6581 is va_list equivalent of sd_bus_message_append().
6582
6583 * sd-boot gained support for validating images using SHIM/MOK.
6584
6585 * The SMACK code learnt support for "onlycap".
6586
6587 * systemd-mount --umount is now much smarter in figuring out how to
6588 properly unmount a device given its mount or device path.
6589
6590 * The code to call libnss_dns as a fallback from libnss_resolve when
6591 the communication with systemd-resolved fails was removed. This
6592 fallback was redundant and interfered with the [!UNAVAIL=return]
6593 suffix. See nss-resolve(8) for the recommended configuration.
6594
6595 * systemd-logind may now be restarted without losing state. It stores
6596 the file descriptors for devices it manages in the system manager
6597 using the FDSTORE= mechanism. Please note that further changes in
6598 other components may be required to make use of this (for example
6599 Xorg has code to listen for stops of systemd-logind and terminate
6600 itself when logind is stopped or restarted, in order to avoid using
6601 stale file descriptors for graphical devices, which is now
6602 counterproductive and must be reverted in order for restarts of
6603 systemd-logind to be safe. See
6604 https://cgit.freedesktop.org/xorg/xserver/commit/?id=dc48bd653c7e101.)
6605
6606 * All kernel-install plugins are called with the environment variable
6607 KERNEL_INSTALL_MACHINE_ID which is set to the machine ID given by
6608 /etc/machine-id. If the machine ID could not be determined,
6609 $KERNEL_INSTALL_MACHINE_ID will be empty. Plugins should not put
6610 anything in the entry directory (passed as the second argument) if
6611 $KERNEL_INSTALL_MACHINE_ID is empty. For backwards compatibility, a
6612 temporary directory is passed as the entry directory and removed
6613 after all the plugins exit.
6614
6615 * If KERNEL_INSTALL_MACHINE_ID is set in /etc/machine-info, kernel-install
6616 will now use its value as the machine ID instead of the machine ID
6617 from /etc/machine-id. If KERNEL_INSTALL_MACHINE_ID isn't set in
6618 /etc/machine-info and no machine ID is set in /etc/machine-id,
6619 kernel-install will try to store the current machine ID there as
6620 KERNEL_INSTALL_MACHINE_ID. If there is no machine ID, kernel-install
6621 will generate a new UUID, store it in /etc/machine-info as
6622 KERNEL_INSTALL_MACHINE_ID and use it as the machine ID.
6623
6624 Contributions from: Adrian Heine né Lang, Aggelos Avgerinos, Alexander
6625 Kurtz, Alexandros Frantzis, Alexey Brodkin, Alex Lu, Amir Pakdel, Amir
6626 Yalon, Anchor Cat, Anthony Parsons, Bastien Nocera, Benjamin Gilbert,
6627 Benjamin Robin, Boucman, Charles Plessy, Chris Chiu, Chris Lamb,
6628 Christian Brauner, Christian Hesse, Colin Walters, Daniel Drake,
6629 Danielle Church, Daniel Molkentin, Daniel Rusek, Daniel Wang, Davide
6630 Cavalca, David Herrmann, David Michael, Dax Kelson, Dimitri John
6631 Ledkov, Djalal Harouni, Dušan Kazik, Elias Probst, Evgeny Vereshchagin,
6632 Federico Di Pierro, Felipe Sateler, Felix Zhang, Franck Bui, Gary
6633 Tierney, George McCollister, Giedrius Statkevičius, Hans de Goede,
6634 hecke, Hendrik Westerberg, Hristo Venev, Ian Wienand, Insun Pyo, Ivan
6635 Shapovalov, James Cowgill, James Hemsing, Janne Heß, Jan Synacek, Jason
6636 Reeder, João Paulo Rechi Vita, John Paul Adrian Glaubitz, Jörg
6637 Thalheim, Josef Andersson, Josef Gajdusek, Julian Mehne, Kai Krakow,
6638 Krzysztof Jackiewicz, Lars Karlitski, Lennart Poettering, Lluís Gili,
6639 Lucas Werkmeister, Lukáš Nykrýn, Łukasz Stelmach, Mantas Mikulėnas,
6640 Marcin Bachry, Marcus Cooper, Mark Stosberg, Martin Pitt, Matija Skala,
6641 Matt Clarkson, Matthew Garrett, Matthias Greiner, Matthijs van Duin,
6642 Max Resch, Michael Biebl, Michal Koutný, Michal Sekletar, Michal
6643 Soltys, Michal Suchanek, Mike Gilbert, Nate Clark, Nathaniel R. Lewis,
6644 Neil Brown, Nikolai Kondrashov, Pascal S. de Kloe, Pat Riehecky, Patrik
6645 Flykt, Paul Kocialkowski, Peter Hutterer, Philip Withnall, Piotr
6646 Szydełko, Rafael Fontenelle, Ray Strode, Richard Maw, Roelf Wichertjes,
6647 Ronny Chevalier, Sarang S. Dalal, Sjoerd Simons, slodki, Stefan
6648 Schweter, Susant Sahani, Ted Wood, Thomas Blume, Thomas Haller, Thomas
6649 H. P. Andersen, Timothée Ravier, Tobias Jungel, Tobias Stoeckmann, Tom
6650 Gundersen, Tom Yan, Torstein Husebø, Umut Tezduyar Lindskog,
6651 userwithuid, Vito Caputo, Waldemar Brodkorb, WaLyong Cho, Yu, Li-Yu,
6652 Yusuke Nojima, Yu Watanabe, Zbigniew Jędrzejewski-Szmek, Дамјан
6653 Георгиевски
6654
6655 — Berlin, 2017-07-12
6656
6657 CHANGES WITH 233:
6658
6659 * The "hybrid" control group mode has been modified to improve
6660 compatibility with "legacy" cgroups-v1 setups. Specifically, the
6661 "hybrid" setup of /sys/fs/cgroup is now pretty much identical to
6662 "legacy" (including /sys/fs/cgroup/systemd as "name=systemd" named
6663 cgroups-v1 hierarchy), the only externally visible change being that
6664 the cgroups-v2 hierarchy is also mounted, to
6665 /sys/fs/cgroup/unified. This should provide a large degree of
6666 compatibility with "legacy" cgroups-v1, while taking benefit of the
6667 better management capabilities of cgroups-v2.
6668
6669 * The default control group setup mode may be selected both a boot-time
6670 via a set of kernel command line parameters (specifically:
6671 systemd.unified_cgroup_hierarchy= and
6672 systemd.legacy_systemd_cgroup_controller=), as well as a compile-time
6673 default selected on the configure command line
6674 (--with-default-hierarchy=). The upstream default is "hybrid"
6675 (i.e. the cgroups-v1 + cgroups-v2 mixture discussed above) now, but
6676 this will change in a future systemd version to be "unified" (pure
6677 cgroups-v2 mode). The third option for the compile time option is
6678 "legacy", to enter pure cgroups-v1 mode. We recommend downstream
6679 distributions to default to "hybrid" mode for release distributions,
6680 starting with v233. We recommend "unified" for development
6681 distributions (specifically: distributions such as Fedora's rawhide)
6682 as that's where things are headed in the long run. Use "legacy" for
6683 greatest stability and compatibility only.
6684
6685 * Note one current limitation of "unified" and "hybrid" control group
6686 setup modes: the kernel currently does not permit the systemd --user
6687 instance (i.e. unprivileged code) to migrate processes between two
6688 disconnected cgroup subtrees, even if both are managed and owned by
6689 the user. This effectively means "systemd-run --user --scope" doesn't
6690 work when invoked from outside of any "systemd --user" service or
6691 scope. Specifically, it is not supported from session scopes. We are
6692 working on fixing this in a future systemd version. (See #3388 for
6693 further details about this.)
6694
6695 * DBus policy files are now installed into /usr rather than /etc. Make
6696 sure your system has dbus >= 1.9.18 running before upgrading to this
6697 version, or override the install path with --with-dbuspolicydir= .
6698
6699 * All python scripts shipped with systemd (specifically: the various
6700 tests written in Python) now require Python 3.
6701
6702 * systemd unit tests can now run standalone (without the source or
6703 build directories), and can be installed into /usr/lib/systemd/tests/
6704 with 'make install-tests'.
6705
6706 * Note that from this version on, CONFIG_CRYPTO_USER_API_HASH,
6707 CONFIG_CRYPTO_HMAC and CONFIG_CRYPTO_SHA256 need to be enabled in the
6708 kernel.
6709
6710 * Support for the %c, %r, %R specifiers in unit files has been
6711 removed. Specifiers are not supposed to be dependent on configuration
6712 in the unit file itself (so that they resolve the same regardless
6713 where used in the unit files), but these specifiers were influenced
6714 by the Slice= option.
6715
6716 * The shell invoked by debug-shell.service now defaults to /bin/sh in
6717 all cases. If distributions want to use a different shell for this
6718 purpose (for example Fedora's /sbin/sushell) they need to specify
6719 this explicitly at configure time using --with-debug-shell=.
6720
6721 * The confirmation spawn prompt has been reworked to offer the
6722 following choices:
6723
6724 (c)ontinue, proceed without asking anymore
6725 (D)ump, show the state of the unit
6726 (f)ail, don't execute the command and pretend it failed
6727 (h)elp
6728 (i)nfo, show a short summary of the unit
6729 (j)obs, show jobs that are in progress
6730 (s)kip, don't execute the command and pretend it succeeded
6731 (y)es, execute the command
6732
6733 The 'n' choice for the confirmation spawn prompt has been removed,
6734 because its meaning was confusing.
6735
6736 The prompt may now also be redirected to an alternative console by
6737 specifying the console as parameter to systemd.confirm_spawn=.
6738
6739 * Services of Type=notify require a READY=1 notification to be sent
6740 during startup. If no such message is sent, the service now fails,
6741 even if the main process exited with a successful exit code.
6742
6743 * Services that fail to start up correctly now always have their
6744 ExecStopPost= commands executed. Previously, they'd enter "failed"
6745 state directly, without executing these commands.
6746
6747 * The option MulticastDNS= of network configuration files has acquired
6748 an actual implementation. With MulticastDNS=yes a host can resolve
6749 names of remote hosts and reply to mDNS A and AAAA requests.
6750
6751 * When units are about to be started an additional check is now done to
6752 ensure that all dependencies of type BindsTo= (when used in
6753 combination with After=) have been started.
6754
6755 * systemd-analyze gained a new verb "syscall-filter" which shows which
6756 system call groups are defined for the SystemCallFilter= unit file
6757 setting, and which system calls they contain.
6758
6759 * A new system call filter group "@filesystem" has been added,
6760 consisting of various file system related system calls. Group
6761 "@reboot" has been added, covering reboot, kexec and shutdown related
6762 calls. Finally, group "@swap" has been added covering swap
6763 configuration related calls.
6764
6765 * A new unit file option RestrictNamespaces= has been added that may be
6766 used to restrict access to the various process namespace types the
6767 Linux kernel provides. Specifically, it may be used to take away the
6768 right for a service unit to create additional file system, network,
6769 user, and other namespaces. This sandboxing option is particularly
6770 relevant due to the high amount of recently discovered namespacing
6771 related vulnerabilities in the kernel.
6772
6773 * systemd-udev's .link files gained support for a new AutoNegotiation=
6774 setting for configuring Ethernet auto-negotiation.
6775
6776 * systemd-networkd's .network files gained support for a new
6777 ListenPort= setting in the [DHCP] section to explicitly configure the
6778 UDP client port the DHCP client shall listen on.
6779
6780 * .network files gained a new Unmanaged= boolean setting for explicitly
6781 excluding one or more interfaces from management by systemd-networkd.
6782
6783 * The systemd-networkd ProxyARP= option has been renamed to
6784 IPV4ProxyARP=. Similarly, VXLAN-specific option ARPProxy= has been
6785 renamed to ReduceARPProxy=. The old names continue to be available
6786 for compatibility.
6787
6788 * systemd-networkd gained support for configuring IPv6 Proxy NDP
6789 addresses via the new IPv6ProxyNDPAddress= .network file setting.
6790
6791 * systemd-networkd's bonding device support gained support for two new
6792 configuration options ActiveSlave= and PrimarySlave=.
6793
6794 * The various options in the [Match] section of .network files gained
6795 support for negative matching.
6796
6797 * New systemd-specific mount options are now understood in /etc/fstab:
6798
6799 x-systemd.mount-timeout= may be used to configure the maximum
6800 permitted runtime of the mount command.
6801
6802 x-systemd.device-bound may be set to bind a mount point to its
6803 backing device unit, in order to automatically remove a mount point
6804 if its backing device is unplugged. This option may also be
6805 configured through the new SYSTEMD_MOUNT_DEVICE_BOUND udev property
6806 on the block device, which is now automatically set for all CDROM
6807 drives, so that mounted CDs are automatically unmounted when they are
6808 removed from the drive.
6809
6810 x-systemd.after= and x-systemd.before= may be used to explicitly
6811 order a mount after or before another unit or mount point.
6812
6813 * Enqueued start jobs for device units are now automatically garbage
6814 collected if there are no jobs waiting for them anymore.
6815
6816 * systemctl list-jobs gained two new switches: with --after, for every
6817 queued job the jobs it's waiting for are shown; with --before the
6818 jobs which it's blocking are shown.
6819
6820 * systemd-nspawn gained support for ephemeral boots from disk images
6821 (or in other words: --ephemeral and --image= may now be
6822 combined). Moreover, ephemeral boots are now supported for normal
6823 directories, even if the backing file system is not btrfs. Of course,
6824 if the file system does not support file system snapshots or
6825 reflinks, the initial copy operation will be relatively expensive, but
6826 this should still be suitable for many use cases.
6827
6828 * Calendar time specifications in .timer units now support
6829 specifications relative to the end of a month by using "~" instead of
6830 "-" as separator between month and day. For example, "*-02~03" means
6831 "the third last day in February". In addition a new syntax for
6832 repeated events has been added using the "/" character. For example,
6833 "9..17/2:00" means "every two hours from 9am to 5pm".
6834
6835 * systemd-socket-proxyd gained a new parameter --connections-max= for
6836 configuring the maximum number of concurrent connections.
6837
6838 * sd-id128 gained a new API for generating unique IDs for the host in a
6839 way that does not leak the machine ID. Specifically,
6840 sd_id128_get_machine_app_specific() derives an ID based on the
6841 machine ID in a well-defined, non-reversible, stable way. This is
6842 useful whenever an identifier for the host is needed but where the
6843 identifier shall not be useful to identify the system beyond the
6844 scope of the application itself. (Internally this uses HMAC-SHA256 as
6845 keyed hash function using the machine ID as input.)
6846
6847 * NotifyAccess= gained a new supported value "exec". When set
6848 notifications are accepted from all processes systemd itself invoked,
6849 including all control processes.
6850
6851 * .nspawn files gained support for defining overlay mounts using the
6852 Overlay= and OverlayReadOnly= options. Previously this functionality
6853 was only available on the systemd-nspawn command line.
6854
6855 * systemd-nspawn's --bind= and --overlay= options gained support for
6856 bind/overlay mounts whose source lies within the container tree by
6857 prefixing the source path with "+".
6858
6859 * systemd-nspawn's --bind= and --overlay= options gained support for
6860 automatically allocating a temporary source directory in /var/tmp
6861 that is removed when the container dies. Specifically, if the source
6862 directory is specified as empty string this mechanism is selected. An
6863 example usage is --overlay=+/var::/var, which creates an overlay
6864 mount based on the original /var contained in the image, overlaid
6865 with a temporary directory in the host's /var/tmp. This way changes
6866 to /var are automatically flushed when the container shuts down.
6867
6868 * systemd-nspawn --image= option does now permit raw file system block
6869 devices (in addition to images containing partition tables, as
6870 before).
6871
6872 * The disk image dissection logic in systemd-nspawn gained support for
6873 automatically setting up LUKS encrypted as well as Verity protected
6874 partitions. When a container is booted from an encrypted image the
6875 passphrase is queried at start-up time. When a container with Verity
6876 data is started, the root hash is search in a ".roothash" file
6877 accompanying the disk image (alternatively, pass the root hash via
6878 the new --root-hash= command line option).
6879
6880 * A new tool /usr/lib/systemd/systemd-dissect has been added that may
6881 be used to dissect disk images the same way as systemd-nspawn does
6882 it, following the Bootable Partition Specification. It may even be
6883 used to mount disk images with complex partition setups (including
6884 LUKS and Verity partitions) to a local host directory, in order to
6885 inspect them. This tool is not considered public API (yet), and is
6886 thus not installed into /usr/bin. Please do not rely on its
6887 existence, since it might go away or be changed in later systemd
6888 versions.
6889
6890 * A new generator "systemd-verity-generator" has been added, similar in
6891 style to "systemd-cryptsetup-generator", permitting automatic setup of
6892 Verity root partitions when systemd boots up. In order to make use of
6893 this your partition setup should follow the Discoverable Partitions
6894 Specification, and the GPT partition ID of the root file system
6895 partition should be identical to the upper 128bit of the Verity root
6896 hash. The GPT partition ID of the Verity partition protecting it
6897 should be the lower 128bit of the Verity root hash. If the partition
6898 image follows this model it is sufficient to specify a single
6899 "roothash=" kernel command line argument to both configure which root
6900 image and verity partition to use as well as the root hash for
6901 it. Note that systemd-nspawn's Verity support follows the same
6902 semantics, meaning that disk images with proper Verity data in place
6903 may be booted in containers with systemd-nspawn as well as on
6904 physical systems via the verity generator. Also note that the "mkosi"
6905 tool available at https://github.com/systemd/mkosi has been updated
6906 to generate Verity protected disk images following this scheme. In
6907 fact, it has been updated to generate disk images that optionally
6908 implement a complete UEFI SecureBoot trust chain, involving a signed
6909 kernel and initrd image that incorporates such a root hash as well as
6910 a Verity-enabled root partition.
6911
6912 * The hardware database (hwdb) udev supports has been updated to carry
6913 accelerometer quirks.
6914
6915 * All system services are now run with a fresh kernel keyring set up
6916 for them. The invocation ID is stored by default in it, thus
6917 providing a safe, non-overridable way to determine the invocation
6918 ID of each service.
6919
6920 * Service unit files gained new BindPaths= and BindReadOnlyPaths=
6921 options for bind mounting arbitrary paths in a service-specific
6922 way. When these options are used, arbitrary host or service files and
6923 directories may be mounted to arbitrary locations in the service's
6924 view.
6925
6926 * Documentation has been added that lists all of systemd's low-level
6927 environment variables:
6928
6929 https://github.com/systemd/systemd/blob/master/docs/ENVIRONMENT.md
6930
6931 * sd-daemon gained a new API sd_is_socket_sockaddr() for determining
6932 whether a specific socket file descriptor matches a specified socket
6933 address.
6934
6935 * systemd-firstboot has been updated to check for the
6936 systemd.firstboot= kernel command line option. It accepts a boolean
6937 and when set to false the first boot questions are skipped.
6938
6939 * systemd-fstab-generator has been updated to check for the
6940 systemd.volatile= kernel command line option, which either takes an
6941 optional boolean parameter or the special value "state". If used the
6942 system may be booted in a "volatile" boot mode. Specifically,
6943 "systemd.volatile" is used, the root directory will be mounted as
6944 tmpfs, and only /usr is mounted from the actual root file system. If
6945 "systemd.volatile=state" is used, the root directory will be mounted
6946 as usual, but /var is mounted as tmpfs. This concept provides similar
6947 functionality as systemd-nspawn's --volatile= option, but provides it
6948 on physical boots. Use this option for implementing stateless
6949 systems, or testing systems with all state and/or configuration reset
6950 to the defaults. (Note though that many distributions are not
6951 prepared to boot up without a populated /etc or /var, though.)
6952
6953 * systemd-gpt-auto-generator gained support for LUKS encrypted root
6954 partitions. Previously it only supported LUKS encrypted partitions
6955 for all other uses, except for the root partition itself.
6956
6957 * Socket units gained support for listening on AF_VSOCK sockets for
6958 communication in virtualized QEMU environments.
6959
6960 * The "configure" script gained a new option --with-fallback-hostname=
6961 for specifying the fallback hostname to use if none is configured in
6962 /etc/hostname. For example, by specifying
6963 --with-fallback-hostname=fedora it is possible to default to a
6964 hostname of "fedora" on pristine installations.
6965
6966 * systemd-cgls gained support for a new --unit= switch for listing only
6967 the control groups of a specific unit. Similar --user-unit= has been
6968 added for listing only the control groups of a specific user unit.
6969
6970 * systemd-mount gained a new --umount switch for unmounting a mount or
6971 automount point (and all mount/automount points below it).
6972
6973 * systemd will now refuse full configuration reloads (via systemctl
6974 daemon-reload and related calls) unless at least 16MiB of free space
6975 are available in /run. This is a safety precaution in order to ensure
6976 that generators can safely operate after the reload completed.
6977
6978 * A new unit file option RootImage= has been added, which has a similar
6979 effect as RootDirectory= but mounts the service's root directory from
6980 a disk image instead of plain directory. This logic reuses the same
6981 image dissection and mount logic that systemd-nspawn already uses,
6982 and hence supports any disk images systemd-nspawn supports, including
6983 those following the Discoverable Partition Specification, as well as
6984 Verity enabled images. This option enables systemd to run system
6985 services directly off disk images acting as resource bundles,
6986 possibly even including full integrity data.
6987
6988 * A new MountAPIVFS= unit file option has been added, taking a boolean
6989 argument. If enabled /proc, /sys and /dev (collectively called the
6990 "API VFS") will be mounted for the service. This is only relevant if
6991 RootDirectory= or RootImage= is used for the service, as these mounts
6992 are of course in place in the host mount namespace anyway.
6993
6994 * systemd-nspawn gained support for a new --pivot-root= switch. If
6995 specified the root directory within the container image is pivoted to
6996 the specified mount point, while the original root disk is moved to a
6997 different place. This option enables booting of ostree images
6998 directly with systemd-nspawn.
6999
7000 * The systemd build scripts will no longer complain if the NTP server
7001 addresses are not changed from the defaults. Google now supports
7002 these NTP servers officially. We still recommend downstreams to
7003 properly register an NTP pool with the NTP pool project though.
7004
7005 * coredumpctl gained a new "--reverse" option for printing the list
7006 of coredumps in reverse order.
7007
7008 * coredumpctl will now show additional information about truncated and
7009 inaccessible coredumps, as well as coredumps that are still being
7010 processed. It also gained a new --quiet switch for suppressing
7011 additional informational message in its output.
7012
7013 * coredumpctl gained support for only showing coredumps newer and/or
7014 older than specific timestamps, using the new --since= and --until=
7015 options, reminiscent of journalctl's options by the same name.
7016
7017 * The systemd-coredump logic has been improved so that it may be reused
7018 to collect backtraces in non-compiled languages, for example in
7019 scripting languages such as Python.
7020
7021 * machinectl will now show the UID shift of local containers, if user
7022 namespacing is enabled for them.
7023
7024 * systemd will now optionally run "environment generator" binaries at
7025 configuration load time. They may be used to add environment
7026 variables to the environment block passed to services invoked. One
7027 user environment generator is shipped by default that sets up
7028 environment variables based on files dropped into /etc/environment.d
7029 and ~/.config/environment.d/.
7030
7031 * systemd-resolved now includes the new, recently published 2017 DNSSEC
7032 root key (KSK).
7033
7034 * hostnamed has been updated to report a new chassis type of
7035 "convertible" to cover "foldable" laptops that can both act as a
7036 tablet and as a laptop, such as various Lenovo Yoga devices.
7037
7038 Contributions from: Adrián López, Alexander Galanin, Alexander
7039 Kochetkov, Alexandros Frantzis, Andrey Ulanov, Antoine Eiche, Baruch
7040 Siach, Bastien Nocera, Benjamin Robin, Björn, Brandon Philips, Cédric
7041 Schieli, Charles (Chas) Williams, Christian Hesse, Daniele Medri,
7042 Daniel Drake, Daniel Rusek, Daniel Wagner, Dan Streetman, Dave Reisner,
7043 David Glasser, David Herrmann, David Michael, Djalal Harouni, Dmitry
7044 Khlebnikov, Dmitry Rozhkov, Dongsu Park, Douglas Christman, Earnestly,
7045 Emil Soleyman, Eric Cook, Evgeny Vereshchagin, Felipe Sateler, Fionn
7046 Cleary, Florian Klink, Francesco Brozzu, Franck Bui, Gabriel Rauter,
7047 Gianluca Boiano, Giedrius Statkevičius, Graeme Lawes, Hans de Goede,
7048 Harald Hoyer, Ian Kelling, Ivan Shapovalov, Jakub Wilk, Janne Heß, Jan
7049 Synacek, Jason Reeder, Jonathan Boulle, Jörg Thalheim, Jouke Witteveen,
7050 Karl Kraus, Kees Cook, Keith Busch, Kieran Colford, kilian-k, Lennart
7051 Poettering, Lubomir Rintel, Lucas Werkmeister, Lukas Rusak, Maarten de
7052 Vries, Maks Naumov, Mantas Mikulėnas, Marc-Andre Lureau, Marcin Bachry,
7053 Mark Stosberg, Martin Ejdestig, Martin Pitt, Mauricio Faria de
7054 Oliveira, micah, Michael Biebl, Michael Shields, Michal Schmidt, Michal
7055 Sekletar, Michel Kraus, Mike Gilbert, Mikko Ylinen, Mirza Krak,
7056 Namhyung Kim, nikolaof, peoronoob, Peter Hutterer, Peter Körner, Philip
7057 Withnall, Piotr Drąg, Ray Strode, Reverend Homer, Rike-Benjamin
7058 Schuppner, Robert Kreuzer, Ronny Chevalier, Ruslan Bilovol, sammynx,
7059 Sergey Ptashnick, Sergiusz Urbaniak, Stefan Berger, Stefan Hajnoczi,
7060 Stefan Schweter, Stuart McLaren, Susant Sahani, Sylvain Plantefève,
7061 Taylor Smock, Tejun Heo, Thomas Blume, Thomas H. P. Andersen, Tibor
7062 Nagy, Tobias Stoeckmann, Tom Gundersen, Torstein Husebø, Viktar
7063 Vaŭčkievič, Viktor Mihajlovski, Vitaly Sulimov, Waldemar Brodkorb,
7064 Walter Garcia-Fontes, Wim de With, Yassine Imounachen, Yi EungJun,
7065 YunQiang Su, Yu Watanabe, Zbigniew Jędrzejewski-Szmek, Александр
7066 Тихонов
7067
7068 — Berlin, 2017-03-01
7069
7070 CHANGES WITH 232:
7071
7072 * udev now runs with MemoryDenyWriteExecute=, RestrictRealtime= and
7073 RestrictAddressFamilies= enabled. These sandboxing options should
7074 generally be compatible with the various external udev call-out
7075 binaries we are aware of, however there may be exceptions, in
7076 particular when exotic languages for these call-outs are used. In
7077 this case, consider turning off these settings locally.
7078
7079 * The new RemoveIPC= option can be used to remove IPC objects owned by
7080 the user or group of a service when that service exits.
7081
7082 * The new ProtectKernelModules= option can be used to disable explicit
7083 load and unload operations of kernel modules by a service. In
7084 addition access to /usr/lib/modules is removed if this option is set.
7085
7086 * ProtectSystem= option gained a new value "strict", which causes the
7087 whole file system tree with the exception of /dev, /proc, and /sys,
7088 to be remounted read-only for a service.
7089
7090 * The new ProtectKernelTunables= option can be used to disable
7091 modification of configuration files in /sys and /proc by a service.
7092 Various directories and files are remounted read-only, so access is
7093 restricted even if the file permissions would allow it.
7094
7095 * The new ProtectControlGroups= option can be used to disable write
7096 access by a service to /sys/fs/cgroup.
7097
7098 * Various systemd services have been hardened with
7099 ProtectKernelTunables=yes, ProtectControlGroups=yes,
7100 RestrictAddressFamilies=.
7101
7102 * Support for dynamically creating users for the lifetime of a service
7103 has been added. If DynamicUser=yes is specified, user and group IDs
7104 will be allocated from the range 61184…65519 for the lifetime of the
7105 service. They can be resolved using the new nss-systemd.so NSS
7106 module. The module must be enabled in /etc/nsswitch.conf. Services
7107 started in this way have PrivateTmp= and RemoveIPC= enabled, so that
7108 any resources allocated by the service will be cleaned up when the
7109 service exits. They also have ProtectHome=read-only and
7110 ProtectSystem=strict enabled, so they are not able to make any
7111 permanent modifications to the system.
7112
7113 * The nss-systemd module also always resolves root and nobody, making
7114 it possible to have no /etc/passwd or /etc/group files in minimal
7115 container or chroot environments.
7116
7117 * Services may be started with their own user namespace using the new
7118 boolean PrivateUsers= option. Only root, nobody, and the uid/gid
7119 under which the service is running are mapped. All other users are
7120 mapped to nobody.
7121
7122 * Support for the cgroup namespace has been added to systemd-nspawn. If
7123 supported by kernel, the container system started by systemd-nspawn
7124 will have its own view of the cgroup hierarchy. This new behaviour
7125 can be disabled using $SYSTEMD_NSPAWN_USE_CGNS environment variable.
7126
7127 * The new MemorySwapMax= option can be used to limit the maximum swap
7128 usage under the unified cgroup hierarchy.
7129
7130 * Support for the CPU controller in the unified cgroup hierarchy has
7131 been added, via the CPUWeight=, CPUStartupWeight=, CPUAccounting=
7132 options. This controller requires out-of-tree patches for the kernel
7133 and the support is provisional.
7134
7135 * Mount and automount units may now be created transiently
7136 (i.e. dynamically at runtime via the bus API, instead of requiring
7137 unit files in the file system).
7138
7139 * systemd-mount is a new tool which may mount file systems – much like
7140 mount(8), optionally pulling in additional dependencies through
7141 transient .mount and .automount units. For example, this tool
7142 automatically runs fsck on a backing block device before mounting,
7143 and allows the automount logic to be used dynamically from the
7144 command line for establishing mount points. This tool is particularly
7145 useful when dealing with removable media, as it will ensure fsck is
7146 run – if necessary – before the first access and that the file system
7147 is quickly unmounted after each access by utilizing the automount
7148 logic. This maximizes the chance that the file system on the
7149 removable media stays in a clean state, and if it isn't in a clean
7150 state is fixed automatically.
7151
7152 * LazyUnmount=yes option for mount units has been added to expose the
7153 umount --lazy option. Similarly, ForceUnmount=yes exposes the --force
7154 option.
7155
7156 * /efi will be used as the mount point of the EFI boot partition, if
7157 the directory is present, and the mount point was not configured
7158 through other means (e.g. fstab). If /efi directory does not exist,
7159 /boot will be used as before. This makes it easier to automatically
7160 mount the EFI partition on systems where /boot is used for something
7161 else.
7162
7163 * When operating on GPT disk images for containers, systemd-nspawn will
7164 now mount the ESP to /boot or /efi according to the same rules as PID
7165 1 running on a host. This allows tools like "bootctl" to operate
7166 correctly within such containers, in order to make container images
7167 bootable on physical systems.
7168
7169 * disk/by-id and disk/by-path symlinks are now created for NVMe drives.
7170
7171 * Two new user session targets have been added to support running
7172 graphical sessions under the systemd --user instance:
7173 graphical-session.target and graphical-session-pre.target. See
7174 systemd.special(7) for a description of how those targets should be
7175 used.
7176
7177 * The vconsole initialization code has been significantly reworked to
7178 use KD_FONT_OP_GET/SET ioctls instead of KD_FONT_OP_COPY and better
7179 support unicode keymaps. Font and keymap configuration will now be
7180 copied to all allocated virtual consoles.
7181
7182 * FreeBSD's bhyve virtualization is now detected.
7183
7184 * Information recorded in the journal for core dumps now includes the
7185 contents of /proc/mountinfo and the command line of the process at
7186 the top of the process hierarchy (which is usually the init process
7187 of the container).
7188
7189 * systemd-journal-gatewayd learned the --directory= option to serve
7190 files from the specified location.
7191
7192 * journalctl --root=… can be used to peruse the journal in the
7193 /var/log/ directories inside of a container tree. This is similar to
7194 the existing --machine= option, but does not require the container to
7195 be active.
7196
7197 * The hardware database has been extended to support
7198 ID_INPUT_TRACKBALL, used in addition to ID_INPUT_MOUSE to identify
7199 trackball devices.
7200
7201 MOUSE_WHEEL_CLICK_ANGLE_HORIZONTAL hwdb property has been added to
7202 specify the click rate for mice which include a horizontal wheel with
7203 a click rate that is different than the one for the vertical wheel.
7204
7205 * systemd-run gained a new --wait option that makes service execution
7206 synchronous. (Specifically, the command will not return until the
7207 specified service binary exited.)
7208
7209 * systemctl gained a new --wait option that causes the start command to
7210 wait until the units being started have terminated again.
7211
7212 * A new journal output mode "short-full" has been added which displays
7213 timestamps with abbreviated English day names and adds a timezone
7214 suffix. Those timestamps include more information than the default
7215 "short" output mode, and can be passed directly to journalctl's
7216 --since= and --until= options.
7217
7218 * /etc/resolv.conf will be bind-mounted into containers started by
7219 systemd-nspawn, if possible, so any changes to resolv.conf contents
7220 are automatically propagated to the container.
7221
7222 * The number of instances for socket-activated services originating
7223 from a single IP address can be limited with
7224 MaxConnectionsPerSource=, extending the existing setting of
7225 MaxConnections=.
7226
7227 * systemd-networkd gained support for vcan ("Virtual CAN") interface
7228 configuration.
7229
7230 * .netdev and .network configuration can now be extended through
7231 drop-ins.
7232
7233 * UDP Segmentation Offload, TCP Segmentation Offload, Generic
7234 Segmentation Offload, Generic Receive Offload, Large Receive Offload
7235 can be enabled and disabled using the new UDPSegmentationOffload=,
7236 TCPSegmentationOffload=, GenericSegmentationOffload=,
7237 GenericReceiveOffload=, LargeReceiveOffload= options in the
7238 [Link] section of .link files.
7239
7240 * The Spanning Tree Protocol, Priority, Aging Time, and the Default
7241 Port VLAN ID can be configured for bridge devices using the new STP=,
7242 Priority=, AgeingTimeSec=, and DefaultPVID= settings in the [Bridge]
7243 section of .netdev files.
7244
7245 * The route table to which routes received over DHCP or RA should be
7246 added can be configured with the new RouteTable= option in the [DHCP]
7247 and [IPv6AcceptRA] sections of .network files.
7248
7249 * The Address Resolution Protocol can be disabled on links managed by
7250 systemd-networkd using the ARP=no setting in the [Link] section of
7251 .network files.
7252
7253 * New environment variables $SERVICE_RESULT, $EXIT_CODE and
7254 $EXIT_STATUS are set for ExecStop= and ExecStopPost= commands, and
7255 encode information about the result and exit codes of the current
7256 service runtime cycle.
7257
7258 * systemd-sysctl will now configure kernel parameters in the order
7259 they occur in the configuration files. This matches what sysctl
7260 has been traditionally doing.
7261
7262 * kernel-install "plugins" that are executed to perform various
7263 tasks after a new kernel is added and before an old one is removed
7264 can now return a special value to terminate the procedure and
7265 prevent any later plugins from running.
7266
7267 * Journald's SplitMode=login setting has been deprecated. It has been
7268 removed from documentation, and its use is discouraged. In a future
7269 release it will be completely removed, and made equivalent to current
7270 default of SplitMode=uid.
7271
7272 * Storage=both option setting in /etc/systemd/coredump.conf has been
7273 removed. With fast LZ4 compression storing the core dump twice is not
7274 useful.
7275
7276 * The --share-system systemd-nspawn option has been replaced with an
7277 (undocumented) variable $SYSTEMD_NSPAWN_SHARE_SYSTEM, but the use of
7278 this functionality is discouraged. In addition the variables
7279 $SYSTEMD_NSPAWN_SHARE_NS_IPC, $SYSTEMD_NSPAWN_SHARE_NS_PID,
7280 $SYSTEMD_NSPAWN_SHARE_NS_UTS may be used to control the unsharing of
7281 individual namespaces.
7282
7283 * "machinectl list" now shows the IP address of running containers in
7284 the output, as well as OS release information.
7285
7286 * "loginctl list" now shows the TTY of each session in the output.
7287
7288 * sd-bus gained new API calls sd_bus_track_set_recursive(),
7289 sd_bus_track_get_recursive(), sd_bus_track_count_name(),
7290 sd_bus_track_count_sender(). They permit usage of sd_bus_track peer
7291 tracking objects in a "recursive" mode, where a single client can be
7292 counted multiple times, if it takes multiple references.
7293
7294 * sd-bus gained new API calls sd_bus_set_exit_on_disconnect() and
7295 sd_bus_get_exit_on_disconnect(). They may be used to make a
7296 process using sd-bus automatically exit if the bus connection is
7297 severed.
7298
7299 * Bus clients of the service manager may now "pin" loaded units into
7300 memory, by taking an explicit reference on them. This is useful to
7301 ensure the client can retrieve runtime data about the service even
7302 after the service completed execution. Taking such a reference is
7303 available only for privileged clients and should be helpful to watch
7304 running services in a race-free manner, and in particular collect
7305 information about exit statuses and results.
7306
7307 * The nss-resolve module has been changed to strictly return UNAVAIL
7308 when communication via D-Bus with resolved failed, and NOTFOUND when
7309 a lookup completed but was negative. This means it is now possible to
7310 neatly configure fallbacks using nsswitch.conf result checking
7311 expressions. Taking benefit of this, the new recommended
7312 configuration line for the "hosts" entry in /etc/nsswitch.conf is:
7313
7314 hosts: files mymachines resolve [!UNAVAIL=return] dns myhostname
7315
7316 * A new setting CtrlAltDelBurstAction= has been added to
7317 /etc/systemd/system.conf which may be used to configure the precise
7318 behaviour if the user on the console presses Ctrl-Alt-Del more often
7319 than 7 times in 2s. Previously this would unconditionally result in
7320 an expedited, immediate reboot. With this new setting the precise
7321 operation may be configured in more detail, and also turned off
7322 entirely.
7323
7324 * In .netdev files two new settings RemoteChecksumTx= and
7325 RemoteChecksumRx= are now understood that permit configuring the
7326 remote checksumming logic for VXLAN networks.
7327
7328 * The service manager learnt a new "invocation ID" concept for invoked
7329 services. Each runtime cycle of a service will get a new invocation
7330 ID (a 128bit random UUID) assigned that identifies the current
7331 run of the service uniquely and globally. A new invocation ID
7332 is generated each time a service starts up. The journal will store
7333 the invocation ID of a service along with any logged messages, thus
7334 making the invocation ID useful for matching the online runtime of a
7335 service with the offline log data it generated in a safe way without
7336 relying on synchronized timestamps. In many ways this new service
7337 invocation ID concept is similar to the kernel's boot ID concept that
7338 uniquely and globally identifies the runtime of each boot. The
7339 invocation ID of a service is passed to the service itself via an
7340 environment variable ($INVOCATION_ID). A new bus call
7341 GetUnitByInvocationID() has been added that is similar to GetUnit()
7342 but instead of retrieving the bus path for a unit by its name
7343 retrieves it by its invocation ID. The returned path is valid only as
7344 long as the passed invocation ID is current.
7345
7346 * systemd-resolved gained a new "DNSStubListener" setting in
7347 resolved.conf. It either takes a boolean value or the special values
7348 "udp" and "tcp", and configures whether to enable the stub DNS
7349 listener on 127.0.0.53:53.
7350
7351 * IP addresses configured via networkd may now carry additional
7352 configuration settings supported by the kernel. New options include:
7353 HomeAddress=, DuplicateAddressDetection=, ManageTemporaryAddress=,
7354 PrefixRoute=, AutoJoin=.
7355
7356 * The PAM configuration fragment file for "user@.service" shipped with
7357 systemd (i.e. the --user instance of systemd) has been stripped to
7358 the minimum necessary to make the system boot. Previously, it
7359 contained Fedora-specific stanzas that did not apply to other
7360 distributions. It is expected that downstream distributions add
7361 additional configuration lines, matching their needs to this file,
7362 using it only as rough template of what systemd itself needs. Note
7363 that this reduced fragment does not even include an invocation of
7364 pam_limits which most distributions probably want to add, even though
7365 systemd itself does not need it. (There's also the new build time
7366 option --with-pamconfdir=no to disable installation of the PAM
7367 fragment entirely.)
7368
7369 * If PrivateDevices=yes is set for a service the CAP_SYS_RAWIO
7370 capability is now also dropped from its set (in addition to
7371 CAP_SYS_MKNOD as before).
7372
7373 * In service unit files it is now possible to connect a specific named
7374 file descriptor with stdin/stdout/stdout of an executed service. The
7375 name may be specified in matching .socket units using the
7376 FileDescriptorName= setting.
7377
7378 * A number of journal settings may now be configured on the kernel
7379 command line. Specifically, the following options are now understood:
7380 systemd.journald.max_level_console=,
7381 systemd.journald.max_level_store=,
7382 systemd.journald.max_level_syslog=, systemd.journald.max_level_kmsg=,
7383 systemd.journald.max_level_wall=.
7384
7385 * "systemctl is-enabled --full" will now show by which symlinks a unit
7386 file is enabled in the unit dependency tree.
7387
7388 * Support for VeraCrypt encrypted partitions has been added to the
7389 "cryptsetup" logic and /etc/crypttab.
7390
7391 * systemd-detect-virt gained support for a new --private-users switch
7392 that checks whether the invoking processes are running inside a user
7393 namespace. Similar, a new special value "private-users" for the
7394 existing ConditionVirtualization= setting has been added, permitting
7395 skipping of specific units in user namespace environments.
7396
7397 Contributions from: Alban Crequy, Alexander Kuleshov, Alfie John,
7398 Andreas Henriksson, Andrew Jeddeloh, Balázs Úr, Bart Rulon, Benjamin
7399 Richter, Ben Gamari, Ben Harris, Brian J. Murrell, Christian Brauner,
7400 Christian Rebischke, Clinton Roy, Colin Walters, Cristian Rodríguez,
7401 Daniel Hahler, Daniel Mack, Daniel Maixner, Daniel Rusek, Dan Dedrick,
7402 Davide Cavalca, David Herrmann, David Michael, Dennis Wassenberg,
7403 Djalal Harouni, Dongsu Park, Douglas Christman, Elias Probst, Eric
7404 Cook, Erik Karlsson, Evgeny Vereshchagin, Felipe Sateler, Felix Zhang,
7405 Franck Bui, George Hilliard, Giuseppe Scrivano, HATAYAMA Daisuke,
7406 Heikki Kemppainen, Hendrik Brueckner, hi117, Ismo Puustinen, Ivan
7407 Shapovalov, Jakub Filak, Jakub Wilk, Jan Synacek, Jason Kölker,
7408 Jean-Sébastien Bour, Jiří Pírko, Jonathan Boulle, Jorge Niedbalski,
7409 Keith Busch, kristbaum, Kyle Russell, Lans Zhang, Lennart Poettering,
7410 Leonardo Brondani Schenkel, Lucas Werkmeister, Luca Bruno, Lukáš
7411 Nykrýn, Maciek Borzecki, Mantas Mikulėnas, Marc-Antoine Perennou,
7412 Marcel Holtmann, Marcos Mello, Martin Ejdestig, Martin Pitt, Matej
7413 Habrnal, Maxime de Roucy, Michael Biebl, Michael Chapman, Michael Hoy,
7414 Michael Olbrich, Michael Pope, Michal Sekletar, Michal Soltys, Mike
7415 Gilbert, Nick Owens, Patrik Flykt, Paweł Szewczyk, Peter Hutterer,
7416 Piotr Drąg, Reid Price, Richard W.M. Jones, Roman Stingler, Ronny
7417 Chevalier, Seraphime Kirkovski, Stefan Schweter, Steve Muir, Susant
7418 Sahani, Tejun Heo, Thomas Blume, Thomas H. P. Andersen, Tiago Levit,
7419 Tobias Jungel, Tomáš Janoušek, Topi Miettinen, Torstein Husebø, Umut
7420 Tezduyar Lindskog, Vito Caputo, WaLyong Cho, Wilhelm Schuster, Yann
7421 E. MORIN, Yi EungJun, Yuki Inoguchi, Yu Watanabe, Zbigniew
7422 Jędrzejewski-Szmek, Zeal Jagannatha
7423
7424 — Santa Fe, 2016-11-03
7425
7426 CHANGES WITH 231:
7427
7428 * In service units the various ExecXYZ= settings have been extended
7429 with an additional special character as first argument of the
7430 assigned value: if the character '+' is used the specified command
7431 line it will be run with full privileges, regardless of User=,
7432 Group=, CapabilityBoundingSet= and similar options. The effect is
7433 similar to the existing PermissionsStartOnly= option, but allows
7434 configuration of this concept for each executed command line
7435 independently.
7436
7437 * Services may now alter the service watchdog timeout at runtime by
7438 sending a WATCHDOG_USEC= message via sd_notify().
7439
7440 * MemoryLimit= and related unit settings now optionally take percentage
7441 specifications. The percentage is taken relative to the amount of
7442 physical memory in the system (or in case of containers, the assigned
7443 amount of memory). This allows scaling service resources neatly with
7444 the amount of RAM available on the system. Similarly, systemd-logind's
7445 RuntimeDirectorySize= option now also optionally takes percentage
7446 values.
7447
7448 * In similar fashion TasksMax= takes percentage values now, too. The
7449 value is taken relative to the configured maximum number of processes
7450 on the system. The per-service task maximum has been changed to 15%
7451 using this functionality. (Effectively this is an increase of 512 →
7452 4915 for service units, given the kernel's default pid_max setting.)
7453
7454 * Calendar time specifications in .timer units now understand a ".."
7455 syntax for time ranges. Example: "4..7:10" may now be used for
7456 defining a timer that is triggered at 4:10am, 5:10am, 6:10am and
7457 7:10am every day.
7458
7459 * The InaccessableDirectories=, ReadOnlyDirectories= and
7460 ReadWriteDirectories= unit file settings have been renamed to
7461 InaccessablePaths=, ReadOnlyPaths= and ReadWritePaths= and may now be
7462 applied to all kinds of file nodes, and not just directories, with
7463 the exception of symlinks. Specifically these settings may now be
7464 used on block and character device nodes, UNIX sockets and FIFOS as
7465 well as regular files. The old names of these settings remain
7466 available for compatibility.
7467
7468 * systemd will now log about all service processes it kills forcibly
7469 (using SIGKILL) because they remained after the clean shutdown phase
7470 of the service completed. This should help identifying services that
7471 shut down uncleanly. Moreover if KillUserProcesses= is enabled in
7472 systemd-logind's configuration a similar log message is generated for
7473 processes killed at the end of each session due to this setting.
7474
7475 * systemd will now set the $JOURNAL_STREAM environment variable for all
7476 services whose stdout/stderr are connected to the Journal (which
7477 effectively means by default: all services). The variable contains
7478 the device and inode number of the file descriptor used for
7479 stdout/stderr. This may be used by invoked programs to detect whether
7480 their stdout/stderr is connected to the Journal, in which case they
7481 can switch over to direct Journal communication, thus being able to
7482 pass extended, structured metadata along with their log messages. As
7483 one example, this is now used by glib's logging primitives.
7484
7485 * When using systemd's default tmp.mount unit for /tmp, the mount point
7486 will now be established with the "nosuid" and "nodev" options. This
7487 avoids privilege escalation attacks that put traps and exploits into
7488 /tmp. However, this might cause problems if you e. g. put container
7489 images or overlays into /tmp; if you need this, override tmp.mount's
7490 "Options=" with a drop-in, or mount /tmp from /etc/fstab with your
7491 desired options.
7492
7493 * systemd now supports the "memory" cgroup controller also on
7494 cgroup v2.
7495
7496 * The systemd-cgtop tool now optionally takes a control group path as
7497 command line argument. If specified, the control group list shown is
7498 limited to subgroups of that group.
7499
7500 * The SystemCallFilter= unit file setting gained support for
7501 pre-defined, named system call filter sets. For example
7502 SystemCallFilter=@clock is now an effective way to make all clock
7503 changing-related system calls unavailable to a service. A number of
7504 similar pre-defined groups are defined. Writing system call filters
7505 for system services is simplified substantially with this new
7506 concept. Accordingly, all of systemd's own, long-running services now
7507 enable system call filtering based on this, by default.
7508
7509 * A new service setting MemoryDenyWriteExecute= has been added, taking
7510 a boolean value. If turned on, a service may no longer create memory
7511 mappings that are writable and executable at the same time. This
7512 enhances security for services where this is enabled as it becomes
7513 harder to dynamically write and then execute memory in exploited
7514 service processes. This option has been enabled for all of systemd's
7515 own long-running services.
7516
7517 * A new RestrictRealtime= service setting has been added, taking a
7518 boolean argument. If set the service's processes may no longer
7519 acquire realtime scheduling. This improves security as realtime
7520 scheduling may otherwise be used to easily freeze the system.
7521
7522 * systemd-nspawn gained a new switch --notify-ready= taking a boolean
7523 value. This may be used for requesting that the system manager inside
7524 of the container reports start-up completion to nspawn which then
7525 propagates this notification further to the service manager
7526 supervising nspawn itself. A related option NotifyReady= in .nspawn
7527 files has been added too. This functionality allows ordering of the
7528 start-up of multiple containers using the usual systemd ordering
7529 primitives.
7530
7531 * machinectl gained a new command "stop" that is an alias for
7532 "terminate".
7533
7534 * systemd-resolved gained support for contacting DNS servers on
7535 link-local IPv6 addresses.
7536
7537 * If systemd-resolved receives the SIGUSR2 signal it will now flush all
7538 its caches. A method call for requesting the same operation has been
7539 added to the bus API too, and is made available via "systemd-resolve
7540 --flush-caches".
7541
7542 * systemd-resolve gained a new --status switch. If passed a brief
7543 summary of the used DNS configuration with per-interface information
7544 is shown.
7545
7546 * resolved.conf gained a new Cache= boolean option, defaulting to
7547 on. If turned off local DNS caching is disabled. This comes with a
7548 performance penalty in particular when DNSSEC is enabled. Note that
7549 resolved disables its internal caching implicitly anyway, when the
7550 configured DNS server is on a host-local IP address such as ::1 or
7551 127.0.0.1, thus automatically avoiding double local caching.
7552
7553 * systemd-resolved now listens on the local IP address 127.0.0.53:53
7554 for DNS requests. This improves compatibility with local programs
7555 that do not use the libc NSS or systemd-resolved's bus APIs for name
7556 resolution. This minimal DNS service is only available to local
7557 programs and does not implement the full DNS protocol, but enough to
7558 cover local DNS clients. A new, static resolv.conf file, listing just
7559 this DNS server is now shipped in /usr/lib/systemd/resolv.conf. It is
7560 now recommended to make /etc/resolv.conf a symlink to this file in
7561 order to route all DNS lookups to systemd-resolved, regardless if
7562 done via NSS, the bus API or raw DNS packets. Note that this local
7563 DNS service is not as fully featured as the libc NSS or
7564 systemd-resolved's bus APIs. For example, as unicast DNS cannot be
7565 used to deliver link-local address information (as this implies
7566 sending a local interface index along), LLMNR/mDNS support via this
7567 interface is severely restricted. It is thus strongly recommended for
7568 all applications to use the libc NSS API or native systemd-resolved
7569 bus API instead.
7570
7571 * systemd-networkd's bridge support learned a new setting
7572 VLANFiltering= for controlling VLAN filtering. Moreover a new section
7573 in .network files has been added for configuring VLAN bridging in
7574 more detail: VLAN=, EgressUntagged=, PVID= in [BridgeVLAN].
7575
7576 * systemd-networkd's IPv6 Router Advertisement code now makes use of
7577 the DNSSL and RDNSS options. This means IPv6 DNS configuration may
7578 now be acquired without relying on DHCPv6. Two new options
7579 UseDomains= and UseDNS= have been added to configure this behaviour.
7580
7581 * systemd-networkd's IPv6AcceptRouterAdvertisements= option has been
7582 renamed IPv6AcceptRA=, without altering its behaviour. The old
7583 setting name remains available for compatibility reasons.
7584
7585 * The systemd-networkd VTI/VTI6 tunneling support gained new options
7586 Key=, InputKey= and OutputKey=.
7587
7588 * systemd-networkd gained support for VRF ("Virtual Routing Function")
7589 interface configuration.
7590
7591 * "systemctl edit" may now be used to create new unit files by
7592 specifying the --force switch.
7593
7594 * sd-event gained a new function sd_event_get_iteration() for
7595 requesting the current iteration counter of the event loop. It starts
7596 at zero and is increased by one with each event loop iteration.
7597
7598 * A new rpm macro %systemd_ordering is provided by the macros.systemd
7599 file. It can be used in lieu of %systemd_requires in packages which
7600 don't use any systemd functionality and are intended to be installed
7601 in minimal containers without systemd present. This macro provides
7602 ordering dependencies to ensure that if the package is installed in
7603 the same rpm transaction as systemd, systemd will be installed before
7604 the scriptlets for the package are executed, allowing unit presets
7605 to be handled.
7606
7607 New macros %_systemdgeneratordir and %_systemdusergeneratordir have
7608 been added to simplify packaging of generators.
7609
7610 * The os-release file gained VERSION_CODENAME field for the
7611 distribution nickname (e.g. VERSION_CODENAME=woody).
7612
7613 * New udev property UDEV_DISABLE_PERSISTENT_STORAGE_RULES_FLAG=1
7614 can be set to disable parsing of metadata and the creation
7615 of persistent symlinks for that device.
7616
7617 * The v230 change to tag framebuffer devices (/dev/fb*) with "uaccess"
7618 to make them available to logged-in users has been reverted.
7619
7620 * Much of the common code of the various systemd components is now
7621 built into an internal shared library libsystemd-shared-231.so
7622 (incorporating the systemd version number in the name, to be updated
7623 with future releases) that the components link to. This should
7624 decrease systemd footprint both in memory during runtime and on
7625 disk. Note that the shared library is not for public use, and is
7626 neither API nor ABI stable, but is likely to change with every new
7627 released update. Packagers need to make sure that binaries
7628 linking to libsystemd-shared.so are updated in step with the
7629 library.
7630
7631 * Configuration for "mkosi" is now part of the systemd
7632 repository. mkosi is a tool to easily build legacy-free OS images,
7633 and is available on github: https://github.com/systemd/mkosi. If
7634 "mkosi" is invoked in the build tree a new raw OS image is generated
7635 incorporating the systemd sources currently being worked on and a
7636 clean, fresh distribution installation. The generated OS image may be
7637 booted up with "systemd-nspawn -b -i", qemu-kvm or on any physical
7638 UEFI PC. This functionality is particularly useful to easily test
7639 local changes made to systemd in a pristine, defined environment. See
7640 doc/HACKING for details.
7641
7642 * configure learned the --with-support-url= option to specify the
7643 distribution's bugtracker.
7644
7645 Contributions from: Alban Crequy, Alessandro Puccetti, Alessio Igor
7646 Bogani, Alexander Kuleshov, Alexander Kurtz, Alex Gaynor, Andika
7647 Triwidada, Andreas Pokorny, Andreas Rammhold, Andrew Jeddeloh, Ansgar
7648 Burchardt, Atrotors, Benjamin Drung, Brian Boylston, Christian Hesse,
7649 Christian Rebischke, Daniele Medri, Daniel Mack, Dave Reisner, David
7650 Herrmann, David Michael, Djalal Harouni, Douglas Christman, Elias
7651 Probst, Evgeny Vereshchagin, Federico Mena Quintero, Felipe Sateler,
7652 Franck Bui, Harald Hoyer, Ian Lee, Ivan Shapovalov, Jakub Wilk, Jan
7653 Janssen, Jean-Sébastien Bour, John Paul Adrian Glaubitz, Jouke
7654 Witteveen, Kai Ruhnau, kpengboy, Kyle Walker, Lénaïc Huard, Lennart
7655 Poettering, Luca Bruno, Lukas Lösche, Lukáš Nykrýn, mahkoh, Marcel
7656 Holtmann, Martin Pitt, Marty Plummer, Matthieu Codron, Max Prokhorov,
7657 Michael Biebl, Michael Karcher, Michael Olbrich, Michał Bartoszkiewicz,
7658 Michal Sekletar, Michal Soltys, Minkyung, Muhammet Kara, mulkieran,
7659 Otto Wallenius, Pablo Lezaeta Reyes, Peter Hutterer, Ronny Chevalier,
7660 Rusty Bird, Stef Walter, Susant Sahani, Tejun Heo, Thomas Blume, Thomas
7661 Haller, Thomas H. P. Andersen, Tobias Jungel, Tom Gundersen, Tom Yan,
7662 Topi Miettinen, Torstein Husebø, Valentin Vidić, Viktar Vaŭčkievič,
7663 WaLyong Cho, Weng Xuetian, Werner Fink, Zbigniew Jędrzejewski-Szmek
7664
7665 — Berlin, 2016-07-25
7666
7667 CHANGES WITH 230:
7668
7669 * DNSSEC is now turned on by default in systemd-resolved (in
7670 "allow-downgrade" mode), but may be turned off during compile time by
7671 passing "--with-default-dnssec=no" to "configure" (and of course,
7672 during runtime with DNSSEC= in resolved.conf). We recommend
7673 downstreams to leave this on at least during development cycles and
7674 report any issues with the DNSSEC logic upstream. We are very
7675 interested in collecting feedback about the DNSSEC validator and its
7676 limitations in the wild. Note however, that DNSSEC support is
7677 probably nothing downstreams should turn on in stable distros just
7678 yet, as it might create incompatibilities with a few DNS servers and
7679 networks. We tried hard to make sure we downgrade to non-DNSSEC mode
7680 automatically whenever we detect such incompatible setups, but there
7681 might be systems we do not cover yet. Hence: please help us testing
7682 the DNSSEC code, leave this on where you can, report back, but then
7683 again don't consider turning this on in your stable, LTS or
7684 production release just yet. (Note that you have to enable
7685 nss-resolve in /etc/nsswitch.conf, to actually use systemd-resolved
7686 and its DNSSEC mode for hostname resolution from local
7687 applications.)
7688
7689 * systemd-resolve conveniently resolves DANE records with the --tlsa
7690 option and OPENPGPKEY records with the --openpgp option. It also
7691 supports dumping raw DNS record data via the new --raw= switch.
7692
7693 * systemd-logind will now by default terminate user processes that are
7694 part of the user session scope unit (session-XX.scope) when the user
7695 logs out. This behavior is controlled by the KillUserProcesses=
7696 setting in logind.conf, and the previous default of "no" is now
7697 changed to "yes". This means that user sessions will be properly
7698 cleaned up after, but additional steps are necessary to allow
7699 intentionally long-running processes to survive logout.
7700
7701 While the user is logged in at least once, user@.service is running,
7702 and any service that should survive the end of any individual login
7703 session can be started at a user service or scope using systemd-run.
7704 systemd-run(1) man page has been extended with an example which shows
7705 how to run screen in a scope unit underneath user@.service. The same
7706 command works for tmux.
7707
7708 After the user logs out of all sessions, user@.service will be
7709 terminated too, by default, unless the user has "lingering" enabled.
7710 To effectively allow users to run long-term tasks even if they are
7711 logged out, lingering must be enabled for them. See loginctl(1) for
7712 details. The default polkit policy was modified to allow users to
7713 set lingering for themselves without authentication.
7714
7715 Previous defaults can be restored at compile time by the
7716 --without-kill-user-processes option to "configure".
7717
7718 * systemd-logind gained new configuration settings SessionsMax= and
7719 InhibitorsMax=, both with a default of 8192. It will not register new
7720 user sessions or inhibitors above this limit.
7721
7722 * systemd-logind will now reload configuration on SIGHUP.
7723
7724 * The unified cgroup hierarchy added in Linux 4.5 is now supported.
7725 Use systemd.unified_cgroup_hierarchy=1 on the kernel command line to
7726 enable. Also, support for the "io" cgroup controller in the unified
7727 hierarchy has been added, so that the "memory", "pids" and "io" are
7728 now the controllers that are supported on the unified hierarchy.
7729
7730 WARNING: it is not possible to use previous systemd versions with
7731 systemd.unified_cgroup_hierarchy=1 and the new kernel. Therefore it
7732 is necessary to also update systemd in the initramfs if using the
7733 unified hierarchy. An updated SELinux policy is also required.
7734
7735 * LLDP support has been extended, and both passive (receive-only) and
7736 active (sender) modes are supported. Passive mode ("routers-only") is
7737 enabled by default in systemd-networkd. Active LLDP mode is enabled
7738 by default for containers on the internal network. The "networkctl
7739 lldp" command may be used to list information gathered. "networkctl
7740 status" will also show basic LLDP information on connected peers now.
7741
7742 * The IAID and DUID unique identifier sent in DHCP requests may now be
7743 configured for the system and each .network file managed by
7744 systemd-networkd using the DUIDType=, DUIDRawData=, IAID= options.
7745
7746 * systemd-networkd gained support for configuring proxy ARP support for
7747 each interface, via the ProxyArp= setting in .network files. It also
7748 gained support for configuring the multicast querier feature of
7749 bridge devices, via the new MulticastQuerier= setting in .netdev
7750 files. Similarly, snooping on the IGMP traffic can be controlled
7751 via the new setting MulticastSnooping=.
7752
7753 A new setting PreferredLifetime= has been added for addresses
7754 configured in .network file to configure the lifetime intended for an
7755 address.
7756
7757 The systemd-networkd DHCP server gained the option EmitRouter=, which
7758 defaults to yes, to configure whether the DHCP Option 3 (Router)
7759 should be emitted.
7760
7761 * The testing tool /usr/lib/systemd/systemd-activate is renamed to
7762 systemd-socket-activate and installed into /usr/bin. It is now fully
7763 supported.
7764
7765 * systemd-journald now uses separate threads to flush changes to disk
7766 when closing journal files, thus reducing impact of slow disk I/O on
7767 logging performance.
7768
7769 * The sd-journal API gained two new calls
7770 sd_journal_open_directory_fd() and sd_journal_open_files_fd() which
7771 can be used to open journal files using file descriptors instead of
7772 file or directory paths. sd_journal_open_container() has been
7773 deprecated, sd_journal_open_directory_fd() should be used instead
7774 with the flag SD_JOURNAL_OS_ROOT.
7775
7776 * journalctl learned a new output mode "-o short-unix" that outputs log
7777 lines prefixed by their UNIX time (i.e. seconds since Jan 1st, 1970
7778 UTC). It also gained support for a new --no-hostname setting to
7779 suppress the hostname column in the family of "short" output modes.
7780
7781 * systemd-ask-password now optionally skips printing of the password to
7782 stdout with --no-output which can be useful in scripts.
7783
7784 * Framebuffer devices (/dev/fb*) and 3D printers and scanners
7785 (devices tagged with ID_MAKER_TOOL) are now tagged with
7786 "uaccess" and are available to logged in users.
7787
7788 * The DeviceAllow= unit setting now supports specifiers (with "%").
7789
7790 * "systemctl show" gained a new --value switch, which allows print a
7791 only the contents of a specific unit property, without also printing
7792 the property's name. Similar support was added to "show*" verbs
7793 of loginctl and machinectl that output "key=value" lists.
7794
7795 * A new unit type "generated" was added for files dynamically generated
7796 by generator tools. Similarly, a new unit type "transient" is used
7797 for unit files created using the runtime API. "systemctl enable" will
7798 refuse to operate on such files.
7799
7800 * A new command "systemctl revert" has been added that may be used to
7801 revert to the vendor version of a unit file, in case local changes
7802 have been made by adding drop-ins or overriding the unit file.
7803
7804 * "machinectl clean" gained a new verb to automatically remove all or
7805 just hidden container images.
7806
7807 * systemd-tmpfiles gained support for a new line type "e" for emptying
7808 directories, if they exist, without creating them if they don't.
7809
7810 * systemd-nspawn gained support for automatically patching the UID/GIDs
7811 of the owners and the ACLs of all files and directories in a
7812 container tree to match the UID/GID user namespacing range selected
7813 for the container invocation. This mode is enabled via the new
7814 --private-users-chown switch. It also gained support for
7815 automatically choosing a free, previously unused UID/GID range when
7816 starting a container, via the new --private-users=pick setting (which
7817 implies --private-users-chown). Together, these options for the first
7818 time make user namespacing for nspawn containers fully automatic and
7819 thus deployable. The systemd-nspawn@.service template unit file has
7820 been changed to use this functionality by default.
7821
7822 * systemd-nspawn gained a new --network-zone= switch, that allows
7823 creating ad-hoc virtual Ethernet links between multiple containers,
7824 that only exist as long as at least one container referencing them is
7825 running. This allows easy connecting of multiple containers with a
7826 common link that implements an Ethernet broadcast domain. Each of
7827 these network "zones" may be named relatively freely by the user, and
7828 may be referenced by any number of containers, but each container may
7829 only reference one of these "zones". On the lower level, this is
7830 implemented by an automatically managed bridge network interface for
7831 each zone, that is created when the first container referencing its
7832 zone is created and removed when the last one referencing its zone
7833 terminates.
7834
7835 * The default start timeout may now be configured on the kernel command
7836 line via systemd.default_timeout_start_sec=. It was already
7837 configurable via the DefaultTimeoutStartSec= option in
7838 /etc/systemd/system.conf.
7839
7840 * Socket units gained a new TriggerLimitIntervalSec= and
7841 TriggerLimitBurst= setting to configure a limit on the activation
7842 rate of the socket unit.
7843
7844 * The LimitNICE= setting now optionally takes normal UNIX nice values
7845 in addition to the raw integer limit value. If the specified
7846 parameter is prefixed with "+" or "-" and is in the range -20…19 the
7847 value is understood as UNIX nice value. If not prefixed like this it
7848 is understood as raw RLIMIT_NICE limit.
7849
7850 * Note that the effect of the PrivateDevices= unit file setting changed
7851 slightly with this release: the per-device /dev file system will be
7852 mounted read-only from this version on, and will have "noexec"
7853 set. This (minor) change of behavior might cause some (exceptional)
7854 legacy software to break, when PrivateDevices=yes is set for its
7855 service. Please leave PrivateDevices= off if you run into problems
7856 with this.
7857
7858 * systemd-bootchart has been split out to a separate repository:
7859 https://github.com/systemd/systemd-bootchart
7860
7861 * systemd-bus-proxyd has been removed, as kdbus is unlikely to still be
7862 merged into the kernel in its current form.
7863
7864 * The compatibility libraries libsystemd-daemon.so,
7865 libsystemd-journal.so, libsystemd-id128.so, and libsystemd-login.so
7866 which have been deprecated since systemd-209 have been removed along
7867 with the corresponding pkg-config files. All symbols provided by
7868 those libraries are provided by libsystemd.so.
7869
7870 * The Capabilities= unit file setting has been removed (it is ignored
7871 for backwards compatibility). AmbientCapabilities= and
7872 CapabilityBoundingSet= should be used instead.
7873
7874 * A new special target has been added, initrd-root-device.target,
7875 which creates a synchronization point for dependencies of the root
7876 device in early userspace. Initramfs builders must ensure that this
7877 target is now included in early userspace.
7878
7879 Contributions from: Alban Crequy, Alexander Kuleshov, Alexander Shopov,
7880 Alex Crawford, Andre Klärner, Andrew Eikum, Beniamino Galvani, Benjamin
7881 Robin, Biao Lu, Bjørnar Ness, Calvin Owens, Christian Hesse, Clemens
7882 Gruber, Colin Guthrie, Daniel Drake, Daniele Medri, Daniel J Walsh,
7883 Daniel Mack, Dan Nicholson, daurnimator, David Herrmann, David
7884 R. Hedges, Elias Probst, Emmanuel Gil Peyrot, EMOziko, Evgeny
7885 Vereshchagin, Federico, Felipe Sateler, Filipe Brandenburger, Franck
7886 Bui, frankheckenbach, gdamjan, Georgia Brikis, Harald Hoyer, Hendrik
7887 Brueckner, Hristo Venev, Iago López Galeiras, Ian Kelling, Ismo
7888 Puustinen, Jakub Wilk, Jaroslav Škarvada, Jeff Huang, Joel Holdsworth,
7889 John Paul Adrian Glaubitz, Jonathan Boulle, kayrus, Klearchos
7890 Chaloulos, Kyle Russell, Lars Uebernickel, Lennart Poettering, Lubomir
7891 Rintel, Lukáš Nykrýn, Mantas Mikulėnas, Marcel Holtmann, Martin Pitt,
7892 Michael Biebl, michaelolbrich, Michał Bartoszkiewicz, Michal Koutný,
7893 Michal Sekletar, Mike Frysinger, Mike Gilbert, Mingcong Bai, Ming Lin,
7894 mulkieran, muzena, Nalin Dahyabhai, Naohiro Aota, Nathan McSween,
7895 Nicolas Braud-Santoni, Patrik Flykt, Peter Hutterer, Peter Mattern,
7896 Petr Lautrbach, Petros Angelatos, Piotr Drąg, Rabin Vincent, Robert
7897 Węcławski, Ronny Chevalier, Samuel Tardieu, Stefan Saraev, Stefan
7898 Schallenberg aka nafets227, Steven Siloti, Susant Sahani, Sylvain
7899 Plantefève, Taylor Smock, Tejun Heo, Thomas Blume, Thomas Haller,
7900 Thomas H. P. Andersen, Tobias Klauser, Tom Gundersen, topimiettinen,
7901 Torstein Husebø, Umut Tezduyar Lindskog, Uwe Kleine-König, Victor Toso,
7902 Vinay Kulkarni, Vito Caputo, Vittorio G (VittGam), Vladimir Panteleev,
7903 Wieland Hoffmann, Wouter Verhelst, Yu Watanabe, Zbigniew
7904 Jędrzejewski-Szmek
7905
7906 — Fairfax, 2016-05-21
7907
7908 CHANGES WITH 229:
7909
7910 * The systemd-resolved DNS resolver service has gained a substantial
7911 set of new features, most prominently it may now act as a DNSSEC
7912 validating stub resolver. DNSSEC mode is currently turned off by
7913 default, but is expected to be turned on by default in one of the
7914 next releases. For now, we invite everybody to test the DNSSEC logic
7915 by setting DNSSEC=allow-downgrade in /etc/systemd/resolved.conf. The
7916 service also gained a full set of D-Bus interfaces, including calls
7917 to configure DNS and DNSSEC settings per link (for use by external
7918 network management software). systemd-resolved and systemd-networkd
7919 now distinguish between "search" and "routing" domains. The former
7920 are used to qualify single-label names, the latter are used purely
7921 for routing lookups within certain domains to specific links.
7922 resolved now also synthesizes RRs for all entries from /etc/hosts.
7923
7924 * The systemd-resolve tool (which is a client utility for
7925 systemd-resolved) has been improved considerably and is now fully
7926 supported and documented. Hence it has moved from /usr/lib/systemd to
7927 /usr/bin.
7928
7929 * /dev/disk/by-path/ symlink support has been (re-)added for virtio
7930 devices.
7931
7932 * The coredump collection logic has been reworked: when a coredump is
7933 collected it is now written to disk, compressed and processed
7934 (including stacktrace extraction) from a new instantiated service
7935 systemd-coredump@.service, instead of directly from the
7936 /proc/sys/kernel/core_pattern hook we provide. This is beneficial as
7937 processing large coredumps can take up a substantial amount of
7938 resources and time, and this previously happened entirely outside of
7939 systemd's service supervision. With the new logic the core_pattern
7940 hook only does minimal metadata collection before passing off control
7941 to the new instantiated service, which is configured with a time
7942 limit, a nice level and other settings to minimize negative impact on
7943 the rest of the system. Also note that the new logic will honour the
7944 RLIMIT_CORE setting of the crashed process, which now allows users
7945 and processes to turn off coredumping for their processes by setting
7946 this limit.
7947
7948 * The RLIMIT_CORE resource limit now defaults to "unlimited" for PID 1
7949 and all forked processes by default. Previously, PID 1 would leave
7950 the setting at "0" for all processes, as set by the kernel. Note that
7951 the resource limit traditionally has no effect on the generated
7952 coredumps on the system if the /proc/sys/kernel/core_pattern hook
7953 logic is used. Since the limit is now honoured (see above) its
7954 default has been changed so that the coredumping logic is enabled by
7955 default for all processes, while allowing specific opt-out.
7956
7957 * When the stacktrace is extracted from processes of system users, this
7958 is now done as "systemd-coredump" user, in order to sandbox this
7959 potentially security sensitive parsing operation. (Note that when
7960 processing coredumps of normal users this is done under the user ID
7961 of process that crashed, as before.) Packagers should take notice
7962 that it is now necessary to create the "systemd-coredump" system user
7963 and group at package installation time.
7964
7965 * The systemd-activate socket activation testing tool gained support
7966 for SOCK_DGRAM and SOCK_SEQPACKET sockets using the new --datagram
7967 and --seqpacket switches. It also has been extended to support both
7968 new-style and inetd-style file descriptor passing. Use the new
7969 --inetd switch to request inetd-style file descriptor passing.
7970
7971 * Most systemd tools now honor a new $SYSTEMD_COLORS environment
7972 variable, which takes a boolean value. If set to false, ANSI color
7973 output is disabled in the tools even when run on a terminal that
7974 supports it.
7975
7976 * The VXLAN support in networkd now supports two new settings
7977 DestinationPort= and PortRange=.
7978
7979 * A new systemd.machine_id= kernel command line switch has been added,
7980 that may be used to set the machine ID in /etc/machine-id if it is
7981 not initialized yet. This command line option has no effect if the
7982 file is already initialized.
7983
7984 * systemd-nspawn gained a new --as-pid2 switch that invokes any
7985 specified command line as PID 2 rather than PID 1 in the
7986 container. In this mode PID 1 is a minimal stub init process that
7987 implements the special POSIX and Linux semantics of PID 1 regarding
7988 signal and child process management. Note that this stub init process
7989 is implemented in nspawn itself and requires no support from the
7990 container image. This new logic is useful to support running
7991 arbitrary commands in the container, as normal processes are
7992 generally not prepared to run as PID 1.
7993
7994 * systemd-nspawn gained a new --chdir= switch for setting the current
7995 working directory for the process started in the container.
7996
7997 * "journalctl /dev/sda" will now output all kernel log messages for
7998 specified device from the current boot, in addition to all devices
7999 that are parents of it. This should make log output about devices
8000 pretty useful, as long as kernel drivers attach enough metadata to
8001 the log messages. (The usual SATA drivers do.)
8002
8003 * The sd-journal API gained two new calls
8004 sd_journal_has_runtime_files() and sd_journal_has_persistent_files()
8005 that report whether log data from /run or /var has been found.
8006
8007 * journalctl gained a new switch "--fields" that prints all journal
8008 record field names currently in use in the journal. This is backed
8009 by two new sd-journal API calls sd_journal_enumerate_fields() and
8010 sd_journal_restart_fields().
8011
8012 * Most configurable timeouts in systemd now expect an argument of
8013 "infinity" to turn them off, instead of "0" as before. The semantics
8014 from now on is that a timeout of "0" means "now", and "infinity"
8015 means "never". To maintain backwards compatibility, "0" continues to
8016 turn off previously existing timeout settings.
8017
8018 * "systemctl reload-or-try-restart" has been renamed to "systemctl
8019 try-reload-or-restart" to clarify what it actually does: the "try"
8020 logic applies to both reloading and restarting, not just restarting.
8021 The old name continues to be accepted for compatibility.
8022
8023 * On boot-up, when PID 1 detects that the system clock is behind the
8024 release date of the systemd version in use, the clock is now set
8025 to the latter. Previously, this was already done in timesyncd, in order
8026 to avoid running with clocks set to the various clock epochs such as
8027 1902, 1938 or 1970. With this change the logic is now done in PID 1
8028 in addition to timesyncd during early boot-up, so that it is enforced
8029 before the first process is spawned by systemd. Note that the logic
8030 in timesyncd remains, as it is more comprehensive and ensures
8031 clock monotonicity by maintaining a persistent timestamp file in
8032 /var. Since /var is generally not available in earliest boot or the
8033 initrd, this part of the logic remains in timesyncd, and is not done
8034 by PID 1.
8035
8036 * Support for tweaking details in net_cls.class_id through the
8037 NetClass= configuration directive has been removed, as the kernel
8038 people have decided to deprecate that controller in cgroup v2.
8039 Userspace tools such as nftables are moving over to setting rules
8040 that are specific to the full cgroup path of a task, which obsoletes
8041 these controllers anyway. The NetClass= directive is kept around for
8042 legacy compatibility reasons. For a more in-depth description of the
8043 kernel change, please refer to the respective upstream commit:
8044
8045 https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=bd1060a1d671
8046
8047 * A new service setting RuntimeMaxSec= has been added that may be used
8048 to specify a maximum runtime for a service. If the timeout is hit, the
8049 service is terminated and put into a failure state.
8050
8051 * A new service setting AmbientCapabilities= has been added. It allows
8052 configuration of additional Linux process capabilities that are
8053 passed to the activated processes. This is only available on very
8054 recent kernels.
8055
8056 * The process resource limit settings in service units may now be used
8057 to configure hard and soft limits individually.
8058
8059 * The various libsystemd APIs such as sd-bus or sd-event now publicly
8060 expose support for gcc's __attribute__((cleanup())) C extension.
8061 Specifically, for many object destructor functions alternative
8062 versions have been added that have names suffixed with "p" and take a
8063 pointer to a pointer to the object to destroy, instead of just a
8064 pointer to the object itself. This is useful because these destructor
8065 functions may be used directly as parameters to the cleanup
8066 construct. Internally, systemd has been a heavy user of this GCC
8067 extension for a long time, and with this change similar support is
8068 now available to consumers of the library outside of systemd. Note
8069 that by using this extension in your sources compatibility with old
8070 and strictly ANSI compatible C compilers is lost. However, all gcc or
8071 LLVM versions of recent years support this extension.
8072
8073 * Timer units gained support for a new setting RandomizedDelaySec= that
8074 allows configuring some additional randomized delay to the configured
8075 time. This is useful to spread out timer events to avoid load peaks in
8076 clusters or larger setups.
8077
8078 * Calendar time specifications now support sub-second accuracy.
8079
8080 * Socket units now support listening on SCTP and UDP-lite protocol
8081 sockets.
8082
8083 * The sd-event API now comes with a full set of man pages.
8084
8085 * Older versions of systemd contained experimental support for
8086 compressing journal files and coredumps with the LZ4 compressor that
8087 was not compatible with the lz4 binary (due to API limitations of the
8088 lz4 library). This support has been removed; only support for files
8089 compatible with the lz4 binary remains. This LZ4 logic is now
8090 officially supported and no longer considered experimental.
8091
8092 * The dkr image import logic has been removed again from importd. dkr's
8093 micro-services focus doesn't fit into the machine image focus of
8094 importd, and quickly got out of date with the upstream dkr API.
8095
8096 * Creation of the /run/lock/lockdev/ directory was dropped from
8097 tmpfiles.d/legacy.conf. Better locking mechanisms like flock() have
8098 been available for many years. If you still need this, you need to
8099 create your own tmpfiles.d config file with:
8100
8101 d /run/lock/lockdev 0775 root lock -
8102
8103 * The settings StartLimitBurst=, StartLimitInterval=, StartLimitAction=
8104 and RebootArgument= have been moved from the [Service] section of
8105 unit files to [Unit], and they are now supported on all unit types,
8106 not just service units. Of course, systemd will continue to
8107 understand these settings also at the old location, in order to
8108 maintain compatibility.
8109
8110 Contributions from: Abdo Roig-Maranges, Alban Crequy, Aleksander
8111 Adamowski, Alexander Kuleshov, Andreas Pokorny, Andrei Borzenkov,
8112 Andrew Wilcox, Arthur Clement, Beniamino Galvani, Casey Schaufler,
8113 Chris Atkinson, Chris Mayo, Christian Hesse, Damjan Georgievski, Dan
8114 Dedrick, Daniele Medri, Daniel J Walsh, Daniel Korostil, Daniel Mack,
8115 David Herrmann, Dimitri John Ledkov, Dominik Hannen, Douglas Christman,
8116 Evgeny Vereshchagin, Filipe Brandenburger, Franck Bui, Gabor Kelemen,
8117 Harald Hoyer, Hayden Walles, Helmut Grohne, Henrik Kaare Poulsen,
8118 Hristo Venev, Hui Wang, Indrajit Raychaudhuri, Ismo Puustinen, Jakub
8119 Wilk, Jan Alexander Steffens (heftig), Jan Engelhardt, Jan Synacek,
8120 Joost Bremmer, Jorgen Schaefer, Karel Zak, Klearchos Chaloulos,
8121 lc85446, Lennart Poettering, Lukas Nykryn, Mantas Mikulėnas, Marcel
8122 Holtmann, Martin Pitt, Michael Biebl, Michael Olbrich, Michael Scherer,
8123 Michał Górny, Michal Sekletar, Nicolas Cornu, Nicolas Iooss, Nils
8124 Carlson, nmartensen, nnz1024, Patrick Ohly, Peter Hutterer, Phillip Sz,
8125 Ronny Chevalier, Samu Kallio, Shawn Landden, Stef Walter, Susant
8126 Sahani, Sylvain Plantefève, Tadej Janež, Thomas Hindoe Paaboel
8127 Andersen, Tom Gundersen, Torstein Husebø, Umut Tezduyar Lindskog, Vito
8128 Caputo, WaLyong Cho, Yu Watanabe, Zbigniew Jędrzejewski-Szmek
8129
8130 — Berlin, 2016-02-11
8131
8132 CHANGES WITH 228:
8133
8134 * A number of properties previously only settable in unit
8135 files are now also available as properties to set when
8136 creating transient units programmatically via the bus, as it
8137 is exposed with systemd-run's --property=
8138 setting. Specifically, these are: SyslogIdentifier=,
8139 SyslogLevelPrefix=, TimerSlackNSec=, OOMScoreAdjust=,
8140 EnvironmentFile=, ReadWriteDirectories=,
8141 ReadOnlyDirectories=, InaccessibleDirectories=,
8142 ProtectSystem=, ProtectHome=, RuntimeDirectory=.
8143
8144 * When creating transient services via the bus API it is now
8145 possible to pass in a set of file descriptors to use as
8146 STDIN/STDOUT/STDERR for the invoked process.
8147
8148 * Slice units may now be created transiently via the bus APIs,
8149 similar to the way service and scope units may already be
8150 created transiently.
8151
8152 * Wherever systemd expects a calendar timestamp specification
8153 (like in journalctl's --since= and --until= switches) UTC
8154 timestamps are now supported. Timestamps suffixed with "UTC"
8155 are now considered to be in Universal Time Coordinated
8156 instead of the local timezone. Also, timestamps may now
8157 optionally be specified with sub-second accuracy. Both of
8158 these additions also apply to recurring calendar event
8159 specification, such as OnCalendar= in timer units.
8160
8161 * journalctl gained a new "--sync" switch that asks the
8162 journal daemon to write all so far unwritten log messages to
8163 disk and sync the files, before returning.
8164
8165 * systemd-tmpfiles learned two new line types "q" and "Q" that
8166 operate like "v", but also set up a basic btrfs quota
8167 hierarchy when used on a btrfs file system with quota
8168 enabled.
8169
8170 * tmpfiles' "v", "q" and "Q" will now create a plain directory
8171 instead of a subvolume (even on a btrfs file system) if the
8172 root directory is a plain directory, and not a
8173 subvolume. This should simplify things with certain chroot()
8174 environments which are not aware of the concept of btrfs
8175 subvolumes.
8176
8177 * systemd-detect-virt gained a new --chroot switch to detect
8178 whether execution takes place in a chroot() environment.
8179
8180 * CPUAffinity= now takes CPU index ranges in addition to
8181 individual indexes.
8182
8183 * The various memory-related resource limit settings (such as
8184 LimitAS=) now understand the usual K, M, G, … suffixes to
8185 the base of 1024 (IEC). Similar, the time-related resource
8186 limit settings understand the usual min, h, day, … suffixes
8187 now.
8188
8189 * There's a new system.conf setting DefaultTasksMax= to
8190 control the default TasksMax= setting for services and
8191 scopes running on the system. (TasksMax= is the primary
8192 setting that exposes the "pids" cgroup controller on systemd
8193 and was introduced in the previous systemd release.) The
8194 setting now defaults to 512, which means services that are
8195 not explicitly configured otherwise will only be able to
8196 create 512 processes or threads at maximum, from this
8197 version on. Note that this means that thread- or
8198 process-heavy services might need to be reconfigured to set
8199 TasksMax= to a higher value. It is sufficient to set
8200 TasksMax= in these specific unit files to a higher value, or
8201 even "infinity". Similar, there's now a logind.conf setting
8202 UserTasksMax= that defaults to 4096 and limits the total
8203 number of processes or tasks each user may own
8204 concurrently. nspawn containers also have the TasksMax=
8205 value set by default now, to 8192. Note that all of this
8206 only has an effect if the "pids" cgroup controller is
8207 enabled in the kernel. The general benefit of these changes
8208 should be a more robust and safer system, that provides a
8209 certain amount of per-service fork() bomb protection.
8210
8211 * systemd-nspawn gained the new --network-veth-extra= switch
8212 to define additional and arbitrarily-named virtual Ethernet
8213 links between the host and the container.
8214
8215 * A new service execution setting PassEnvironment= has been
8216 added that allows importing select environment variables
8217 from PID1's environment block into the environment block of
8218 the service.
8219
8220 * Timer units gained support for a new RemainAfterElapse=
8221 setting which takes a boolean argument. It defaults to on,
8222 exposing behaviour unchanged to previous releases. If set to
8223 off, timer units are unloaded after they elapsed if they
8224 cannot elapse again. This is particularly useful for
8225 transient timer units, which shall not stay around longer
8226 than until they first elapse.
8227
8228 * systemd will now bump the net.unix.max_dgram_qlen to 512 by
8229 default now (the kernel default is 16). This is beneficial
8230 for avoiding blocking on AF_UNIX/SOCK_DGRAM sockets since it
8231 allows substantially larger numbers of queued
8232 datagrams. This should increase the capability of systemd to
8233 parallelize boot-up, as logging and sd_notify() are unlikely
8234 to stall execution anymore. If you need to change the value
8235 from the new defaults, use the usual sysctl.d/ snippets.
8236
8237 * The compression framing format used by the journal or
8238 coredump processing has changed to be in line with what the
8239 official LZ4 tools generate. LZ4 compression support in
8240 systemd was considered unsupported previously, as the format
8241 was not compatible with the normal tools. With this release
8242 this has changed now, and it is hence safe for downstream
8243 distributions to turn it on. While not compressing as well
8244 as the XZ, LZ4 is substantially faster, which makes
8245 it a good default choice for the compression logic in the
8246 journal and in coredump handling.
8247
8248 * Any reference to /etc/mtab has been dropped from
8249 systemd. The file has been obsolete since a while, but
8250 systemd refused to work on systems where it was incorrectly
8251 set up (it should be a symlink or non-existent). Please make
8252 sure to update to util-linux 2.27.1 or newer in conjunction
8253 with this systemd release, which also drops any reference to
8254 /etc/mtab. If you maintain a distribution make sure that no
8255 software you package still references it, as this is a
8256 likely source of bugs. There's also a glibc bug pending,
8257 asking for removal of any reference to this obsolete file:
8258
8259 https://sourceware.org/bugzilla/show_bug.cgi?id=19108
8260
8261 Note that only util-linux versions built with
8262 --enable-libmount-force-mountinfo are supported.
8263
8264 * Support for the ".snapshot" unit type has been removed. This
8265 feature turned out to be little useful and little used, and
8266 has now been removed from the core and from systemctl.
8267
8268 * The dependency types RequiresOverridable= and
8269 RequisiteOverridable= have been removed from systemd. They
8270 have been used only very sparingly to our knowledge and
8271 other options that provide a similar effect (such as
8272 systemctl --mode=ignore-dependencies) are much more useful
8273 and commonly used. Moreover, they were only half-way
8274 implemented as the option to control behaviour regarding
8275 these dependencies was never added to systemctl. By removing
8276 these dependency types the execution engine becomes a bit
8277 simpler. Unit files that use these dependencies should be
8278 changed to use the non-Overridable dependency types
8279 instead. In fact, when parsing unit files with these
8280 options, that's what systemd will automatically convert them
8281 too, but it will also warn, asking users to fix the unit
8282 files accordingly. Removal of these dependency types should
8283 only affect a negligible number of unit files in the wild.
8284
8285 * Behaviour of networkd's IPForward= option changed
8286 (again). It will no longer maintain a per-interface setting,
8287 but propagate one way from interfaces where this is enabled
8288 to the global kernel setting. The global setting will be
8289 enabled when requested by a network that is set up, but
8290 never be disabled again. This change was made to make sure
8291 IPv4 and IPv6 behaviour regarding packet forwarding is
8292 similar (as the Linux IPv6 stack does not support
8293 per-interface control of this setting) and to minimize
8294 surprises.
8295
8296 * In unit files the behaviour of %u, %U, %h, %s has
8297 changed. These specifiers will now unconditionally resolve
8298 to the various user database fields of the user that the
8299 systemd instance is running as, instead of the user
8300 configured in the specific unit via User=. Note that this
8301 effectively doesn't change much, as resolving of these
8302 specifiers was already turned off in the --system instance
8303 of systemd, as we cannot do NSS lookups from PID 1. In the
8304 --user instance of systemd these specifiers where correctly
8305 resolved, but hardly made any sense, since the user instance
8306 lacks privileges to do user switches anyway, and User= is
8307 hence useless. Moreover, even in the --user instance of
8308 systemd behaviour was awkward as it would only take settings
8309 from User= assignment placed before the specifier into
8310 account. In order to unify and simplify the logic around
8311 this the specifiers will now always resolve to the
8312 credentials of the user invoking the manager (which in case
8313 of PID 1 is the root user).
8314
8315 Contributions from: Andrew Jones, Beniamino Galvani, Boyuan
8316 Yang, Daniel Machon, Daniel Mack, David Herrmann, David
8317 Reynolds, David Strauss, Dongsu Park, Evgeny Vereshchagin,
8318 Felipe Sateler, Filipe Brandenburger, Franck Bui, Hristo
8319 Venev, Iago López Galeiras, Jan Engelhardt, Jan Janssen, Jan
8320 Synacek, Jesus Ornelas Aguayo, Karel Zak, kayrus, Kay Sievers,
8321 Lennart Poettering, Liu Yuan Yuan, Mantas Mikulėnas, Marcel
8322 Holtmann, Marcin Bachry, Marcos Alano, Marcos Mello, Mark
8323 Theunissen, Martin Pitt, Michael Marineau, Michael Olbrich,
8324 Michal Schmidt, Michal Sekletar, Mirco Tischler, Nick Owens,
8325 Nicolas Cornu, Patrik Flykt, Peter Hutterer, reverendhomer,
8326 Ronny Chevalier, Sangjung Woo, Seong-ho Cho, Shawn Landden,
8327 Susant Sahani, Thomas Haller, Thomas Hindoe Paaboel Andersen,
8328 Tom Gundersen, Torstein Husebø, Vito Caputo, Zbigniew
8329 Jędrzejewski-Szmek
8330
8331 — Berlin, 2015-11-18
8332
8333 CHANGES WITH 227:
8334
8335 * systemd now depends on util-linux v2.27. More specifically,
8336 the newly added mount monitor feature in libmount now
8337 replaces systemd's former own implementation.
8338
8339 * libmount mandates /etc/mtab not to be regular file, and
8340 systemd now enforces this condition at early boot.
8341 /etc/mtab has been deprecated and warned about for a very
8342 long time, so systems running systemd should already have
8343 stopped having this file around as anything else than a
8344 symlink to /proc/self/mounts.
8345
8346 * Support for the "pids" cgroup controller has been added. It
8347 allows accounting the number of tasks in a cgroup and
8348 enforcing limits on it. This adds two new setting
8349 TasksAccounting= and TasksMax= to each unit, as well as a
8350 global option DefaultTasksAccounting=.
8351
8352 * Support for the "net_cls" cgroup controller has been added.
8353 It allows assigning a net class ID to each task in the
8354 cgroup, which can then be used in firewall rules and traffic
8355 shaping configurations. Note that the kernel netfilter net
8356 class code does not currently work reliably for ingress
8357 packets on unestablished sockets.
8358
8359 This adds a new config directive called NetClass= to CGroup
8360 enabled units. Allowed values are positive numbers for fixed
8361 assignments and "auto" for picking a free value
8362 automatically.
8363
8364 * 'systemctl is-system-running' now returns 'offline' if the
8365 system is not booted with systemd. This command can now be
8366 used as a substitute for 'systemd-notify --booted'.
8367
8368 * Watchdog timeouts have been increased to 3 minutes for all
8369 in-tree service files. Apparently, disk IO issues are more
8370 frequent than we hoped, and user reported >1 minute waiting
8371 for disk IO.
8372
8373 * 'machine-id-commit' functionality has been merged into
8374 'machine-id-setup --commit'. The separate binary has been
8375 removed.
8376
8377 * The WorkingDirectory= directive in unit files may now be set
8378 to the special value '~'. In this case, the working
8379 directory is set to the home directory of the user
8380 configured in User=.
8381
8382 * "machinectl shell" will now open the shell in the home
8383 directory of the selected user by default.
8384
8385 * The CrashChVT= configuration file setting is renamed to
8386 CrashChangeVT=, following our usual logic of not
8387 abbreviating unnecessarily. The old directive is still
8388 supported for compat reasons. Also, this directive now takes
8389 an integer value between 1 and 63, or a boolean value. The
8390 formerly supported '-1' value for disabling stays around for
8391 compat reasons.
8392
8393 * The PrivateTmp=, PrivateDevices=, PrivateNetwork=,
8394 NoNewPrivileges=, TTYPath=, WorkingDirectory= and
8395 RootDirectory= properties can now be set for transient
8396 units.
8397
8398 * The systemd-analyze tool gained a new "set-log-target" verb
8399 to change the logging target the system manager logs to
8400 dynamically during runtime. This is similar to how
8401 "systemd-analyze set-log-level" already changes the log
8402 level.
8403
8404 * In nspawn /sys is now mounted as tmpfs, with only a selected
8405 set of subdirectories mounted in from the real sysfs. This
8406 enhances security slightly, and is useful for ensuring user
8407 namespaces work correctly.
8408
8409 * Support for USB FunctionFS activation has been added. This
8410 allows implementation of USB gadget services that are
8411 activated as soon as they are requested, so that they don't
8412 have to run continuously, similar to classic socket
8413 activation.
8414
8415 * The "systemctl exit" command now optionally takes an
8416 additional parameter that sets the exit code to return from
8417 the systemd manager when exiting. This is only relevant when
8418 running the systemd user instance, or when running the
8419 system instance in a container.
8420
8421 * sd-bus gained the new API calls sd_bus_path_encode_many()
8422 and sd_bus_path_decode_many() that allow easy encoding and
8423 decoding of multiple identifier strings inside a D-Bus
8424 object path. Another new call sd_bus_default_flush_close()
8425 has been added to flush and close per-thread default
8426 connections.
8427
8428 * systemd-cgtop gained support for a -M/--machine= switch to
8429 show the control groups within a certain container only.
8430
8431 * "systemctl kill" gained support for an optional --fail
8432 switch. If specified the requested operation will fail of no
8433 processes have been killed, because the unit had no
8434 processes attached, or similar.
8435
8436 * A new systemd.crash_reboot=1 kernel command line option has
8437 been added that triggers a reboot after crashing. This can
8438 also be set through CrashReboot= in systemd.conf.
8439
8440 * The RuntimeDirectory= setting now understands unit
8441 specifiers like %i or %f.
8442
8443 * A new (still internal) library API sd-ipv4acd has been added,
8444 that implements address conflict detection for IPv4. It's
8445 based on code from sd-ipv4ll, and will be useful for
8446 detecting DHCP address conflicts.
8447
8448 * File descriptors passed during socket activation may now be
8449 named. A new API sd_listen_fds_with_names() is added to
8450 access the names. The default names may be overridden,
8451 either in the .socket file using the FileDescriptorName=
8452 parameter, or by passing FDNAME= when storing the file
8453 descriptors using sd_notify().
8454
8455 * systemd-networkd gained support for:
8456
8457 - Setting the IPv6 Router Advertisement settings via
8458 IPv6AcceptRouterAdvertisements= in .network files.
8459
8460 - Configuring the HelloTimeSec=, MaxAgeSec= and
8461 ForwardDelaySec= bridge parameters in .netdev files.
8462
8463 - Configuring PreferredSource= for static routes in
8464 .network files.
8465
8466 * The "ask-password" framework used to query for LUKS harddisk
8467 passwords or SSL passwords during boot gained support for
8468 caching passwords in the kernel keyring, if it is
8469 available. This makes sure that the user only has to type in
8470 a passphrase once if there are multiple objects to unlock
8471 with the same one. Previously, such password caching was
8472 available only when Plymouth was used; this moves the
8473 caching logic into the systemd codebase itself. The
8474 "systemd-ask-password" utility gained a new --keyname=
8475 switch to control which kernel keyring key to use for
8476 caching a password in. This functionality is also useful for
8477 enabling display managers such as gdm to automatically
8478 unlock the user's GNOME keyring if its passphrase, the
8479 user's password and the harddisk password are the same, if
8480 gdm-autologin is used.
8481
8482 * When downloading tar or raw images using "machinectl
8483 pull-tar" or "machinectl pull-raw", a matching ".nspawn"
8484 file is now also downloaded, if it is available and stored
8485 next to the image file.
8486
8487 * Units of type ".socket" gained a new boolean setting
8488 Writable= which is only useful in conjunction with
8489 ListenSpecial=. If true, enables opening the specified
8490 special file in O_RDWR mode rather than O_RDONLY mode.
8491
8492 * systemd-rfkill has been reworked to become a singleton
8493 service that is activated through /dev/rfkill on each rfkill
8494 state change and saves the settings to disk. This way,
8495 systemd-rfkill is now compatible with devices that exist
8496 only intermittendly, and even restores state if the previous
8497 system shutdown was abrupt rather than clean.
8498
8499 * The journal daemon gained support for vacuuming old journal
8500 files controlled by the number of files that shall remain,
8501 in addition to the already existing control by size and by
8502 date. This is useful as journal interleaving performance
8503 degrades with too many separate journal files, and allows
8504 putting an effective limit on them. The new setting defaults
8505 to 100, but this may be changed by setting SystemMaxFiles=
8506 and RuntimeMaxFiles= in journald.conf. Also, the
8507 "journalctl" tool gained the new --vacuum-files= switch to
8508 manually vacuum journal files to leave only the specified
8509 number of files in place.
8510
8511 * udev will now create /dev/disk/by-path links for ATA devices
8512 on kernels where that is supported.
8513
8514 * Galician, Serbian, Turkish and Korean translations were added.
8515
8516 Contributions from: Aaro Koskinen, Alban Crequy, Beniamino
8517 Galvani, Benjamin Robin, Branislav Blaskovic, Chen-Han Hsiao
8518 (Stanley), Daniel Buch, Daniel Machon, Daniel Mack, David
8519 Herrmann, David Milburn, doubleodoug, Evgeny Vereshchagin,
8520 Felipe Franciosi, Filipe Brandenburger, Fran Dieguez, Gabriel
8521 de Perthuis, Georg Müller, Hans de Goede, Hendrik Brueckner,
8522 Ivan Shapovalov, Jacob Keller, Jan Engelhardt, Jan Janssen,
8523 Jan Synacek, Jens Kuske, Karel Zak, Kay Sievers, Krzesimir
8524 Nowak, Krzysztof Kotlenga, Lars Uebernickel, Lennart
8525 Poettering, Lukas Nykryn, Łukasz Stelmach, Maciej Wereski,
8526 Marcel Holtmann, Marius Thesing, Martin Pitt, Michael Biebl,
8527 Michael Gebetsroither, Michal Schmidt, Michal Sekletar, Mike
8528 Gilbert, Muhammet Kara, nazgul77, Nicolas Cornu, NoXPhasma,
8529 Olof Johansson, Patrik Flykt, Pawel Szewczyk, reverendhomer,
8530 Ronny Chevalier, Sangjung Woo, Seong-ho Cho, Susant Sahani,
8531 Sylvain Plantefève, Thomas Haller, Thomas Hindoe Paaboel
8532 Andersen, Tom Gundersen, Tom Lyon, Viktar Vauchkevich,
8533 Zbigniew Jędrzejewski-Szmek, Марко М. Костић
8534
8535 — Berlin, 2015-10-07
8536
8537 CHANGES WITH 226:
8538
8539 * The DHCP implementation of systemd-networkd gained a set of
8540 new features:
8541
8542 - The DHCP server now supports emitting DNS and NTP
8543 information. It may be enabled and configured via
8544 EmitDNS=, DNS=, EmitNTP=, and NTP=. If transmission of DNS
8545 and NTP information is enabled, but no servers are
8546 configured, the corresponding uplink information (if there
8547 is any) is propagated.
8548
8549 - Server and client now support transmission and reception
8550 of timezone information. It can be configured via the
8551 newly introduced network options UseTimezone=,
8552 EmitTimezone=, and Timezone=. Transmission of timezone
8553 information is enabled between host and containers by
8554 default now: the container will change its local timezone
8555 to what the host has set.
8556
8557 - Lease timeouts can now be configured via
8558 MaxLeaseTimeSec= and DefaultLeaseTimeSec=.
8559
8560 - The DHCP server improved on the stability of
8561 leases. Clients are more likely to get the same lease
8562 information back, even if the server loses state.
8563
8564 - The DHCP server supports two new configuration options to
8565 control the lease address pool metrics, PoolOffset= and
8566 PoolSize=.
8567
8568 * The encapsulation limit of tunnels in systemd-networkd may
8569 now be configured via 'EncapsulationLimit='. It allows
8570 modifying the maximum additional levels of encapsulation
8571 that are permitted to be prepended to a packet.
8572
8573 * systemd now supports the concept of user buses replacing
8574 session buses, if used with dbus-1.10 (and enabled via dbus
8575 --enable-user-session). It previously only supported this on
8576 kdbus-enabled systems, and this release expands this to
8577 'dbus-daemon' systems.
8578
8579 * systemd-networkd now supports predictable interface names
8580 for virtio devices.
8581
8582 * systemd now optionally supports the new Linux kernel
8583 "unified" control group hierarchy. If enabled via the kernel
8584 command-line option 'systemd.unified_cgroup_hierarchy=1',
8585 systemd will try to mount the unified cgroup hierarchy
8586 directly on /sys/fs/cgroup. If not enabled, or not
8587 available, systemd will fall back to the legacy cgroup
8588 hierarchy setup, as before. Host system and containers can
8589 mix and match legacy and unified hierarchies as they
8590 wish. nspawn understands the $UNIFIED_CGROUP_HIERARCHY
8591 environment variable to individually select the hierarchy to
8592 use for executed containers. By default, nspawn will use the
8593 unified hierarchy for the containers if the host uses the
8594 unified hierarchy, and the legacy hierarchy otherwise.
8595 Please note that at this point the unified hierarchy is an
8596 experimental kernel feature and is likely to change in one
8597 of the next kernel releases. Therefore, it should not be
8598 enabled by default in downstream distributions yet. The
8599 minimum required kernel version for the unified hierarchy to
8600 work is 4.2. Note that when the unified hierarchy is used
8601 for the first time delegated access to controllers is
8602 safe. Because of this systemd-nspawn containers will get
8603 access to controllers now, as will systemd user
8604 sessions. This means containers and user sessions may now
8605 manage their own resources, partitioning up what the system
8606 grants them.
8607
8608 * A new special scope unit "init.scope" has been introduced
8609 that encapsulates PID 1 of the system. It may be used to
8610 determine resource usage and enforce resource limits on PID
8611 1 itself. PID 1 hence moved out of the root of the control
8612 group tree.
8613
8614 * The cgtop tool gained support for filtering out kernel
8615 threads when counting tasks in a control group. Also, the
8616 count of processes is now recursively summed up by
8617 default. Two options -k and --recursive= have been added to
8618 revert to old behaviour. The tool has also been updated to
8619 work correctly in containers now.
8620
8621 * systemd-nspawn's --bind= and --bind-ro= options have been
8622 extended to allow creation of non-recursive bind mounts.
8623
8624 * libsystemd gained two new calls sd_pid_get_cgroup() and
8625 sd_peer_get_cgroup() which return the control group path of
8626 a process or peer of a connected AF_UNIX socket. This
8627 function call is particularly useful when implementing
8628 delegated subtrees support in the control group hierarchy.
8629
8630 * The "sd-event" event loop API of libsystemd now supports
8631 correct dequeuing of real-time signals, without losing
8632 signal events.
8633
8634 * When systemd requests a polkit decision when managing units it
8635 will now add additional fields to the request, including unit
8636 name and desired operation. This enables more powerful polkit
8637 policies, that make decisions depending on these parameters.
8638
8639 * nspawn learnt support for .nspawn settings files, that may
8640 accompany the image files or directories of containers, and
8641 may contain additional settings for the container. This is
8642 an alternative to configuring container parameters via the
8643 nspawn command line.
8644
8645 Contributions from: Cristian Rodríguez, Daniel Mack, David
8646 Herrmann, Eugene Yakubovich, Evgeny Vereshchagin, Filipe
8647 Brandenburger, Hans de Goede, Jan Alexander Steffens, Jan
8648 Synacek, Kay Sievers, Lennart Poettering, Mangix, Marcel
8649 Holtmann, Martin Pitt, Michael Biebl, Michael Chapman, Michal
8650 Sekletar, Peter Hutterer, Piotr Drąg, reverendhomer, Robin
8651 Hack, Susant Sahani, Sylvain Pasche, Thomas Hindoe Paaboel
8652 Andersen, Tom Gundersen, Torstein Husebø
8653
8654 — Berlin, 2015-09-08
8655
8656 CHANGES WITH 225:
8657
8658 * machinectl gained a new verb 'shell' which opens a fresh
8659 shell on the target container or the host. It is similar to
8660 the existing 'login' command of machinectl, but spawns the
8661 shell directly without prompting for username or
8662 password. The pseudo machine '.host' now refers to the local
8663 host and is used by default. Hence, 'machinectl shell' can
8664 be used as replacement for 'su -' which spawns a session as
8665 a fresh systemd unit in a way that is fully isolated from
8666 the originating session.
8667
8668 * systemd-networkd learned to cope with private-zone DHCP
8669 options and allows other programs to query the values.
8670
8671 * SELinux access control when enabling/disabling units is no
8672 longer enforced with this release. The previous implementation
8673 was incorrect, and a new corrected implementation is not yet
8674 available. As unit file operations are still protected via
8675 polkit and D-Bus policy this is not a security problem. Yet,
8676 distributions which care about optimal SELinux support should
8677 probably not stabilize on this release.
8678
8679 * sd-bus gained support for matches of type "arg0has=", that
8680 test for membership of strings in string arrays sent in bus
8681 messages.
8682
8683 * systemd-resolved now dumps the contents of its DNS and LLMNR
8684 caches to the logs on reception of the SIGUSR1 signal. This
8685 is useful to debug DNS behaviour.
8686
8687 * The coredumpctl tool gained a new --directory= option to
8688 operate on journal files in a specific directory.
8689
8690 * "systemctl reboot" and related commands gained a new
8691 "--message=" option which may be used to set a free-text
8692 wall message when shutting down or rebooting the
8693 system. This message is also logged, which is useful for
8694 figuring out the reason for a reboot or shutdown a
8695 posteriori.
8696
8697 * The "systemd-resolve-host" tool's -i switch now takes
8698 network interface numbers as alternative to interface names.
8699
8700 * A new unit file setting for services has been introduced:
8701 UtmpMode= allows configuration of how precisely systemd
8702 handles utmp and wtmp entries for the service if this is
8703 enabled. This allows writing services that appear similar to
8704 user sessions in the output of the "w", "who", "last" and
8705 "lastlog" tools.
8706
8707 * systemd-resolved will now locally synthesize DNS resource
8708 records for the "localhost" and "gateway" domains as well as
8709 the local hostname. This should ensure that clients querying
8710 RRs via resolved will get similar results as those going via
8711 NSS, if nss-myhostname is enabled.
8712
8713 Contributions from: Alastair Hughes, Alex Crawford, Daniel
8714 Mack, David Herrmann, Dimitri John Ledkov, Eric Kostrowski,
8715 Evgeny Vereshchagin, Felipe Sateler, HATAYAMA Daisuke, Jan
8716 Pokorný, Jan Synacek, Johnny Robeson, Karel Zak, Kay Sievers,
8717 Kefeng Wang, Lennart Poettering, Major Hayden, Marcel
8718 Holtmann, Markus Elfring, Martin Mikkelsen, Martin Pitt, Matt
8719 Turner, Maxim Mikityanskiy, Michael Biebl, Namhyung Kim,
8720 Nicolas Cornu, Owen W. Taylor, Patrik Flykt, Peter Hutterer,
8721 reverendhomer, Richard Maw, Ronny Chevalier, Seth Jennings,
8722 Stef Walter, Susant Sahani, Thomas Blume, Thomas Hindoe
8723 Paaboel Andersen, Thomas Meyer, Tom Gundersen, Vincent Batts,
8724 WaLyong Cho, Zbigniew Jędrzejewski-Szmek
8725
8726 — Berlin, 2015-08-27
8727
8728 CHANGES WITH 224:
8729
8730 * The systemd-efi-boot-generator functionality was merged into
8731 systemd-gpt-auto-generator.
8732
8733 * systemd-networkd now supports Group Policy for vxlan
8734 devices. It can be enabled via the new boolean configuration
8735 option called 'GroupPolicyExtension='.
8736
8737 Contributions from: Andreas Kempf, Christian Hesse, Daniel Mack, David
8738 Herrmann, Herman Fries, Johannes Nixdorf, Kay Sievers, Lennart
8739 Poettering, Peter Hutterer, Susant Sahani, Tom Gundersen
8740
8741 — Berlin, 2015-07-31
8742
8743 CHANGES WITH 223:
8744
8745 * The python-systemd code has been removed from the systemd repository.
8746 A new repository has been created which accommodates the code from
8747 now on, and we kindly ask distributions to create a separate package
8748 for this: https://github.com/systemd/python-systemd
8749
8750 * The systemd daemon will now reload its main configuration
8751 (/etc/systemd/system.conf) on daemon-reload.
8752
8753 * sd-dhcp now exposes vendor specific extensions via
8754 sd_dhcp_lease_get_vendor_specific().
8755
8756 * systemd-networkd gained a number of new configuration options.
8757
8758 - A new boolean configuration option for TAP devices called
8759 'VNetHeader='. If set, the IFF_VNET_HDR flag is set for the
8760 device, thus allowing to send and receive GSO packets.
8761
8762 - A new tunnel configuration option called 'CopyDSCP='.
8763 If enabled, the DSCP field of ip6 tunnels is copied into the
8764 decapsulated packet.
8765
8766 - A set of boolean bridge configuration options were added.
8767 'UseBPDU=', 'HairPin=', 'FastLeave=', 'AllowPortToBeRoot=',
8768 and 'UnicastFlood=' are now parsed by networkd and applied to the
8769 respective bridge link device via the respective IFLA_BRPORT_*
8770 netlink attribute.
8771
8772 - A new string configuration option to override the hostname sent
8773 to a DHCP server, called 'Hostname='. If set and 'SendHostname='
8774 is true, networkd will use the configured hostname instead of the
8775 system hostname when sending DHCP requests.
8776
8777 - A new tunnel configuration option called 'IPv6FlowLabel='. If set,
8778 networkd will configure the IPv6 flow-label of the tunnel device
8779 according to RFC2460.
8780
8781 - The 'macvtap' virtual network devices are now supported, similar to
8782 the already supported 'macvlan' devices.
8783
8784 * systemd-resolved now implements RFC5452 to improve resilience against
8785 cache poisoning. Additionally, source port randomization is enabled
8786 by default to further protect against DNS spoofing attacks.
8787
8788 * nss-mymachines now supports translating UIDs and GIDs of running
8789 containers with user-namespaces enabled. If a container 'foo'
8790 translates a host uid 'UID' to the container uid 'TUID', then
8791 nss-mymachines will also map uid 'UID' to/from username 'vu-foo-TUID'
8792 (with 'foo' and 'TUID' replaced accordingly). Similarly, groups are
8793 mapped as 'vg-foo-TGID'.
8794
8795 Contributions from: Beniamino Galvani, cee1, Christian Hesse, Daniel
8796 Buch, Daniel Mack, daurnimator, David Herrmann, Dimitri John Ledkov,
8797 HATAYAMA Daisuke, Ivan Shapovalov, Jan Alexander Steffens (heftig),
8798 Johan Ouwerkerk, Jose Carlos Venegas Munoz, Karel Zak, Kay Sievers,
8799 Lennart Poettering, Lidong Zhong, Martin Pitt, Michael Biebl, Michael
8800 Olbrich, Michal Schmidt, Michal Sekletar, Mike Gilbert, Namhyung Kim,
8801 Nick Owens, Peter Hutterer, Richard Maw, Steven Allen, Sungbae Yoo,
8802 Susant Sahani, Thomas Blume, Thomas Hindoe Paaboel Andersen, Tom
8803 Gundersen, Torstein Husebø, Umut Tezduyar Lindskog, Vito Caputo,
8804 Vivenzio Pagliari, Zbigniew Jędrzejewski-Szmek
8805
8806 — Berlin, 2015-07-29
8807
8808 CHANGES WITH 222:
8809
8810 * udev does not longer support the WAIT_FOR_SYSFS= key in udev rules.
8811 There are no known issues with current sysfs, and udev does not need
8812 or should be used to work around such bugs.
8813
8814 * udev does no longer enable USB HID power management. Several reports
8815 indicate, that some devices cannot handle that setting.
8816
8817 * The udev accelerometer helper was removed. The functionality
8818 is now fully included in iio-sensor-proxy. But this means,
8819 older iio-sensor-proxy versions will no longer provide
8820 accelerometer/orientation data with this systemd version.
8821 Please upgrade iio-sensor-proxy to version 1.0.
8822
8823 * networkd gained a new configuration option IPv6PrivacyExtensions=
8824 which enables IPv6 privacy extensions (RFC 4941, "Privacy Extensions
8825 for Stateless Address") on selected networks.
8826
8827 * For the sake of fewer build-time dependencies and less code in the
8828 main repository, the python bindings are about to be removed in the
8829 next release. A new repository has been created which accommodates
8830 the code from now on, and we kindly ask distributions to create a
8831 separate package for this. The removal will take place in v223.
8832
8833 https://github.com/systemd/python-systemd
8834
8835 Contributions from: Abdo Roig-Maranges, Andrew Eikum, Bastien Nocera,
8836 Cédric Delmas, Christian Hesse, Christos Trochalakis, Daniel Mack,
8837 daurnimator, David Herrmann, Dimitri John Ledkov, Eric Biggers, Eric
8838 Cook, Felipe Sateler, Geert Jansen, Gerd Hoffmann, Gianpaolo Macario,
8839 Greg Kroah-Hartman, Iago López Galeiras, Jan Alexander Steffens
8840 (heftig), Jan Engelhardt, Jay Strict, Kay Sievers, Lennart Poettering,
8841 Markus Knetschke, Martin Pitt, Michael Biebl, Michael Marineau, Michal
8842 Sekletar, Miguel Bernal Marin, Peter Hutterer, Richard Maw, rinrinne,
8843 Susant Sahani, Thomas Hindoe Paaboel Andersen, Tom Gundersen, Torstein
8844 Husebø, Vedran Miletić, WaLyong Cho, Zbigniew Jędrzejewski-Szmek
8845
8846 — Berlin, 2015-07-07
8847
8848 CHANGES WITH 221:
8849
8850 * The sd-bus.h and sd-event.h APIs have now been declared
8851 stable and have been added to the official interface of
8852 libsystemd.so. sd-bus implements an alternative D-Bus client
8853 library, that is relatively easy to use, very efficient and
8854 supports both classic D-Bus as well as kdbus as transport
8855 backend. sd-event is a generic event loop abstraction that
8856 is built around Linux epoll, but adds features such as event
8857 prioritization or efficient timer handling. Both APIs are good
8858 choices for C programs looking for a bus and/or event loop
8859 implementation that is minimal and does not have to be
8860 portable to other kernels.
8861
8862 * kdbus support is no longer compile-time optional. It is now
8863 always built-in. However, it can still be disabled at
8864 runtime using the kdbus=0 kernel command line setting, and
8865 that setting may be changed to default to off, by specifying
8866 --disable-kdbus at build-time. Note though that the kernel
8867 command line setting has no effect if the kdbus.ko kernel
8868 module is not installed, in which case kdbus is (obviously)
8869 also disabled. We encourage all downstream distributions to
8870 begin testing kdbus by adding it to the kernel images in the
8871 development distributions, and leaving kdbus support in
8872 systemd enabled.
8873
8874 * The minimal required util-linux version has been bumped to
8875 2.26.
8876
8877 * Support for chkconfig (--enable-chkconfig) was removed in
8878 favor of calling an abstraction tool
8879 /lib/systemd/systemd-sysv-install. This needs to be
8880 implemented for your distribution. See "SYSV INIT.D SCRIPTS"
8881 in README for details.
8882
8883 * If there's a systemd unit and a SysV init script for the
8884 same service name, and the user executes "systemctl enable"
8885 for it (or a related call), then this will now enable both
8886 (or execute the related operation on both), not just the
8887 unit.
8888
8889 * The libudev API documentation has been converted from gtkdoc
8890 into man pages.
8891
8892 * gudev has been removed from the systemd tree, it is now an
8893 external project.
8894
8895 * The systemd-cgtop tool learnt a new --raw switch to generate
8896 "raw" (machine parsable) output.
8897
8898 * networkd's IPForwarding= .network file setting learnt the
8899 new setting "kernel", which ensures that networkd does not
8900 change the IP forwarding sysctl from the default kernel
8901 state.
8902
8903 * The systemd-logind bus API now exposes a new boolean
8904 property "Docked" that reports whether logind considers the
8905 system "docked", i.e. connected to a docking station or not.
8906
8907 Contributions from: Alex Crawford, Andreas Pokorny, Andrei
8908 Borzenkov, Charles Duffy, Colin Guthrie, Cristian Rodríguez,
8909 Daniele Medri, Daniel Hahler, Daniel Mack, David Herrmann,
8910 David Mohr, Dimitri John Ledkov, Djalal Harouni, dslul, Ed
8911 Swierk, Eric Cook, Filipe Brandenburger, Gianpaolo Macario,
8912 Harald Hoyer, Iago López Galeiras, Igor Vuk, Jan Synacek,
8913 Jason Pleau, Jason S. McMullan, Jean Delvare, Jeff Huang,
8914 Jonathan Boulle, Karel Zak, Kay Sievers, kloun, Lennart
8915 Poettering, Marc-Antoine Perennou, Marcel Holtmann, Mario
8916 Limonciello, Martin Pitt, Michael Biebl, Michael Olbrich,
8917 Michal Schmidt, Mike Gilbert, Nick Owens, Pablo Lezaeta Reyes,
8918 Patrick Donnelly, Pavel Odvody, Peter Hutterer, Philip
8919 Withnall, Ronny Chevalier, Simon McVittie, Susant Sahani,
8920 Thomas Hindoe Paaboel Andersen, Tom Gundersen, Torstein
8921 Husebø, Umut Tezduyar Lindskog, Viktar Vauchkevich, Werner
8922 Fink, Zbigniew Jędrzejewski-Szmek
8923
8924 — Berlin, 2015-06-19
8925
8926 CHANGES WITH 220:
8927
8928 * The gudev library has been extracted into a separate repository
8929 available at: https://git.gnome.org/browse/libgudev/
8930 It is now managed as part of the Gnome project. Distributions
8931 are recommended to pass --disable-gudev to systemd and use
8932 gudev from the Gnome project instead. gudev is still included
8933 in systemd, for now. It will be removed soon, though. Please
8934 also see the announcement-thread on systemd-devel:
8935 https://lists.freedesktop.org/archives/systemd-devel/2015-May/032070.html
8936
8937 * systemd now exposes a CPUUsageNSec= property for each
8938 service unit on the bus, that contains the overall consumed
8939 CPU time of a service (the sum of what each process of the
8940 service consumed). This value is only available if
8941 CPUAccounting= is turned on for a service, and is then shown
8942 in the "systemctl status" output.
8943
8944 * Support for configuring alternative mappings of the old SysV
8945 runlevels to systemd targets has been removed. They are now
8946 hardcoded in a way that runlevels 2, 3, 4 all map to
8947 multi-user.target and 5 to graphical.target (which
8948 previously was already the default behaviour).
8949
8950 * The auto-mounter logic gained support for mount point
8951 expiry, using a new TimeoutIdleSec= setting in .automount
8952 units. (Also available as x-systemd.idle-timeout= in /etc/fstab).
8953
8954 * The EFI System Partition (ESP) as mounted to /boot by
8955 systemd-efi-boot-generator will now be unmounted
8956 automatically after 2 minutes of not being used. This should
8957 minimize the risk of ESP corruptions.
8958
8959 * New /etc/fstab options x-systemd.requires= and
8960 x-systemd.requires-mounts-for= are now supported to express
8961 additional dependencies for mounts. This is useful for
8962 journaling file systems that support external journal
8963 devices or overlay file systems that require underlying file
8964 systems to be mounted.
8965
8966 * systemd does not support direct live-upgrades (via systemctl
8967 daemon-reexec) from versions older than v44 anymore. As no
8968 distribution we are aware of shipped such old versions in a
8969 stable release this should not be problematic.
8970
8971 * When systemd forks off a new per-connection service instance
8972 it will now set the $REMOTE_ADDR environment variable to the
8973 remote IP address, and $REMOTE_PORT environment variable to
8974 the remote IP port. This behaviour is similar to the
8975 corresponding environment variables defined by CGI.
8976
8977 * systemd-networkd gained support for uplink failure
8978 detection. The BindCarrier= option allows binding interface
8979 configuration dynamically to the link sense of other
8980 interfaces. This is useful to achieve behaviour like in
8981 network switches.
8982
8983 * systemd-networkd gained support for configuring the DHCP
8984 client identifier to use when requesting leases.
8985
8986 * systemd-networkd now has a per-network UseNTP= option to
8987 configure whether NTP server information acquired via DHCP
8988 is passed on to services like systemd-timesyncd.
8989
8990 * systemd-networkd gained support for vti6 tunnels.
8991
8992 * Note that systemd-networkd manages the sysctl variable
8993 /proc/sys/net/ipv[46]/conf/*/forwarding for each interface
8994 it is configured for since v219. The variable controls IP
8995 forwarding, and is a per-interface alternative to the global
8996 /proc/sys/net/ipv[46]/ip_forward. This setting is
8997 configurable in the IPForward= option, which defaults to
8998 "no". This means if networkd is used for an interface it is
8999 no longer sufficient to set the global sysctl option to turn
9000 on IP forwarding! Instead, the .network file option
9001 IPForward= needs to be turned on! Note that the
9002 implementation of this behaviour was broken in v219 and has
9003 been fixed in v220.
9004
9005 * Many bonding and vxlan options are now configurable in
9006 systemd-networkd.
9007
9008 * systemd-nspawn gained a new --property= setting to set unit
9009 properties for the container scope. This is useful for
9010 setting resource parameters (e.g. "CPUShares=500") on
9011 containers started from the command line.
9012
9013 * systemd-nspawn gained a new --private-users= switch to make
9014 use of user namespacing available on recent Linux kernels.
9015
9016 * systemd-nspawn may now be called as part of a shell pipeline
9017 in which case the pipes used for stdin and stdout are passed
9018 directly to the process invoked in the container, without
9019 indirection via a pseudo tty.
9020
9021 * systemd-nspawn gained a new switch to control the UNIX
9022 signal to use when killing the init process of the container
9023 when shutting down.
9024
9025 * systemd-nspawn gained a new --overlay= switch for mounting
9026 overlay file systems into the container using the new kernel
9027 overlayfs support.
9028
9029 * When a container image is imported via systemd-importd and
9030 the host file system is not btrfs, a loopback block device
9031 file is created in /var/lib/machines.raw with a btrfs file
9032 system inside. It is then mounted to /var/lib/machines to
9033 enable btrfs features for container management. The loopback
9034 file and btrfs file system is grown as needed when container
9035 images are imported via systemd-importd.
9036
9037 * systemd-machined/systemd-importd gained support for btrfs
9038 quota, to enforce container disk space limits on disk. This
9039 is exposed in "machinectl set-limit".
9040
9041 * systemd-importd now can import containers from local .tar,
9042 .raw and .qcow2 images, and export them to .tar and .raw. It
9043 can also import dkr v2 images now from the network (on top
9044 of v1 as before).
9045
9046 * systemd-importd gained support for verifying downloaded
9047 images with gpg2 (previously only gpg1 was supported).
9048
9049 * systemd-machined, systemd-logind, systemd: most bus calls are
9050 now accessible to unprivileged processes via polkit. Also,
9051 systemd-logind will now allow users to kill their own sessions
9052 without further privileges or authorization.
9053
9054 * systemd-shutdownd has been removed. This service was
9055 previously responsible for implementing scheduled shutdowns
9056 as exposed in /usr/bin/shutdown's time parameter. This
9057 functionality has now been moved into systemd-logind and is
9058 accessible via a bus interface.
9059
9060 * "systemctl reboot" gained a new switch --firmware-setup that
9061 can be used to reboot into the EFI firmware setup, if that
9062 is available. systemd-logind now exposes an API on the bus
9063 to trigger such reboots, in case graphical desktop UIs want
9064 to cover this functionality.
9065
9066 * "systemctl enable", "systemctl disable" and "systemctl mask"
9067 now support a new "--now" switch. If specified the units
9068 that are enabled will also be started, and the ones
9069 disabled/masked also stopped.
9070
9071 * The Gummiboot EFI boot loader tool has been merged into
9072 systemd, and renamed to "systemd-boot". The bootctl tool has been
9073 updated to support systemd-boot.
9074
9075 * An EFI kernel stub has been added that may be used to create
9076 kernel EFI binaries that contain not only the actual kernel,
9077 but also an initrd, boot splash, command line and OS release
9078 information. This combined binary can then be signed as a
9079 single image, so that the firmware can verify it all in one
9080 step. systemd-boot has special support for EFI binaries created
9081 like this and can extract OS release information from them
9082 and show them in the boot menu. This functionality is useful
9083 to implement cryptographically verified boot schemes.
9084
9085 * Optional support has been added to systemd-fsck to pass
9086 fsck's progress report to an AF_UNIX socket in the file
9087 system.
9088
9089 * udev will no longer create device symlinks for all block devices by
9090 default. A deny list for excluding special block devices from this
9091 logic has been turned into an allow list that requires picking block
9092 devices explicitly that require device symlinks.
9093
9094 * A new (currently still internal) API sd-device.h has been
9095 added to libsystemd. This modernized API is supposed to
9096 replace libudev eventually. In fact, already much of libudev
9097 is now just a wrapper around sd-device.h.
9098
9099 * A new hwdb database for storing metadata about pointing
9100 stick devices has been added.
9101
9102 * systemd-tmpfiles gained support for setting file attributes
9103 similar to the "chattr" tool with new 'h' and 'H' lines.
9104
9105 * systemd-journald will no longer unconditionally set the
9106 btrfs NOCOW flag on new journal files. This is instead done
9107 with tmpfiles snippet using the new 'h' line type. This
9108 allows easy disabling of this logic, by masking the
9109 journal-nocow.conf tmpfiles file.
9110
9111 * systemd-journald will now translate audit message types to
9112 human readable identifiers when writing them to the
9113 journal. This should improve readability of audit messages.
9114
9115 * The LUKS logic gained support for the offset= and skip=
9116 options in /etc/crypttab, as previously implemented by
9117 Debian.
9118
9119 * /usr/lib/os-release gained a new optional field VARIANT= for
9120 distributions that support multiple variants (such as a
9121 desktop edition, a server edition, …)
9122
9123 Contributions from: Aaro Koskinen, Adam Goode, Alban Crequy,
9124 Alberto Fanjul Alonso, Alexander Sverdlin, Alex Puchades, Alin
9125 Rauta, Alison Chaiken, Andrew Jones, Arend van Spriel,
9126 Benedikt Morbach, Benjamin Franzke, Benjamin Tissoires, Blaž
9127 Tomažič, Chris Morgan, Chris Morin, Colin Walters, Cristian
9128 Rodríguez, Daniel Buch, Daniel Drake, Daniele Medri, Daniel
9129 Mack, Daniel Mustieles, daurnimator, Davide Bettio, David
9130 Herrmann, David Strauss, Didier Roche, Dimitri John Ledkov,
9131 Eric Cook, Gavin Li, Goffredo Baroncelli, Hannes Reinecke,
9132 Hans de Goede, Hans-Peter Deifel, Harald Hoyer, Iago López
9133 Galeiras, Ivan Shapovalov, Jan Engelhardt, Jan Janssen, Jan
9134 Pazdziora, Jan Synacek, Jasper St. Pierre, Jay Faulkner, John
9135 Paul Adrian Glaubitz, Jonathon Gilbert, Karel Zak, Kay
9136 Sievers, Koen Kooi, Lennart Poettering, Lubomir Rintel, Lucas
9137 De Marchi, Lukas Nykryn, Lukas Rusak, Lukasz Skalski, Łukasz
9138 Stelmach, Mantas Mikulėnas, Marc-Antoine Perennou, Marcel
9139 Holtmann, Martin Pitt, Mathieu Chevrier, Matthew Garrett,
9140 Michael Biebl, Michael Marineau, Michael Olbrich, Michal
9141 Schmidt, Michal Sekletar, Mirco Tischler, Nir Soffer, Patrik
9142 Flykt, Pavel Odvody, Peter Hutterer, Peter Lemenkov, Peter
9143 Waller, Piotr Drąg, Raul Gutierrez S, Richard Maw, Ronny
9144 Chevalier, Ross Burton, Sebastian Rasmussen, Sergey Ptashnick,
9145 Seth Jennings, Shawn Landden, Simon Farnsworth, Stefan Junker,
9146 Stephen Gallagher, Susant Sahani, Sylvain Plantefève, Thomas
9147 Haller, Thomas Hindoe Paaboel Andersen, Tobias Hunger, Tom
9148 Gundersen, Torstein Husebø, Umut Tezduyar Lindskog, Will
9149 Woods, Zachary Cook, Zbigniew Jędrzejewski-Szmek
9150
9151 — Berlin, 2015-05-22
9152
9153 CHANGES WITH 219:
9154
9155 * Introduce a new API "sd-hwdb.h" for querying the hardware
9156 metadata database. With this minimal interface one can query
9157 and enumerate the udev hwdb, decoupled from the old libudev
9158 library. libudev's interface for this is now only a wrapper
9159 around sd-hwdb. A new tool systemd-hwdb has been added to
9160 interface with and update the database.
9161
9162 * When any of systemd's tools copies files (for example due to
9163 tmpfiles' C lines) a btrfs reflink will attempted first,
9164 before bytewise copying is done.
9165
9166 * systemd-nspawn gained a new --ephemeral switch. When
9167 specified a btrfs snapshot is taken of the container's root
9168 directory, and immediately removed when the container
9169 terminates again. Thus, a container can be started whose
9170 changes never alter the container's root directory, and are
9171 lost on container termination. This switch can also be used
9172 for starting a container off the root file system of the
9173 host without affecting the host OS. This switch is only
9174 available on btrfs file systems.
9175
9176 * systemd-nspawn gained a new --template= switch. It takes the
9177 path to a container tree to use as template for the tree
9178 specified via --directory=, should that directory be
9179 missing. This allows instantiating containers dynamically,
9180 on first run. This switch is only available on btrfs file
9181 systems.
9182
9183 * When a .mount unit refers to a mount point on which multiple
9184 mounts are stacked, and the .mount unit is stopped all of
9185 the stacked mount points will now be unmounted until no
9186 mount point remains.
9187
9188 * systemd now has an explicit notion of supported and
9189 unsupported unit types. Jobs enqueued for unsupported unit
9190 types will now fail with an "unsupported" error code. More
9191 specifically .swap, .automount and .device units are not
9192 supported in containers, .busname units are not supported on
9193 non-kdbus systems. .swap and .automount are also not
9194 supported if their respective kernel compile time options
9195 are disabled.
9196
9197 * machinectl gained support for two new "copy-from" and
9198 "copy-to" commands for copying files from a running
9199 container to the host or vice versa.
9200
9201 * machinectl gained support for a new "bind" command to bind
9202 mount host directories into local containers. This is
9203 currently only supported for nspawn containers.
9204
9205 * networkd gained support for configuring bridge forwarding
9206 database entries (fdb) from .network files.
9207
9208 * A new tiny daemon "systemd-importd" has been added that can
9209 download container images in tar, raw, qcow2 or dkr formats,
9210 and make them available locally in /var/lib/machines, so
9211 that they can run as nspawn containers. The daemon can GPG
9212 verify the downloads (not supported for dkr, since it has no
9213 provisions for verifying downloads). It will transparently
9214 decompress bz2, xz, gzip compressed downloads if necessary,
9215 and restore sparse files on disk. The daemon uses privilege
9216 separation to ensure the actual download logic runs with
9217 fewer privileges than the daemon itself. machinectl has
9218 gained new commands "pull-tar", "pull-raw" and "pull-dkr" to
9219 make the functionality of importd available to the
9220 user. With this in place the Fedora and Ubuntu "Cloud"
9221 images can be downloaded and booted as containers unmodified
9222 (the Fedora images lack the appropriate GPG signature files
9223 currently, so they cannot be verified, but this will change
9224 soon, hopefully). Note that downloading images is currently
9225 only fully supported on btrfs.
9226
9227 * machinectl is now able to list container images found in
9228 /var/lib/machines, along with some metadata about sizes of
9229 disk and similar. If the directory is located on btrfs and
9230 quota is enabled, this includes quota display. A new command
9231 "image-status" has been added that shows additional
9232 information about images.
9233
9234 * machinectl is now able to clone container images
9235 efficiently, if the underlying file system (btrfs) supports
9236 it, with the new "machinectl clone" command. It also
9237 gained commands for renaming and removing images, as well as
9238 marking them read-only or read-write (supported also on
9239 legacy file systems).
9240
9241 * networkd gained support for collecting LLDP network
9242 announcements, from hardware that supports this. This is
9243 shown in networkctl output.
9244
9245 * systemd-run gained support for a new -t (--pty) switch for
9246 invoking a binary on a pty whose input and output is
9247 connected to the invoking terminal. This allows executing
9248 processes as system services while interactively
9249 communicating with them via the terminal. Most interestingly
9250 this is supported across container boundaries. Invoking
9251 "systemd-run -t /bin/bash" is an alternative to running a
9252 full login session, the difference being that the former
9253 will not register a session, nor go through the PAM session
9254 setup.
9255
9256 * tmpfiles gained support for a new "v" line type for creating
9257 btrfs subvolumes. If the underlying file system is a legacy
9258 file system, this automatically degrades to creating a
9259 normal directory. Among others /var/lib/machines is now
9260 created like this at boot, should it be missing.
9261
9262 * The directory /var/lib/containers/ has been deprecated and
9263 been replaced by /var/lib/machines. The term "machines" has
9264 been used in the systemd context as generic term for both
9265 VMs and containers, and hence appears more appropriate for
9266 this, as the directory can also contain raw images bootable
9267 via qemu/kvm.
9268
9269 * systemd-nspawn when invoked with -M but without --directory=
9270 or --image= is now capable of searching for the container
9271 root directory, subvolume or disk image automatically, in
9272 /var/lib/machines. systemd-nspawn@.service has been updated
9273 to make use of this, thus allowing it to be used for raw
9274 disk images, too.
9275
9276 * A new machines.target unit has been introduced that is
9277 supposed to group all containers/VMs invoked as services on
9278 the system. systemd-nspawn@.service has been updated to
9279 integrate with that.
9280
9281 * machinectl gained a new "start" command, for invoking a
9282 container as a service. "machinectl start foo" is mostly
9283 equivalent to "systemctl start systemd-nspawn@foo.service",
9284 but handles escaping in a nicer way.
9285
9286 * systemd-nspawn will now mount most of the cgroupfs tree
9287 read-only into each container, with the exception of the
9288 container's own subtree in the name=systemd hierarchy.
9289
9290 * journald now sets the special FS_NOCOW file flag for its
9291 journal files. This should improve performance on btrfs, by
9292 avoiding heavy fragmentation when journald's write-pattern
9293 is used on COW file systems. It degrades btrfs' data
9294 integrity guarantees for the files to the same levels as for
9295 ext3/ext4 however. This should be OK though as journald does
9296 its own data integrity checks and all its objects are
9297 checksummed on disk. Also, journald should handle btrfs disk
9298 full events a lot more gracefully now, by processing SIGBUS
9299 errors, and not relying on fallocate() anymore.
9300
9301 * When journald detects that journal files it is writing to
9302 have been deleted it will immediately start new journal
9303 files.
9304
9305 * systemd now provides a way to store file descriptors
9306 per-service in PID 1. This is useful for daemons to ensure
9307 that fds they require are not lost during a daemon
9308 restart. The fds are passed to the daemon on the next
9309 invocation in the same way socket activation fds are
9310 passed. This is now used by journald to ensure that the
9311 various sockets connected to all the system's stdout/stderr
9312 are not lost when journald is restarted. File descriptors
9313 may be stored in PID 1 via the sd_pid_notify_with_fds() API,
9314 an extension to sd_notify(). Note that a limit is enforced
9315 on the number of fds a service can store in PID 1, and it
9316 defaults to 0, so that no fds may be stored, unless this is
9317 explicitly turned on.
9318
9319 * The default TERM variable to use for units connected to a
9320 terminal, when no other value is explicitly is set is now
9321 vt220 rather than vt102. This should be fairly safe still,
9322 but allows PgUp/PgDn work.
9323
9324 * The /etc/crypttab option header= as known from Debian is now
9325 supported.
9326
9327 * "loginctl user-status" and "loginctl session-status" will
9328 now show the last 10 lines of log messages of the
9329 user/session following the status output. Similar,
9330 "machinectl status" will show the last 10 log lines
9331 associated with a virtual machine or container
9332 service. (Note that this is usually not the log messages
9333 done in the VM/container itself, but simply what the
9334 container manager logs. For nspawn this includes all console
9335 output however.)
9336
9337 * "loginctl session-status" without further argument will now
9338 show the status of the session of the caller. Similar,
9339 "lock-session", "unlock-session", "activate",
9340 "enable-linger", "disable-linger" may now be called without
9341 session/user parameter in which case they apply to the
9342 caller's session/user.
9343
9344 * An X11 session scriptlet is now shipped that uploads
9345 $DISPLAY and $XAUTHORITY into the environment of the systemd
9346 --user daemon if a session begins. This should improve
9347 compatibility with X11 enabled applications run as systemd
9348 user services.
9349
9350 * Generators are now subject to masking via /etc and /run, the
9351 same way as unit files.
9352
9353 * networkd .network files gained support for configuring
9354 per-link IPv4/IPv6 packet forwarding as well as IPv4
9355 masquerading. This is by default turned on for veth links to
9356 containers, as registered by systemd-nspawn. This means that
9357 nspawn containers run with --network-veth will now get
9358 automatic routed access to the host's networks without any
9359 further configuration or setup, as long as networkd runs on
9360 the host.
9361
9362 * systemd-nspawn gained the --port= (-p) switch to expose TCP
9363 or UDP posts of a container on the host. With this in place
9364 it is possible to run containers with private veth links
9365 (--network-veth), and have their functionality exposed on
9366 the host as if their services were running directly on the
9367 host.
9368
9369 * systemd-nspawn's --network-veth switch now gained a short
9370 version "-n", since with the changes above it is now truly
9371 useful out-of-the-box. The systemd-nspawn@.service has been
9372 updated to make use of it too by default.
9373
9374 * systemd-nspawn will now maintain a per-image R/W lock, to
9375 ensure that the same image is not started more than once
9376 writable. (It's OK to run an image multiple times
9377 simultaneously in read-only mode.)
9378
9379 * systemd-nspawn's --image= option is now capable of
9380 dissecting and booting MBR and GPT disk images that contain
9381 only a single active Linux partition. Previously it
9382 supported only GPT disk images with proper GPT type
9383 IDs. This allows running cloud images from major
9384 distributions directly with systemd-nspawn, without
9385 modification.
9386
9387 * In addition to collecting mouse dpi data in the udev
9388 hardware database, there's now support for collecting angle
9389 information for mouse scroll wheels. The database is
9390 supposed to guarantee similar scrolling behavior on mice
9391 that it knows about. There's also support for collecting
9392 information about Touchpad types.
9393
9394 * udev's input_id built-in will now also collect touch screen
9395 dimension data and attach it to probed devices.
9396
9397 * /etc/os-release gained support for a Distribution Privacy
9398 Policy link field.
9399
9400 * networkd gained support for creating "ipvlan", "gretap",
9401 "ip6gre", "ip6gretap" and "ip6tnl" network devices.
9402
9403 * systemd-tmpfiles gained support for "a" lines for setting
9404 ACLs on files.
9405
9406 * systemd-nspawn will now mount /tmp in the container to
9407 tmpfs, automatically.
9408
9409 * systemd now exposes the memory.usage_in_bytes cgroup
9410 attribute and shows it for each service in the "systemctl
9411 status" output, if available.
9412
9413 * When the user presses Ctrl-Alt-Del more than 7x within 2s an
9414 immediate reboot is triggered. This useful if shutdown is
9415 hung and is unable to complete, to expedite the
9416 operation. Note that this kind of reboot will still unmount
9417 all file systems, and hence should not result in fsck being
9418 run on next reboot.
9419
9420 * A .device unit for an optical block device will now be
9421 considered active only when a medium is in the drive. Also,
9422 mount units are now bound to their backing devices thus
9423 triggering automatic unmounting when devices become
9424 unavailable. With this in place systemd will now
9425 automatically unmount left-over mounts when a CD-ROM is
9426 ejected or an USB stick is yanked from the system.
9427
9428 * networkd-wait-online now has support for waiting for
9429 specific interfaces only (with globbing), and for giving up
9430 after a configurable timeout.
9431
9432 * networkd now exits when idle. It will be automatically
9433 restarted as soon as interfaces show up, are removed or
9434 change state. networkd will stay around as long as there is
9435 at least one DHCP state machine or similar around, that keep
9436 it non-idle.
9437
9438 * networkd may now configure IPv6 link-local addressing in
9439 addition to IPv4 link-local addressing.
9440
9441 * The IPv6 "token" for use in SLAAC may now be configured for
9442 each .network interface in networkd.
9443
9444 * Routes configured with networkd may now be assigned a scope
9445 in .network files.
9446
9447 * networkd's [Match] sections now support globbing and lists
9448 of multiple space-separated matches per item.
9449
9450 Contributions from: Alban Crequy, Alin Rauta, Andrey Chaser,
9451 Bastien Nocera, Bruno Bottazzini, Carlos Garnacho, Carlos
9452 Morata Castillo, Chris Atkinson, Chris J. Arges, Christian
9453 Kirbach, Christian Seiler, Christoph Brill, Colin Guthrie,
9454 Colin Walters, Cristian Rodríguez, Daniele Medri, Daniel Mack,
9455 Dave Reisner, David Herrmann, Djalal Harouni, Erik Auerswald,
9456 Filipe Brandenburger, Frank Theile, Gabor Kelemen, Gabriel de
9457 Perthuis, Harald Hoyer, Hui Wang, Ivan Shapovalov, Jan
9458 Engelhardt, Jan Synacek, Jay Faulkner, Johannes Hölzl, Jonas
9459 Ådahl, Jonathan Boulle, Josef Andersson, Kay Sievers, Ken
9460 Werner, Lennart Poettering, Lucas De Marchi, Lukas Märdian,
9461 Lukas Nykryn, Lukasz Skalski, Luke Shumaker, Mantas Mikulėnas,
9462 Manuel Mendez, Marcel Holtmann, Marc Schmitzer, Marko
9463 Myllynen, Martin Pitt, Maxim Mikityanskiy, Michael Biebl,
9464 Michael Marineau, Michael Olbrich, Michal Schmidt, Mindaugas
9465 Baranauskas, Moez Bouhlel, Naveen Kumar, Patrik Flykt, Paul
9466 Martin, Peter Hutterer, Peter Mattern, Philippe De Swert,
9467 Piotr Drąg, Rafael Ferreira, Rami Rosen, Robert Milasan, Ronny
9468 Chevalier, Sangjung Woo, Sebastien Bacher, Sergey Ptashnick,
9469 Shawn Landden, Stéphane Graber, Susant Sahani, Sylvain
9470 Plantefève, Thomas Hindoe Paaboel Andersen, Tim JP, Tom
9471 Gundersen, Topi Miettinen, Torstein Husebø, Umut Tezduyar
9472 Lindskog, Veres Lajos, Vincent Batts, WaLyong Cho, Wieland
9473 Hoffmann, Zbigniew Jędrzejewski-Szmek
9474
9475 — Berlin, 2015-02-16
9476
9477 CHANGES WITH 218:
9478
9479 * When querying unit file enablement status (for example via
9480 "systemctl is-enabled"), a new state "indirect" is now known
9481 which indicates that a unit might not be enabled itself, but
9482 another unit listed in its Also= setting might be.
9483
9484 * Similar to the various existing ConditionXYZ= settings for
9485 units, there are now matching AssertXYZ= settings. While
9486 failing conditions cause a unit to be skipped, but its job
9487 to succeed, failing assertions declared like this will cause
9488 a unit start operation and its job to fail.
9489
9490 * hostnamed now knows a new chassis type "embedded".
9491
9492 * systemctl gained a new "edit" command. When used on a unit
9493 file, this allows extending unit files with .d/ drop-in
9494 configuration snippets or editing the full file (after
9495 copying it from /usr/lib to /etc). This will invoke the
9496 user's editor (as configured with $EDITOR), and reload the
9497 modified configuration after editing.
9498
9499 * "systemctl status" now shows the suggested enablement state
9500 for a unit, as declared in the (usually vendor-supplied)
9501 system preset files.
9502
9503 * nss-myhostname will now resolve the single-label hostname
9504 "gateway" to the locally configured default IP routing
9505 gateways, ordered by their metrics. This assigns a stable
9506 name to the used gateways, regardless which ones are
9507 currently configured. Note that the name will only be
9508 resolved after all other name sources (if nss-myhostname is
9509 configured properly) and should hence not negatively impact
9510 systems that use the single-label hostname "gateway" in
9511 other contexts.
9512
9513 * systemd-inhibit now allows filtering by mode when listing
9514 inhibitors.
9515
9516 * Scope and service units gained a new "Delegate" boolean
9517 property, which, when set, allows processes running inside the
9518 unit to further partition resources. This is primarily
9519 useful for systemd user instances as well as container
9520 managers.
9521
9522 * journald will now pick up audit messages directly from
9523 the kernel, and log them like any other log message. The
9524 audit fields are split up and fully indexed. This means that
9525 journalctl in many ways is now a (nicer!) alternative to
9526 ausearch, the traditional audit client. Note that this
9527 implements only a minimal audit client. If you want the
9528 special audit modes like reboot-on-log-overflow, please use
9529 the traditional auditd instead, which can be used in
9530 parallel to journald.
9531
9532 * The ConditionSecurity= unit file option now understands the
9533 special string "audit" to check whether auditing is
9534 available.
9535
9536 * journalctl gained two new commands --vacuum-size= and
9537 --vacuum-time= to delete old journal files until the
9538 remaining ones take up no more than the specified size on disk,
9539 or are not older than the specified time.
9540
9541 * A new, native PPPoE library has been added to sd-network,
9542 systemd's library of light-weight networking protocols. This
9543 library will be used in a future version of networkd to
9544 enable PPPoE communication without an external pppd daemon.
9545
9546 * The busctl tool now understands a new "capture" verb that
9547 works similar to "monitor", but writes a packet capture
9548 trace to STDOUT that can be redirected to a file which is
9549 compatible with libcap's capture file format. This can then
9550 be loaded in Wireshark and similar tools to inspect bus
9551 communication.
9552
9553 * The busctl tool now understands a new "tree" verb that shows
9554 the object trees of a specific service on the bus, or of all
9555 services.
9556
9557 * The busctl tool now understands a new "introspect" verb that
9558 shows all interfaces and members of objects on the bus,
9559 including their signature and values. This is particularly
9560 useful to get more information about bus objects shown by
9561 the new "busctl tree" command.
9562
9563 * The busctl tool now understands new verbs "call",
9564 "set-property" and "get-property" for invoking bus method
9565 calls, setting and getting bus object properties in a
9566 friendly way.
9567
9568 * busctl gained a new --augment-creds= argument that controls
9569 whether the tool shall augment credential information it
9570 gets from the bus with data from /proc, in a possibly
9571 race-ful way.
9572
9573 * nspawn's --link-journal= switch gained two new values
9574 "try-guest" and "try-host" that work like "guest" and
9575 "host", but do not fail if the host has no persistent
9576 journaling enabled. -j is now equivalent to
9577 --link-journal=try-guest.
9578
9579 * macvlan network devices created by nspawn will now have
9580 stable MAC addresses.
9581
9582 * A new SmackProcessLabel= unit setting has been added, which
9583 controls the SMACK security label processes forked off by
9584 the respective unit shall use.
9585
9586 * If compiled with --enable-xkbcommon, systemd-localed will
9587 verify x11 keymap settings by compiling the given keymap. It
9588 will spew out warnings if the compilation fails. This
9589 requires libxkbcommon to be installed.
9590
9591 * When a coredump is collected, a larger number of metadata
9592 fields is now collected and included in the journal records
9593 created for it. More specifically, control group membership,
9594 environment variables, memory maps, working directory,
9595 chroot directory, /proc/$PID/status, and a list of open file
9596 descriptors is now stored in the log entry.
9597
9598 * The udev hwdb now contains DPI information for mice. For
9599 details see:
9600
9601 http://who-t.blogspot.de/2014/12/building-a-dpi-database-for-mice.html
9602
9603 * All systemd programs that read standalone configuration
9604 files in /etc now also support a corresponding series of
9605 .conf.d configuration directories in /etc/, /run/,
9606 /usr/local/lib/, /usr/lib/, and (if configured with
9607 --enable-split-usr) /lib/. In particular, the following
9608 configuration files now have corresponding configuration
9609 directories: system.conf user.conf, logind.conf,
9610 journald.conf, sleep.conf, bootchart.conf, coredump.conf,
9611 resolved.conf, timesyncd.conf, journal-remote.conf, and
9612 journal-upload.conf. Note that distributions should use the
9613 configuration directories in /usr/lib/; the directories in
9614 /etc/ are reserved for the system administrator.
9615
9616 * systemd-rfkill will no longer take the rfkill device name
9617 into account when storing rfkill state on disk, as the name
9618 might be dynamically assigned and not stable. Instead, the
9619 ID_PATH udev variable combined with the rfkill type (wlan,
9620 bluetooth, …) is used.
9621
9622 * A new service systemd-machine-id-commit.service has been
9623 added. When used on systems where /etc is read-only during
9624 boot, and /etc/machine-id is not initialized (but an empty
9625 file), this service will copy the temporary machine ID
9626 created as replacement into /etc after the system is fully
9627 booted up. This is useful for systems that are freshly
9628 installed with a non-initialized machine ID, but should get
9629 a fixed machine ID for subsequent boots.
9630
9631 * networkd's .netdev files now provide a large set of
9632 configuration parameters for VXLAN devices. Similarly, the
9633 bridge port cost parameter is now configurable in .network
9634 files. There's also new support for configuring IP source
9635 routing. networkd .link files gained support for a new
9636 OriginalName= match that is useful to match against the
9637 original interface name the kernel assigned. .network files
9638 may include MTU= and MACAddress= fields for altering the MTU
9639 and MAC address while being connected to a specific network
9640 interface.
9641
9642 * The LUKS logic gained supported for configuring
9643 UUID-specific key files. There's also new support for naming
9644 LUKS device from the kernel command line, using the new
9645 luks.name= argument.
9646
9647 * Timer units may now be transiently created via the bus API
9648 (this was previously already available for scope and service
9649 units). In addition it is now possible to create multiple
9650 transient units at the same time with a single bus call. The
9651 "systemd-run" tool has been updated to make use of this for
9652 running commands on a specified time, in at(1)-style.
9653
9654 * tmpfiles gained support for "t" lines, for assigning
9655 extended attributes to files. Among other uses this may be
9656 used to assign SMACK labels to files.
9657
9658 Contributions from: Alin Rauta, Alison Chaiken, Andrej
9659 Manduch, Bastien Nocera, Chris Atkinson, Chris Leech, Chris
9660 Mayo, Colin Guthrie, Colin Walters, Cristian Rodríguez,
9661 Daniele Medri, Daniel Mack, Dan Williams, Dan Winship, Dave
9662 Reisner, David Herrmann, Didier Roche, Felipe Sateler, Gavin
9663 Li, Hans de Goede, Harald Hoyer, Iago López Galeiras, Ivan
9664 Shapovalov, Jakub Filak, Jan Janssen, Jan Synacek, Joe
9665 Lawrence, Josh Triplett, Kay Sievers, Lennart Poettering,
9666 Lukas Nykryn, Łukasz Stelmach, Maciej Wereski, Mantas
9667 Mikulėnas, Marcel Holtmann, Martin Pitt, Maurizio Lombardi,
9668 Michael Biebl, Michael Chapman, Michael Marineau, Michal
9669 Schmidt, Michal Sekletar, Olivier Brunel, Patrik Flykt, Peter
9670 Hutterer, Przemyslaw Kedzierski, Rami Rosen, Ray Strode,
9671 Richard Schütz, Richard W.M. Jones, Ronny Chevalier, Ross
9672 Lagerwall, Sean Young, Stanisław Pitucha, Susant Sahani,
9673 Thomas Haller, Thomas Hindoe Paaboel Andersen, Tom Gundersen,
9674 Torstein Husebø, Umut Tezduyar Lindskog, Vicente Olivert
9675 Riera, WaLyong Cho, Wesley Dawson, Zbigniew Jędrzejewski-Szmek
9676
9677 — Berlin, 2014-12-10
9678
9679 CHANGES WITH 217:
9680
9681 * journalctl gained the new options -t/--identifier= to match
9682 on the syslog identifier (aka "tag"), as well as --utc to
9683 show log timestamps in the UTC timezone. journalctl now also
9684 accepts -n/--lines=all to disable line capping in a pager.
9685
9686 * journalctl gained a new switch, --flush, that synchronously
9687 flushes logs from /run/log/journal to /var/log/journal if
9688 persistent storage is enabled. systemd-journal-flush.service
9689 now waits until the operation is complete.
9690
9691 * Services can notify the manager before they start a reload
9692 (by sending RELOADING=1) or shutdown (by sending
9693 STOPPING=1). This allows the manager to track and show the
9694 internal state of daemons and closes a race condition when
9695 the process is still running but has closed its D-Bus
9696 connection.
9697
9698 * Services with Type=oneshot do not have to have any ExecStart
9699 commands anymore.
9700
9701 * User units are now loaded also from
9702 $XDG_RUNTIME_DIR/systemd/user/. This is similar to the
9703 /run/systemd/user directory that was already previously
9704 supported, but is under the control of the user.
9705
9706 * Job timeouts (i.e. timeouts on the time a job that is
9707 queued stays in the run queue) can now optionally result in
9708 immediate reboot or power-off actions (JobTimeoutAction= and
9709 JobTimeoutRebootArgument=). This is useful on ".target"
9710 units, to limit the maximum time a target remains
9711 undispatched in the run queue, and to trigger an emergency
9712 operation in such a case. This is now used by default to
9713 turn off the system if boot-up (as defined by everything in
9714 basic.target) hangs and does not complete for at least
9715 15min. Also, if power-off or reboot hang for at least 30min
9716 an immediate power-off/reboot operation is triggered. This
9717 functionality is particularly useful to increase reliability
9718 on embedded devices, but also on laptops which might
9719 accidentally get powered on when carried in a backpack and
9720 whose boot stays stuck in a hard disk encryption passphrase
9721 question.
9722
9723 * systemd-logind can be configured to also handle lid switch
9724 events even when the machine is docked or multiple displays
9725 are attached (HandleLidSwitchDocked= option).
9726
9727 * A helper binary and a service have been added which can be
9728 used to resume from hibernation in the initramfs. A
9729 generator will parse the resume= option on the kernel
9730 command line to trigger resume.
9731
9732 * A user console daemon systemd-consoled has been
9733 added. Currently, it is a preview, and will so far open a
9734 single terminal on each session of the user marked as
9735 Desktop=systemd-console.
9736
9737 * Route metrics can be specified for DHCP routes added by
9738 systemd-networkd.
9739
9740 * The SELinux context of socket-activated services can be set
9741 from the information provided by the networking stack
9742 (SELinuxContextFromNet= option).
9743
9744 * Userspace firmware loading support has been removed and
9745 the minimum supported kernel version is thus bumped to 3.7.
9746
9747 * Timeout for udev workers has been increased from 1 to 3
9748 minutes, but a warning will be printed after 1 minute to
9749 help diagnose kernel modules that take a long time to load.
9750
9751 * Udev rules can now remove tags on devices with TAG-="foobar".
9752
9753 * systemd's readahead implementation has been removed. In many
9754 circumstances it didn't give expected benefits even for
9755 rotational disk drives and was becoming less relevant in the
9756 age of SSDs. As none of the developers has been using
9757 rotating media anymore, and nobody stepped up to actively
9758 maintain this component of systemd it has now been removed.
9759
9760 * Swap units can use Options= to specify discard options.
9761 Discard options specified for swaps in /etc/fstab are now
9762 respected.
9763
9764 * Docker containers are now detected as a separate type of
9765 virtualization.
9766
9767 * The Password Agent protocol gained support for queries where
9768 the user input is shown, useful e.g. for user names.
9769 systemd-ask-password gained a new --echo option to turn that
9770 on.
9771
9772 * The default sysctl.d/ snippets will now set:
9773
9774 net.core.default_qdisc = fq_codel
9775
9776 This selects Fair Queuing Controlled Delay as the default
9777 queuing discipline for network interfaces. fq_codel helps
9778 fight the network bufferbloat problem. It is believed to be
9779 a good default with no tuning required for most workloads.
9780 Downstream distributions may override this choice. On 10Gbit
9781 servers that do not do forwarding, "fq" may perform better.
9782 Systems without a good clocksource should use "pfifo_fast".
9783
9784 * If kdbus is enabled during build a new option BusPolicy= is
9785 available for service units, that allows locking all service
9786 processes into a stricter bus policy, in order to limit
9787 access to various bus services, or even hide most of them
9788 from the service's view entirely.
9789
9790 * networkctl will now show the .network and .link file
9791 networkd has applied to a specific interface.
9792
9793 * sd-login gained a new API call sd_session_get_desktop() to
9794 query which desktop environment has been selected for a
9795 session.
9796
9797 * UNIX utmp support is now compile-time optional to support
9798 legacy-free systems.
9799
9800 * systemctl gained two new commands "add-wants" and
9801 "add-requires" for pulling in units from specific targets
9802 easily.
9803
9804 * If the word "rescue" is specified on the kernel command line
9805 the system will now boot into rescue mode (aka
9806 rescue.target), which was previously available only by
9807 specifying "1" or "systemd.unit=rescue.target" on the kernel
9808 command line. This new kernel command line option nicely
9809 mirrors the already existing "emergency" kernel command line
9810 option.
9811
9812 * New kernel command line options mount.usr=, mount.usrflags=,
9813 mount.usrfstype= have been added that match root=, rootflags=,
9814 rootfstype= but allow mounting a specific file system to
9815 /usr.
9816
9817 * The $NOTIFY_SOCKET is now also passed to control processes of
9818 services, not only the main process.
9819
9820 * This version reenables support for fsck's -l switch. This
9821 means at least version v2.25 of util-linux is required for
9822 operation, otherwise dead-locks on device nodes may
9823 occur. Again: you need to update util-linux to at least
9824 v2.25 when updating systemd to v217.
9825
9826 * The "multi-seat-x" tool has been removed from systemd, as
9827 its functionality has been integrated into X servers 1.16,
9828 and the tool is hence redundant. It is recommended to update
9829 display managers invoking this tool to simply invoke X
9830 directly from now on, again.
9831
9832 * Support for the new ALLOW_INTERACTIVE_AUTHORIZATION D-Bus
9833 message flag has been added for all of systemd's polkit
9834 authenticated method calls has been added. In particular this
9835 now allows optional interactive authorization via polkit for
9836 many of PID1's privileged operations such as unit file
9837 enabling and disabling.
9838
9839 * "udevadm hwdb --update" learnt a new switch "--usr" for
9840 placing the rebuilt hardware database in /usr instead of
9841 /etc. When used only hardware database entries stored in
9842 /usr will be used, and any user database entries in /etc are
9843 ignored. This functionality is useful for vendors to ship a
9844 pre-built database on systems where local configuration is
9845 unnecessary or unlikely.
9846
9847 * Calendar time specifications in .timer units now also
9848 understand the strings "semi-annually", "quarterly" and
9849 "minutely" as shortcuts (in addition to the preexisting
9850 "annually", "hourly", …).
9851
9852 * systemd-tmpfiles will now correctly create files in /dev
9853 at boot which are marked for creation only at boot. It is
9854 recommended to always create static device nodes with 'c!'
9855 and 'b!', so that they are created only at boot and not
9856 overwritten at runtime.
9857
9858 * When the watchdog logic is used for a service (WatchdogSec=)
9859 and the watchdog timeout is hit the service will now be
9860 terminated with SIGABRT (instead of just SIGTERM), in order
9861 to make sure a proper coredump and backtrace is
9862 generated. This ensures that hanging services will result in
9863 similar coredump/backtrace behaviour as services that hit a
9864 segmentation fault.
9865
9866 Contributions from: Andreas Henriksson, Andrei Borzenkov,
9867 Angus Gibson, Ansgar Burchardt, Ben Wolsieffer, Brandon L.
9868 Black, Christian Hesse, Cristian Rodríguez, Daniel Buch,
9869 Daniele Medri, Daniel Mack, Dan Williams, Dave Reisner, David
9870 Herrmann, David Sommerseth, David Strauss, Emil Renner
9871 Berthing, Eric Cook, Evangelos Foutras, Filipe Brandenburger,
9872 Gustavo Sverzut Barbieri, Hans de Goede, Harald Hoyer, Hristo
9873 Venev, Hugo Grostabussiat, Ivan Shapovalov, Jan Janssen, Jan
9874 Synacek, Jonathan Liu, Juho Son, Karel Zak, Kay Sievers, Klaus
9875 Purer, Koen Kooi, Lennart Poettering, Lukas Nykryn, Lukasz
9876 Skalski, Łukasz Stelmach, Mantas Mikulėnas, Marcel Holtmann,
9877 Marius Tessmann, Marko Myllynen, Martin Pitt, Michael Biebl,
9878 Michael Marineau, Michael Olbrich, Michael Scherer, Michal
9879 Schmidt, Michal Sekletar, Miroslav Lichvar, Patrik Flykt,
9880 Philippe De Swert, Piotr Drąg, Rahul Sundaram, Richard
9881 Weinberger, Robert Milasan, Ronny Chevalier, Ruben Kerkhof,
9882 Santiago Vila, Sergey Ptashnick, Simon McVittie, Sjoerd
9883 Simons, Stefan Brüns, Steven Allen, Steven Noonan, Susant
9884 Sahani, Sylvain Plantefève, Thomas Hindoe Paaboel Andersen,
9885 Timofey Titovets, Tobias Hunger, Tom Gundersen, Torstein
9886 Husebø, Umut Tezduyar Lindskog, WaLyong Cho, Zbigniew
9887 Jędrzejewski-Szmek
9888
9889 — Berlin, 2014-10-28
9890
9891 CHANGES WITH 216:
9892
9893 * timedated no longer reads NTP implementation unit names from
9894 /usr/lib/systemd/ntp-units.d/*.list. Alternative NTP
9895 implementations should add a
9896
9897 Conflicts=systemd-timesyncd.service
9898
9899 to their unit files to take over and replace systemd's NTP
9900 default functionality.
9901
9902 * systemd-sysusers gained a new line type "r" for configuring
9903 which UID/GID ranges to allocate system users/groups
9904 from. Lines of type "u" may now add an additional column
9905 that specifies the home directory for the system user to be
9906 created. Also, systemd-sysusers may now optionally read user
9907 information from STDIN instead of a file. This is useful for
9908 invoking it from RPM preinst scriptlets that need to create
9909 users before the first RPM file is installed since these
9910 files might need to be owned by them. A new
9911 %sysusers_create_inline RPM macro has been introduced to do
9912 just that. systemd-sysusers now updates the shadow files as
9913 well as the user/group databases, which should enhance
9914 compatibility with certain tools like grpck.
9915
9916 * A number of bus APIs of PID 1 now optionally consult polkit to
9917 permit access for otherwise unprivileged clients under certain
9918 conditions. Note that this currently doesn't support
9919 interactive authentication yet, but this is expected to be
9920 added eventually, too.
9921
9922 * /etc/machine-info now has new fields for configuring the
9923 deployment environment of the machine, as well as the
9924 location of the machine. hostnamectl has been updated with
9925 new command to update these fields.
9926
9927 * systemd-timesyncd has been updated to automatically acquire
9928 NTP server information from systemd-networkd, which might
9929 have been discovered via DHCP.
9930
9931 * systemd-resolved now includes a caching DNS stub resolver
9932 and a complete LLMNR name resolution implementation. A new
9933 NSS module "nss-resolve" has been added which can be used
9934 instead of glibc's own "nss-dns" to resolve hostnames via
9935 systemd-resolved. Hostnames, addresses and arbitrary RRs may
9936 be resolved via systemd-resolved D-Bus APIs. In contrast to
9937 the glibc internal resolver systemd-resolved is aware of
9938 multi-homed system, and keeps DNS server and caches separate
9939 and per-interface. Queries are sent simultaneously on all
9940 interfaces that have DNS servers configured, in order to
9941 properly handle VPNs and local LANs which might resolve
9942 separate sets of domain names. systemd-resolved may acquire
9943 DNS server information from systemd-networkd automatically,
9944 which in turn might have discovered them via DHCP. A tool
9945 "systemd-resolve-host" has been added that may be used to
9946 query the DNS logic in resolved. systemd-resolved implements
9947 IDNA and automatically uses IDNA or UTF-8 encoding depending
9948 on whether classic DNS or LLMNR is used as transport. In the
9949 next releases we intend to add a DNSSEC and mDNS/DNS-SD
9950 implementation to systemd-resolved.
9951
9952 * A new NSS module nss-mymachines has been added, that
9953 automatically resolves the names of all local registered
9954 containers to their respective IP addresses.
9955
9956 * A new client tool "networkctl" for systemd-networkd has been
9957 added. It currently is entirely passive and will query
9958 networking configuration from udev, rtnetlink and networkd,
9959 and present it to the user in a very friendly
9960 way. Eventually, we hope to extend it to become a full
9961 control utility for networkd.
9962
9963 * .socket units gained a new DeferAcceptSec= setting that
9964 controls the kernels' TCP_DEFER_ACCEPT sockopt for
9965 TCP. Similarly, support for controlling TCP keep-alive
9966 settings has been added (KeepAliveTimeSec=,
9967 KeepAliveIntervalSec=, KeepAliveProbes=). Also, support for
9968 turning off Nagle's algorithm on TCP has been added
9969 (NoDelay=).
9970
9971 * logind learned a new session type "web", for use in projects
9972 like Cockpit which register web clients as PAM sessions.
9973
9974 * timer units with at least one OnCalendar= setting will now
9975 be started only after time-sync.target has been
9976 reached. This way they will not elapse before the system
9977 clock has been corrected by a local NTP client or
9978 similar. This is particular useful on RTC-less embedded
9979 machines, that come up with an invalid system clock.
9980
9981 * systemd-nspawn's --network-veth= switch should now result in
9982 stable MAC addresses for both the outer and the inner side
9983 of the link.
9984
9985 * systemd-nspawn gained a new --volatile= switch for running
9986 container instances with /etc or /var unpopulated.
9987
9988 * The kdbus client code has been updated to use the new Linux
9989 3.17 memfd subsystem instead of the old kdbus-specific one.
9990
9991 * systemd-networkd's DHCP client and server now support
9992 FORCERENEW. There are also new configuration options to
9993 configure the vendor client identifier and broadcast mode
9994 for DHCP.
9995
9996 * systemd will no longer inform the kernel about the current
9997 timezone, as this is necessarily incorrect and racy as the
9998 kernel has no understanding of DST and similar
9999 concepts. This hence means FAT timestamps will be always
10000 considered UTC, similar to what Android is already
10001 doing. Also, when the RTC is configured to the local time
10002 (rather than UTC) systemd will never synchronize back to it,
10003 as this might confuse Windows at a later boot.
10004
10005 * systemd-analyze gained a new command "verify" for offline
10006 validation of unit files.
10007
10008 * systemd-networkd gained support for a couple of additional
10009 settings for bonding networking setups. Also, the metric for
10010 statically configured routes may now be configured. For
10011 network interfaces where this is appropriate the peer IP
10012 address may now be configured.
10013
10014 * systemd-networkd's DHCP client will no longer request
10015 broadcasting by default, as this tripped up some networks.
10016 For hardware where broadcast is required the feature should
10017 be switched back on using RequestBroadcast=yes.
10018
10019 * systemd-networkd will now set up IPv4LL addresses (when
10020 enabled) even if DHCP is configured successfully.
10021
10022 * udev will now default to respect network device names given
10023 by the kernel when the kernel indicates that these are
10024 predictable. This behavior can be tweaked by changing
10025 NamePolicy= in the relevant .link file.
10026
10027 * A new library systemd-terminal has been added that
10028 implements full TTY stream parsing and rendering. This
10029 library is supposed to be used later on for implementing a
10030 full userspace VT subsystem, replacing the current kernel
10031 implementation.
10032
10033 * A new tool systemd-journal-upload has been added to push
10034 journal data to a remote system running
10035 systemd-journal-remote.
10036
10037 * journald will no longer forward all local data to another
10038 running syslog daemon. This change has been made because
10039 rsyslog (which appears to be the most commonly used syslog
10040 implementation these days) no longer makes use of this, and
10041 instead pulls the data out of the journal on its own. Since
10042 forwarding the messages to a non-existent syslog server is
10043 more expensive than we assumed we have now turned this
10044 off. If you run a syslog server that is not a recent rsyslog
10045 version, you have to turn this option on again
10046 (ForwardToSyslog= in journald.conf).
10047
10048 * journald now optionally supports the LZ4 compressor for
10049 larger journal fields. This compressor should perform much
10050 better than XZ which was the previous default.
10051
10052 * machinectl now shows the IP addresses of local containers,
10053 if it knows them, plus the interface name of the container.
10054
10055 * A new tool "systemd-escape" has been added that makes it
10056 easy to escape strings to build unit names and similar.
10057
10058 * sd_notify() messages may now include a new ERRNO= field
10059 which is parsed and collected by systemd and shown among the
10060 "systemctl status" output for a service.
10061
10062 * A new component "systemd-firstboot" has been added that
10063 queries the most basic systemd information (timezone,
10064 hostname, root password) interactively on first
10065 boot. Alternatively it may also be used to provision these
10066 things offline on OS images installed into directories.
10067
10068 * The default sysctl.d/ snippets will now set
10069
10070 net.ipv4.conf.default.promote_secondaries=1
10071
10072 This has the benefit of no flushing secondary IP addresses
10073 when primary addresses are removed.
10074
10075 Contributions from: Ansgar Burchardt, Bastien Nocera, Colin
10076 Walters, Dan Dedrick, Daniel Buch, Daniel Korostil, Daniel
10077 Mack, Dan Williams, Dave Reisner, David Herrmann, Denis
10078 Kenzior, Eelco Dolstra, Eric Cook, Hannes Reinecke, Harald
10079 Hoyer, Hong Shick Pak, Hui Wang, Jean-André Santoni, Jóhann
10080 B. Guðmundsson, Jon Severinsson, Karel Zak, Kay Sievers, Kevin
10081 Wells, Lennart Poettering, Lukas Nykryn, Mantas Mikulėnas,
10082 Marc-Antoine Perennou, Martin Pitt, Michael Biebl, Michael
10083 Marineau, Michael Olbrich, Michal Schmidt, Michal Sekletar,
10084 Miguel Angel Ajo, Mike Gilbert, Olivier Brunel, Robert
10085 Schiele, Ronny Chevalier, Simon McVittie, Sjoerd Simons, Stef
10086 Walter, Steven Noonan, Susant Sahani, Tanu Kaskinen, Thomas
10087 Blume, Thomas Hindoe Paaboel Andersen, Timofey Titovets,
10088 Tobias Geerinckx-Rice, Tomasz Torcz, Tom Gundersen, Umut
10089 Tezduyar Lindskog, Zbigniew Jędrzejewski-Szmek
10090
10091 — Berlin, 2014-08-19
10092
10093 CHANGES WITH 215:
10094
10095 * A new tool systemd-sysusers has been added. This tool
10096 creates system users and groups in /etc/passwd and
10097 /etc/group, based on static declarative system user/group
10098 definitions in /usr/lib/sysusers.d/. This is useful to
10099 enable factory resets and volatile systems that boot up with
10100 an empty /etc directory, and thus need system users and
10101 groups created during early boot. systemd now also ships
10102 with two default sysusers.d/ files for the most basic
10103 users and groups systemd and the core operating system
10104 require.
10105
10106 * A new tmpfiles snippet has been added that rebuilds the
10107 essential files in /etc on boot, should they be missing.
10108
10109 * A directive for ensuring automatic clean-up of
10110 /var/cache/man/ has been removed from the default
10111 configuration. This line should now be shipped by the man
10112 implementation. The necessary change has been made to the
10113 man-db implementation. Note that you need to update your man
10114 implementation to one that ships this line, otherwise no
10115 automatic clean-up of /var/cache/man will take place.
10116
10117 * A new condition ConditionNeedsUpdate= has been added that
10118 may conditionalize services to only run when /etc or /var
10119 are "older" than the vendor operating system resources in
10120 /usr. This is useful for reconstructing or updating /etc
10121 after an offline update of /usr or a factory reset, on the
10122 next reboot. Services that want to run once after such an
10123 update or reset should use this condition and order
10124 themselves before the new systemd-update-done.service, which
10125 will mark the two directories as fully updated. A number of
10126 service files have been added making use of this, to rebuild
10127 the udev hardware database, the journald message catalog and
10128 dynamic loader cache (ldconfig). The systemd-sysusers tool
10129 described above also makes use of this now. With this in
10130 place it is now possible to start up a minimal operating
10131 system with /etc empty cleanly. For more information on the
10132 concepts involved see this recent blog story:
10133
10134 http://0pointer.de/blog/projects/stateless.html
10135
10136 * A new system group "input" has been introduced, and all
10137 input device nodes get this group assigned. This is useful
10138 for system-level software to get access to input devices. It
10139 complements what is already done for "audio" and "video".
10140
10141 * systemd-networkd learnt minimal DHCPv4 server support in
10142 addition to the existing DHCPv4 client support. It also
10143 learnt DHCPv6 client and IPv6 Router Solicitation client
10144 support. The DHCPv4 client gained support for static routes
10145 passed in from the server. Note that the [DHCPv4] section
10146 known in older systemd-networkd versions has been renamed to
10147 [DHCP] and is now also used by the DHCPv6 client. Existing
10148 .network files using settings of this section should be
10149 updated, though compatibility is maintained. Optionally, the
10150 client hostname may now be sent to the DHCP server.
10151
10152 * networkd gained support for vxlan virtual networks as well
10153 as tun/tap and dummy devices.
10154
10155 * networkd gained support for automatic allocation of address
10156 ranges for interfaces from a system-wide pool of
10157 addresses. This is useful for dynamically managing a large
10158 number of interfaces with a single network configuration
10159 file. In particular this is useful to easily assign
10160 appropriate IP addresses to the veth links of a large number
10161 of nspawn instances.
10162
10163 * RPM macros for processing sysusers, sysctl and binfmt
10164 drop-in snippets at package installation time have been
10165 added.
10166
10167 * The /etc/os-release file should now be placed in
10168 /usr/lib/os-release. The old location is automatically
10169 created as symlink. /usr/lib is the more appropriate
10170 location of this file, since it shall actually describe the
10171 vendor operating system shipped in /usr, and not the
10172 configuration stored in /etc.
10173
10174 * .mount units gained a new boolean SloppyOptions= setting
10175 that maps to mount(8)'s -s option which enables permissive
10176 parsing of unknown mount options.
10177
10178 * tmpfiles learnt a new "L+" directive which creates a symlink
10179 but (unlike "L") deletes a pre-existing file first, should
10180 it already exist and not already be the correct
10181 symlink. Similarly, "b+", "c+" and "p+" directives have been
10182 added as well, which create block and character devices, as
10183 well as fifos in the filesystem, possibly removing any
10184 pre-existing files of different types.
10185
10186 * For tmpfiles' "L", "L+", "C" and "C+" directives the final
10187 'argument' field (which so far specified the source to
10188 symlink/copy the files from) is now optional. If omitted the
10189 same file os copied from /usr/share/factory/ suffixed by the
10190 full destination path. This is useful for populating /etc
10191 with essential files, by copying them from vendor defaults
10192 shipped in /usr/share/factory/etc.
10193
10194 * A new command "systemctl preset-all" has been added that
10195 applies the service preset settings to all installed unit
10196 files. A new switch --preset-mode= has been added that
10197 controls whether only enable or only disable operations
10198 shall be executed.
10199
10200 * A new command "systemctl is-system-running" has been added
10201 that allows checking the overall state of the system, for
10202 example whether it is fully up and running.
10203
10204 * When the system boots up with an empty /etc, the equivalent
10205 to "systemctl preset-all" is executed during early boot, to
10206 make sure all default services are enabled after a factory
10207 reset.
10208
10209 * systemd now contains a minimal preset file that enables the
10210 most basic services systemd ships by default.
10211
10212 * Unit files' [Install] section gained a new DefaultInstance=
10213 field for defining the default instance to create if a
10214 template unit is enabled with no instance specified.
10215
10216 * A new passive target cryptsetup-pre.target has been added
10217 that may be used by services that need to make they run and
10218 finish before the first LUKS cryptographic device is set up.
10219
10220 * The /dev/loop-control and /dev/btrfs-control device nodes
10221 are now owned by the "disk" group by default, opening up
10222 access to this group.
10223
10224 * systemd-coredump will now automatically generate a
10225 stack trace of all core dumps taking place on the system,
10226 based on elfutils' libdw library. This stack trace is logged
10227 to the journal.
10228
10229 * systemd-coredump may now optionally store coredumps directly
10230 on disk (in /var/lib/systemd/coredump, possibly compressed),
10231 instead of storing them unconditionally in the journal. This
10232 mode is the new default. A new configuration file
10233 /etc/systemd/coredump.conf has been added to configure this
10234 and other parameters of systemd-coredump.
10235
10236 * coredumpctl gained a new "info" verb to show details about a
10237 specific coredump. A new switch "-1" has also been added
10238 that makes sure to only show information about the most
10239 recent entry instead of all entries. Also, as the tool is
10240 generally useful now the "systemd-" prefix of the binary
10241 name has been removed. Distributions that want to maintain
10242 compatibility with the old name should add a symlink from
10243 the old name to the new name.
10244
10245 * journald's SplitMode= now defaults to "uid". This makes sure
10246 that unprivileged users can access their own coredumps with
10247 coredumpctl without restrictions.
10248
10249 * New kernel command line options "systemd.wants=" (for
10250 pulling an additional unit during boot), "systemd.mask="
10251 (for masking a specific unit for the boot), and
10252 "systemd.debug-shell" (for enabling the debug shell on tty9)
10253 have been added. This is implemented in the new generator
10254 "systemd-debug-generator".
10255
10256 * systemd-nspawn will now by default filter a couple of
10257 syscalls for containers, among them those required for
10258 kernel module loading, direct x86 IO port access, swap
10259 management, and kexec. Most importantly though
10260 open_by_handle_at() is now prohibited for containers,
10261 closing a hole similar to a recently discussed vulnerability
10262 in docker regarding access to files on file hierarchies the
10263 container should normally not have access to. Note that, for
10264 nspawn, we generally make no security claims anyway (and
10265 this is explicitly documented in the man page), so this is
10266 just a fix for one of the most obvious problems.
10267
10268 * A new man page file-hierarchy(7) has been added that
10269 contains a minimized, modernized version of the file system
10270 layout systemd expects, similar in style to the FHS
10271 specification or hier(5). A new tool systemd-path(1) has
10272 been added to query many of these paths for the local
10273 machine and user.
10274
10275 * Automatic time-based clean-up of $XDG_RUNTIME_DIR is no
10276 longer done. Since the directory now has a per-user size
10277 limit, and is cleaned on logout this appears unnecessary,
10278 in particular since this now brings the lifecycle of this
10279 directory closer in line with how IPC objects are handled.
10280
10281 * systemd.pc now exports a number of additional directories,
10282 including $libdir (which is useful to identify the library
10283 path for the primary architecture of the system), and a
10284 couple of drop-in directories.
10285
10286 * udev's predictable network interface names now use the dev_port
10287 sysfs attribute, introduced in linux 3.15 instead of dev_id to
10288 distinguish between ports of the same PCI function. dev_id should
10289 only be used for ports using the same HW address, hence the need
10290 for dev_port.
10291
10292 * machined has been updated to export the OS version of a
10293 container (read from /etc/os-release and
10294 /usr/lib/os-release) on the bus. This is now shown in
10295 "machinectl status" for a machine.
10296
10297 * A new service setting RestartForceExitStatus= has been
10298 added. If configured to a set of exit signals or process
10299 return values, the service will be restarted when the main
10300 daemon process exits with any of them, regardless of the
10301 Restart= setting.
10302
10303 * systemctl's -H switch for connecting to remote systemd
10304 machines has been extended so that it may be used to
10305 directly connect to a specific container on the
10306 host. "systemctl -H root@foobar:waldi" will now connect as
10307 user "root" to host "foobar", and then proceed directly to
10308 the container named "waldi". Note that currently you have to
10309 authenticate as user "root" for this to work, as entering
10310 containers is a privileged operation.
10311
10312 Contributions from: Andreas Henriksson, Benjamin Steinwender,
10313 Carl Schaefer, Christian Hesse, Colin Ian King, Cristian
10314 Rodríguez, Daniel Mack, Dave Reisner, David Herrmann, Eugene
10315 Yakubovich, Filipe Brandenburger, Frederic Crozat, Hristo
10316 Venev, Jan Engelhardt, Jonathan Boulle, Kay Sievers, Lennart
10317 Poettering, Luke Shumaker, Mantas Mikulėnas, Marc-Antoine
10318 Perennou, Marcel Holtmann, Michael Marineau, Michael Olbrich,
10319 Michał Bartoszkiewicz, Michal Sekletar, Patrik Flykt, Ronan Le
10320 Martret, Ronny Chevalier, Ruediger Oertel, Steven Noonan,
10321 Susant Sahani, Thadeu Lima de Souza Cascardo, Thomas Hindoe
10322 Paaboel Andersen, Tom Gundersen, Tom Hirst, Umut Tezduyar
10323 Lindskog, Uoti Urpala, Zbigniew Jędrzejewski-Szmek
10324
10325 — Berlin, 2014-07-03
10326
10327 CHANGES WITH 214:
10328
10329 * As an experimental feature, udev now tries to lock the
10330 disk device node (flock(LOCK_SH|LOCK_NB)) while it
10331 executes events for the disk or any of its partitions.
10332 Applications like partitioning programs can lock the
10333 disk device node (flock(LOCK_EX)) and claim temporary
10334 device ownership that way; udev will entirely skip all event
10335 handling for this disk and its partitions. If the disk
10336 was opened for writing, the close will trigger a partition
10337 table rescan in udev's "watch" facility, and if needed
10338 synthesize "change" events for the disk and all its partitions.
10339 This is now unconditionally enabled, and if it turns out to
10340 cause major problems, we might turn it on only for specific
10341 devices, or might need to disable it entirely. Device Mapper
10342 devices are excluded from this logic.
10343
10344 * We temporarily dropped the "-l" switch for fsck invocations,
10345 since they collide with the flock() logic above. util-linux
10346 upstream has been changed already to avoid this conflict,
10347 and we will re-add "-l" as soon as util-linux with this
10348 change has been released.
10349
10350 * The dependency on libattr has been removed. Since a long
10351 time, the extended attribute calls have moved to glibc, and
10352 libattr is thus unnecessary.
10353
10354 * Virtualization detection works without privileges now. This
10355 means the systemd-detect-virt binary no longer requires
10356 CAP_SYS_PTRACE file capabilities, and our daemons can run
10357 with fewer privileges.
10358
10359 * systemd-networkd now runs under its own "systemd-network"
10360 user. It retains the CAP_NET_ADMIN, CAP_NET_BIND_SERVICE,
10361 CAP_NET_BROADCAST, CAP_NET_RAW capabilities though, but
10362 loses the ability to write to files owned by root this way.
10363
10364 * Similarly, systemd-resolved now runs under its own
10365 "systemd-resolve" user with no capabilities remaining.
10366
10367 * Similarly, systemd-bus-proxyd now runs under its own
10368 "systemd-bus-proxy" user with only CAP_IPC_OWNER remaining.
10369
10370 * systemd-networkd gained support for setting up "veth"
10371 virtual Ethernet devices for container connectivity, as well
10372 as GRE and VTI tunnels.
10373
10374 * systemd-networkd will no longer automatically attempt to
10375 manually load kernel modules necessary for certain tunnel
10376 transports. Instead, it is assumed the kernel loads them
10377 automatically when required. This only works correctly on
10378 very new kernels. On older kernels, please consider adding
10379 the kernel modules to /etc/modules-load.d/ as a work-around.
10380
10381 * The resolv.conf file systemd-resolved generates has been
10382 moved to /run/systemd/resolve/. If you have a symlink from
10383 /etc/resolv.conf, it might be necessary to correct it.
10384
10385 * Two new service settings, ProtectHome= and ProtectSystem=,
10386 have been added. When enabled, they will make the user data
10387 (such as /home) inaccessible or read-only and the system
10388 (such as /usr) read-only, for specific services. This allows
10389 very light-weight per-service sandboxing to avoid
10390 modifications of user data or system files from
10391 services. These two new switches have been enabled for all
10392 of systemd's long-running services, where appropriate.
10393
10394 * Socket units gained new SocketUser= and SocketGroup=
10395 settings to set the owner user and group of AF_UNIX sockets
10396 and FIFOs in the file system.
10397
10398 * Socket units gained a new RemoveOnStop= setting. If enabled,
10399 all FIFOS and sockets in the file system will be removed
10400 when the specific socket unit is stopped.
10401
10402 * Socket units gained a new Symlinks= setting. It takes a list
10403 of symlinks to create to file system sockets or FIFOs
10404 created by the specific Unix sockets. This is useful to
10405 manage symlinks to socket nodes with the same lifecycle as
10406 the socket itself.
10407
10408 * The /dev/log socket and /dev/initctl FIFO have been moved to
10409 /run, and have been replaced by symlinks. This allows
10410 connecting to these facilities even if PrivateDevices=yes is
10411 used for a service (which makes /dev/log itself unavailable,
10412 but /run is left). This also has the benefit of ensuring
10413 that /dev only contains device nodes, directories and
10414 symlinks, and nothing else.
10415
10416 * sd-daemon gained two new calls sd_pid_notify() and
10417 sd_pid_notifyf(). They are similar to sd_notify() and
10418 sd_notifyf(), but allow overriding of the source PID of
10419 notification messages if permissions permit this. This is
10420 useful to send notify messages on behalf of a different
10421 process (for example, the parent process). The
10422 systemd-notify tool has been updated to make use of this
10423 when sending messages (so that notification messages now
10424 originate from the shell script invoking systemd-notify and
10425 not the systemd-notify process itself. This should minimize
10426 a race where systemd fails to associate notification
10427 messages to services when the originating process already
10428 vanished.
10429
10430 * A new "on-abnormal" setting for Restart= has been added. If
10431 set, it will result in automatic restarts on all "abnormal"
10432 reasons for a process to exit, which includes unclean
10433 signals, core dumps, timeouts and watchdog timeouts, but
10434 does not include clean and unclean exit codes or clean
10435 signals. Restart=on-abnormal is an alternative for
10436 Restart=on-failure for services that shall be able to
10437 terminate and avoid restarts on certain errors, by
10438 indicating so with an unclean exit code. Restart=on-failure
10439 or Restart=on-abnormal is now the recommended setting for
10440 all long-running services.
10441
10442 * If the InaccessibleDirectories= service setting points to a
10443 mount point (or if there are any submounts contained within
10444 it), it is now attempted to completely unmount it, to make
10445 the file systems truly unavailable for the respective
10446 service.
10447
10448 * The ReadOnlyDirectories= service setting and
10449 systemd-nspawn's --read-only parameter are now recursively
10450 applied to all submounts, too.
10451
10452 * Mount units may now be created transiently via the bus APIs.
10453
10454 * The support for SysV and LSB init scripts has been removed
10455 from the systemd daemon itself. Instead, it is now
10456 implemented as a generator that creates native systemd units
10457 from these scripts when needed. This enables us to remove a
10458 substantial amount of legacy code from PID 1, following the
10459 fact that many distributions only ship a very small number
10460 of LSB/SysV init scripts nowadays.
10461
10462 * Privileged Xen (dom0) domains are not considered
10463 virtualization anymore by the virtualization detection
10464 logic. After all, they generally have unrestricted access to
10465 the hardware and usually are used to manage the unprivileged
10466 (domU) domains.
10467
10468 * systemd-tmpfiles gained a new "C" line type, for copying
10469 files or entire directories.
10470
10471 * systemd-tmpfiles "m" lines are now fully equivalent to "z"
10472 lines. So far, they have been non-globbing versions of the
10473 latter, and have thus been redundant. In future, it is
10474 recommended to only use "z". "m" has hence been removed
10475 from the documentation, even though it stays supported.
10476
10477 * A tmpfiles snippet to recreate the most basic structure in
10478 /var has been added. This is enough to create the /var/run →
10479 /run symlink and create a couple of structural
10480 directories. This allows systems to boot up with an empty or
10481 volatile /var. Of course, while with this change, the core OS
10482 now is capable with dealing with a volatile /var, not all
10483 user services are ready for it. However, we hope that sooner
10484 or later, many service daemons will be changed upstream so
10485 that they are able to automatically create their necessary
10486 directories in /var at boot, should they be missing. This is
10487 the first step to allow state-less systems that only require
10488 the vendor image for /usr to boot.
10489
10490 * systemd-nspawn has gained a new --tmpfs= switch to mount an
10491 empty tmpfs instance to a specific directory. This is
10492 particularly useful for making use of the automatic
10493 reconstruction of /var (see above), by passing --tmpfs=/var.
10494
10495 * Access modes specified in tmpfiles snippets may now be
10496 prefixed with "~", which indicates that they shall be masked
10497 by whether the existing file or directory is currently
10498 writable, readable or executable at all. Also, if specified,
10499 the sgid/suid/sticky bits will be masked for all
10500 non-directories.
10501
10502 * A new passive target unit "network-pre.target" has been
10503 added which is useful for services that shall run before any
10504 network is configured, for example firewall scripts.
10505
10506 * The "floppy" group that previously owned the /dev/fd*
10507 devices is no longer used. The "disk" group is now used
10508 instead. Distributions should probably deprecate usage of
10509 this group.
10510
10511 Contributions from: Camilo Aguilar, Christian Hesse, Colin Ian
10512 King, Cristian Rodríguez, Daniel Buch, Dave Reisner, David
10513 Strauss, Denis Tikhomirov, John, Jonathan Liu, Kay Sievers,
10514 Lennart Poettering, Mantas Mikulėnas, Mark Eichin, Ronny
10515 Chevalier, Susant Sahani, Thomas Blume, Thomas Hindoe Paaboel
10516 Andersen, Tom Gundersen, Umut Tezduyar Lindskog, Zbigniew
10517 Jędrzejewski-Szmek
10518
10519 — Berlin, 2014-06-11
10520
10521 CHANGES WITH 213:
10522
10523 * A new "systemd-timesyncd" daemon has been added for
10524 synchronizing the system clock across the network. It
10525 implements an SNTP client. In contrast to NTP
10526 implementations such as chrony or the NTP reference server,
10527 this only implements a client side, and does not bother with
10528 the full NTP complexity, focusing only on querying time from
10529 one remote server and synchronizing the local clock to
10530 it. Unless you intend to serve NTP to networked clients or
10531 want to connect to local hardware clocks, this simple NTP
10532 client should be more than appropriate for most
10533 installations. The daemon runs with minimal privileges, and
10534 has been hooked up with networkd to only operate when
10535 network connectivity is available. The daemon saves the
10536 current clock to disk every time a new NTP sync has been
10537 acquired, and uses this to possibly correct the system clock
10538 early at bootup, in order to accommodate for systems that
10539 lack an RTC such as the Raspberry Pi and embedded devices,
10540 and to make sure that time monotonically progresses on these
10541 systems, even if it is not always correct. To make use of
10542 this daemon, a new system user and group "systemd-timesync"
10543 needs to be created on installation of systemd.
10544
10545 * The queue "seqnum" interface of libudev has been disabled, as
10546 it was generally incompatible with device namespacing as
10547 sequence numbers of devices go "missing" if the devices are
10548 part of a different namespace.
10549
10550 * "systemctl list-timers" and "systemctl list-sockets" gained
10551 a --recursive switch for showing units of these types also
10552 for all local containers, similar in style to the already
10553 supported --recursive switch for "systemctl list-units".
10554
10555 * A new RebootArgument= setting has been added for service
10556 units, which may be used to specify a kernel reboot argument
10557 to use when triggering reboots with StartLimitAction=.
10558
10559 * A new FailureAction= setting has been added for service
10560 units which may be used to specify an operation to trigger
10561 when a service fails. This works similarly to
10562 StartLimitAction=, but unlike it, controls what is done
10563 immediately rather than only after several attempts to
10564 restart the service in question.
10565
10566 * hostnamed got updated to also expose the kernel name,
10567 release, and version on the bus. This is useful for
10568 executing commands like hostnamectl with the -H switch.
10569 systemd-analyze makes use of this to properly display
10570 details when running non-locally.
10571
10572 * The bootchart tool can now show cgroup information in the
10573 graphs it generates.
10574
10575 * The CFS CPU quota cgroup attribute is now exposed for
10576 services. The new CPUQuota= switch has been added for this
10577 which takes a percentage value. Setting this will have the
10578 result that a service may never get more CPU time than the
10579 specified percentage, even if the machine is otherwise idle.
10580
10581 * systemd-networkd learned IPIP and SIT tunnel support.
10582
10583 * LSB init scripts exposing a dependency on $network will now
10584 get a dependency on network-online.target rather than simply
10585 network.target. This should bring LSB handling closer to
10586 what it was on SysV systems.
10587
10588 * A new fsck.repair= kernel option has been added to control
10589 how fsck shall deal with unclean file systems at boot.
10590
10591 * The (.ini) configuration file parser will now silently ignore
10592 sections whose names begin with "X-". This may be used to maintain
10593 application-specific extension sections in unit files.
10594
10595 * machined gained a new API to query the IP addresses of
10596 registered containers. "machinectl status" has been updated
10597 to show these addresses in its output.
10598
10599 * A new call sd_uid_get_display() has been added to the
10600 sd-login APIs for querying the "primary" session of a
10601 user. The "primary" session of the user is elected from the
10602 user's sessions and generally a graphical session is
10603 preferred over a text one.
10604
10605 * A minimal systemd-resolved daemon has been added. It
10606 currently simply acts as a companion to systemd-networkd and
10607 manages resolv.conf based on per-interface DNS
10608 configuration, possibly supplied via DHCP. In the long run
10609 we hope to extend this into a local DNSSEC enabled DNS and
10610 mDNS cache.
10611
10612 * The systemd-networkd-wait-online tool is now enabled by
10613 default. It will delay network-online.target until a network
10614 connection has been configured. The tool primarily integrates
10615 with networkd, but will also make a best effort to make sense
10616 of network configuration performed in some other way.
10617
10618 * Two new service options StartupCPUShares= and
10619 StartupBlockIOWeight= have been added that work similarly to
10620 CPUShares= and BlockIOWeight= however only apply during
10621 system startup. This is useful to prioritize certain services
10622 differently during bootup than during normal runtime.
10623
10624 * hostnamed has been changed to prefer the statically
10625 configured hostname in /etc/hostname (unless set to
10626 'localhost' or empty) over any dynamic one supplied by
10627 dhcp. With this change, the rules for picking the hostname
10628 match more closely the rules of other configuration settings
10629 where the local administrator's configuration in /etc always
10630 overrides any other settings.
10631
10632 Contributions from: Ali H. Caliskan, Alison Chaiken, Bas van
10633 den Berg, Brandon Philips, Cristian Rodríguez, Daniel Buch,
10634 Dan Kilman, Dave Reisner, David Härdeman, David Herrmann,
10635 David Strauss, Dimitris Spingos, Djalal Harouni, Eelco
10636 Dolstra, Evan Nemerson, Florian Albrechtskirchinger, Greg
10637 Kroah-Hartman, Harald Hoyer, Holger Hans Peter Freyther, Jan
10638 Engelhardt, Jani Nikula, Jason St. John, Jeffrey Clark,
10639 Jonathan Boulle, Kay Sievers, Lennart Poettering, Lukas
10640 Nykryn, Lukasz Skalski, Łukasz Stelmach, Mantas Mikulėnas,
10641 Marcel Holtmann, Martin Pitt, Matthew Monaco, Michael
10642 Marineau, Michael Olbrich, Michal Sekletar, Mike Gilbert, Nis
10643 Martensen, Patrik Flykt, Philip Lorenz, poma, Ray Strode,
10644 Reyad Attiyat, Robert Milasan, Scott Thrasher, Stef Walter,
10645 Steven Siloti, Susant Sahani, Tanu Kaskinen, Thomas Bächler,
10646 Thomas Hindoe Paaboel Andersen, Tom Gundersen, Umut Tezduyar
10647 Lindskog, WaLyong Cho, Will Woods, Zbigniew
10648 Jędrzejewski-Szmek
10649
10650 — Beijing, 2014-05-28
10651
10652 CHANGES WITH 212:
10653
10654 * When restoring the screen brightness at boot, stay away from
10655 the darkest setting or from the lowest 5% of the available
10656 range, depending on which is the larger value of both. This
10657 should effectively protect the user from rebooting into a
10658 black screen, should the brightness have been set to minimum
10659 by accident.
10660
10661 * sd-login gained a new sd_machine_get_class() call to
10662 determine the class ("vm" or "container") of a machine
10663 registered with machined.
10664
10665 * sd-login gained new calls
10666 sd_peer_get_{session,owner_uid,unit,user_unit,slice,machine_name}(),
10667 to query the identity of the peer of a local AF_UNIX
10668 connection. They operate similarly to their sd_pid_get_xyz()
10669 counterparts.
10670
10671 * PID 1 will now maintain a system-wide system state engine
10672 with the states "starting", "running", "degraded",
10673 "maintenance", "stopping". These states are bound to system
10674 startup, normal runtime, runtime with at least one failed
10675 service, rescue/emergency mode and system shutdown. This
10676 state is shown in the "systemctl status" output when no unit
10677 name is passed. It is useful to determine system state, in
10678 particularly when doing so for many systems or containers at
10679 once.
10680
10681 * A new command "list-machines" has been added to "systemctl"
10682 that lists all local OS containers and shows their system
10683 state (see above), if systemd runs inside of them.
10684
10685 * systemctl gained a new "-r" switch to recursively enumerate
10686 units on all local containers, when used with the
10687 "list-unit" command (which is the default one that is
10688 executed when no parameters are specified).
10689
10690 * The GPT automatic partition discovery logic will now honour
10691 two GPT partition flags: one may be set on a partition to
10692 cause it to be mounted read-only, and the other may be set
10693 on a partition to ignore it during automatic discovery.
10694
10695 * Two new GPT type UUIDs have been added for automatic root
10696 partition discovery, for 32-bit and 64-bit ARM. This is not
10697 particularly useful for discovering the root directory on
10698 these architectures during bare-metal boots (since UEFI is
10699 not common there), but still very useful to allow booting of
10700 ARM disk images in nspawn with the -i option.
10701
10702 * MAC addresses of interfaces created with nspawn's
10703 --network-interface= switch will now be generated from the
10704 machine name, and thus be stable between multiple invocations
10705 of the container.
10706
10707 * logind will now automatically remove all IPC objects owned
10708 by a user if she or he fully logs out. This makes sure that
10709 users who are logged out cannot continue to consume IPC
10710 resources. This covers SysV memory, semaphores and message
10711 queues as well as POSIX shared memory and message
10712 queues. Traditionally, SysV and POSIX IPC had no lifecycle
10713 limits. With this functionality, that is corrected. This may
10714 be turned off by using the RemoveIPC= switch of logind.conf.
10715
10716 * The systemd-machine-id-setup and tmpfiles tools gained a
10717 --root= switch to operate on a specific root directory,
10718 instead of /.
10719
10720 * journald can now forward logged messages to the TTYs of all
10721 logged in users ("wall"). This is the default for all
10722 emergency messages now.
10723
10724 * A new tool systemd-journal-remote has been added to stream
10725 journal log messages across the network.
10726
10727 * /sys/fs/cgroup/ is now mounted read-only after all cgroup
10728 controller trees are mounted into it. Note that the
10729 directories mounted beneath it are not read-only. This is a
10730 security measure and is particularly useful because glibc
10731 actually includes a search logic to pick any tmpfs it can
10732 find to implement shm_open() if /dev/shm is not available
10733 (which it might very well be in namespaced setups).
10734
10735 * machinectl gained a new "poweroff" command to cleanly power
10736 down a local OS container.
10737
10738 * The PrivateDevices= unit file setting will now also drop the
10739 CAP_MKNOD capability from the capability bound set, and
10740 imply DevicePolicy=closed.
10741
10742 * PrivateDevices=, PrivateNetwork= and PrivateTmp= is now used
10743 comprehensively on all long-running systemd services where
10744 this is appropriate.
10745
10746 * systemd-udevd will now run in a disassociated mount
10747 namespace. To mount directories from udev rules, make sure to
10748 pull in mount units via SYSTEMD_WANTS properties.
10749
10750 * The kdbus support gained support for uploading policy into
10751 the kernel. sd-bus gained support for creating "monitoring"
10752 connections that can eavesdrop into all bus communication
10753 for debugging purposes.
10754
10755 * Timestamps may now be specified in seconds since the UNIX
10756 epoch Jan 1st, 1970 by specifying "@" followed by the value
10757 in seconds.
10758
10759 * Native tcpwrap support in systemd has been removed. tcpwrap
10760 is old code, not really maintained anymore and has serious
10761 shortcomings, and better options such as firewalls
10762 exist. For setups that require tcpwrap usage, please
10763 consider invoking your socket-activated service via tcpd,
10764 like on traditional inetd.
10765
10766 * A new system.conf configuration option
10767 DefaultTimerAccuracySec= has been added that controls the
10768 default AccuracySec= setting of .timer units.
10769
10770 * Timer units gained a new WakeSystem= switch. If enabled,
10771 timers configured this way will cause the system to resume
10772 from system suspend (if the system supports that, which most
10773 do these days).
10774
10775 * Timer units gained a new Persistent= switch. If enabled,
10776 timers configured this way will save to disk when they have
10777 been last triggered. This information is then used on next
10778 reboot to possible execute overdue timer events, that
10779 could not take place because the system was powered off.
10780 This enables simple anacron-like behaviour for timer units.
10781
10782 * systemctl's "list-timers" will now also list the time a
10783 timer unit was last triggered in addition to the next time
10784 it will be triggered.
10785
10786 * systemd-networkd will now assign predictable IPv4LL
10787 addresses to its local interfaces.
10788
10789 Contributions from: Brandon Philips, Daniel Buch, Daniel Mack,
10790 Dave Reisner, David Herrmann, Gerd Hoffmann, Greg
10791 Kroah-Hartman, Hendrik Brueckner, Jason St. John, Josh
10792 Triplett, Kay Sievers, Lennart Poettering, Marc-Antoine
10793 Perennou, Michael Marineau, Michael Olbrich, Miklos Vajna,
10794 Patrik Flykt, poma, Sebastian Thorarensen, Thomas Bächler,
10795 Thomas Hindoe Paaboel Andersen, Tomasz Torcz, Tom Gundersen,
10796 Umut Tezduyar Lindskog, Wieland Hoffmann, Zbigniew
10797 Jędrzejewski-Szmek
10798
10799 — Berlin, 2014-03-25
10800
10801 CHANGES WITH 211:
10802
10803 * A new unit file setting RestrictAddressFamilies= has been
10804 added to restrict which socket address families unit
10805 processes gain access to. This takes address family names
10806 like "AF_INET" or "AF_UNIX", and is useful to minimize the
10807 attack surface of services via exotic protocol stacks. This
10808 is built on seccomp system call filters.
10809
10810 * Two new unit file settings RuntimeDirectory= and
10811 RuntimeDirectoryMode= have been added that may be used to
10812 manage a per-daemon runtime directories below /run. This is
10813 an alternative for setting up directory permissions with
10814 tmpfiles snippets, and has the advantage that the runtime
10815 directory's lifetime is bound to the daemon runtime and that
10816 the daemon starts up with an empty directory each time. This
10817 is particularly useful when writing services that drop
10818 privileges using the User= or Group= setting.
10819
10820 * The DeviceAllow= unit setting now supports globbing for
10821 matching against device group names.
10822
10823 * The systemd configuration file system.conf gained new
10824 settings DefaultCPUAccounting=, DefaultBlockIOAccounting=,
10825 DefaultMemoryAccounting= to globally turn on/off accounting
10826 for specific resources (cgroups) for all units. These
10827 settings may still be overridden individually in each unit
10828 though.
10829
10830 * systemd-gpt-auto-generator is now able to discover /srv and
10831 root partitions in addition to /home and swap partitions. It
10832 also supports LUKS-encrypted partitions now. With this in
10833 place, automatic discovery of partitions to mount following
10834 the Discoverable Partitions Specification
10835 (https://systemd.io/DISCOVERABLE_PARTITIONS/)
10836 is now a lot more complete. This allows booting without
10837 /etc/fstab and without root= on the kernel command line on
10838 systems prepared appropriately.
10839
10840 * systemd-nspawn gained a new --image= switch which allows
10841 booting up disk images and Linux installations on any block
10842 device that follow the Discoverable Partitions Specification
10843 (see above). This means that installations made with
10844 appropriately updated installers may now be started and
10845 deployed using container managers, completely
10846 unmodified. (We hope that libvirt-lxc will add support for
10847 this feature soon, too.)
10848
10849 * systemd-nspawn gained a new --network-macvlan= setting to
10850 set up a private macvlan interface for the
10851 container. Similarly, systemd-networkd gained a new
10852 Kind=macvlan setting in .netdev files.
10853
10854 * systemd-networkd now supports configuring local addresses
10855 using IPv4LL.
10856
10857 * A new tool systemd-network-wait-online has been added to
10858 synchronously wait for network connectivity using
10859 systemd-networkd.
10860
10861 * The sd-bus.h bus API gained a new sd_bus_track object for
10862 tracking the lifecycle of bus peers. Note that sd-bus.h is
10863 still not a public API though (unless you specify
10864 --enable-kdbus on the configure command line, which however
10865 voids your warranty and you get no API stability guarantee).
10866
10867 * The $XDG_RUNTIME_DIR runtime directories for each user are
10868 now individual tmpfs instances, which has the benefit of
10869 introducing separate pools for each user, with individual
10870 size limits, and thus making sure that unprivileged clients
10871 can no longer negatively impact the system or other users by
10872 filling up their $XDG_RUNTIME_DIR. A new logind.conf setting
10873 RuntimeDirectorySize= has been introduced that allows
10874 controlling the default size limit for all users. It
10875 defaults to 10% of the available physical memory. This is no
10876 replacement for quotas on tmpfs though (which the kernel
10877 still does not support), as /dev/shm and /tmp are still
10878 shared resources used by both the system and unprivileged
10879 users.
10880
10881 * logind will now automatically turn off automatic suspending
10882 on laptop lid close when more than one display is
10883 connected. This was previously expected to be implemented
10884 individually in desktop environments (such as GNOME),
10885 however has been added to logind now, in order to fix a
10886 boot-time race where a desktop environment might not have
10887 been started yet and thus not been able to take an inhibitor
10888 lock at the time where logind already suspends the system
10889 due to a closed lid.
10890
10891 * logind will now wait at least 30s after each system
10892 suspend/resume cycle, and 3min after system boot before
10893 suspending the system due to a closed laptop lid. This
10894 should give USB docking stations and similar enough time to
10895 be probed and configured after system resume and boot in
10896 order to then act as suspend blocker.
10897
10898 * systemd-run gained a new --property= setting which allows
10899 initialization of resource control properties (and others)
10900 for the created scope or service unit. Example: "systemd-run
10901 --property=BlockIOWeight=10 updatedb" may be used to run
10902 updatedb at a low block IO scheduling weight.
10903
10904 * systemd-run's --uid=, --gid=, --setenv=, --setenv= switches
10905 now also work in --scope mode.
10906
10907 * When systemd is compiled with kdbus support, basic support
10908 for enforced policies is now in place. (Note that enabling
10909 kdbus still voids your warranty and no API compatibility
10910 promises are made.)
10911
10912 Contributions from: Andrey Borzenkov, Ansgar Burchardt, Armin
10913 K., Daniel Mack, Dave Reisner, David Herrmann, Djalal Harouni,
10914 Harald Hoyer, Henrik Grindal Bakken, Jasper St. Pierre, Kay
10915 Sievers, Kieran Clancy, Lennart Poettering, Lukas Nykryn,
10916 Mantas Mikulėnas, Marcel Holtmann, Mark Oteiza, Martin Pitt,
10917 Mike Gilbert, Peter Rajnoha, poma, Samuli Suominen, Stef
10918 Walter, Susant Sahani, Tero Roponen, Thomas Andersen, Thomas
10919 Bächler, Thomas Hindoe Paaboel Andersen, Tomasz Torcz, Tom
10920 Gundersen, Umut Tezduyar Lindskog, Uoti Urpala, Zachary Cook,
10921 Zbigniew Jędrzejewski-Szmek
10922
10923 — Berlin, 2014-03-12
10924
10925 CHANGES WITH 210:
10926
10927 * systemd will now relabel /dev after loading the SMACK policy
10928 according to SMACK rules.
10929
10930 * A new unit file option AppArmorProfile= has been added to
10931 set the AppArmor profile for the processes of a unit.
10932
10933 * A new condition check ConditionArchitecture= has been added
10934 to conditionalize units based on the system architecture, as
10935 reported by uname()'s "machine" field.
10936
10937 * systemd-networkd now supports matching on the system
10938 virtualization, architecture, kernel command line, hostname
10939 and machine ID.
10940
10941 * logind is now a lot more aggressive when suspending the
10942 machine due to a closed laptop lid. Instead of acting only
10943 on the lid close action, it will continuously watch the lid
10944 status and act on it. This is useful for laptops where the
10945 power button is on the outside of the chassis so that it can
10946 be reached without opening the lid (such as the Lenovo
10947 Yoga). On those machines, logind will now immediately
10948 re-suspend the machine if the power button has been
10949 accidentally pressed while the laptop was suspended and in a
10950 backpack or similar.
10951
10952 * logind will now watch SW_DOCK switches and inhibit reaction
10953 to the lid switch if it is pressed. This means that logind
10954 will not suspend the machine anymore if the lid is closed
10955 and the system is docked, if the laptop supports SW_DOCK
10956 notifications via the input layer. Note that ACPI docking
10957 stations do not generate this currently. Also note that this
10958 logic is usually not fully sufficient and Desktop
10959 Environments should take a lid switch inhibitor lock when an
10960 external display is connected, as systemd will not watch
10961 this on its own.
10962
10963 * nspawn will now make use of the devices cgroup controller by
10964 default, and only permit creation of and access to the usual
10965 API device nodes like /dev/null or /dev/random, as well as
10966 access to (but not creation of) the pty devices.
10967
10968 * We will now ship a default .network file for
10969 systemd-networkd that automatically configures DHCP for
10970 network interfaces created by nspawn's --network-veth or
10971 --network-bridge= switches.
10972
10973 * systemd will now understand the usual M, K, G, T suffixes
10974 according to SI conventions (i.e. to the base 1000) when
10975 referring to throughput and hardware metrics. It will stay
10976 with IEC conventions (i.e. to the base 1024) for software
10977 metrics, according to what is customary according to
10978 Wikipedia. We explicitly document which base applies for
10979 each configuration option.
10980
10981 * The DeviceAllow= setting in unit files now supports a syntax to
10982 allow-list an entire group of devices node majors at once, based on
10983 the /proc/devices listing. For example, with the string "char-pts",
10984 it is now possible to allow-list all current and future pseudo-TTYs
10985 at once.
10986
10987 * sd-event learned a new "post" event source. Event sources of
10988 this type are triggered by the dispatching of any event
10989 source of a type that is not "post". This is useful for
10990 implementing clean-up and check event sources that are
10991 triggered by other work being done in the program.
10992
10993 * systemd-networkd is no longer statically enabled, but uses
10994 the usual [Install] sections so that it can be
10995 enabled/disabled using systemctl. It still is enabled by
10996 default however.
10997
10998 * When creating a veth interface pair with systemd-nspawn, the
10999 host side will now be prefixed with "vb-" if
11000 --network-bridge= is used, and with "ve-" if --network-veth
11001 is used. This way, it is easy to distinguish these cases on
11002 the host, for example to apply different configuration to
11003 them with systemd-networkd.
11004
11005 * The compatibility libraries for libsystemd-journal.so,
11006 libsystem-id128.so, libsystemd-login.so and
11007 libsystemd-daemon.so do not make use of IFUNC
11008 anymore. Instead, we now build libsystemd.so multiple times
11009 under these alternative names. This means that the footprint
11010 is drastically increased, but given that these are
11011 transitional compatibility libraries, this should not matter
11012 much. This change has been made necessary to support the ARM
11013 platform for these compatibility libraries, as the ARM
11014 toolchain is not really at the same level as the toolchain
11015 for other architectures like x86 and does not support
11016 IFUNC. Please make sure to use --enable-compat-libs only
11017 during a transitional period!
11018
11019 * The .include syntax has been deprecated and is not documented
11020 anymore. Drop-in files in .d directories should be used instead.
11021
11022 Contributions from: Andreas Fuchs, Armin K., Colin Walters,
11023 Daniel Mack, Dave Reisner, David Herrmann, Djalal Harouni,
11024 Holger Schurig, Jason A. Donenfeld, Jason St. John, Jasper
11025 St. Pierre, Kay Sievers, Lennart Poettering, Łukasz Stelmach,
11026 Marcel Holtmann, Michael Scherer, Michal Sekletar, Mike
11027 Gilbert, Samuli Suominen, Thomas Bächler, Thomas Hindoe
11028 Paaboel Andersen, Tom Gundersen, Umut Tezduyar Lindskog,
11029 Zbigniew Jędrzejewski-Szmek
11030
11031 — Berlin, 2014-02-24
11032
11033 CHANGES WITH 209:
11034
11035 * A new component "systemd-networkd" has been added that can
11036 be used to configure local network interfaces statically or
11037 via DHCP. It is capable of bringing up bridges, VLANs, and
11038 bonding. Currently, no hook-ups for interactive network
11039 configuration are provided. Use this for your initrd,
11040 container, embedded, or server setup if you need a simple,
11041 yet powerful, network configuration solution. This
11042 configuration subsystem is quite nifty, as it allows wildcard
11043 hotplug matching in interfaces. For example, with a single
11044 configuration snippet, you can configure that all Ethernet
11045 interfaces showing up are automatically added to a bridge,
11046 or similar. It supports link-sensing and more.
11047
11048 * A new tool "systemd-socket-proxyd" has been added which can
11049 act as a bidirectional proxy for TCP sockets. This is
11050 useful for adding socket activation support to services that
11051 do not actually support socket activation, including virtual
11052 machines and the like.
11053
11054 * Add a new tool to save/restore rfkill state on
11055 shutdown/boot.
11056
11057 * Save/restore state of keyboard backlights in addition to
11058 display backlights on shutdown/boot.
11059
11060 * udev learned a new SECLABEL{} construct to label device
11061 nodes with a specific security label when they appear. For
11062 now, only SECLABEL{selinux} is supported, but the syntax is
11063 prepared for additional security frameworks.
11064
11065 * udev gained a new scheme to configure link-level attributes
11066 from files in /etc/systemd/network/*.link. These files can
11067 match against MAC address, device path, driver name and type,
11068 and will apply attributes like the naming policy, link speed,
11069 MTU, duplex settings, Wake-on-LAN settings, MAC address, MAC
11070 address assignment policy (randomized, …).
11071
11072 * The configuration of network interface naming rules for
11073 "permanent interface names" has changed: a new NamePolicy=
11074 setting in the [Link] section of .link files determines the
11075 priority of possible naming schemes (onboard, slot, MAC,
11076 path). The default value of this setting is determined by
11077 /usr/lib/net/links/99-default.link. Old
11078 80-net-name-slot.rules udev configuration file has been
11079 removed, so local configuration overriding this file should
11080 be adapted to override 99-default.link instead.
11081
11082 * When the User= switch is used in a unit file, also
11083 initialize $SHELL= based on the user database entry.
11084
11085 * systemd no longer depends on libdbus. All communication is
11086 now done with sd-bus, systemd's low-level bus library
11087 implementation.
11088
11089 * kdbus support has been added to PID 1 itself. When kdbus is
11090 enabled, this causes PID 1 to set up the system bus and
11091 enable support for a new ".busname" unit type that
11092 encapsulates bus name activation on kdbus. It works a little
11093 bit like ".socket" units, except for bus names. A new
11094 generator has been added that converts classic dbus1 service
11095 activation files automatically into native systemd .busname
11096 and .service units.
11097
11098 * sd-bus: add a light-weight vtable implementation that allows
11099 defining objects on the bus with a simple static const
11100 vtable array of its methods, signals and properties.
11101
11102 * systemd will not generate or install static dbus
11103 introspection data anymore to /usr/share/dbus-1/interfaces,
11104 as the precise format of these files is unclear, and
11105 nothing makes use of it.
11106
11107 * A proxy daemon is now provided to proxy clients connecting
11108 via classic D-Bus AF_UNIX sockets to kdbus, to provide full
11109 compatibility with classic D-Bus.
11110
11111 * A bus driver implementation has been added that supports the
11112 classic D-Bus bus driver calls on kdbus, also for
11113 compatibility purposes.
11114
11115 * A new API "sd-event.h" has been added that implements a
11116 minimal event loop API built around epoll. It provides a
11117 couple of features that direct epoll usage is lacking:
11118 prioritization of events, scales to large numbers of timer
11119 events, per-event timer slack (accuracy), system-wide
11120 coalescing of timer events, exit handlers, watchdog
11121 supervision support using systemd's sd_notify() API, child
11122 process handling.
11123
11124 * A new API "sd-rntl.h" has been added that provides an API
11125 around the route netlink interface of the kernel, similar in
11126 style to "sd-bus.h".
11127
11128 * A new API "sd-dhcp-client.h" has been added that provides a
11129 small DHCPv4 client-side implementation. This is used by
11130 "systemd-networkd".
11131
11132 * There is a new kernel command line option
11133 "systemd.restore_state=0|1". When set to "0", none of the
11134 systemd tools will restore saved runtime state to hardware
11135 devices. More specifically, the rfkill and backlight states
11136 are not restored.
11137
11138 * The FsckPassNo= compatibility option in mount/service units
11139 has been removed. The fstab generator will now add the
11140 necessary dependencies automatically, and does not require
11141 PID1's support for that anymore.
11142
11143 * journalctl gained a new switch, --list-boots, that lists
11144 recent boots with their times and boot IDs.
11145
11146 * The various tools like systemctl, loginctl, timedatectl,
11147 busctl, systemd-run, … have gained a new switch "-M" to
11148 connect to a specific, local OS container (as direct
11149 connection, without requiring SSH). This works on any
11150 container that is registered with machined, such as those
11151 created by libvirt-lxc or nspawn.
11152
11153 * systemd-run and systemd-analyze also gained support for "-H"
11154 to connect to remote hosts via SSH. This is particularly
11155 useful for systemd-run because it enables queuing of jobs
11156 onto remote systems.
11157
11158 * machinectl gained a new command "login" to open a getty
11159 login in any local container. This works with any container
11160 that is registered with machined (such as those created by
11161 libvirt-lxc or nspawn), and which runs systemd inside.
11162
11163 * machinectl gained a new "reboot" command that may be used to
11164 trigger a reboot on a specific container that is registered
11165 with machined. This works on any container that runs an init
11166 system of some kind.
11167
11168 * systemctl gained a new "list-timers" command to print a nice
11169 listing of installed timer units with the times they elapse
11170 next.
11171
11172 * Alternative reboot() parameters may now be specified on the
11173 "systemctl reboot" command line and are passed to the
11174 reboot() system call.
11175
11176 * systemctl gained a new --job-mode= switch to configure the
11177 mode to queue a job with. This is a more generic version of
11178 --fail, --irreversible, and --ignore-dependencies, which are
11179 still available but not advertised anymore.
11180
11181 * /etc/systemd/system.conf gained new settings to configure
11182 various default timeouts of units, as well as the default
11183 start limit interval and burst. These may still be overridden
11184 within each Unit.
11185
11186 * PID1 will now export on the bus profile data of the security
11187 policy upload process (such as the SELinux policy upload to
11188 the kernel).
11189
11190 * journald: when forwarding logs to the console, include
11191 timestamps (following the setting in
11192 /sys/module/printk/parameters/time).
11193
11194 * OnCalendar= in timer units now understands the special
11195 strings "yearly" and "annually". (Both are equivalent)
11196
11197 * The accuracy of timer units is now configurable with the new
11198 AccuracySec= setting. It defaults to 1min.
11199
11200 * A new dependency type JoinsNamespaceOf= has been added that
11201 allows running two services within the same /tmp and network
11202 namespace, if PrivateNetwork= or PrivateTmp= are used.
11203
11204 * A new command "cat" has been added to systemctl. It outputs
11205 the original unit file of a unit, and concatenates the
11206 contents of additional "drop-in" unit file snippets, so that
11207 the full configuration is shown.
11208
11209 * systemctl now supports globbing on the various "list-xyz"
11210 commands, like "list-units" or "list-sockets", as well as on
11211 those commands which take multiple unit names.
11212
11213 * journalctl's --unit= switch gained support for globbing.
11214
11215 * All systemd daemons now make use of the watchdog logic so
11216 that systemd automatically notices when they hang.
11217
11218 * If the $container_ttys environment variable is set,
11219 getty-generator will automatically spawn a getty for each
11220 listed tty. This is useful for container managers to request
11221 login gettys to be spawned on as many ttys as needed.
11222
11223 * %h, %s, %U specifier support is not available anymore when
11224 used in unit files for PID 1. This is because NSS calls are
11225 not safe from PID 1. They stay available for --user
11226 instances of systemd, and as special case for the root user.
11227
11228 * loginctl gained a new "--no-legend" switch to turn off output
11229 of the legend text.
11230
11231 * The "sd-login.h" API gained three new calls:
11232 sd_session_is_remote(), sd_session_get_remote_user(),
11233 sd_session_get_remote_host() to query information about
11234 remote sessions.
11235
11236 * The udev hardware database now also carries vendor/product
11237 information of SDIO devices.
11238
11239 * The "sd-daemon.h" API gained a new sd_watchdog_enabled() to
11240 determine whether watchdog notifications are requested by
11241 the system manager.
11242
11243 * Socket-activated per-connection services now include a
11244 short description of the connection parameters in the
11245 description.
11246
11247 * tmpfiles gained a new "--boot" option. When this is not used,
11248 only lines where the command character is not suffixed with
11249 "!" are executed. When this option is specified, those
11250 options are executed too. This partitions tmpfiles
11251 directives into those that can be safely executed at any
11252 time, and those which should be run only at boot (for
11253 example, a line that creates /run/nologin).
11254
11255 * A new API "sd-resolve.h" has been added which provides a simple
11256 asynchronous wrapper around glibc NSS hostname resolution
11257 calls, such as getaddrinfo(). In contrast to glibc's
11258 getaddrinfo_a(), it does not use signals. In contrast to most
11259 other asynchronous name resolution libraries, this one does
11260 not reimplement DNS, but reuses NSS, so that alternate
11261 hostname resolution systems continue to work, such as mDNS,
11262 LDAP, etc. This API is based on libasyncns, but it has been
11263 cleaned up for inclusion in systemd.
11264
11265 * The APIs "sd-journal.h", "sd-login.h", "sd-id128.h",
11266 "sd-daemon.h" are no longer found in individual libraries
11267 libsystemd-journal.so, libsystemd-login.so,
11268 libsystemd-id128.so, libsystemd-daemon.so. Instead, we have
11269 merged them into a single library, libsystemd.so, which
11270 provides all symbols. The reason for this is cyclic
11271 dependencies, as these libraries tend to use each other's
11272 symbols. So far, we have managed to workaround that by linking
11273 a copy of a good part of our code into each of these
11274 libraries again and again, which, however, makes certain
11275 things hard to do, like sharing static variables. Also, it
11276 substantially increases footprint. With this change, there
11277 is only one library for the basic APIs systemd
11278 provides. Also, "sd-bus.h", "sd-memfd.h", "sd-event.h",
11279 "sd-rtnl.h", "sd-resolve.h", "sd-utf8.h" are found in this
11280 library as well, however are subject to the --enable-kdbus
11281 switch (see below). Note that "sd-dhcp-client.h" is not part
11282 of this library (this is because it only consumes, never
11283 provides, services of/to other APIs). To make the transition
11284 easy from the separate libraries to the unified one, we
11285 provide the --enable-compat-libs compile-time switch which
11286 will generate stub libraries that are compatible with the
11287 old ones but redirect all calls to the new one.
11288
11289 * All of the kdbus logic and the new APIs "sd-bus.h",
11290 "sd-memfd.h", "sd-event.h", "sd-rtnl.h", "sd-resolve.h",
11291 and "sd-utf8.h" are compile-time optional via the
11292 "--enable-kdbus" switch, and they are not compiled in by
11293 default. To make use of kdbus, you have to explicitly enable
11294 the switch. Note however, that neither the kernel nor the
11295 userspace API for all of this is considered stable yet. We
11296 want to maintain the freedom to still change the APIs for
11297 now. By specifying this build-time switch, you acknowledge
11298 that you are aware of the instability of the current
11299 APIs.
11300
11301 * Also, note that while kdbus is pretty much complete,
11302 it lacks one thing: proper policy support. This means you
11303 can build a fully working system with all features; however,
11304 it will be highly insecure. Policy support will be added in
11305 one of the next releases, at the same time that we will
11306 declare the APIs stable.
11307
11308 * When the kernel command line argument "kdbus" is specified,
11309 systemd will automatically load the kdbus.ko kernel module. At
11310 this stage of development, it is only useful for testing kdbus
11311 and should not be used in production. Note: if "--enable-kdbus"
11312 is specified, and the kdbus.ko kernel module is available, and
11313 "kdbus" is added to the kernel command line, the entire system
11314 runs with kdbus instead of dbus-daemon, with the above mentioned
11315 problem of missing the system policy enforcement. Also a future
11316 version of kdbus.ko or a newer systemd will not be compatible with
11317 each other, and will unlikely be able to boot the machine if only
11318 one of them is updated.
11319
11320 * systemctl gained a new "import-environment" command which
11321 uploads the caller's environment (or parts thereof) into the
11322 service manager so that it is inherited by services started
11323 by the manager. This is useful to upload variables like
11324 $DISPLAY into the user service manager.
11325
11326 * A new PrivateDevices= switch has been added to service units
11327 which allows running a service with a namespaced /dev
11328 directory that does not contain any device nodes for
11329 physical devices. More specifically, it only includes devices
11330 such as /dev/null, /dev/urandom, and /dev/zero which are API
11331 entry points.
11332
11333 * logind has been extended to support behaviour like VT
11334 switching on seats that do not support a VT. This makes
11335 multi-session available on seats that are not the first seat
11336 (seat0), and on systems where kernel support for VTs has
11337 been disabled at compile-time.
11338
11339 * If a process holds a delay lock for system sleep or shutdown
11340 and fails to release it in time, we will now log its
11341 identity. This makes it easier to identify processes that
11342 cause slow suspends or power-offs.
11343
11344 * When parsing /etc/crypttab, support for a new key-slot=
11345 option as supported by Debian is added. It allows indicating
11346 which LUKS slot to use on disk, speeding up key loading.
11347
11348 * The sd_journal_sendv() API call has been checked and
11349 officially declared to be async-signal-safe so that it may
11350 be invoked from signal handlers for logging purposes.
11351
11352 * Boot-time status output is now enabled automatically after a
11353 short timeout if boot does not progress, in order to give
11354 the user an indication what she or he is waiting for.
11355
11356 * The boot-time output has been improved to show how much time
11357 remains until jobs expire.
11358
11359 * The KillMode= switch in service units gained a new possible
11360 value "mixed". If set, and the unit is shut down, then the
11361 initial SIGTERM signal is sent only to the main daemon
11362 process, while the following SIGKILL signal is sent to
11363 all remaining processes of the service.
11364
11365 * When a scope unit is registered, a new property "Controller"
11366 may be set. If set to a valid bus name, systemd will send a
11367 RequestStop() signal to this name when it would like to shut
11368 down the scope. This may be used to hook manager logic into
11369 the shutdown logic of scope units. Also, scope units may now
11370 be put in a special "abandoned" state, in which case the
11371 manager process which created them takes no further
11372 responsibilities for it.
11373
11374 * When reading unit files, systemd will now verify
11375 the access mode of these files, and warn about certain
11376 suspicious combinations. This has been added to make it
11377 easier to track down packaging bugs where unit files are
11378 marked executable or world-writable.
11379
11380 * systemd-nspawn gained a new "--setenv=" switch to set
11381 container-wide environment variables. The similar option in
11382 systemd-activate was renamed from "--environment=" to
11383 "--setenv=" for consistency.
11384
11385 * systemd-nspawn has been updated to create a new kdbus domain
11386 for each container that is invoked, thus allowing each
11387 container to have its own set of system and user buses,
11388 independent of the host.
11389
11390 * systemd-nspawn gained a new --drop-capability= switch to run
11391 the container with less capabilities than the default. Both
11392 --drop-capability= and --capability= now take the special
11393 string "all" for dropping or keeping all capabilities.
11394
11395 * systemd-nspawn gained new switches for executing containers
11396 with specific SELinux labels set.
11397
11398 * systemd-nspawn gained a new --quiet switch to not generate
11399 any additional output but the container's own console
11400 output.
11401
11402 * systemd-nspawn gained a new --share-system switch to run a
11403 container without PID namespacing enabled.
11404
11405 * systemd-nspawn gained a new --register= switch to control
11406 whether the container is registered with systemd-machined or
11407 not. This is useful for containers that do not run full
11408 OS images, but only specific apps.
11409
11410 * systemd-nspawn gained a new --keep-unit which may be used
11411 when invoked as the only program from a service unit, and
11412 results in registration of the unit service itself in
11413 systemd-machined, instead of a newly opened scope unit.
11414
11415 * systemd-nspawn gained a new --network-interface= switch for
11416 moving arbitrary interfaces to the container. The new
11417 --network-veth switch creates a virtual Ethernet connection
11418 between host and container. The new --network-bridge=
11419 switch then allows assigning the host side of this virtual
11420 Ethernet connection to a bridge device.
11421
11422 * systemd-nspawn gained a new --personality= switch for
11423 setting the kernel personality for the container. This is
11424 useful when running a 32-bit container on a 64-bit host. A
11425 similar option Personality= is now also available for service
11426 units to use.
11427
11428 * logind will now also track a "Desktop" identifier for each
11429 session which encodes the desktop environment of it. This is
11430 useful for desktop environments that want to identify
11431 multiple running sessions of itself easily.
11432
11433 * A new SELinuxContext= setting for service units has been
11434 added that allows setting a specific SELinux execution
11435 context for a service.
11436
11437 * Most systemd client tools will now honour $SYSTEMD_LESS for
11438 settings of the "less" pager. By default, these tools will
11439 override $LESS to allow certain operations to work, such as
11440 jump-to-the-end. With $SYSTEMD_LESS, it is possible to
11441 influence this logic.
11442
11443 * systemd's "seccomp" hook-up has been changed to make use of
11444 the libseccomp library instead of using its own
11445 implementation. This has benefits for portability among
11446 other things.
11447
11448 * For usage together with SystemCallFilter=, a new
11449 SystemCallErrorNumber= setting has been introduced that
11450 allows configuration of a system error number to be returned
11451 on filtered system calls, instead of immediately killing the
11452 process. Also, SystemCallArchitectures= has been added to
11453 limit access to system calls of a particular architecture
11454 (in order to turn off support for unused secondary
11455 architectures). There is also a global
11456 SystemCallArchitectures= setting in system.conf now to turn
11457 off support for non-native system calls system-wide.
11458
11459 * systemd requires a kernel with a working name_to_handle_at(),
11460 please see the kernel config requirements in the README file.
11461
11462 Contributions from: Adam Williamson, Alex Jia, Anatol Pomozov,
11463 Ansgar Burchardt, AppleBloom, Auke Kok, Bastien Nocera,
11464 Chengwei Yang, Christian Seiler, Colin Guthrie, Colin Walters,
11465 Cristian Rodríguez, Daniel Buch, Daniele Medri, Daniel J
11466 Walsh, Daniel Mack, Dan McGee, Dave Reisner, David Coppa,
11467 David Herrmann, David Strauss, Djalal Harouni, Dmitry Pisklov,
11468 Elia Pinto, Florian Weimer, George McCollister, Goffredo
11469 Baroncelli, Greg Kroah-Hartman, Hendrik Brueckner, Igor
11470 Zhbanov, Jan Engelhardt, Jan Janssen, Jason A. Donenfeld,
11471 Jason St. John, Jasper St. Pierre, Jóhann B. Guðmundsson, Jose
11472 Ignacio Naranjo, Karel Zak, Kay Sievers, Kristian Høgsberg,
11473 Lennart Poettering, Lubomir Rintel, Lukas Nykryn, Lukasz
11474 Skalski, Łukasz Stelmach, Luke Shumaker, Mantas Mikulėnas,
11475 Marc-Antoine Perennou, Marcel Holtmann, Marcos Felipe Rasia de
11476 Mello, Marko Myllynen, Martin Pitt, Matthew Monaco, Michael
11477 Marineau, Michael Scherer, Michał Górny, Michal Sekletar,
11478 Michele Curti, Oleksii Shevchuk, Olivier Brunel, Patrik Flykt,
11479 Pavel Holica, Raudi, Richard Marko, Ronny Chevalier, Sébastien
11480 Luttringer, Sergey Ptashnick, Shawn Landden, Simon Peeters,
11481 Stefan Beller, Susant Sahani, Sylvain Plantefeve, Sylvia Else,
11482 Tero Roponen, Thomas Bächler, Thomas Hindoe Paaboel Andersen,
11483 Tom Gundersen, Umut Tezduyar Lindskog, Unai Uribarri, Václav
11484 Pavlín, Vincent Batts, WaLyong Cho, William Giokas, Yang
11485 Zhiyong, Yin Kangkai, Yuxuan Shui, Zbigniew Jędrzejewski-Szmek
11486
11487 — Berlin, 2014-02-20
11488
11489 CHANGES WITH 208:
11490
11491 * logind has gained support for facilitating privileged input
11492 and drm device access for unprivileged clients. This work is
11493 useful to allow Wayland display servers (and similar
11494 programs, such as kmscon) to run under the user's ID and
11495 access input and drm devices which are normally
11496 protected. When this is used (and the kernel is new enough)
11497 logind will "mute" IO on the file descriptors passed to
11498 Wayland as long as it is in the background and "unmute" it
11499 if it returns into the foreground. This allows secure
11500 session switching without allowing background sessions to
11501 eavesdrop on input and display data. This also introduces
11502 session switching support if VT support is turned off in the
11503 kernel, and on seats that are not seat0.
11504
11505 * A new kernel command line option luks.options= is understood
11506 now which allows specifying LUKS options for usage for LUKS
11507 encrypted partitions specified with luks.uuid=.
11508
11509 * tmpfiles.d(5) snippets may now use specifier expansion in
11510 path names. More specifically %m, %b, %H, %v, are now
11511 replaced by the local machine id, boot id, hostname, and
11512 kernel version number.
11513
11514 * A new tmpfiles.d(5) command "m" has been introduced which
11515 may be used to change the owner/group/access mode of a file
11516 or directory if it exists, but do nothing if it does not.
11517
11518 * This release removes high-level support for the
11519 MemorySoftLimit= cgroup setting. The underlying kernel
11520 cgroup attribute memory.soft_limit= is currently badly
11521 designed and likely to be removed from the kernel API in its
11522 current form, hence we should not expose it for now.
11523
11524 * The memory.use_hierarchy cgroup attribute is now enabled for
11525 all cgroups systemd creates in the memory cgroup
11526 hierarchy. This option is likely to be come the built-in
11527 default in the kernel anyway, and the non-hierarchical mode
11528 never made much sense in the intrinsically hierarchical
11529 cgroup system.
11530
11531 * A new field _SYSTEMD_SLICE= is logged along with all journal
11532 messages containing the slice a message was generated
11533 from. This is useful to allow easy per-customer filtering of
11534 logs among other things.
11535
11536 * systemd-journald will no longer adjust the group of journal
11537 files it creates to the "systemd-journal" group. Instead we
11538 rely on the journal directory to be owned by the
11539 "systemd-journal" group, and its setgid bit set, so that the
11540 kernel file system layer will automatically enforce that
11541 journal files inherit this group assignment. The reason for
11542 this change is that we cannot allow NSS look-ups from
11543 journald which would be necessary to resolve
11544 "systemd-journal" to a numeric GID, because this might
11545 create deadlocks if NSS involves synchronous queries to
11546 other daemons (such as nscd, or sssd) which in turn are
11547 logging clients of journald and might block on it, which
11548 would then dead lock. A tmpfiles.d(5) snippet included in
11549 systemd will make sure the setgid bit and group are
11550 properly set on the journal directory if it exists on every
11551 boot. However, we recommend adjusting it manually after
11552 upgrades too (or from RPM scriptlets), so that the change is
11553 not delayed until next reboot.
11554
11555 * Backlight and random seed files in /var/lib/ have moved into
11556 the /var/lib/systemd/ directory, in order to centralize all
11557 systemd generated files in one directory.
11558
11559 * Boot time performance measurements (as displayed by
11560 "systemd-analyze" for example) will now read ACPI 5.0 FPDT
11561 performance information if that's available to determine how
11562 much time BIOS and boot loader initialization required. With
11563 a sufficiently new BIOS you hence no longer need to boot
11564 with Gummiboot to get access to such information.
11565
11566 Contributions from: Andrey Borzenkov, Chen Jie, Colin Walters,
11567 Cristian Rodríguez, Dave Reisner, David Herrmann, David
11568 Mackey, David Strauss, Eelco Dolstra, Evan Callicoat, Gao
11569 feng, Harald Hoyer, Jimmie Tauriainen, Kay Sievers, Lennart
11570 Poettering, Lukas Nykryn, Mantas Mikulėnas, Martin Pitt,
11571 Michael Scherer, Michał Górny, Mike Gilbert, Patrick McCarty,
11572 Sebastian Ott, Tom Gundersen, Zbigniew Jędrzejewski-Szmek
11573
11574 — Berlin, 2013-10-02
11575
11576 CHANGES WITH 207:
11577
11578 * The Restart= option for services now understands a new
11579 on-watchdog setting, which will restart the service
11580 automatically if the service stops sending out watchdog keep
11581 alive messages (as configured with WatchdogSec=).
11582
11583 * The getty generator (which is responsible for bringing up a
11584 getty on configured serial consoles) will no longer only
11585 start a getty on the primary kernel console but on all
11586 others, too. This makes the order in which console= is
11587 specified on the kernel command line less important.
11588
11589 * libsystemd-logind gained a new sd_session_get_vt() call to
11590 retrieve the VT number of a session.
11591
11592 * If the option "tries=0" is set for an entry of /etc/crypttab
11593 its passphrase is queried indefinitely instead of any
11594 maximum number of tries.
11595
11596 * If a service with a configure PID file terminates its PID
11597 file will now be removed automatically if it still exists
11598 afterwards. This should put an end to stale PID files.
11599
11600 * systemd-run will now also take relative binary path names
11601 for execution and no longer insists on absolute paths.
11602
11603 * InaccessibleDirectories= and ReadOnlyDirectories= now take
11604 paths that are optionally prefixed with "-" to indicate that
11605 it should not be considered a failure if they do not exist.
11606
11607 * journalctl -o (and similar commands) now understands a new
11608 output mode "short-precise", it is similar to "short" but
11609 shows timestamps with usec accuracy.
11610
11611 * The option "discard" (as known from Debian) is now
11612 synonymous to "allow-discards" in /etc/crypttab. In fact,
11613 "discard" is preferred now (since it is easier to remember
11614 and type).
11615
11616 * Some licensing clean-ups were made, so that more code is now
11617 LGPL-2.1 licensed than before.
11618
11619 * A minimal tool to save/restore the display backlight
11620 brightness across reboots has been added. It will store the
11621 backlight setting as late as possible at shutdown, and
11622 restore it as early as possible during reboot.
11623
11624 * A logic to automatically discover and enable home and swap
11625 partitions on GPT disks has been added. With this in place
11626 /etc/fstab becomes optional for many setups as systemd can
11627 discover certain partitions located on the root disk
11628 automatically. Home partitions are recognized under their
11629 GPT type ID 933ac7e12eb44f13b8440e14e2aef915. Swap
11630 partitions are recognized under their GPT type ID
11631 0657fd6da4ab43c484e50933c84b4f4f.
11632
11633 * systemd will no longer pass any environment from the kernel
11634 or initrd to system services. If you want to set an
11635 environment for all services, do so via the kernel command
11636 line systemd.setenv= assignment.
11637
11638 * The systemd-sysctl tool no longer natively reads the file
11639 /etc/sysctl.conf. If desired, the file should be symlinked
11640 from /etc/sysctl.d/99-sysctl.conf. Apart from providing
11641 legacy support by a symlink rather than built-in code, it
11642 also makes the otherwise hidden order of application of the
11643 different files visible. (Note that this partly reverts to a
11644 pre-198 application order of sysctl knobs!)
11645
11646 * The "systemctl set-log-level" and "systemctl dump" commands
11647 have been moved to systemd-analyze.
11648
11649 * systemd-run learned the new --remain-after-exit switch,
11650 which causes the scope unit not to be cleaned up
11651 automatically after the process terminated.
11652
11653 * tmpfiles learned a new --exclude-prefix= switch to exclude
11654 certain paths from operation.
11655
11656 * journald will now automatically flush all messages to disk
11657 as soon as a message at the log level CRIT, ALERT or EMERG
11658 is received.
11659
11660 Contributions from: Andrew Cook, Brandon Philips, Christian
11661 Hesse, Christoph Junghans, Colin Walters, Daniel Schaal,
11662 Daniel Wallace, Dave Reisner, David Herrmann, Gao feng, George
11663 McCollister, Giovanni Campagna, Hannes Reinecke, Harald Hoyer,
11664 Herczeg Zsolt, Holger Hans Peter Freyther, Jan Engelhardt,
11665 Jesper Larsen, Kay Sievers, Khem Raj, Lennart Poettering,
11666 Lukas Nykryn, Maciej Wereski, Mantas Mikulėnas, Marcel
11667 Holtmann, Martin Pitt, Michael Biebl, Michael Marineau,
11668 Michael Scherer, Michael Stapelberg, Michal Sekletar, Michał
11669 Górny, Olivier Brunel, Ondrej Balaz, Ronny Chevalier, Shawn
11670 Landden, Steven Hiscocks, Thomas Bächler, Thomas Hindoe
11671 Paaboel Andersen, Tom Gundersen, Umut Tezduyar, WANG Chao,
11672 William Giokas, Zbigniew Jędrzejewski-Szmek
11673
11674 — Berlin, 2013-09-13
11675
11676 CHANGES WITH 206:
11677
11678 * The documentation has been updated to cover the various new
11679 concepts introduced with 205.
11680
11681 * Unit files now understand the new %v specifier which
11682 resolves to the kernel version string as returned by "uname
11683 -r".
11684
11685 * systemctl now supports filtering the unit list output by
11686 load state, active state and sub state, using the new
11687 --state= parameter.
11688
11689 * "systemctl status" will now show the results of the
11690 condition checks (like ConditionPathExists= and similar) of
11691 the last start attempts of the unit. They are also logged to
11692 the journal.
11693
11694 * "journalctl -b" may now be used to look for boot output of a
11695 specific boot. Try "journalctl -b -1" for the previous boot,
11696 but the syntax is substantially more powerful.
11697
11698 * "journalctl --show-cursor" has been added which prints the
11699 cursor string the last shown log line. This may then be used
11700 with the new "journalctl --after-cursor=" switch to continue
11701 browsing logs from that point on.
11702
11703 * "journalctl --force" may now be used to force regeneration
11704 of an FSS key.
11705
11706 * Creation of "dead" device nodes has been moved from udev
11707 into kmod and tmpfiles. Previously, udev would read the kmod
11708 databases to pre-generate dead device nodes based on meta
11709 information contained in kernel modules, so that these would
11710 be auto-loaded on access rather then at boot. As this
11711 does not really have much to do with the exposing actual
11712 kernel devices to userspace this has always been slightly
11713 alien in the udev codebase. Following the new scheme kmod
11714 will now generate a runtime snippet for tmpfiles from the
11715 module meta information and it now is tmpfiles' job to the
11716 create the nodes. This also allows overriding access and
11717 other parameters for the nodes using the usual tmpfiles
11718 facilities. As side effect this allows us to remove the
11719 CAP_SYS_MKNOD capability bit from udevd entirely.
11720
11721 * logind's device ACLs may now be applied to these "dead"
11722 devices nodes too, thus finally allowing managed access to
11723 devices such as /dev/snd/sequencer without loading the
11724 backing module right-away.
11725
11726 * A new RPM macro has been added that may be used to apply
11727 tmpfiles configuration during package installation.
11728
11729 * systemd-detect-virt and ConditionVirtualization= now can
11730 detect User-Mode-Linux machines (UML).
11731
11732 * journald will now implicitly log the effective capabilities
11733 set of processes in the message metadata.
11734
11735 * systemd-cryptsetup has gained support for TrueCrypt volumes.
11736
11737 * The initrd interface has been simplified (more specifically,
11738 support for passing performance data via environment
11739 variables and fsck results via files in /run has been
11740 removed). These features were non-essential, and are
11741 nowadays available in a much nicer way by having systemd in
11742 the initrd serialize its state and have the hosts systemd
11743 deserialize it again.
11744
11745 * The udev "keymap" data files and tools to apply keyboard
11746 specific mappings of scan to key codes, and force-release
11747 scan code lists have been entirely replaced by a udev
11748 "keyboard" builtin and a hwdb data file.
11749
11750 * systemd will now honour the kernel's "quiet" command line
11751 argument also during late shutdown, resulting in a
11752 completely silent shutdown when used.
11753
11754 * There's now an option to control the SO_REUSEPORT socket
11755 option in .socket units.
11756
11757 * Instance units will now automatically get a per-template
11758 subslice of system.slice unless something else is explicitly
11759 configured. For example, instances of sshd@.service will now
11760 implicitly be placed in system-sshd.slice rather than
11761 system.slice as before.
11762
11763 * Test coverage support may now be enabled at build time.
11764
11765 Contributions from: Dave Reisner, Frederic Crozat, Harald
11766 Hoyer, Holger Hans Peter Freyther, Jan Engelhardt, Jan
11767 Janssen, Jason St. John, Jesper Larsen, Kay Sievers, Lennart
11768 Poettering, Lukas Nykryn, Maciej Wereski, Martin Pitt, Michael
11769 Olbrich, Ramkumar Ramachandra, Ross Lagerwall, Shawn Landden,
11770 Thomas H.P. Andersen, Tom Gundersen, Tomasz Torcz, William
11771 Giokas, Zbigniew Jędrzejewski-Szmek
11772
11773 — Berlin, 2013-07-23
11774
11775 CHANGES WITH 205:
11776
11777 * Two new unit types have been introduced:
11778
11779 Scope units are very similar to service units, however, are
11780 created out of pre-existing processes — instead of PID 1
11781 forking off the processes. By using scope units it is
11782 possible for system services and applications to group their
11783 own child processes (worker processes) in a powerful way
11784 which then maybe used to organize them, or kill them
11785 together, or apply resource limits on them.
11786
11787 Slice units may be used to partition system resources in an
11788 hierarchical fashion and then assign other units to them. By
11789 default there are now three slices: system.slice (for all
11790 system services), user.slice (for all user sessions),
11791 machine.slice (for VMs and containers).
11792
11793 Slices and scopes have been introduced primarily in
11794 context of the work to move cgroup handling to a
11795 single-writer scheme, where only PID 1
11796 creates/removes/manages cgroups.
11797
11798 * There's a new concept of "transient" units. In contrast to
11799 normal units these units are created via an API at runtime,
11800 not from configuration from disk. More specifically this
11801 means it is now possible to run arbitrary programs as
11802 independent services, with all execution parameters passed
11803 in via bus APIs rather than read from disk. Transient units
11804 make systemd substantially more dynamic then it ever was,
11805 and useful as a general batch manager.
11806
11807 * logind has been updated to make use of scope and slice units
11808 for managing user sessions. As a user logs in he will get
11809 his own private slice unit, to which all sessions are added
11810 as scope units. We also added support for automatically
11811 adding an instance of user@.service for the user into the
11812 slice. Effectively logind will no longer create cgroup
11813 hierarchies on its own now, it will defer entirely to PID 1
11814 for this by means of scope, service and slice units. Since
11815 user sessions this way become entities managed by PID 1
11816 the output of "systemctl" is now a lot more comprehensive.
11817
11818 * A new mini-daemon "systemd-machined" has been added which
11819 may be used by virtualization managers to register local
11820 VMs/containers. nspawn has been updated accordingly, and
11821 libvirt will be updated shortly. machined will collect a bit
11822 of meta information about the VMs/containers, and assign
11823 them their own scope unit (see above). The collected
11824 meta-data is then made available via the "machinectl" tool,
11825 and exposed in "ps" and similar tools. machined/machinectl
11826 is compile-time optional.
11827
11828 * As discussed earlier, the low-level cgroup configuration
11829 options ControlGroup=, ControlGroupModify=,
11830 ControlGroupPersistent=, ControlGroupAttribute= have been
11831 removed. Please use high-level attribute settings instead as
11832 well as slice units.
11833
11834 * A new bus call SetUnitProperties() has been added to alter
11835 various runtime parameters of a unit. This is primarily
11836 useful to alter cgroup parameters dynamically in a nice way,
11837 but will be extended later on to make more properties
11838 modifiable at runtime. systemctl gained a new set-properties
11839 command that wraps this call.
11840
11841 * A new tool "systemd-run" has been added which can be used to
11842 run arbitrary command lines as transient services or scopes,
11843 while configuring a number of settings via the command
11844 line. This tool is currently very basic, however already
11845 very useful. We plan to extend this tool to even allow
11846 queuing of execution jobs with time triggers from the
11847 command line, similar in fashion to "at".
11848
11849 * nspawn will now inform the user explicitly that kernels with
11850 audit enabled break containers, and suggest the user to turn
11851 off audit.
11852
11853 * Support for detecting the IMA and AppArmor security
11854 frameworks with ConditionSecurity= has been added.
11855
11856 * journalctl gained a new "-k" switch for showing only kernel
11857 messages, mimicking dmesg output; in addition to "--user"
11858 and "--system" switches for showing only user's own logs
11859 and system logs.
11860
11861 * systemd-delta can now show information about drop-in
11862 snippets extending unit files.
11863
11864 * libsystemd-bus has been substantially updated but is still
11865 not available as public API.
11866
11867 * systemd will now look for the "debug" argument on the kernel
11868 command line and enable debug logging, similar to what
11869 "systemd.log_level=debug" already did before.
11870
11871 * "systemctl set-default", "systemctl get-default" has been
11872 added to configure the default.target symlink, which
11873 controls what to boot into by default.
11874
11875 * "systemctl set-log-level" has been added as a convenient
11876 way to raise and lower systemd logging threshold.
11877
11878 * "systemd-analyze plot" will now show the time the various
11879 generators needed for execution, as well as information
11880 about the unit file loading.
11881
11882 * libsystemd-journal gained a new sd_journal_open_files() call
11883 for opening specific journal files. journactl also gained a
11884 new switch to expose this new functionality. Previously we
11885 only supported opening all files from a directory, or all
11886 files from the system, as opening individual files only is
11887 racy due to journal file rotation.
11888
11889 * systemd gained the new DefaultEnvironment= setting in
11890 /etc/systemd/system.conf to set environment variables for
11891 all services.
11892
11893 * If a privileged process logs a journal message with the
11894 OBJECT_PID= field set, then journald will automatically
11895 augment this with additional OBJECT_UID=, OBJECT_GID=,
11896 OBJECT_COMM=, OBJECT_EXE=, … fields. This is useful if
11897 system services want to log events about specific client
11898 processes. journactl/systemctl has been updated to make use
11899 of this information if all log messages regarding a specific
11900 unit is requested.
11901
11902 Contributions from: Auke Kok, Chengwei Yang, Colin Walters,
11903 Cristian Rodríguez, Daniel Albers, Daniel Wallace, Dave
11904 Reisner, David Coppa, David King, David Strauss, Eelco
11905 Dolstra, Gabriel de Perthuis, Harald Hoyer, Jan Alexander
11906 Steffens, Jan Engelhardt, Jan Janssen, Jason St. John, Johan
11907 Heikkilä, Karel Zak, Karol Lewandowski, Kay Sievers, Lennart
11908 Poettering, Lukas Nykryn, Mantas Mikulėnas, Marius Vollmer,
11909 Martin Pitt, Michael Biebl, Michael Olbrich, Michael Tremer,
11910 Michal Schmidt, Michał Bartoszkiewicz, Nirbheek Chauhan,
11911 Pierre Neidhardt, Ross Burton, Ross Lagerwall, Sean McGovern,
11912 Thomas Hindoe Paaboel Andersen, Tom Gundersen, Umut Tezduyar,
11913 Václav Pavlín, Zachary Cook, Zbigniew Jędrzejewski-Szmek,
11914 Łukasz Stelmach, 장동준
11915
11916 CHANGES WITH 204:
11917
11918 * The Python bindings gained some minimal support for the APIs
11919 exposed by libsystemd-logind.
11920
11921 * ConditionSecurity= gained support for detecting SMACK. Since
11922 this condition already supports SELinux and AppArmor we only
11923 miss IMA for this. Patches welcome!
11924
11925 Contributions from: Karol Lewandowski, Lennart Poettering,
11926 Zbigniew Jędrzejewski-Szmek
11927
11928 CHANGES WITH 203:
11929
11930 * systemd-nspawn will now create /etc/resolv.conf if
11931 necessary, before bind-mounting the host's file onto it.
11932
11933 * systemd-nspawn will now store meta information about a
11934 container on the container's cgroup as extended attribute
11935 fields, including the root directory.
11936
11937 * The cgroup hierarchy has been reworked in many ways. All
11938 objects any of the components systemd creates in the cgroup
11939 tree are now suffixed. More specifically, user sessions are
11940 now placed in cgroups suffixed with ".session", users in
11941 cgroups suffixed with ".user", and nspawn containers in
11942 cgroups suffixed with ".nspawn". Furthermore, all cgroup
11943 names are now escaped in a simple scheme to avoid collision
11944 of userspace object names with kernel filenames. This work
11945 is preparation for making these objects relocatable in the
11946 cgroup tree, in order to allow easy resource partitioning of
11947 these objects without causing naming conflicts.
11948
11949 * systemctl list-dependencies gained the new switches
11950 --plain, --reverse, --after and --before.
11951
11952 * systemd-inhibit now shows the process name of processes that
11953 have taken an inhibitor lock.
11954
11955 * nss-myhostname will now also resolve "localhost"
11956 implicitly. This makes /etc/hosts an optional file and
11957 nicely handles that on IPv6 ::1 maps to both "localhost" and
11958 the local hostname.
11959
11960 * libsystemd-logind.so gained a new call
11961 sd_get_machine_names() to enumerate running containers and
11962 VMs (currently only supported by very new libvirt and
11963 nspawn). sd_login_monitor can now be used to watch
11964 VMs/containers coming and going.
11965
11966 * .include is not allowed recursively anymore, and only in
11967 unit files. Usually it is better to use drop-in snippets in
11968 .d/*.conf anyway, as introduced with systemd 198.
11969
11970 * systemd-analyze gained a new "critical-chain" command that
11971 determines the slowest chain of units run during system
11972 boot-up. It is very useful for tracking down where
11973 optimizing boot time is the most beneficial.
11974
11975 * systemd will no longer allow manipulating service paths in
11976 the name=systemd:/system cgroup tree using ControlGroup= in
11977 units. (But is still fine with it in all other dirs.)
11978
11979 * There's a new systemd-nspawn@.service service file that may
11980 be used to easily run nspawn containers as system
11981 services. With the container's root directory in
11982 /var/lib/container/foobar it is now sufficient to run
11983 "systemctl start systemd-nspawn@foobar.service" to boot it.
11984
11985 * systemd-cgls gained a new parameter "--machine" to list only
11986 the processes within a certain container.
11987
11988 * ConditionSecurity= now can check for "apparmor". We still
11989 are lacking checks for SMACK and IMA for this condition
11990 check though. Patches welcome!
11991
11992 * A new configuration file /etc/systemd/sleep.conf has been
11993 added that may be used to configure which kernel operation
11994 systemd is supposed to execute when "suspend", "hibernate"
11995 or "hybrid-sleep" is requested. This makes the new kernel
11996 "freeze" state accessible to the user.
11997
11998 * ENV{SYSTEMD_WANTS} in udev rules will now implicitly escape
11999 the passed argument if applicable.
12000
12001 Contributions from: Auke Kok, Colin Guthrie, Colin Walters,
12002 Cristian Rodríguez, Daniel Buch, Daniel Wallace, Dave Reisner,
12003 Evangelos Foutras, Greg Kroah-Hartman, Harald Hoyer, Josh
12004 Triplett, Kay Sievers, Lennart Poettering, Lukas Nykryn,
12005 MUNEDA Takahiro, Mantas Mikulėnas, Mirco Tischler, Nathaniel
12006 Chen, Nirbheek Chauhan, Ronny Chevalier, Ross Lagerwall, Tom
12007 Gundersen, Umut Tezduyar, Ville Skyttä, Zbigniew
12008 Jędrzejewski-Szmek
12009
12010 CHANGES WITH 202:
12011
12012 * The output of 'systemctl list-jobs' got some polishing. The
12013 '--type=' argument may now be passed more than once. A new
12014 command 'systemctl list-sockets' has been added which shows
12015 a list of kernel sockets systemd is listening on with the
12016 socket units they belong to, plus the units these socket
12017 units activate.
12018
12019 * The experimental libsystemd-bus library got substantial
12020 updates to work in conjunction with the (also experimental)
12021 kdbus kernel project. It works well enough to exchange
12022 messages with some sophistication. Note that kdbus is not
12023 ready yet, and the library is mostly an elaborate test case
12024 for now, and not installable.
12025
12026 * systemd gained a new unit 'systemd-static-nodes.service'
12027 that generates static device nodes earlier during boot, and
12028 can run in conjunction with udev.
12029
12030 * libsystemd-login gained a new call sd_pid_get_user_unit()
12031 to retrieve the user systemd unit a process is running
12032 in. This is useful for systems where systemd is used as
12033 session manager.
12034
12035 * systemd-nspawn now places all containers in the new /machine
12036 top-level cgroup directory in the name=systemd
12037 hierarchy. libvirt will soon do the same, so that we get a
12038 uniform separation of /system, /user and /machine for system
12039 services, user processes and containers/virtual
12040 machines. This new cgroup hierarchy is also useful to stick
12041 stable names to specific container instances, which can be
12042 recognized later this way (this name may be controlled
12043 via systemd-nspawn's new -M switch). libsystemd-login also
12044 gained a new call sd_pid_get_machine_name() to retrieve the
12045 name of the container/VM a specific process belongs to.
12046
12047 * bootchart can now store its data in the journal.
12048
12049 * libsystemd-journal gained a new call
12050 sd_journal_add_conjunction() for AND expressions to the
12051 matching logic. This can be used to express more complex
12052 logical expressions.
12053
12054 * journactl can now take multiple --unit= and --user-unit=
12055 switches.
12056
12057 * The cryptsetup logic now understands the "luks.key=" kernel
12058 command line switch for specifying a file to read the
12059 decryption key from. Also, if a configured key file is not
12060 found the tool will now automatically fall back to prompting
12061 the user.
12062
12063 * Python systemd.journal module was updated to wrap recently
12064 added functions from libsystemd-journal. The interface was
12065 changed to bring the low level interface in s.j._Reader
12066 closer to the C API, and the high level interface in
12067 s.j.Reader was updated to wrap and convert all data about
12068 an entry.
12069
12070 Contributions from: Anatol Pomozov, Auke Kok, Harald Hoyer,
12071 Henrik Grindal Bakken, Josh Triplett, Kay Sievers, Lennart
12072 Poettering, Lukas Nykryn, Mantas Mikulėnas Marius Vollmer,
12073 Martin Jansa, Martin Pitt, Michael Biebl, Michal Schmidt,
12074 Mirco Tischler, Pali Rohar, Simon Peeters, Steven Hiscocks,
12075 Tom Gundersen, Zbigniew Jędrzejewski-Szmek
12076
12077 CHANGES WITH 201:
12078
12079 * journalctl --update-catalog now understands a new --root=
12080 option to operate on catalogs found in a different root
12081 directory.
12082
12083 * During shutdown after systemd has terminated all running
12084 services a final killing loop kills all remaining left-over
12085 processes. We will now print the name of these processes
12086 when we send SIGKILL to them, since this usually indicates a
12087 problem.
12088
12089 * If /etc/crypttab refers to password files stored on
12090 configured mount points automatic dependencies will now be
12091 generated to ensure the specific mount is established first
12092 before the key file is attempted to be read.
12093
12094 * 'systemctl status' will now show information about the
12095 network sockets a socket unit is listening on.
12096
12097 * 'systemctl status' will also shown information about any
12098 drop-in configuration file for units. (Drop-In configuration
12099 files in this context are files such as
12100 /etc/systemd/system/foobar.service.d/*.conf)
12101
12102 * systemd-cgtop now optionally shows summed up CPU times of
12103 cgroups. Press '%' while running cgtop to switch between
12104 percentage and absolute mode. This is useful to determine
12105 which cgroups use up the most CPU time over the entire
12106 runtime of the system. systemd-cgtop has also been updated
12107 to be 'pipeable' for processing with further shell tools.
12108
12109 * 'hostnamectl set-hostname' will now allow setting of FQDN
12110 hostnames.
12111
12112 * The formatting and parsing of time span values has been
12113 changed. The parser now understands fractional expressions
12114 such as "5.5h". The formatter will now output fractional
12115 expressions for all time spans under 1min, i.e. "5.123456s"
12116 rather than "5s 123ms 456us". For time spans under 1s
12117 millisecond values are shown, for those under 1ms
12118 microsecond values are shown. This should greatly improve
12119 all time-related output of systemd.
12120
12121 * libsystemd-login and libsystemd-journal gained new
12122 functions for querying the poll() events mask and poll()
12123 timeout value for integration into arbitrary event
12124 loops.
12125
12126 * localectl gained the ability to list available X11 keymaps
12127 (models, layouts, variants, options).
12128
12129 * 'systemd-analyze dot' gained the ability to filter for
12130 specific units via shell-style globs, to create smaller,
12131 more useful graphs. I.e. it is now possible to create simple
12132 graphs of all the dependencies between only target units, or
12133 of all units that Avahi has dependencies with.
12134
12135 Contributions from: Cristian Rodríguez, Dr. Tilmann Bubeck,
12136 Harald Hoyer, Holger Hans Peter Freyther, Kay Sievers, Kelly
12137 Anderson, Koen Kooi, Lennart Poettering, Maksim Melnikau,
12138 Marc-Antoine Perennou, Marius Vollmer, Martin Pitt, Michal
12139 Schmidt, Oleksii Shevchuk, Ronny Chevalier, Simon McVittie,
12140 Steven Hiscocks, Thomas Weißschuh, Umut Tezduyar, Václav
12141 Pavlín, Zbigniew Jędrzejewski-Szmek, Łukasz Stelmach
12142
12143 CHANGES WITH 200:
12144
12145 * The boot-time readahead implementation for rotating media
12146 will now read the read-ahead data in multiple passes which
12147 consist of all read requests made in equidistant time
12148 intervals. This means instead of strictly reading read-ahead
12149 data in its physical order on disk we now try to find a
12150 middle ground between physical and access time order.
12151
12152 * /etc/os-release files gained a new BUILD_ID= field for usage
12153 on operating systems that provide continuous builds of OS
12154 images.
12155
12156 Contributions from: Auke Kok, Eelco Dolstra, Kay Sievers,
12157 Lennart Poettering, Lukas Nykryn, Martin Pitt, Václav Pavlín
12158 William Douglas, Zbigniew Jędrzejewski-Szmek
12159
12160 CHANGES WITH 199:
12161
12162 * systemd-python gained an API exposing libsystemd-daemon.
12163
12164 * The SMACK setup logic gained support for uploading CIPSO
12165 security policy.
12166
12167 * Behaviour of PrivateTmp=, ReadWriteDirectories=,
12168 ReadOnlyDirectories= and InaccessibleDirectories= has
12169 changed. The private /tmp and /var/tmp directories are now
12170 shared by all processes of a service (which means
12171 ExecStartPre= may now leave data in /tmp that ExecStart= of
12172 the same service can still access). When a service is
12173 stopped its temporary directories are immediately deleted
12174 (normal clean-up with tmpfiles is still done in addition to
12175 this though).
12176
12177 * By default, systemd will now set a couple of sysctl
12178 variables in the kernel: the safe sysrq options are turned
12179 on, IP route verification is turned on, and source routing
12180 disabled. The recently added hardlink and softlink
12181 protection of the kernel is turned on. These settings should
12182 be reasonably safe, and good defaults for all new systems.
12183
12184 * The predictable network naming logic may now be turned off
12185 with a new kernel command line switch: net.ifnames=0.
12186
12187 * A new libsystemd-bus module has been added that implements a
12188 pretty complete D-Bus client library. For details see:
12189
12190 https://lists.freedesktop.org/archives/systemd-devel/2013-March/009797.html
12191
12192 * journald will now explicitly flush the journal files to disk
12193 at the latest 5min after each write. The file will then also
12194 be marked offline until the next write. This should increase
12195 reliability in case of a crash. The synchronization delay
12196 can be configured via SyncIntervalSec= in journald.conf.
12197
12198 * There's a new remote-fs-setup.target unit that can be used
12199 to pull in specific services when at least one remote file
12200 system is to be mounted.
12201
12202 * There are new targets timers.target and paths.target as
12203 canonical targets to pull user timer and path units in
12204 from. This complements sockets.target with a similar
12205 purpose for socket units.
12206
12207 * libudev gained a new call udev_device_set_attribute_value()
12208 to set sysfs attributes of a device.
12209
12210 * The udev daemon now sets the default number of worker
12211 processes executed in parallel based on the number of available
12212 CPUs instead of the amount of available RAM. This is supposed
12213 to provide a more reliable default and limit a too aggressive
12214 parallelism for setups with 1000s of devices connected.
12215
12216 Contributions from: Auke Kok, Colin Walters, Cristian
12217 Rodríguez, Daniel Buch, Dave Reisner, Frederic Crozat, Hannes
12218 Reinecke, Harald Hoyer, Jan Alexander Steffens, Jan
12219 Engelhardt, Josh Triplett, Kay Sievers, Lennart Poettering,
12220 Mantas Mikulėnas, Martin Pitt, Mathieu Bridon, Michael Biebl,
12221 Michal Schmidt, Michal Sekletar, Miklos Vajna, Nathaniel Chen,
12222 Oleksii Shevchuk, Ozan Çağlayan, Thomas Hindoe Paaboel
12223 Andersen, Tollef Fog Heen, Tom Gundersen, Umut Tezduyar,
12224 Zbigniew Jędrzejewski-Szmek
12225
12226 CHANGES WITH 198:
12227
12228 * Configuration of unit files may now be extended via drop-in
12229 files without having to edit/override the unit files
12230 themselves. More specifically, if the administrator wants to
12231 change one value for a service file foobar.service he can
12232 now do so by dropping in a configuration snippet into
12233 /etc/systemd/system/foobar.service.d/*.conf. The unit logic
12234 will load all these snippets and apply them on top of the
12235 main unit configuration file, possibly extending or
12236 overriding its settings. Using these drop-in snippets is
12237 generally nicer than the two earlier options for changing
12238 unit files locally: copying the files from
12239 /usr/lib/systemd/system/ to /etc/systemd/system/ and editing
12240 them there; or creating a new file in /etc/systemd/system/
12241 that incorporates the original one via ".include". Drop-in
12242 snippets into these .d/ directories can be placed in any
12243 directory systemd looks for units in, and the usual
12244 overriding semantics between /usr/lib, /etc and /run apply
12245 for them too.
12246
12247 * Most unit file settings which take lists of items can now be
12248 reset by assigning the empty string to them. For example,
12249 normally, settings such as Environment=FOO=BAR append a new
12250 environment variable assignment to the environment block,
12251 each time they are used. By assigning Environment= the empty
12252 string the environment block can be reset to empty. This is
12253 particularly useful with the .d/*.conf drop-in snippets
12254 mentioned above, since this adds the ability to reset list
12255 settings from vendor unit files via these drop-ins.
12256
12257 * systemctl gained a new "list-dependencies" command for
12258 listing the dependencies of a unit recursively.
12259
12260 * Inhibitors are now honored and listed by "systemctl
12261 suspend", "systemctl poweroff" (and similar) too, not only
12262 GNOME. These commands will also list active sessions by
12263 other users.
12264
12265 * Resource limits (as exposed by the various control group
12266 controllers) can now be controlled dynamically at runtime
12267 for all units. More specifically, you can now use a command
12268 like "systemctl set-cgroup-attr foobar.service cpu.shares
12269 2000" to alter the CPU shares a specific service gets. These
12270 settings are stored persistently on disk, and thus allow the
12271 administrator to easily adjust the resource usage of
12272 services with a few simple commands. This dynamic resource
12273 management logic is also available to other programs via the
12274 bus. Almost any kernel cgroup attribute and controller is
12275 supported.
12276
12277 * systemd-vconsole-setup will now copy all font settings to
12278 all allocated VTs, where it previously applied them only to
12279 the foreground VT.
12280
12281 * libsystemd-login gained the new sd_session_get_tty() API
12282 call.
12283
12284 * This release drops support for a few legacy or
12285 distribution-specific LSB facility names when parsing init
12286 scripts: $x-display-manager, $mail-transfer-agent,
12287 $mail-transport-agent, $mail-transfer-agent, $smtp,
12288 $null. Also, the mail-transfer-agent.target unit backing
12289 this has been removed. Distributions which want to retain
12290 compatibility with this should carry the burden for
12291 supporting this themselves and patch support for these back
12292 in, if they really need to. Also, the facilities $syslog and
12293 $local_fs are now ignored, since systemd does not support
12294 early-boot LSB init scripts anymore, and these facilities
12295 are implied anyway for normal services. syslog.target has
12296 also been removed.
12297
12298 * There are new bus calls on PID1's Manager object for
12299 cancelling jobs, and removing snapshot units. Previously,
12300 both calls were only available on the Job and Snapshot
12301 objects themselves.
12302
12303 * systemd-journal-gatewayd gained SSL support.
12304
12305 * The various "environment" files, such as /etc/locale.conf
12306 now support continuation lines with a backslash ("\") as
12307 last character in the line, similarly in style (but different)
12308 to how this is supported in shells.
12309
12310 * For normal user processes the _SYSTEMD_USER_UNIT= field is
12311 now implicitly appended to every log entry logged. systemctl
12312 has been updated to filter by this field when operating on a
12313 user systemd instance.
12314
12315 * nspawn will now implicitly add the CAP_AUDIT_WRITE and
12316 CAP_AUDIT_CONTROL capabilities to the capabilities set for
12317 the container. This makes it easier to boot unmodified
12318 Fedora systems in a container, which however still requires
12319 audit=0 to be passed on the kernel command line. Auditing in
12320 kernel and userspace is unfortunately still too broken in
12321 context of containers, hence we recommend compiling it out
12322 of the kernel or using audit=0. Hopefully this will be fixed
12323 one day for good in the kernel.
12324
12325 * nspawn gained the new --bind= and --bind-ro= parameters to
12326 bind mount specific directories from the host into the
12327 container.
12328
12329 * nspawn will now mount its own devpts file system instance
12330 into the container, in order not to leak pty devices from
12331 the host into the container.
12332
12333 * systemd will now read the firmware boot time performance
12334 information from the EFI variables, if the used boot loader
12335 supports this, and takes it into account for boot performance
12336 analysis via "systemd-analyze". This is currently supported
12337 only in conjunction with Gummiboot, but could be supported
12338 by other boot loaders too. For details see:
12339
12340 https://systemd.io/BOOT_LOADER_INTERFACE
12341
12342 * A new generator has been added that automatically mounts the
12343 EFI System Partition (ESP) to /boot, if that directory
12344 exists, is empty, and no other file system has been
12345 configured to be mounted there.
12346
12347 * logind will now send out PrepareForSleep(false) out
12348 unconditionally, after coming back from suspend. This may be
12349 used by applications as asynchronous notification for
12350 system resume events.
12351
12352 * "systemctl unlock-sessions" has been added, that allows
12353 unlocking the screens of all user sessions at once, similar
12354 to how "systemctl lock-sessions" already locked all users
12355 sessions. This is backed by a new D-Bus call UnlockSessions().
12356
12357 * "loginctl seat-status" will now show the master device of a
12358 seat. (i.e. the device of a seat that needs to be around for
12359 the seat to be considered available, usually the graphics
12360 card).
12361
12362 * tmpfiles gained a new "X" line type, that allows
12363 configuration of files and directories (with wildcards) that
12364 shall be excluded from automatic cleanup ("aging").
12365
12366 * udev default rules set the device node permissions now only
12367 at "add" events, and do not change them any longer with a
12368 later "change" event.
12369
12370 * The log messages for lid events and power/sleep keypresses
12371 now carry a message ID.
12372
12373 * We now have a substantially larger unit test suite, but this
12374 continues to be work in progress.
12375
12376 * udevadm hwdb gained a new --root= parameter to change the
12377 root directory to operate relative to.
12378
12379 * logind will now issue a background sync() request to the kernel
12380 early at shutdown, so that dirty buffers are flushed to disk early
12381 instead of at the last moment, in order to optimize shutdown
12382 times a little.
12383
12384 * A new bootctl tool has been added that is an interface for
12385 certain boot loader operations. This is currently a preview
12386 and is likely to be extended into a small mechanism daemon
12387 like timedated, localed, hostnamed, and can be used by
12388 graphical UIs to enumerate available boot options, and
12389 request boot into firmware operations.
12390
12391 * systemd-bootchart has been relicensed to LGPLv2.1+ to match
12392 the rest of the package. It also has been updated to work
12393 correctly in initrds.
12394
12395 * polkit previously has been runtime optional, and is now also
12396 compile time optional via a configure switch.
12397
12398 * systemd-analyze has been reimplemented in C. Also "systemctl
12399 dot" has moved into systemd-analyze.
12400
12401 * "systemctl status" with no further parameters will now print
12402 the status of all active or failed units.
12403
12404 * Operations such as "systemctl start" can now be executed
12405 with a new mode "--irreversible" which may be used to queue
12406 operations that cannot accidentally be reversed by a later
12407 job queuing. This is by default used to make shutdown
12408 requests more robust.
12409
12410 * The Python API of systemd now gained a new module for
12411 reading journal files.
12412
12413 * A new tool kernel-install has been added that can install
12414 kernel images according to the Boot Loader Specification:
12415
12416 https://systemd.io/BOOT_LOADER_SPECIFICATION
12417
12418 * Boot time console output has been improved to provide
12419 animated boot time output for hanging jobs.
12420
12421 * A new tool systemd-activate has been added which can be used
12422 to test socket activation with, directly from the command
12423 line. This should make it much easier to test and debug
12424 socket activation in daemons.
12425
12426 * journalctl gained a new "--reverse" (or -r) option to show
12427 journal output in reverse order (i.e. newest line first).
12428
12429 * journalctl gained a new "--pager-end" (or -e) option to jump
12430 to immediately jump to the end of the journal in the
12431 pager. This is only supported in conjunction with "less".
12432
12433 * journalctl gained a new "--user-unit=" option, that works
12434 similarly to "--unit=" but filters for user units rather than
12435 system units.
12436
12437 * A number of unit files to ease adoption of systemd in
12438 initrds has been added. This moves some minimal logic from
12439 the various initrd implementations into systemd proper.
12440
12441 * The journal files are now owned by a new group
12442 "systemd-journal", which exists specifically to allow access
12443 to the journal, and nothing else. Previously, we used the
12444 "adm" group for that, which however possibly covers more
12445 than just journal/log file access. This new group is now
12446 already used by systemd-journal-gatewayd to ensure this
12447 daemon gets access to the journal files and as little else
12448 as possible. Note that "make install" will also set FS ACLs
12449 up for /var/log/journal to give "adm" and "wheel" read
12450 access to it, in addition to "systemd-journal" which owns
12451 the journal files. We recommend that packaging scripts also
12452 add read access to "adm" + "wheel" to /var/log/journal, and
12453 all existing/future journal files. To normal users and
12454 administrators little changes, however packagers need to
12455 ensure to create the "systemd-journal" system group at
12456 package installation time.
12457
12458 * The systemd-journal-gatewayd now runs as unprivileged user
12459 systemd-journal-gateway:systemd-journal-gateway. Packaging
12460 scripts need to create these system user/group at
12461 installation time.
12462
12463 * timedated now exposes a new boolean property CanNTP that
12464 indicates whether a local NTP service is available or not.
12465
12466 * systemd-detect-virt will now also detect xen PVs
12467
12468 * The pstore file system is now mounted by default, if it is
12469 available.
12470
12471 * In addition to the SELinux and IMA policies we will now also
12472 load SMACK policies at early boot.
12473
12474 Contributions from: Adel Gadllah, Aleksander Morgado, Auke
12475 Kok, Ayan George, Bastien Nocera, Colin Walters, Daniel Buch,
12476 Daniel Wallace, Dave Reisner, David Herrmann, David Strauss,
12477 Eelco Dolstra, Enrico Scholz, Frederic Crozat, Harald Hoyer,
12478 Jan Janssen, Jonathan Callen, Kay Sievers, Lennart Poettering,
12479 Lukas Nykryn, Mantas Mikulėnas, Marc-Antoine Perennou, Martin
12480 Pitt, Mauro Dreissig, Max F. Albrecht, Michael Biebl, Michael
12481 Olbrich, Michal Schmidt, Michal Sekletar, Michal Vyskocil,
12482 Michał Bartoszkiewicz, Mirco Tischler, Nathaniel Chen, Nestor
12483 Ovroy, Oleksii Shevchuk, Paul W. Frields, Piotr Drąg, Rob
12484 Clark, Ryan Lortie, Simon McVittie, Simon Peeters, Steven
12485 Hiscocks, Thomas Hindoe Paaboel Andersen, Tollef Fog Heen, Tom
12486 Gundersen, Umut Tezduyar, William Giokas, Zbigniew
12487 Jędrzejewski-Szmek, Zeeshan Ali (Khattak)
12488
12489 CHANGES WITH 197:
12490
12491 * Timer units now support calendar time events in addition to
12492 monotonic time events. That means you can now trigger a unit
12493 based on a calendar time specification such as "Thu,Fri
12494 2013-*-1,5 11:12:13" which refers to 11:12:13 of the first
12495 or fifth day of any month of the year 2013, given that it is
12496 a thursday or friday. This brings timer event support
12497 considerably closer to cron's capabilities. For details on
12498 the supported calendar time specification language see
12499 systemd.time(7).
12500
12501 * udev now supports a number of different naming policies for
12502 network interfaces for predictable names, and a combination
12503 of these policies is now the default. Please see this wiki
12504 document for details:
12505
12506 https://www.freedesktop.org/software/systemd/man/systemd.net-naming-scheme.html
12507
12508 * Auke Kok's bootchart implementation has been added to the
12509 systemd tree. It is an optional component that can graph the
12510 boot in quite some detail. It is one of the best bootchart
12511 implementations around and minimal in its code and
12512 dependencies.
12513
12514 * nss-myhostname has been integrated into the systemd source
12515 tree. nss-myhostname guarantees that the local hostname
12516 always stays resolvable via NSS. It has been a weak
12517 requirement of systemd-hostnamed since a long time, and
12518 since its code is actually trivial we decided to just
12519 include it in systemd's source tree. It can be turned off
12520 with a configure switch.
12521
12522 * The read-ahead logic is now capable of properly detecting
12523 whether a btrfs file system is on SSD or rotating media, in
12524 order to optimize the read-ahead scheme. Previously, it was
12525 only capable of detecting this on traditional file systems
12526 such as ext4.
12527
12528 * In udev, additional device properties are now read from the
12529 IAB in addition to the OUI database. Also, Bluetooth company
12530 identities are attached to the devices as well.
12531
12532 * In service files %U may be used as specifier that is
12533 replaced by the configured user name of the service.
12534
12535 * nspawn may now be invoked without a controlling TTY. This
12536 makes it suitable for invocation as its own service. This
12537 may be used to set up a simple containerized server system
12538 using only core OS tools.
12539
12540 * systemd and nspawn can now accept socket file descriptors
12541 when they are started for socket activation. This enables
12542 implementation of socket activated nspawn
12543 containers. i.e. think about autospawning an entire OS image
12544 when the first SSH or HTTP connection is received. We expect
12545 that similar functionality will also be added to libvirt-lxc
12546 eventually.
12547
12548 * journalctl will now suppress ANSI color codes when
12549 presenting log data.
12550
12551 * systemctl will no longer show control group information for
12552 a unit if the control group is empty anyway.
12553
12554 * logind can now automatically suspend/hibernate/shutdown the
12555 system on idle.
12556
12557 * /etc/machine-info and hostnamed now also expose the chassis
12558 type of the system. This can be used to determine whether
12559 the local system is a laptop, desktop, handset or
12560 tablet. This information may either be configured by the
12561 user/vendor or is automatically determined from ACPI and DMI
12562 information if possible.
12563
12564 * A number of polkit actions are now bound together with "imply"
12565 rules. This should simplify creating UIs because many actions
12566 will now authenticate similar ones as well.
12567
12568 * Unit files learnt a new condition ConditionACPower= which
12569 may be used to conditionalize a unit depending on whether an
12570 AC power source is connected or not, of whether the system
12571 is running on battery power.
12572
12573 * systemctl gained a new "is-failed" verb that may be used in
12574 shell scripts and suchlike to check whether a specific unit
12575 is in the "failed" state.
12576
12577 * The EnvironmentFile= setting in unit files now supports file
12578 globbing, and can hence be used to easily read a number of
12579 environment files at once.
12580
12581 * systemd will no longer detect and recognize specific
12582 distributions. All distribution-specific #ifdeffery has been
12583 removed, systemd is now fully generic and
12584 distribution-agnostic. Effectively, not too much is lost as
12585 a lot of the code is still accessible via explicit configure
12586 switches. However, support for some distribution specific
12587 legacy configuration file formats has been dropped. We
12588 recommend distributions to simply adopt the configuration
12589 files everybody else uses now and convert the old
12590 configuration from packaging scripts. Most distributions
12591 already did that. If that's not possible or desirable,
12592 distributions are welcome to forward port the specific
12593 pieces of code locally from the git history.
12594
12595 * When logging a message about a unit systemd will now always
12596 log the unit name in the message meta data.
12597
12598 * localectl will now also discover system locale data that is
12599 not stored in locale archives, but directly unpacked.
12600
12601 * logind will no longer unconditionally use framebuffer
12602 devices as seat masters, i.e. as devices that are required
12603 to be existing before a seat is considered preset. Instead,
12604 it will now look for all devices that are tagged as
12605 "seat-master" in udev. By default, framebuffer devices will
12606 be marked as such, but depending on local systems, other
12607 devices might be marked as well. This may be used to
12608 integrate graphics cards using closed source drivers (such
12609 as NVidia ones) more nicely into logind. Note however, that
12610 we recommend using the open source NVidia drivers instead,
12611 and no udev rules for the closed-source drivers will be
12612 shipped from us upstream.
12613
12614 Contributions from: Adam Williamson, Alessandro Crismani, Auke
12615 Kok, Colin Walters, Daniel Wallace, Dave Reisner, David
12616 Herrmann, David Strauss, Dimitrios Apostolou, Eelco Dolstra,
12617 Eric Benoit, Giovanni Campagna, Hannes Reinecke, Henrik
12618 Grindal Bakken, Hermann Gausterer, Kay Sievers, Lennart
12619 Poettering, Lukas Nykryn, Mantas Mikulėnas, Marcel Holtmann,
12620 Martin Pitt, Matthew Monaco, Michael Biebl, Michael Terry,
12621 Michal Schmidt, Michal Sekletar, Michał Bartoszkiewicz, Oleg
12622 Samarin, Pekka Lundstrom, Philip Nilsson, Ramkumar
12623 Ramachandra, Richard Yao, Robert Millan, Sami Kerola, Shawn
12624 Landden, Thomas Hindoe Paaboel Andersen, Thomas Jarosch,
12625 Tollef Fog Heen, Tom Gundersen, Umut Tezduyar, Zbigniew
12626 Jędrzejewski-Szmek
12627
12628 CHANGES WITH 196:
12629
12630 * udev gained support for loading additional device properties
12631 from an indexed database that is keyed by vendor/product IDs
12632 and similar device identifiers. For the beginning this
12633 "hwdb" is populated with data from the well-known PCI and
12634 USB database, but also includes PNP, ACPI and OID data. In
12635 the longer run this indexed database shall grow into
12636 becoming the one central database for non-essential
12637 userspace device metadata. Previously, data from the PCI/USB
12638 database was only attached to select devices, since the
12639 lookup was a relatively expensive operation due to O(n) time
12640 complexity (with n being the number of entries in the
12641 database). Since this is now O(1), we decided to add in this
12642 data for all devices where this is available, by
12643 default. Note that the indexed database needs to be rebuilt
12644 when new data files are installed. To achieve this you need
12645 to update your packaging scripts to invoke "udevadm hwdb
12646 --update" after installation of hwdb data files. For
12647 RPM-based distributions we introduced the new
12648 %udev_hwdb_update macro for this purpose.
12649
12650 * The Journal gained support for the "Message Catalog", an
12651 indexed database to link up additional information with
12652 journal entries. For further details please check:
12653
12654 https://www.freedesktop.org/wiki/Software/systemd/catalog
12655
12656 The indexed message catalog database also needs to be
12657 rebuilt after installation of message catalog files. Use
12658 "journalctl --update-catalog" for this. For RPM-based
12659 distributions we introduced the %journal_catalog_update
12660 macro for this purpose.
12661
12662 * The Python Journal bindings gained support for the standard
12663 Python logging framework.
12664
12665 * The Journal API gained new functions for checking whether
12666 the underlying file system of a journal file is capable of
12667 properly reporting file change notifications, or whether
12668 applications that want to reflect journal changes "live"
12669 need to recheck journal files continuously in appropriate
12670 time intervals.
12671
12672 * It is now possible to set the "age" field for tmpfiles
12673 entries to 0, indicating that files matching this entry
12674 shall always be removed when the directories are cleaned up.
12675
12676 * coredumpctl gained a new "gdb" verb which invokes gdb
12677 right-away on the selected coredump.
12678
12679 * There's now support for "hybrid sleep" on kernels that
12680 support this, in addition to "suspend" and "hibernate". Use
12681 "systemctl hybrid-sleep" to make use of this.
12682
12683 * logind's HandleSuspendKey= setting (and related settings)
12684 now gained support for a new "lock" setting to simply
12685 request the screen lock on all local sessions, instead of
12686 actually executing a suspend or hibernation.
12687
12688 * systemd will now mount the EFI variables file system by
12689 default.
12690
12691 * Socket units now gained support for configuration of the
12692 SMACK security label.
12693
12694 * timedatectl will now output the time of the last and next
12695 daylight saving change.
12696
12697 * We dropped support for various legacy and distro-specific
12698 concepts, such as insserv, early-boot SysV services
12699 (i.e. those for non-standard runlevels such as 'b' or 'S')
12700 or ArchLinux /etc/rc.conf support. We recommend the
12701 distributions who still need support this to either continue
12702 to maintain the necessary patches downstream, or find a
12703 different solution. (Talk to us if you have questions!)
12704
12705 * Various systemd components will now bypass polkit checks for
12706 root and otherwise handle properly if polkit is not found to
12707 be around. This should fix most issues for polkit-less
12708 systems. Quite frankly this should have been this way since
12709 day one. It is absolutely our intention to make systemd work
12710 fine on polkit-less systems, and we consider it a bug if
12711 something does not work as it should if polkit is not around.
12712
12713 * For embedded systems it is now possible to build udev and
12714 systemd without blkid and/or kmod support.
12715
12716 * "systemctl switch-root" is now capable of switching root
12717 more than once. I.e. in addition to transitions from the
12718 initrd to the host OS it is now possible to transition to
12719 further OS images from the host. This is useful to implement
12720 offline updating tools.
12721
12722 * Various other additions have been made to the RPM macros
12723 shipped with systemd. Use %udev_rules_update() after
12724 installing new udev rules files. %_udevhwdbdir,
12725 %_udevrulesdir, %_journalcatalogdir, %_tmpfilesdir,
12726 %_sysctldir are now available which resolve to the right
12727 directories for packages to place various data files in.
12728
12729 * journalctl gained the new --full switch (in addition to
12730 --all, to disable ellipsation for long messages.
12731
12732 Contributions from: Anders Olofsson, Auke Kok, Ben Boeckel,
12733 Colin Walters, Cosimo Cecchi, Daniel Wallace, Dave Reisner,
12734 Eelco Dolstra, Holger Hans Peter Freyther, Kay Sievers,
12735 Chun-Yi Lee, Lekensteyn, Lennart Poettering, Mantas Mikulėnas,
12736 Marti Raudsepp, Martin Pitt, Mauro Dreissig, Michael Biebl,
12737 Michal Schmidt, Michal Sekletar, Miklos Vajna, Nis Martensen,
12738 Oleksii Shevchuk, Olivier Brunel, Ramkumar Ramachandra, Thomas
12739 Bächler, Thomas Hindoe Paaboel Andersen, Tom Gundersen, Tony
12740 Camuso, Umut Tezduyar, Zbigniew Jędrzejewski-Szmek
12741
12742 CHANGES WITH 195:
12743
12744 * journalctl gained new --since= and --until= switches to
12745 filter by time. It also now supports nice filtering for
12746 units via --unit=/-u.
12747
12748 * Type=oneshot services may use ExecReload= and do the
12749 right thing.
12750
12751 * The journal daemon now supports time-based rotation and
12752 vacuuming, in addition to the usual disk-space based
12753 rotation.
12754
12755 * The journal will now index the available field values for
12756 each field name. This enables clients to show pretty drop
12757 downs of available match values when filtering. The bash
12758 completion of journalctl has been updated
12759 accordingly. journalctl gained a new switch -F to list all
12760 values a certain field takes in the journal database.
12761
12762 * More service events are now written as structured messages
12763 to the journal, and made recognizable via message IDs.
12764
12765 * The timedated, localed and hostnamed mini-services which
12766 previously only provided support for changing time, locale
12767 and hostname settings from graphical DEs such as GNOME now
12768 also have a minimal (but very useful) text-based client
12769 utility each. This is probably the nicest way to changing
12770 these settings from the command line now, especially since
12771 it lists available options and is fully integrated with bash
12772 completion.
12773
12774 * There's now a new tool "systemd-coredumpctl" to list and
12775 extract coredumps from the journal.
12776
12777 * We now install a README each in /var/log/ and
12778 /etc/rc.d/init.d explaining where the system logs and init
12779 scripts went. This hopefully should help folks who go to
12780 that dirs and look into the otherwise now empty void and
12781 scratch their heads.
12782
12783 * When user-services are invoked (by systemd --user) the
12784 $MANAGERPID env var is set to the PID of systemd.
12785
12786 * SIGRTMIN+24 when sent to a --user instance will now result
12787 in immediate termination of systemd.
12788
12789 * gatewayd received numerous feature additions such as a
12790 "follow" mode, for live syncing and filtering.
12791
12792 * browse.html now allows filtering and showing detailed
12793 information on specific entries. Keyboard navigation and
12794 mouse screen support has been added.
12795
12796 * gatewayd/journalctl now supports HTML5/JSON
12797 Server-Sent-Events as output.
12798
12799 * The SysV init script compatibility logic will now
12800 heuristically determine whether a script supports the
12801 "reload" verb, and only then make this available as
12802 "systemctl reload".
12803
12804 * "systemctl status --follow" has been removed, use "journalctl
12805 -u" instead.
12806
12807 * journald.conf's RuntimeMinSize=, PersistentMinSize= settings
12808 have been removed since they are hardly useful to be
12809 configured.
12810
12811 * And I'd like to take the opportunity to specifically mention
12812 Zbigniew for his great contributions. Zbigniew, you rock!
12813
12814 Contributions from: Andrew Eikum, Christian Hesse, Colin
12815 Guthrie, Daniel J Walsh, Dave Reisner, Eelco Dolstra, Ferenc
12816 Wágner, Kay Sievers, Lennart Poettering, Lukas Nykryn, Mantas
12817 Mikulėnas, Martin Mikkelsen, Martin Pitt, Michael Olbrich,
12818 Michael Stapelberg, Michal Schmidt, Sebastian Ott, Thomas
12819 Bächler, Umut Tezduyar, Will Woods, Wulf C. Krueger, Zbigniew
12820 Jędrzejewski-Szmek, Сковорода Никита Андреевич
12821
12822 CHANGES WITH 194:
12823
12824 * If /etc/vconsole.conf is non-existent or empty we will no
12825 longer load any console font or key map at boot by
12826 default. Instead the kernel defaults will be left
12827 intact. This is definitely the right thing to do, as no
12828 configuration should mean no configuration, and hard-coding
12829 font names that are different on all archs is probably a bad
12830 idea. Also, the kernel default key map and font should be
12831 good enough for most cases anyway, and mostly identical to
12832 the userspace fonts/key maps we previously overloaded them
12833 with. If distributions want to continue to default to a
12834 non-kernel font or key map they should ship a default
12835 /etc/vconsole.conf with the appropriate contents.
12836
12837 Contributions from: Colin Walters, Daniel J Walsh, Dave
12838 Reisner, Kay Sievers, Lennart Poettering, Lukas Nykryn, Tollef
12839 Fog Heen, Tom Gundersen, Zbigniew Jędrzejewski-Szmek
12840
12841 CHANGES WITH 193:
12842
12843 * journalctl gained a new --cursor= switch to show entries
12844 starting from the specified location in the journal.
12845
12846 * We now enforce a size limit on journal entry fields exported
12847 with "-o json" in journalctl. Fields larger than 4K will be
12848 assigned null. This can be turned off with --all.
12849
12850 * An (optional) journal gateway daemon is now available as
12851 "systemd-journal-gatewayd.service". This service provides
12852 access to the journal via HTTP and JSON. This functionality
12853 will be used to implement live log synchronization in both
12854 pull and push modes, but has various other users too, such
12855 as easy log access for debugging of embedded devices. Right
12856 now it is already useful to retrieve the journal via HTTP:
12857
12858 # systemctl start systemd-journal-gatewayd.service
12859 # wget http://localhost:19531/entries
12860
12861 This will download the journal contents in a
12862 /var/log/messages compatible format. The same as JSON:
12863
12864 # curl -H"Accept: application/json" http://localhost:19531/entries
12865
12866 This service is also accessible via a web browser where a
12867 single static HTML5 app is served that uses the JSON logic
12868 to enable the user to do some basic browsing of the
12869 journal. This will be extended later on. Here's an example
12870 screenshot of this app in its current state:
12871
12872 http://0pointer.de/public/journal-gatewayd
12873
12874 Contributions from: Kay Sievers, Lennart Poettering, Robert
12875 Milasan, Tom Gundersen
12876
12877 CHANGES WITH 192:
12878
12879 * The bash completion logic is now available for journalctl
12880 too.
12881
12882 * We do not mount the "cpuset" controller anymore together with
12883 "cpu" and "cpuacct", as "cpuset" groups generally cannot be
12884 started if no parameters are assigned to it. "cpuset" hence
12885 broke code that assumed it could create "cpu" groups and
12886 just start them.
12887
12888 * journalctl -f will now subscribe to terminal size changes,
12889 and line break accordingly.
12890
12891 Contributions from: Dave Reisner, Kay Sievers, Lennart
12892 Poettering, Lukas Nykrynm, Mirco Tischler, Václav Pavlín
12893
12894 CHANGES WITH 191:
12895
12896 * nspawn will now create a symlink /etc/localtime in the
12897 container environment, copying the host's timezone
12898 setting. Previously this has been done via a bind mount, but
12899 since symlinks cannot be bind mounted this has now been
12900 changed to create/update the appropriate symlink.
12901
12902 * journalctl -n's line number argument is now optional, and
12903 will default to 10 if omitted.
12904
12905 * journald will now log the maximum size the journal files may
12906 take up on disk. This is particularly useful if the default
12907 built-in logic of determining this parameter from the file
12908 system size is used. Use "systemctl status
12909 systemd-journald.service" to see this information.
12910
12911 * The multi-seat X wrapper tool has been stripped down. As X
12912 is now capable of enumerating graphics devices via udev in a
12913 seat-aware way the wrapper is not strictly necessary
12914 anymore. A stripped down temporary stop-gap is still shipped
12915 until the upstream display managers have been updated to
12916 fully support the new X logic. Expect this wrapper to be
12917 removed entirely in one of the next releases.
12918
12919 * HandleSleepKey= in logind.conf has been split up into
12920 HandleSuspendKey= and HandleHibernateKey=. The old setting
12921 is not available anymore. X11 and the kernel are
12922 distinguishing between these keys and we should too. This
12923 also means the inhibition lock for these keys has been split
12924 into two.
12925
12926 Contributions from: Dave Airlie, Eelco Dolstra, Lennart
12927 Poettering, Lukas Nykryn, Václav Pavlín
12928
12929 CHANGES WITH 190:
12930
12931 * Whenever a unit changes state we will now log this to the
12932 journal and show along the unit's own log output in
12933 "systemctl status".
12934
12935 * ConditionPathIsMountPoint= can now properly detect bind
12936 mount points too. (Previously, a bind mount of one file
12937 system to another place in the same file system could not be
12938 detected as mount, since they shared struct stat's st_dev
12939 field.)
12940
12941 * We will now mount the cgroup controllers cpu, cpuacct,
12942 cpuset and the controllers net_cls, net_prio together by
12943 default.
12944
12945 * nspawn containers will now have a virtualized boot
12946 ID. (i.e. /proc/sys/kernel/random/boot_id is now mounted
12947 over with a randomized ID at container initialization). This
12948 has the effect of making "journalctl -b" do the right thing
12949 in a container.
12950
12951 * The JSON output journal serialization has been updated not
12952 to generate "endless" list objects anymore, but rather one
12953 JSON object per line. This is more in line how most JSON
12954 parsers expect JSON objects. The new output mode
12955 "json-pretty" has been added to provide similar output, but
12956 neatly aligned for readability by humans.
12957
12958 * We dropped all explicit sync() invocations in the shutdown
12959 code. The kernel does this implicitly anyway in the kernel
12960 reboot() syscall. halt(8)'s -n option is now a compatibility
12961 no-op.
12962
12963 * We now support virtualized reboot() in containers, as
12964 supported by newer kernels. We will fall back to exit() if
12965 CAP_SYS_REBOOT is not available to the container. Also,
12966 nspawn makes use of this now and will actually reboot the
12967 container if the containerized OS asks for that.
12968
12969 * journalctl will only show local log output by default
12970 now. Use --merge (-m) to show remote log output, too.
12971
12972 * libsystemd-journal gained the new sd_journal_get_usage()
12973 call to determine the current disk usage of all journal
12974 files. This is exposed in the new "journalctl --disk-usage"
12975 command.
12976
12977 * journald gained a new configuration setting SplitMode= in
12978 journald.conf which may be used to control how user journals
12979 are split off. See journald.conf(5) for details.
12980
12981 * A new condition type ConditionFileNotEmpty= has been added.
12982
12983 * tmpfiles' "w" lines now support file globbing, to write
12984 multiple files at once.
12985
12986 * We added Python bindings for the journal submission
12987 APIs. More Python APIs for a number of selected APIs will
12988 likely follow. Note that we intend to add native bindings
12989 only for the Python language, as we consider it common
12990 enough to deserve bindings shipped within systemd. There are
12991 various projects outside of systemd that provide bindings
12992 for languages such as PHP or Lua.
12993
12994 * Many conditions will now resolve specifiers such as %i. In
12995 addition, PathChanged= and related directives of .path units
12996 now support specifiers as well.
12997
12998 * There's now a new RPM macro definition for the system preset
12999 dir: %_presetdir.
13000
13001 * journald will now warn if it ca not forward a message to the
13002 syslog daemon because its socket is full.
13003
13004 * timedated will no longer write or process /etc/timezone,
13005 except on Debian. As we do not support late mounted /usr
13006 anymore /etc/localtime always being a symlink is now safe,
13007 and hence the information in /etc/timezone is not necessary
13008 anymore.
13009
13010 * logind will now always reserve one VT for a text getty (VT6
13011 by default). Previously if more than 6 X sessions where
13012 started they took up all the VTs with auto-spawned gettys,
13013 so that no text gettys were available anymore.
13014
13015 * udev will now automatically inform the btrfs kernel logic
13016 about btrfs RAID components showing up. This should make
13017 simple hotplug based btrfs RAID assembly work.
13018
13019 * PID 1 will now increase its RLIMIT_NOFILE to 64K by default
13020 (but not for its children which will stay at the kernel
13021 default). This should allow setups with a lot more listening
13022 sockets.
13023
13024 * systemd will now always pass the configured timezone to the
13025 kernel at boot. timedated will do the same when the timezone
13026 is changed.
13027
13028 * logind's inhibition logic has been updated. By default,
13029 logind will now handle the lid switch, the power and sleep
13030 keys all the time, even in graphical sessions. If DEs want
13031 to handle these events on their own they should take the new
13032 handle-power-key, handle-sleep-key and handle-lid-switch
13033 inhibitors during their runtime. A simple way to achieve
13034 that is to invoke the DE wrapped in an invocation of:
13035
13036 systemd-inhibit --what=handle-power-key:handle-sleep-key:handle-lid-switch …
13037
13038 * Access to unit operations is now checked via SELinux taking
13039 the unit file label and client process label into account.
13040
13041 * systemd will now notify the administrator in the journal
13042 when he over-mounts a non-empty directory.
13043
13044 * There are new specifiers that are resolved in unit files,
13045 for the hostname (%H), the machine ID (%m) and the boot ID
13046 (%b).
13047
13048 Contributions from: Allin Cottrell, Auke Kok, Brandon Philips,
13049 Colin Guthrie, Colin Walters, Daniel J Walsh, Dave Reisner,
13050 Eelco Dolstra, Jan Engelhardt, Kay Sievers, Lennart
13051 Poettering, Lucas De Marchi, Lukas Nykryn, Mantas Mikulėnas,
13052 Martin Pitt, Matthias Clasen, Michael Olbrich, Pierre Schmitz,
13053 Shawn Landden, Thomas Hindoe Paaboel Andersen, Tom Gundersen,
13054 Václav Pavlín, Yin Kangkai, Zbigniew Jędrzejewski-Szmek
13055
13056 CHANGES WITH 189:
13057
13058 * Support for reading structured kernel messages from
13059 /dev/kmsg has now been added and is enabled by default.
13060
13061 * Support for reading kernel messages from /proc/kmsg has now
13062 been removed. If you want kernel messages in the journal
13063 make sure to run a recent kernel (>= 3.5) that supports
13064 reading structured messages from /dev/kmsg (see
13065 above). /proc/kmsg is now exclusive property of classic
13066 syslog daemons again.
13067
13068 * The libudev API gained the new
13069 udev_device_new_from_device_id() call.
13070
13071 * The logic for file system namespace (ReadOnlyDirectory=,
13072 ReadWriteDirectoy=, PrivateTmp=) has been reworked not to
13073 require pivot_root() anymore. This means fewer temporary
13074 directories are created below /tmp for this feature.
13075
13076 * nspawn containers will now see and receive all submounts
13077 made on the host OS below the root file system of the
13078 container.
13079
13080 * Forward Secure Sealing is now supported for Journal files,
13081 which provide cryptographical sealing of journal files so
13082 that attackers cannot alter log history anymore without this
13083 being detectable. Lennart will soon post a blog story about
13084 this explaining it in more detail.
13085
13086 * There are two new service settings RestartPreventExitStatus=
13087 and SuccessExitStatus= which allow configuration of exit
13088 status (exit code or signal) which will be excepted from the
13089 restart logic, resp. consider successful.
13090
13091 * journalctl gained the new --verify switch that can be used
13092 to check the integrity of the structure of journal files and
13093 (if Forward Secure Sealing is enabled) the contents of
13094 journal files.
13095
13096 * nspawn containers will now be run with /dev/stdin, /dev/fd/
13097 and similar symlinks pre-created. This makes running shells
13098 as container init process a lot more fun.
13099
13100 * The fstab support can now handle PARTUUID= and PARTLABEL=
13101 entries.
13102
13103 * A new ConditionHost= condition has been added to match
13104 against the hostname (with globs) and machine ID. This is
13105 useful for clusters where a single OS image is used to
13106 provision a large number of hosts which shall run slightly
13107 different sets of services.
13108
13109 * Services which hit the restart limit will now be placed in a
13110 failure state.
13111
13112 Contributions from: Bertram Poettering, Dave Reisner, Huang
13113 Hang, Kay Sievers, Lennart Poettering, Lukas Nykryn, Martin
13114 Pitt, Simon Peeters, Zbigniew Jędrzejewski-Szmek
13115
13116 CHANGES WITH 188:
13117
13118 * When running in --user mode systemd will now become a
13119 subreaper (PR_SET_CHILD_SUBREAPER). This should make the ps
13120 tree a lot more organized.
13121
13122 * A new PartOf= unit dependency type has been introduced that
13123 may be used to group services in a natural way.
13124
13125 * "systemctl enable" may now be used to enable instances of
13126 services.
13127
13128 * journalctl now prints error log levels in red, and
13129 warning/notice log levels in bright white. It also supports
13130 filtering by log level now.
13131
13132 * cgtop gained a new -n switch (similar to top), to configure
13133 the maximum number of iterations to run for. It also gained
13134 -b, to run in batch mode (accepting no input).
13135
13136 * The suffix ".service" may now be omitted on most systemctl
13137 command lines involving service unit names.
13138
13139 * There's a new bus call in logind to lock all sessions, as
13140 well as a loginctl verb for it "lock-sessions".
13141
13142 * libsystemd-logind.so gained a new call sd_journal_perror()
13143 that works similar to libc perror() but logs to the journal
13144 and encodes structured information about the error number.
13145
13146 * /etc/crypttab entries now understand the new keyfile-size=
13147 option.
13148
13149 * shutdown(8) now can send a (configurable) wall message when
13150 a shutdown is cancelled.
13151
13152 * The mount propagation mode for the root file system will now
13153 default to "shared", which is useful to make containers work
13154 nicely out-of-the-box so that they receive new mounts from
13155 the host. This can be undone locally by running "mount
13156 --make-rprivate /" if needed.
13157
13158 * The prefdm.service file has been removed. Distributions
13159 should maintain this unit downstream if they intend to keep
13160 it around. However, we recommend writing normal unit files
13161 for display managers instead.
13162
13163 * Since systemd is a crucial part of the OS we will now
13164 default to a number of compiler switches that improve
13165 security (hardening) such as read-only relocations, stack
13166 protection, and suchlike.
13167
13168 * The TimeoutSec= setting for services is now split into
13169 TimeoutStartSec= and TimeoutStopSec= to allow configuration
13170 of individual time outs for the start and the stop phase of
13171 the service.
13172
13173 Contributions from: Artur Zaprzala, Arvydas Sidorenko, Auke
13174 Kok, Bryan Kadzban, Dave Reisner, David Strauss, Harald Hoyer,
13175 Jim Meyering, Kay Sievers, Lennart Poettering, Mantas
13176 Mikulėnas, Martin Pitt, Michal Schmidt, Michal Sekletar, Peter
13177 Alfredsen, Shawn Landden, Simon Peeters, Terence Honles, Tom
13178 Gundersen, Zbigniew Jędrzejewski-Szmek
13179
13180 CHANGES WITH 187:
13181
13182 * The journal and id128 C APIs are now fully documented as man
13183 pages.
13184
13185 * Extra safety checks have been added when transitioning from
13186 the initial RAM disk to the main system to avoid accidental
13187 data loss.
13188
13189 * /etc/crypttab entries now understand the new keyfile-offset=
13190 option.
13191
13192 * systemctl -t can now be used to filter by unit load state.
13193
13194 * The journal C API gained the new sd_journal_wait() call to
13195 make writing synchronous journal clients easier.
13196
13197 * journalctl gained the new -D switch to show journals from a
13198 specific directory.
13199
13200 * journalctl now displays a special marker between log
13201 messages of two different boots.
13202
13203 * The journal is now explicitly flushed to /var via a service
13204 systemd-journal-flush.service, rather than implicitly simply
13205 by seeing /var/log/journal to be writable.
13206
13207 * journalctl (and the journal C APIs) can now match for much
13208 more complex expressions, with alternatives and
13209 disjunctions.
13210
13211 * When transitioning from the initial RAM disk to the main
13212 system we will now kill all processes in a killing spree to
13213 ensure no processes stay around by accident.
13214
13215 * Three new specifiers may be used in unit files: %u, %h, %s
13216 resolve to the user name, user home directory resp. user
13217 shell. This is useful for running systemd user instances.
13218
13219 * We now automatically rotate journal files if their data
13220 object hash table gets a fill level > 75%. We also size the
13221 hash table based on the configured maximum file size. This
13222 together should lower hash collisions drastically and thus
13223 speed things up a bit.
13224
13225 * journalctl gained the new "--header" switch to introspect
13226 header data of journal files.
13227
13228 * A new setting SystemCallFilters= has been added to services which may
13229 be used to apply deny lists or allow lists to system calls. This is
13230 based on SECCOMP Mode 2 of Linux 3.5.
13231
13232 * nspawn gained a new --link-journal= switch (and quicker: -j)
13233 to link the container journal with the host. This makes it
13234 very easy to centralize log viewing on the host for all
13235 guests while still keeping the journal files separated.
13236
13237 * Many bugfixes and optimizations
13238
13239 Contributions from: Auke Kok, Eelco Dolstra, Harald Hoyer, Kay
13240 Sievers, Lennart Poettering, Malte Starostik, Paul Menzel, Rex
13241 Tsai, Shawn Landden, Tom Gundersen, Ville Skyttä, Zbigniew
13242 Jędrzejewski-Szmek
13243
13244 CHANGES WITH 186:
13245
13246 * Several tools now understand kernel command line arguments,
13247 which are only read when run in an initial RAM disk. They
13248 usually follow closely their normal counterparts, but are
13249 prefixed with rd.
13250
13251 * There's a new tool to analyze the readahead files that are
13252 automatically generated at boot. Use:
13253
13254 /usr/lib/systemd/systemd-readahead analyze /.readahead
13255
13256 * We now provide an early debug shell on tty9 if this enabled. Use:
13257
13258 systemctl enable debug-shell.service
13259
13260 * All plymouth related units have been moved into the Plymouth
13261 package. Please make sure to upgrade your Plymouth version
13262 as well.
13263
13264 * systemd-tmpfiles now supports getting passed the basename of
13265 a configuration file only, in which case it will look for it
13266 in all appropriate directories automatically.
13267
13268 * udevadm info now takes a /dev or /sys path as argument, and
13269 does the right thing. Example:
13270
13271 udevadm info /dev/sda
13272 udevadm info /sys/class/block/sda
13273
13274 * systemctl now prints a warning if a unit is stopped but a
13275 unit that might trigger it continues to run. Example: a
13276 service is stopped but the socket that activates it is left
13277 running.
13278
13279 * "systemctl status" will now mention if the log output was
13280 shortened due to rotation since a service has been started.
13281
13282 * The journal API now exposes functions to determine the
13283 "cutoff" times due to rotation.
13284
13285 * journald now understands SIGUSR1 and SIGUSR2 for triggering
13286 immediately flushing of runtime logs to /var if possible,
13287 resp. for triggering immediate rotation of the journal
13288 files.
13289
13290 * It is now considered an error if a service is attempted to
13291 be stopped that is not loaded.
13292
13293 * XDG_RUNTIME_DIR now uses numeric UIDs instead of usernames.
13294
13295 * systemd-analyze now supports Python 3
13296
13297 * tmpfiles now supports cleaning up directories via aging
13298 where the first level dirs are always kept around but
13299 directories beneath it automatically aged. This is enabled
13300 by prefixing the age field with '~'.
13301
13302 * Seat objects now expose CanGraphical, CanTTY properties
13303 which is required to deal with very fast bootups where the
13304 display manager might be running before the graphics drivers
13305 completed initialization.
13306
13307 * Seat objects now expose a State property.
13308
13309 * We now include RPM macros for service enabling/disabling
13310 based on the preset logic. We recommend RPM based
13311 distributions to make use of these macros if possible. This
13312 makes it simpler to reuse RPM spec files across
13313 distributions.
13314
13315 * We now make sure that the collected systemd unit name is
13316 always valid when services log to the journal via
13317 STDOUT/STDERR.
13318
13319 * There's a new man page kernel-command-line(7) detailing all
13320 command line options we understand.
13321
13322 * The fstab generator may now be disabled at boot by passing
13323 fstab=0 on the kernel command line.
13324
13325 * A new kernel command line option modules-load= is now understood
13326 to load a specific kernel module statically, early at boot.
13327
13328 * Unit names specified on the systemctl command line are now
13329 automatically escaped as needed. Also, if file system or
13330 device paths are specified they are automatically turned
13331 into the appropriate mount or device unit names. Example:
13332
13333 systemctl status /home
13334 systemctl status /dev/sda
13335
13336 * The SysVConsole= configuration option has been removed from
13337 system.conf parsing.
13338
13339 * The SysV search path is no longer exported on the D-Bus
13340 Manager object.
13341
13342 * The Names= option has been removed from unit file parsing.
13343
13344 * There's a new man page bootup(7) detailing the boot process.
13345
13346 * Every unit and every generator we ship with systemd now
13347 comes with full documentation. The self-explanatory boot is
13348 complete.
13349
13350 * A couple of services gained "systemd-" prefixes in their
13351 name if they wrap systemd code, rather than only external
13352 code. Among them fsck@.service which is now
13353 systemd-fsck@.service.
13354
13355 * The HaveWatchdog property has been removed from the D-Bus
13356 Manager object.
13357
13358 * systemd.confirm_spawn= on the kernel command line should now
13359 work sensibly.
13360
13361 * There's a new man page crypttab(5) which details all options
13362 we actually understand.
13363
13364 * systemd-nspawn gained a new --capability= switch to pass
13365 additional capabilities to the container.
13366
13367 * timedated will now read known NTP implementation unit names
13368 from /usr/lib/systemd/ntp-units.d/*.list,
13369 systemd-timedated-ntp.target has been removed.
13370
13371 * journalctl gained a new switch "-b" that lists log data of
13372 the current boot only.
13373
13374 * The notify socket is in the abstract namespace again, in
13375 order to support daemons which chroot() at start-up.
13376
13377 * There is a new Storage= configuration option for journald
13378 which allows configuration of where log data should go. This
13379 also provides a way to disable journal logging entirely, so
13380 that data collected is only forwarded to the console, the
13381 kernel log buffer or another syslog implementation.
13382
13383 * Many bugfixes and optimizations
13384
13385 Contributions from: Auke Kok, Colin Guthrie, Dave Reisner,
13386 David Strauss, Eelco Dolstra, Kay Sievers, Lennart Poettering,
13387 Lukas Nykryn, Michal Schmidt, Michal Sekletar, Paul Menzel,
13388 Shawn Landden, Tom Gundersen
13389
13390 CHANGES WITH 185:
13391
13392 * "systemctl help <unit>" now shows the man page if one is
13393 available.
13394
13395 * Several new man pages have been added.
13396
13397 * MaxLevelStore=, MaxLevelSyslog=, MaxLevelKMsg=,
13398 MaxLevelConsole= can now be specified in
13399 journald.conf. These options allow reducing the amount of
13400 data stored on disk or forwarded by the log level.
13401
13402 * TimerSlackNSec= can now be specified in system.conf for
13403 PID1. This allows system-wide power savings.
13404
13405 Contributions from: Dave Reisner, Kay Sievers, Lauri Kasanen,
13406 Lennart Poettering, Malte Starostik, Marc-Antoine Perennou,
13407 Matthias Clasen
13408
13409 CHANGES WITH 184:
13410
13411 * logind is now capable of (optionally) handling power and
13412 sleep keys as well as the lid switch.
13413
13414 * journalctl now understands the syntax "journalctl
13415 /usr/bin/avahi-daemon" to get all log output of a specific
13416 daemon.
13417
13418 * CapabilityBoundingSet= in system.conf now also influences
13419 the capability bound set of usermode helpers of the kernel.
13420
13421 Contributions from: Daniel Drake, Daniel J. Walsh, Gert
13422 Michael Kulyk, Harald Hoyer, Jean Delvare, Kay Sievers,
13423 Lennart Poettering, Matthew Garrett, Matthias Clasen, Paul
13424 Menzel, Shawn Landden, Tero Roponen, Tom Gundersen
13425
13426 CHANGES WITH 183:
13427
13428 * Note that we skipped 139 releases here in order to set the
13429 new version to something that is greater than both udev's
13430 and systemd's most recent version number.
13431
13432 * udev: all udev sources are merged into the systemd source tree now.
13433 All future udev development will happen in the systemd tree. It
13434 is still fully supported to use the udev daemon and tools without
13435 systemd running, like in initramfs or other init systems. Building
13436 udev though, will require the *build* of the systemd tree, but
13437 udev can be properly *run* without systemd.
13438
13439 * udev: /lib/udev/devices/ are not read anymore; systemd-tmpfiles
13440 should be used to create dead device nodes as workarounds for broken
13441 subsystems.
13442
13443 * udev: RUN+="socket:…" and udev_monitor_new_from_socket() is
13444 no longer supported. udev_monitor_new_from_netlink() needs to be
13445 used to subscribe to events.
13446
13447 * udev: when udevd is started by systemd, processes which are left
13448 behind by forking them off of udev rules, are unconditionally cleaned
13449 up and killed now after the event handling has finished. Services or
13450 daemons must be started as systemd services. Services can be
13451 pulled-in by udev to get started, but they can no longer be directly
13452 forked by udev rules.
13453
13454 * udev: the daemon binary is called systemd-udevd now and installed
13455 in /usr/lib/systemd/. Standalone builds or non-systemd systems need
13456 to adapt to that, create symlink, or rename the binary after building
13457 it.
13458
13459 * libudev no longer provides these symbols:
13460 udev_monitor_from_socket()
13461 udev_queue_get_failed_list_entry()
13462 udev_get_{dev,sys,run}_path()
13463 The versions number was bumped and symbol versioning introduced.
13464
13465 * systemd-loginctl and systemd-journalctl have been renamed
13466 to loginctl and journalctl to match systemctl.
13467
13468 * The config files: /etc/systemd/systemd-logind.conf and
13469 /etc/systemd/systemd-journald.conf have been renamed to
13470 logind.conf and journald.conf. Package updates should rename
13471 the files to the new names on upgrade.
13472
13473 * For almost all files the license is now LGPL2.1+, changed
13474 from the previous GPL2.0+. Exceptions are some minor stuff
13475 of udev (which will be changed to LGPL2.1 eventually, too),
13476 and the MIT licensed sd-daemon.[ch] library that is suitable
13477 to be used as drop-in files.
13478
13479 * systemd and logind now handle system sleep states, in
13480 particular suspending and hibernating.
13481
13482 * logind now implements a sleep/shutdown/idle inhibiting logic
13483 suitable for a variety of uses. Soonishly Lennart will blog
13484 about this in more detail.
13485
13486 * var-run.mount and var-lock.mount are no longer provided
13487 (which previously bind mounted these directories to their new
13488 places). Distributions which have not converted these
13489 directories to symlinks should consider stealing these files
13490 from git history and add them downstream.
13491
13492 * We introduced the Documentation= field for units and added
13493 this to all our shipped units. This is useful to make it
13494 easier to explore the boot and the purpose of the various
13495 units.
13496
13497 * All smaller setup units (such as
13498 systemd-vconsole-setup.service) now detect properly if they
13499 are run in a container and are skipped when
13500 appropriate. This guarantees an entirely noise-free boot in
13501 Linux container environments such as systemd-nspawn.
13502
13503 * A framework for implementing offline system updates is now
13504 integrated, for details see:
13505 https://www.freedesktop.org/software/systemd/man/systemd.offline-updates.html
13506
13507 * A new service type Type=idle is available now which helps us
13508 avoiding ugly interleaving of getty output and boot status
13509 messages.
13510
13511 * There's now a system-wide CapabilityBoundingSet= option to
13512 globally reduce the set of capabilities for the
13513 system. This is useful to drop CAP_SYS_MKNOD, CAP_SYS_RAWIO,
13514 CAP_NET_RAW, CAP_SYS_MODULE, CAP_SYS_TIME, CAP_SYS_PTRACE or
13515 even CAP_NET_ADMIN system-wide for secure systems.
13516
13517 * There are now system-wide DefaultLimitXXX= options to
13518 globally change the defaults of the various resource limits
13519 for all units started by PID 1.
13520
13521 * Harald Hoyer's systemd test suite has been integrated into
13522 systemd which allows easy testing of systemd builds in qemu
13523 and nspawn. (This is really awesome! Ask us for details!)
13524
13525 * The fstab parser is now implemented as generator, not inside
13526 of PID 1 anymore.
13527
13528 * systemctl will now warn you if .mount units generated from
13529 /etc/fstab are out of date due to changes in fstab that
13530 have not been read by systemd yet.
13531
13532 * systemd is now suitable for usage in initrds. Dracut has
13533 already been updated to make use of this. With this in place
13534 initrds get a slight bit faster but primarily are much
13535 easier to introspect and debug since "systemctl status" in
13536 the host system can be used to introspect initrd services,
13537 and the journal from the initrd is kept around too.
13538
13539 * systemd-delta has been added, a tool to explore differences
13540 between user/admin configuration and vendor defaults.
13541
13542 * PrivateTmp= now affects both /tmp and /var/tmp.
13543
13544 * Boot time status messages are now much prettier and feature
13545 proper english language. Booting up systemd has never been
13546 so sexy.
13547
13548 * Read-ahead pack files now include the inode number of all
13549 files to pre-cache. When the inode changes the pre-caching
13550 is not attempted. This should be nicer to deal with updated
13551 packages which might result in changes of read-ahead
13552 patterns.
13553
13554 * We now temporaritly lower the kernel's read_ahead_kb variable
13555 when collecting read-ahead data to ensure the kernel's
13556 built-in read-ahead does not add noise to our measurements
13557 of necessary blocks to pre-cache.
13558
13559 * There's now RequiresMountsFor= to add automatic dependencies
13560 for all mounts necessary for a specific file system path.
13561
13562 * MountAuto= and SwapAuto= have been removed from
13563 system.conf. Mounting file systems at boot has to take place
13564 in systemd now.
13565
13566 * nspawn now learned a new switch --uuid= to set the machine
13567 ID on the command line.
13568
13569 * nspawn now learned the -b switch to automatically search
13570 for an init system.
13571
13572 * vt102 is now the default TERM for serial TTYs, upgraded from
13573 vt100.
13574
13575 * systemd-logind now works on VT-less systems.
13576
13577 * The build tree has been reorganized. The individual
13578 components now have directories of their own.
13579
13580 * A new condition type ConditionPathIsReadWrite= is now available.
13581
13582 * nspawn learned the new -C switch to create cgroups for the
13583 container in other hierarchies.
13584
13585 * We now have support for hardware watchdogs, configurable in
13586 system.conf.
13587
13588 * The scheduled shutdown logic now has a public API.
13589
13590 * We now mount /tmp as tmpfs by default, but this can be
13591 masked and /etc/fstab can override it.
13592
13593 * Since udisks does not make use of /media anymore we are not
13594 mounting a tmpfs on it anymore.
13595
13596 * journalctl gained a new --local switch to only interleave
13597 locally generated journal files.
13598
13599 * We can now load the IMA policy at boot automatically.
13600
13601 * The GTK tools have been split off into a systemd-ui.
13602
13603 Contributions from: Andreas Schwab, Auke Kok, Ayan George,
13604 Colin Guthrie, Daniel Mack, Dave Reisner, David Ward, Elan
13605 Ruusamäe, Frederic Crozat, Gergely Nagy, Guillermo Vidal,
13606 Hannes Reinecke, Harald Hoyer, Javier Jardón, Kay Sievers,
13607 Lennart Poettering, Lucas De Marchi, Léo Gillot-Lamure,
13608 Marc-Antoine Perennou, Martin Pitt, Matthew Monaco, Maxim
13609 A. Mikityanskiy, Michael Biebl, Michael Olbrich, Michal
13610 Schmidt, Nis Martensen, Patrick McCarty, Roberto Sassu, Shawn
13611 Landden, Sjoerd Simons, Sven Anders, Tollef Fog Heen, Tom
13612 Gundersen
13613
13614 CHANGES WITH 44:
13615
13616 * This is mostly a bugfix release
13617
13618 * Support optional initialization of the machine ID from the
13619 KVM or container configured UUID.
13620
13621 * Support immediate reboots with "systemctl reboot -ff"
13622
13623 * Show /etc/os-release data in systemd-analyze output
13624
13625 * Many bugfixes for the journal, including endianness fixes and
13626 ensuring that disk space enforcement works
13627
13628 * sd-login.h is C++ compatible again
13629
13630 * Extend the /etc/os-release format on request of the Debian
13631 folks
13632
13633 * We now refuse non-UTF8 strings used in various configuration
13634 and unit files. This is done to ensure we do not pass invalid
13635 data over D-Bus or expose it elsewhere.
13636
13637 * Register Mimo USB Screens as suitable for automatic seat
13638 configuration
13639
13640 * Read SELinux client context from journal clients in a race
13641 free fashion
13642
13643 * Reorder configuration file lookup order. /etc now always
13644 overrides /run in order to allow the administrator to always
13645 and unconditionally override vendor-supplied or
13646 automatically generated data.
13647
13648 * The various user visible bits of the journal now have man
13649 pages. We still lack man pages for the journal API calls
13650 however.
13651
13652 * We now ship all man pages in HTML format again in the
13653 tarball.
13654
13655 Contributions from: Dave Reisner, Dirk Eibach, Frederic
13656 Crozat, Harald Hoyer, Kay Sievers, Lennart Poettering, Marti
13657 Raudsepp, Michal Schmidt, Shawn Landden, Tero Roponen, Thierry
13658 Reding
13659
13660 CHANGES WITH 43:
13661
13662 * This is mostly a bugfix release
13663
13664 * systems lacking /etc/os-release are no longer supported.
13665
13666 * Various functionality updates to libsystemd-login.so
13667
13668 * Track class of PAM logins to distinguish greeters from
13669 normal user logins.
13670
13671 Contributions from: Kay Sievers, Lennart Poettering, Michael
13672 Biebl
13673
13674 CHANGES WITH 42:
13675
13676 * This is an important bugfix release for v41.
13677
13678 * Building man pages is now optional which should be useful
13679 for those building systemd from git but unwilling to install
13680 xsltproc.
13681
13682 * Watchdog support for supervising services is now usable. In
13683 a future release support for hardware watchdogs
13684 (i.e. /dev/watchdog) will be added building on this.
13685
13686 * Service start rate limiting is now configurable and can be
13687 turned off per service. When a start rate limit is hit a
13688 reboot can automatically be triggered.
13689
13690 * New CanReboot(), CanPowerOff() bus calls in systemd-logind.
13691
13692 Contributions from: Benjamin Franzke, Bill Nottingham,
13693 Frederic Crozat, Lennart Poettering, Michael Olbrich, Michal
13694 Schmidt, Michał Górny, Piotr Drąg
13695
13696 CHANGES WITH 41:
13697
13698 * The systemd binary is installed /usr/lib/systemd/systemd now;
13699 An existing /sbin/init symlink needs to be adapted with the
13700 package update.
13701
13702 * The code that loads kernel modules has been ported to invoke
13703 libkmod directly, instead of modprobe. This means we do not
13704 support systems with module-init-tools anymore.
13705
13706 * Watchdog support is now already useful, but still not
13707 complete.
13708
13709 * A new kernel command line option systemd.setenv= is
13710 understood to set system wide environment variables
13711 dynamically at boot.
13712
13713 * We now limit the set of capabilities of systemd-journald.
13714
13715 * We now set SIGPIPE to ignore by default, since it only is
13716 useful in shell pipelines, and has little use in general
13717 code. This can be disabled with IgnoreSIPIPE=no in unit
13718 files.
13719
13720 Contributions from: Benjamin Franzke, Kay Sievers, Lennart
13721 Poettering, Michael Olbrich, Michal Schmidt, Tom Gundersen,
13722 William Douglas
13723
13724 CHANGES WITH 40:
13725
13726 * This is mostly a bugfix release
13727
13728 * We now expose the reason why a service failed in the
13729 "Result" D-Bus property.
13730
13731 * Rudimentary service watchdog support (will be completed over
13732 the next few releases.)
13733
13734 * When systemd forks off in order execute some service we will
13735 now immediately changes its argv[0] to reflect which process
13736 it will execute. This is useful to minimize the time window
13737 with a generic argv[0], which makes bootcharts more useful
13738
13739 Contributions from: Alvaro Soliverez, Chris Paulson-Ellis, Kay
13740 Sievers, Lennart Poettering, Michael Olbrich, Michal Schmidt,
13741 Mike Kazantsev, Ray Strode
13742
13743 CHANGES WITH 39:
13744
13745 * This is mostly a test release, but incorporates many
13746 bugfixes.
13747
13748 * New systemd-cgtop tool to show control groups by their
13749 resource usage.
13750
13751 * Linking against libacl for ACLs is optional again. If
13752 disabled, support tracking device access for active logins
13753 goes becomes unavailable, and so does access to the user
13754 journals by the respective users.
13755
13756 * If a group "adm" exists, journal files are automatically
13757 owned by them, thus allow members of this group full access
13758 to the system journal as well as all user journals.
13759
13760 * The journal now stores the SELinux context of the logging
13761 client for all entries.
13762
13763 * Add C++ inclusion guards to all public headers
13764
13765 * New output mode "cat" in the journal to print only text
13766 messages, without any meta data like date or time.
13767
13768 * Include tiny X server wrapper as a temporary stop-gap to
13769 teach XOrg udev display enumeration. This is used by display
13770 managers such as gdm, and will go away as soon as XOrg
13771 learned native udev hotplugging for display devices.
13772
13773 * Add new systemd-cat tool for executing arbitrary programs
13774 with STDERR/STDOUT connected to the journal. Can also act as
13775 BSD logger replacement, and does so by default.
13776
13777 * Optionally store all locally generated coredumps in the
13778 journal along with meta data.
13779
13780 * systemd-tmpfiles learnt four new commands: n, L, c, b, for
13781 writing short strings to files (for usage for /sys), and for
13782 creating symlinks, character and block device nodes.
13783
13784 * New unit file option ControlGroupPersistent= to make cgroups
13785 persistent, following the mechanisms outlined in
13786 https://www.freedesktop.org/wiki/Software/systemd/PaxControlGroups
13787
13788 * Support multiple local RTCs in a sane way
13789
13790 * No longer monopolize IO when replaying readahead data on
13791 rotating disks, since we might starve non-file-system IO to
13792 death, since fanotify() will not see accesses done by blkid,
13793 or fsck.
13794
13795 * Do not show kernel threads in systemd-cgls anymore, unless
13796 requested with new -k switch.
13797
13798 Contributions from: Dan Horák, Kay Sievers, Lennart
13799 Poettering, Michal Schmidt
13800
13801 CHANGES WITH 38:
13802
13803 * This is mostly a test release, but incorporates many
13804 bugfixes.
13805
13806 * The git repository moved to:
13807 git://anongit.freedesktop.org/systemd/systemd
13808 ssh://git.freedesktop.org/git/systemd/systemd
13809
13810 * First release with the journal
13811 http://0pointer.de/blog/projects/the-journal.html
13812
13813 * The journal replaces both systemd-kmsg-syslogd and
13814 systemd-stdout-bridge.
13815
13816 * New sd_pid_get_unit() API call in libsystemd-logind
13817
13818 * Many systemadm clean-ups
13819
13820 * Introduce remote-fs-pre.target which is ordered before all
13821 remote mounts and may be used to start services before all
13822 remote mounts.
13823
13824 * Added Mageia support
13825
13826 * Add bash completion for systemd-loginctl
13827
13828 * Actively monitor PID file creation for daemons which exit in
13829 the parent process before having finished writing the PID
13830 file in the daemon process. Daemons which do this need to be
13831 fixed (i.e. PID file creation must have finished before the
13832 parent exits), but we now react a bit more gracefully to them.
13833
13834 * Add colourful boot output, mimicking the well-known output
13835 of existing distributions.
13836
13837 * New option PassCredentials= for socket units, for
13838 compatibility with a recent kernel ABI breakage.
13839
13840 * /etc/rc.local is now hooked in via a generator binary, and
13841 thus will no longer act as synchronization point during
13842 boot.
13843
13844 * systemctl list-unit-files now supports --root=.
13845
13846 * systemd-tmpfiles now understands two new commands: z, Z for
13847 relabelling files according to the SELinux database. This is
13848 useful to apply SELinux labels to specific files in /sys,
13849 among other things.
13850
13851 * Output of SysV services is now forwarded to both the console
13852 and the journal by default, not only just the console.
13853
13854 * New man pages for all APIs from libsystemd-login.
13855
13856 * The build tree got reorganized and the build system is a
13857 lot more modular allowing embedded setups to specifically
13858 select the components of systemd they are interested in.
13859
13860 * Support for Linux systems lacking the kernel VT subsystem is
13861 restored.
13862
13863 * configure's --with-rootdir= got renamed to
13864 --with-rootprefix= to follow the naming used by udev and
13865 kmod
13866
13867 * Unless specified otherwise we will now install to /usr instead
13868 of /usr/local by default.
13869
13870 * Processes with '@' in argv[0][0] are now excluded from the
13871 final shut-down killing spree, following the logic explained
13872 in:
13873 https://systemd.io/ROOT_STORAGE_DAEMONS/
13874
13875 * All processes remaining in a service cgroup when we enter
13876 the START or START_PRE states are now killed with
13877 SIGKILL. That means it is no longer possible to spawn
13878 background processes from ExecStart= lines (which was never
13879 supported anyway, and bad style).
13880
13881 * New PropagateReloadTo=/PropagateReloadFrom= options to bind
13882 reloading of units together.
13883
13884 Contributions from: Bill Nottingham, Daniel J. Walsh, Dave
13885 Reisner, Dexter Morgan, Gregs Gregs, Jonathan Nieder, Kay
13886 Sievers, Lennart Poettering, Michael Biebl, Michal Schmidt,
13887 Michał Górny, Ran Benita, Thomas Jarosch, Tim Waugh, Tollef
13888 Fog Heen, Tom Gundersen, Zbigniew Jędrzejewski-Szmek