27 | | * Services with Type=oneshot do not have to have any ExecStart |
28 | | commands anymore. |
29 | | |
30 | | * User units are now loaded also from |
31 | | $XDG_RUNTIME_DIR/systemd/user/. This is similar to the |
32 | | /run/systemd/user directory that was already previously |
33 | | supported, but is under the control of the user. |
34 | | |
35 | | * Job timeouts (i.e. time-outs on the time a job that is |
36 | | queued stays in the run queue) can now optionally result in |
37 | | immediate reboot or power-off actions (JobTimeoutAction= and |
38 | | JobTimeoutRebootArgument=). This is useful on ".target" |
39 | | units, to limit the maximum time a target remains |
40 | | undispatched in the run queue, and to trigger an emergency |
41 | | operation in such a case. This is now used by default to |
42 | | turn off the system if boot-up (as defined by everything in |
43 | | basic.target) hangs and does not complete for at least |
44 | | 15min. Also, if power-off or reboot hang for at least 30min |
45 | | an immediate power-off/reboot operation is triggered. This |
46 | | functionality is particularly useful to increase reliability |
47 | | on embedded devices, but also on laptops which might |
48 | | accidentally get powered on when carried in a backpack and |
49 | | whose boot stays stuck in a hard disk encryption passphrase |
50 | | question. |
51 | | |
52 | | * systemd-logind can be configured to also handle lid switch |
53 | | events even when the machine is docked or multiple displays |
54 | | are attached (HandleLidSwitchDocked= option). |
55 | | |
56 | | * A helper binary and a service have been added which can be |
57 | | used to resume from hibernation in the initramfs. A |
58 | | generator will parse the resume= option on the kernel |
59 | | command-line to trigger resume. |
60 | | |
61 | | * A user console daemon systemd-consoled has been |
62 | | added. Currently, it is a preview, and will so far open a |
63 | | single terminal on each session of the user marked as |
64 | | Desktop=systemd-console. |
65 | | |
66 | | * Route metrics can be specified for DHCP routes added by |
67 | | systemd-networkd. |
68 | | |
69 | | * The SELinux context of socket-activated services can be set |
70 | | from the information provided by the networking stack |
71 | | (SELinuxContextFromNet= option). |
72 | | |
73 | | * Userspace firmware loading support has been removed and |
74 | | the minimum supported kernel version is thus bumped to 3.7. |
75 | | |
76 | | * Timeout for udev workers has been increased from 1 to 3 |
77 | | minutes, but a warning will be printed after 1 minute to |
78 | | help diagnose kernel modules that take a long time to load. |
79 | | |
80 | | * Udev rules can now remove tags on devices with TAG-="foobar". |
81 | | |
82 | | * systemd's readahead implementation has been removed. In many |
83 | | circumstances it didn't give expected benefits even for |
84 | | rotational disk drives and was becoming less relevant in the |
85 | | age of SSDs. As none of the developers has been using |
86 | | rotating media anymore, and nobody stepped up to actively |
87 | | maintain this component of systemd it has now been removed. |
88 | | |
89 | | * Swap units can use Discard= to specify discard options. |
90 | | Discard options specified for swaps in /etc/fstab are now |
91 | | respected. |
92 | | |
93 | | * Docker containers are now detected as a separate type of |
94 | | virtualization. |
95 | | |
96 | | * The Password Agent protocol gained support for queries where |
97 | | the user input is shown, useful e.g. for user names. |
98 | | systemd-ask-password gained a new --echo option to turn that |
99 | | on. |
100 | | |
101 | | * The default sysctl.d/ snippets will now set: |
102 | | |
103 | | net.core.default_qdisc = fq_codel |
104 | | |
105 | | This selects Fair Queuing Controlled Delay as the default |
106 | | queuing discipline for network interfaces. fq_codel helps |
107 | | fight the network bufferbloat problem. It is believed to be |
108 | | a good default with no tuning required for most workloads. |
109 | | Downstream distributions may override this choice. On 10Gbit |
110 | | servers that do not do forwarding, "fq" may perform better. |
111 | | Systems without a good clocksource should use "pfifo_fast". |
112 | | |
113 | | * If kdbus is enabled during build a new option BusPolicy= is |
114 | | available for service units, that allows locking all service |
115 | | processes into a stricter bus policy, in order to limit |
116 | | access to various bus services, or even hide most of them |
117 | | from the service's view entirely. |
118 | | |
119 | | * networkctl will now show the .network and .link file |
120 | | networkd has applied to a specific interface. |
121 | | |
122 | | * sd-login gained a new API call sd_session_get_desktop() to |
123 | | query which desktop environment has been selected for a |
124 | | session. |
125 | | |
126 | | * UNIX utmp support is now compile-time optional to support |
127 | | legacy-free systems. |
128 | | |
129 | | * systemctl gained two new commands "add-wants" and |
130 | | "add-requires" for pulling in units from specific targets |
131 | | easily. |
132 | | |
133 | | * If the word "rescue" is specified on the kernel command line |
134 | | the system will now boot into rescue mode (aka |
135 | | rescue.target), which was previously available only by |
136 | | specifying "1" or "systemd.unit=rescue.target" on the kernel |
137 | | command line. This new kernel command line option nicely |
138 | | mirrors the already existing "emergency" kernel command line |
139 | | option. |
140 | | |
141 | | * New kernel command line options mount.usr=, mount.usrflags=, |
142 | | mount.usrfstype= have been added that match root=, rootflags=, |
143 | | rootfstype= but allow mounting a specific file system to |
144 | | /usr. |
145 | | |
146 | | * The $NOTIFY_SOCKET is now also passed to control processes of |
147 | | services, not only the main process. |
148 | | |
149 | | * This version reenables support for fsck's -l switch. This |
150 | | means at least version v2.25 of util-linux is required for |
151 | | operation, otherwise dead-locks on device nodes may |
152 | | occur. Again: you need to update util-linux to at least |
153 | | v2.25 when updating systemd to v217. |
154 | | |
155 | | * The "multi-seat-x" tool has been removed from systemd, as |
156 | | its functionality has been integrated into X servers 1.16, |
157 | | and the tool is hence redundant. It is recommended to update |
158 | | display managers invoking this tool to simply invoke X |
159 | | directly from now on, again. |
160 | | |
161 | | * Support for the new ALLOW_INTERACTIVE_AUTHORIZATION D-Bus |
162 | | message flag has been added for all of systemd's PolicyKit |
163 | | authenticated method calls has been added. In particular |
164 | | this now allows optional interactive authorization via |
165 | | PolicyKit for many of PID1's privileged operations such as |
166 | | unit file enabling and disabling. |
167 | | |
168 | | * "udevadm hwdb --update" learnt a new switch "--usr" for |
169 | | placing the rebuilt hardware database in /usr instead of |
170 | | /etc. When used only hardware database entries stored in |
171 | | /usr will be used, and any user database entries in /etc are |
172 | | ignored. This functionality is useful for vendors to ship a |
173 | | pre-built database on systems where local configuration is |
174 | | unnecessary or unlikely. |
175 | | |
176 | | * Calendar time specifications in .timer units now also |
177 | | understand the strings "semi-annually", "quarterly" and |
178 | | "minutely" as shortcuts (in addition to the preexisting |
179 | | "anually", "hourly", ...). |
180 | | |
181 | | * systemd-tmpfiles will now correctly create files in /dev |
182 | | at boot which are marked for creation only at boot. It is |
183 | | recommended to always create static device nodes with 'c!' |
184 | | and 'b!', so that they are created only at boot and not |
185 | | overwritten at runtime. |
186 | | |
187 | | * When the watchdog logic is used for a service (WatchdogSec=) |
188 | | and the watchdog timeout is hit the service will now be |
189 | | terminated with SIGABRT (instead of just SIGTERM), in order |
190 | | to make sure a proper coredump and backtrace is |
191 | | generated. This ensures that hanging services will result in |
192 | | similar coredump/backtrace behaviour as services that hit a |
193 | | segmentation fault. |
194 | | |
195 | | CHANGES WITH 216: |
196 | | |
197 | | * timedated no longer reads NTP implementation unit names from |
198 | | /usr/lib/systemd/ntp-units.d/*.list. Alternative NTP |
199 | | implementations should add a |
200 | | |
201 | | Conflicts=systemd-timesyncd.service |
202 | | |
203 | | to their unit files to take over and replace systemd's NTP |
204 | | default functionality. |
205 | | |
206 | | * systemd-sysusers gained a new line type "r" for configuring |
207 | | which UID/GID ranges to allocate system users/groups |
208 | | from. Lines of type "u" may now add an additional column |
209 | | that specifies the home directory for the system user to be |
210 | | created. Also, systemd-sysusers may now optionally read user |
211 | | information from STDIN instead of a file. This is useful for |
212 | | invoking it from RPM preinst scriptlets that need to create |
213 | | users before the first RPM file is installed since these |
214 | | files might need to be owned by them. A new |
215 | | %sysusers_create_inline RPM macro has been introduced to do |
216 | | just that. systemd-sysusers now updates the shadow files as |
217 | | well as the user/group databases, which should enhance |
218 | | compatibility with certain tools like grpck. |
219 | | |
220 | | * A number of bus APIs of PID 1 now optionally consult |
221 | | PolicyKit to permit access for otherwise unprivileged |
222 | | clients under certain conditions. Note that this currently |
223 | | doesn't support interactive authentication yet, but this is |
224 | | expected to be added eventually, too. |
225 | | |
226 | | * /etc/machine-info now has new fields for configuring the |
227 | | deployment environment of the machine, as well as the |
228 | | location of the machine. hostnamectl has been updated with |
229 | | new command to update these fields. |
230 | | |
231 | | * systemd-timesyncd has been updated to automatically acquire |
232 | | NTP server information from systemd-networkd, which might |
233 | | have been discovered via DHCP. |
234 | | |
235 | | * systemd-resolved now includes a caching DNS stub resolver |
236 | | and a complete LLMNR name resolution implementation. A new |
237 | | NSS module "nss-resolve" has been added which make be used |
238 | | of glibc's own "nss-dns" to resolve hostnames via |
239 | | systemd-resolved. Hostnames, addresses and arbitrary RRs may |
240 | | be resolved via systemd-resolved D-Bus APIs. In contrast to |
241 | | the glibc internal resolver systemd-resolved is aware of |
242 | | multi-homed system, and keeps DNS server and caches separate |
243 | | and per-interface. Queries are sent simultaneously on all |
244 | | interfaces that have DNS servers configured, in order to |
245 | | properly handle VPNs and local LANs which might resolve |
246 | | separate sets of domain names. systemd-resolved may acquire |
247 | | DNS server information from systemd-networkd automatically, |
248 | | which in turn might have discovered them via DHCP. A tool |
249 | | "systemd-resolve-host" has been added that may be used to |
250 | | query the DNS logic in resolved. systemd-resolved implements |
251 | | IDNA and automatically uses IDNA or UTF-8 encoding depending |
252 | | on whether classic DNS or LLMNR is used as transport. In the |
253 | | next releases we intend to add a DNSSEC and mDNS/DNS-SD |
254 | | implementation to systemd-resolved. |
255 | | |
256 | | * A new NSS module nss-mymachines has been added, that |
257 | | automatically resolves the names of all local registered |
258 | | containers to their respective IP addresses. |
259 | | |
260 | | * A new client tool "networkctl" for systemd-networkd has been |
261 | | added. It currently is entirely passive and will query |
262 | | networking configuration from udev, rtnetlink and networkd, |
263 | | and present it to the user in a very friendly |
264 | | way. Eventually, we hope to extend it to become a full |
265 | | control utility for networkd. |
266 | | |
267 | | * .socket units gained a new DeferAcceptSec= setting that |
268 | | controls the kernels' TCP_DEFER_ACCEPT sockopt for |
269 | | TCP. Similar, support for controlling TCP keep-alive |
270 | | settings has been added (KeepAliveTimeSec=, |
271 | | KeepAliveIntervalSec=, KeepAliveProbes=). Also, support for |
272 | | turning off Nagle's algorithm on TCP has been added |
273 | | (NoDelay=). |
274 | | |
275 | | * logind learned a new session type "web", for use in projects |
276 | | like Cockpit which register web clients as PAM sessions. |
277 | | |
278 | | * timer units with at least one OnCalendar= setting will now |
279 | | be started only after timer-sync.target has been |
280 | | reached. This way they will not elapse before the system |
281 | | clock has been corrected by a local NTP client or |
282 | | similar. This is particular useful on RTC-less embedded |
283 | | machines, that come up with an invalid system clock. |
284 | | |
285 | | * systemd-nspawn's --network-veth= switch should now result in |
286 | | stable MAC addresses for both the outer and the inner side |
287 | | of the link. |
288 | | |
289 | | * systemd-nspawn gained a new --volatile= switch for running |
290 | | container instances with /etc or /var unpopulated. |
291 | | |
292 | | * The kdbus client code has been updated to use the new Linux |
293 | | 3.17 memfd subsystem instead of the old kdbus-specific one. |
294 | | |
295 | | * systemd-networkd's DHCP client and server now support |
296 | | FORCERENEW. There are also new configuration options to |
297 | | configure the vendor client identifier and broadcast mode |
298 | | for DHCP. |
299 | | |
300 | | * systemd will no longer inform the kernel about the current |
301 | | timezone, as this is necessarily incorrect and racy as the |
302 | | kernel has no understanding of DST and similar |
303 | | concepts. This hence means FAT timestamps will be always |
304 | | considered UTC, similar to what Android is already |
305 | | doing. Also, when the RTC is configured to the local time |
306 | | (rather than UTC) systemd will never synchronize back to it, |
307 | | as this might confuse Windows at a later boot. |
308 | | |
309 | | * systemd-analyze gained a new command "verify" for offline |
310 | | validation of unit files. |
311 | | |
312 | | * systemd-networkd gained support for a couple of additional |
313 | | settings for bonding networking setups. Also, the metric for |
314 | | statically configured routes may now be configured. For |
315 | | network interfaces where this is appropriate the peer IP |
316 | | address may now be configured. |
317 | | |
318 | | * systemd-networkd's DHCP client will no longer request |
319 | | broadcasting by default, as this tripped up some networks. |
320 | | For hardware where broadcast is required the feature should |
321 | | be switched back on using RequestBroadcast=yes. |
322 | | |
323 | | * systemd-networkd will now set up IPv4LL addresses (when |
324 | | enabled) even if DHCP is configured successfully. |
325 | | |
326 | | * udev will now default to respect network device names given |
327 | | by the kernel when the kernel indicates that these are |
328 | | predictable. This behavior can be tweaked by changing |
329 | | NamePolicy= in the relevant .link file. |
330 | | |
331 | | * A new library systemd-terminal has been added that |
332 | | implements full TTY stream parsing and rendering. This |
333 | | library is supposed to be used later on for implementing a |
334 | | full userspace VT subsystem, replacing the current kernel |
335 | | implementation. |
336 | | |
337 | | * A new tool systemd-journal-upload has been added to push |
338 | | journal data to a remote system running |
339 | | systemd-journal-remote. |
340 | | |
341 | | * journald will no longer forward all local data to another |
342 | | running syslog daemon. This change has been made because |
343 | | rsyslog (which appears to be the most commonly used syslog |
344 | | implementation these days) no longer makes use of this, and |
345 | | instead pulls the data out of the journal on its own. Since |
346 | | forwarding the messages to a non-existent syslog server is |
347 | | more expensive than we assumed we have now turned this |
348 | | off. If you run a syslog server that is not a recent rsyslog |
349 | | version, you have to turn this option on again |
350 | | (ForwardToSyslog= in journald.conf). |
351 | | |
352 | | * journald now optionally supports the LZ4 compressor for |
353 | | larger journal fields. This compressor should perform much |
354 | | better than XZ which was the previous default. |
355 | | |
356 | | * machinectl now shows the IP addresses of local containers, |
357 | | if it knows them, plus the interface name of the container. |
358 | | |
359 | | * A new tool "systemd-escape" has been added that makes it |
360 | | easy to escape strings to build unit names and similar. |
361 | | |
362 | | * sd_notify() messages may now include a new ERRNO= field |
363 | | which is parsed and collected by systemd and shown among the |
364 | | "systemctl status" output for a service. |
365 | | |
366 | | * A new component "systemd-firstboot" has been added that |
367 | | queries the most basic systemd information (timezone, |
368 | | hostname, root password) interactively on first |
369 | | boot. Alternatively it may also be used to provision these |
370 | | things offline on OS images installed into directories. |
371 | | |
372 | | * The default sysctl.d/ snippets will now set |
373 | | |
374 | | net.ipv4.conf.default.promote_secondaries=1 |
375 | | |
376 | | This has the benefit of no flushing secondary IP addresses |
377 | | when primary addresses are removed. |
378 | | |
379 | | Contributions from: Ansgar Burchardt, Bastien Nocera, Colin |
380 | | Walters, Dan Dedrick, Daniel Buch, Daniel Korostil, Daniel |
381 | | Mack, Dan Williams, Dave Reisner, David Herrmann, Denis |
382 | | Kenzior, Eelco Dolstra, Eric Cook, Hannes Reinecke, Harald |
383 | | Hoyer, Hong Shick Pak, Hui Wang, Jean-André Santoni, Jóhann |
384 | | B. Guðmundsson, Jon Severinsson, Karel Zak, Kay Sievers, Kevin |
385 | | Wells, Lennart Poettering, Lukas Nykryn, Mantas Mikulėnas, |
386 | | Marc-Antoine Perennou, Martin Pitt, Michael Biebl, Michael |
387 | | Marineau, Michael Olbrich, Michal Schmidt, Michal Sekletar, |
388 | | Miguel Angel Ajo, Mike Gilbert, Olivier Brunel, Robert |
389 | | Schiele, Ronny Chevalier, Simon McVittie, Sjoerd Simons, Stef |
390 | | Walter, Steven Noonan, Susant Sahani, Tanu Kaskinen, Thomas |
391 | | Blume, Thomas Hindoe Paaboel Andersen, Timofey Titovets, |
392 | | Tobias Geerinckx-Rice, Tomasz Torcz, Tom Gundersen, Umut |
393 | | Tezduyar Lindskog, Zbigniew Jędrzejewski-Szmek |
394 | | |
395 | | -- Berlin, 2014-08-19 |
396 | | |
397 | | CHANGES WITH 215: |
398 | | |
399 | | * A new tool systemd-sysusers has been added. This tool |
400 | | creates system users and groups in /etc/passwd and |
401 | | /etc/group, based on static declarative system user/group |
402 | | definitions in /usr/lib/sysusers.d/. This is useful to |
403 | | enable factory resets and volatile systems that boot up with |
404 | | an empty /etc directory, and thus need system users and |
405 | | groups created during early boot. systemd now also ships |
406 | | with two default sysusers.d/ files for the most basic |
407 | | users and groups systemd and the core operating system |
408 | | require. |
409 | | |
410 | | * A new tmpfiles snippet has been added that rebuilds the |
411 | | essential files in /etc on boot, should they be missing. |
412 | | |
413 | | * A directive for ensuring automatic clean-up of |
414 | | /var/cache/man/ has been removed from the default |
415 | | configuration. This line should now be shipped by the man |
416 | | implementation. The necessary change has been made to the |
417 | | man-db implementation. Note that you need to update your man |
418 | | implementation to one that ships this line, otherwise no |
419 | | automatic clean-up of /var/cache/man will take place. |
420 | | |
421 | | * A new condition ConditionNeedsUpdate= has been added that |
422 | | may conditionalize services to only run when /etc or /var |
423 | | are "older" than the vendor operating system resources in |
424 | | /usr. This is useful for reconstructing or updating /etc |
425 | | after an offline update of /usr or a factory reset, on the |
426 | | next reboot. Services that want to run once after such an |
427 | | update or reset should use this condition and order |
428 | | themselves before the new systemd-update-done.service, which |
429 | | will mark the two directories as fully updated. A number of |
430 | | service files have been added making use of this, to rebuild |
431 | | the udev hardware database, the journald message catalog and |
432 | | dynamic loader cache (ldconfig). The systemd-sysusers tool |
433 | | described above also makes use of this now. With this in |
434 | | place it is now possible to start up a minimal operating |
435 | | system with /etc empty cleanly. For more information on the |
436 | | concepts involved see this recent blog story: |
437 | | |
438 | | http://0pointer.de/blog/projects/stateless.html |
439 | | |
440 | | * A new system group "input" has been introduced, and all |
441 | | input device nodes get this group assigned. This is useful |
442 | | for system-level software to get access to input devices. It |
443 | | complements what is already done for "audio" and "video". |
444 | | |
445 | | * systemd-networkd learnt minimal DHCPv4 server support in |
446 | | addition to the existing DHCPv4 client support. It also |
447 | | learnt DHCPv6 client and IPv6 Router Solicitation client |
448 | | support. The DHCPv4 client gained support for static routes |
449 | | passed in from the server. Note that the [DHCPv4] section |
450 | | known in older systemd-networkd versions has been renamed to |
451 | | [DHCP] and is now also used by the DHCPv6 client. Existing |
452 | | .network files using settings of this section should be |
453 | | updated, though compatibility is maintained. Optionally, the |
454 | | client hostname may now be sent to the DHCP server. |
455 | | |
456 | | * networkd gained support for vxlan virtual networks as well |
457 | | as tun/tap and dummy devices. |
458 | | |
459 | | * networkd gained support for automatic allocation of address |
460 | | ranges for interfaces from a system-wide pool of |
461 | | addresses. This is useful for dynamically managing a large |
462 | | number of interfaces with a single network configuration |
463 | | file. In particular this is useful to easily assign |
464 | | appropriate IP addresses to the veth links of a large number |
465 | | of nspawn instances. |
466 | | |
467 | | * RPM macros for processing sysusers, sysctl and binfmt |
468 | | drop-in snippets at package installation time have been |
469 | | added. |
470 | | |
471 | | * The /etc/os-release file should now be placed in |
472 | | /usr/lib/os-release. The old location is automatically |
473 | | created as symlink. /usr/lib is the more appropriate |
474 | | location of this file, since it shall actually describe the |
475 | | vendor operating system shipped in /usr, and not the |
476 | | configuration stored in /etc. |
477 | | |
478 | | * .mount units gained a new boolean SloppyOptions= setting |
479 | | that maps to mount(8)'s -s option which enables permissive |
480 | | parsing of unknown mount options. |
481 | | |
482 | | * tmpfiles learnt a new "L+" directive which creates a symlink |
483 | | but (unlike "L") deletes a pre-existing file first, should |
484 | | it already exist and not already be the correct |
485 | | symlink. Similar, "b+", "c+" and "p+" directives have been |
486 | | added as well, which create block and character devices, as |
487 | | well as fifos in the filesystem, possibly removing any |
488 | | pre-existing files of different types. |
489 | | |
490 | | * For tmpfiles' "L", "L+", "C" and "C+" directives the final |
491 | | 'argument' field (which so far specified the source to |
492 | | symlink/copy the files from) is now optional. If omitted the |
493 | | same file os copied from /usr/share/factory/ suffixed by the |
494 | | full destination path. This is useful for populating /etc |
495 | | with essential files, by copying them from vendor defaults |
496 | | shipped in /usr/share/factory/etc. |
497 | | |
498 | | * A new command "systemctl preset-all" has been added that |
499 | | applies the service preset settings to all installed unit |
500 | | files. A new switch --preset-mode= has been added that |
501 | | controls whether only enable or only disable operations |
502 | | shall be executed. |
503 | | |
504 | | * A new command "systemctl is-system-running" has been added |
505 | | that allows checking the overall state of the system, for |
506 | | example whether it is fully up and running. |
507 | | |
508 | | * When the system boots up with an empty /etc, the equivalent |
509 | | to "systemctl preset-all" is executed during early boot, to |
510 | | make sure all default services are enabled after a factory |
511 | | reset. |
512 | | |
513 | | * systemd now contains a minimal preset file that enables the |
514 | | most basic services systemd ships by default. |
515 | | |
516 | | * Unit files' [Install] section gained a new DefaultInstance= |
517 | | field for defining the default instance to create if a |
518 | | template unit is enabled with no instance specified. |
519 | | |
520 | | * A new passive target cryptsetup-pre.target has been added |
521 | | that may be used by services that need to make they run and |
522 | | finish before the first LUKS cryptographic device is set up. |
523 | | |
524 | | * The /dev/loop-control and /dev/btrfs-control device nodes |
525 | | are now owned by the "disk" group by default, opening up |
526 | | access to this group. |
527 | | |
528 | | * systemd-coredump will now automatically generate a |
529 | | stack trace of all core dumps taking place on the system, |
530 | | based on elfutils' libdw library. This stack trace is logged |
531 | | to the journal. |
532 | | |
533 | | * systemd-coredump may now optionally store coredumps directly |
534 | | on disk (in /var/lib/systemd/coredump, possibly compressed), |
535 | | instead of storing them unconditionally in the journal. This |
536 | | mode is the new default. A new configuration file |
537 | | /etc/systemd/coredump.conf has been added to configure this |
538 | | and other parameters of systemd-coredump. |
539 | | |
540 | | * coredumpctl gained a new "info" verb to show details about a |
541 | | specific coredump. A new switch "-1" has also been added |
542 | | that makes sure to only show information about the most |
543 | | recent entry instead of all entries. Also, as the tool is |
544 | | generally useful now the "systemd-" prefix of the binary |
545 | | name has been removed. Distributions that want to maintain |
546 | | compatibility with the old name should add a symlink from |
547 | | the old name to the new name. |
548 | | |
549 | | * journald's SplitMode= now defaults to "uid". This makes sure |
550 | | that unprivileged users can access their own coredumps with |
551 | | coredumpctl without restrictions. |
552 | | |
553 | | * New kernel command line options "systemd.wants=" (for |
554 | | pulling an additional unit during boot), "systemd.mask=" |
555 | | (for masking a specific unit for the boot), and |
556 | | "systemd.debug-shell" (for enabling the debug shell on tty9) |
557 | | have been added. This is implemented in the new generator |
558 | | "systemd-debug-generator". |
559 | | |
560 | | * systemd-nspawn will now by default filter a couple of |
561 | | syscalls for containers, among them those required for |
562 | | kernel module loading, direct x86 IO port access, swap |
563 | | management, and kexec. Most importantly though |
564 | | open_by_handle_at() is now prohibited for containers, |
565 | | closing a hole similar to a recently discussed vulnerability |
566 | | in docker regarding access to files on file hierarchies the |
567 | | container should normally not have access to. Note that for |
568 | | nspawn we generally make no security claims anyway (and |
569 | | this is explicitly documented in the man page), so this is |
570 | | just a fix for one of the most obvious problems. |
571 | | |
572 | | * A new man page file-hierarchy(7) has been added that |
573 | | contains a minimized, modernized version of the file system |
574 | | layout systemd expects, similar in style to the FHS |
575 | | specification or hier(5). A new tool systemd-path(1) has |
576 | | been added to query many of these paths for the local |
577 | | machine and user. |
578 | | |
579 | | * Automatic time-based clean-up of $XDG_RUNTIME_DIR is no |
580 | | longer done. Since the directory now has a per-user size |
581 | | limit, and is cleaned on logout this appears unnecessary, |
582 | | in particular since this now brings the lifecycle of this |
583 | | directory closer in line with how IPC objects are handled. |
584 | | |
585 | | * systemd.pc now exports a number of additional directories, |
586 | | including $libdir (which is useful to identify the library |
587 | | path for the primary architecture of the system), and a |
588 | | couple of drop-in directories. |
589 | | |
590 | | * udev's predictable network interface names now use the dev_port |
591 | | sysfs attribute, introduced in linux 3.15 instead of dev_id to |
592 | | distinguish between ports of the same PCI function. dev_id should |
593 | | only be used for ports using the same HW address, hence the need |
594 | | for dev_port. |
595 | | |
596 | | * machined has been updated to export the OS version of a |
597 | | container (read from /etc/os-release and |
598 | | /usr/lib/os-release) on the bus. This is now shown in |
599 | | "machinectl status" for a machine. |
600 | | |
601 | | * A new service setting RestartForceExitStatus= has been |
602 | | added. If configured to a set of exit signals or process |
603 | | return values, the service will be restarted when the main |
604 | | daemon process exits with any of them, regardless of the |
605 | | Restart= setting. |
606 | | |
607 | | * systemctl's -H switch for connecting to remote systemd |
608 | | machines has been extended so that it may be used to |
609 | | directly connect to a specific container on the |
610 | | host. "systemctl -H root@foobar:waldi" will now connect as |
611 | | user "root" to host "foobar", and then proceed directly to |
612 | | the container named "waldi". Note that currently you have to |
613 | | authenticate as user "root" for this to work, as entering |
614 | | containers is a privileged operation. |
615 | | |
616 | | Contributions from: Andreas Henriksson, Benjamin Steinwender, |
617 | | Carl Schaefer, Christian Hesse, Colin Ian King, Cristian |
618 | | Rodríguez, Daniel Mack, Dave Reisner, David Herrmann, Eugene |
619 | | Yakubovich, Filipe Brandenburger, Frederic Crozat, Hristo |
620 | | Venev, Jan Engelhardt, Jonathan Boulle, Kay Sievers, Lennart |
621 | | Poettering, Luke Shumaker, Mantas Mikulėnas, Marc-Antoine |
622 | | Perennou, Marcel Holtmann, Michael Marineau, Michael Olbrich, |
623 | | Michał Bartoszkiewicz, Michal Sekletar, Patrik Flykt, Ronan Le |
624 | | Martret, Ronny Chevalier, Ruediger Oertel, Steven Noonan, |
625 | | Susant Sahani, Thadeu Lima de Souza Cascardo, Thomas Hindoe |
626 | | Paaboel Andersen, Tom Gundersen, Tom Hirst, Umut Tezduyar |
627 | | Lindskog, Uoti Urpala, Zbigniew Jędrzejewski-Szmek |
628 | | |
629 | | -- Berlin, 2014-07-03 |
630 | | |
631 | | CHANGES WITH 214: |
632 | | |
633 | | * As an experimental feature, udev now tries to lock the |
634 | | disk device node (flock(LOCK_SH|LOCK_NB)) while it |
635 | | executes events for the disk or any of its partitions. |
636 | | Applications like partitioning programs can lock the |
637 | | disk device node (flock(LOCK_EX)) and claim temporary |
638 | | device ownership that way; udev will entirely skip all event |
639 | | handling for this disk and its partitions. If the disk |
640 | | was opened for writing, the close will trigger a partition |
641 | | table rescan in udev's "watch" facility, and if needed |
642 | | synthesize "change" events for the disk and all its partitions. |
643 | | This is now unconditionally enabled, and if it turns out to |
644 | | cause major problems, we might turn it on only for specific |
645 | | devices, or might need to disable it entirely. Device Mapper |
646 | | devices are excluded from this logic. |
647 | | |
648 | | * We temporarily dropped the "-l" switch for fsck invocations, |
649 | | since they collide with the flock() logic above. util-linux |
650 | | upstream has been changed already to avoid this conflict, |
651 | | and we will readd "-l" as soon as util-linux with this |
652 | | change has been released. |
653 | | |
654 | | * The dependency on libattr has been removed. Since a long |
655 | | time, the extended attribute calls have moved to glibc, and |
656 | | libattr is thus unnecessary. |
657 | | |
658 | | * Virtualization detection works without priviliges now. This |
659 | | means the systemd-detect-virt binary no longer requires |
660 | | CAP_SYS_PTRACE file capabilities, and our daemons can run |
661 | | with fewer privileges. |
662 | | |
663 | | * systemd-networkd now runs under its own "systemd-network" |
664 | | user. It retains the CAP_NET_ADMIN, CAP_NET_BIND_SERVICE, |
665 | | CAP_NET_BROADCAST, CAP_NET_RAW capabilities though, but |
666 | | loses the ability to write to files owned by root this way. |
667 | | |
668 | | * Similar, systemd-resolved now runs under its own |
669 | | "systemd-resolve" user with no capabilities remaining. |
670 | | |
671 | | * Similar, systemd-bus-proxyd now runs under its own |
672 | | "systemd-bus-proxy" user with only CAP_IPC_OWNER remaining. |
673 | | |
674 | | * systemd-networkd gained support for setting up "veth" |
675 | | virtual ethernet devices for container connectivity, as well |
676 | | as GRE and VTI tunnels. |
677 | | |
678 | | * systemd-networkd will no longer automatically attempt to |
679 | | manually load kernel modules necessary for certain tunnel |
680 | | transports. Instead, it is assumed the kernel loads them |
681 | | automatically when required. This only works correctly on |
682 | | very new kernels. On older kernels, please consider adding |
683 | | the kernel modules to /etc/modules-load.d/ as a work-around. |
684 | | |
685 | | * The resolv.conf file systemd-resolved generates has been |
686 | | moved to /run/systemd/resolve/. If you have a symlink from |
687 | | /etc/resolv.conf, it might be necessary to correct it. |
688 | | |
689 | | * Two new service settings, ProtectHome= and ProtectSystem=, |
690 | | have been added. When enabled, they will make the user data |
691 | | (such as /home) inaccessible or read-only and the system |
692 | | (such as /usr) read-only, for specific services. This allows |
693 | | very light-weight per-service sandboxing to avoid |
694 | | modifications of user data or system files from |
695 | | services. These two new switches have been enabled for all |
696 | | of systemd's long-running services, where appropriate. |
697 | | |
698 | | * Socket units gained new SocketUser= and SocketGroup= |
699 | | settings to set the owner user and group of AF_UNIX sockets |
700 | | and FIFOs in the file system. |
701 | | |
702 | | * Socket units gained a new RemoveOnStop= setting. If enabled, |
703 | | all FIFOS and sockets in the file system will be removed |
704 | | when the specific socket unit is stopped. |
705 | | |
706 | | * Socket units gained a new Symlinks= setting. It takes a list |
707 | | of symlinks to create to file system sockets or FIFOs |
708 | | created by the specific Unix sockets. This is useful to |
709 | | manage symlinks to socket nodes with the same life-cycle as |
710 | | the socket itself. |
711 | | |
712 | | * The /dev/log socket and /dev/initctl FIFO have been moved to |
713 | | /run, and have been replaced by symlinks. This allows |
714 | | connecting to these facilities even if PrivateDevices=yes is |
715 | | used for a service (which makes /dev/log itself unavailable, |
716 | | but /run is left). This also has the benefit of ensuring |
717 | | that /dev only contains device nodes, directories and |
718 | | symlinks, and nothing else. |
719 | | |
720 | | * sd-daemon gained two new calls sd_pid_notify() and |
721 | | sd_pid_notifyf(). They are similar to sd_notify() and |
722 | | sd_notifyf(), but allow overriding of the source PID of |
723 | | notification messages if permissions permit this. This is |
724 | | useful to send notify messages on behalf of a different |
725 | | process (for example, the parent process). The |
726 | | systemd-notify tool has been updated to make use of this |
727 | | when sending messages (so that notification messages now |
728 | | originate from the shell script invoking systemd-notify and |
729 | | not the systemd-notify process itself. This should minimize |
730 | | a race where systemd fails to associate notification |
731 | | messages to services when the originating process already |
732 | | vanished. |
733 | | |
734 | | * A new "on-abnormal" setting for Restart= has been added. If |
735 | | set, it will result in automatic restarts on all "abnormal" |
736 | | reasons for a process to exit, which includes unclean |
737 | | signals, core dumps, timeouts and watchdog timeouts, but |
738 | | does not include clean and unclean exit codes or clean |
739 | | signals. Restart=on-abnormal is an alternative for |
740 | | Restart=on-failure for services that shall be able to |
741 | | terminate and avoid restarts on certain errors, by |
742 | | indicating so with an unclean exit code. Restart=on-failure |
743 | | or Restart=on-abnormal is now the recommended setting for |
744 | | all long-running services. |
745 | | |
746 | | * If the InaccessibleDirectories= service setting points to a |
747 | | mount point (or if there are any submounts contained within |
748 | | it), it is now attempted to completely unmount it, to make |
749 | | the file systems truly unavailable for the respective |
750 | | service. |
751 | | |
752 | | * The ReadOnlyDirectories= service setting and |
753 | | systemd-nspawn's --read-only parameter are now recursively |
754 | | applied to all submounts, too. |
755 | | |
756 | | * Mount units may now be created transiently via the bus APIs. |
757 | | |
758 | | * The support for SysV and LSB init scripts has been removed |
759 | | from the systemd daemon itself. Instead, it is now |
760 | | implemented as a generator that creates native systemd units |
761 | | from these scripts when needed. This enables us to remove a |
762 | | substantial amount of legacy code from PID 1, following the |
763 | | fact that many distributions only ship a very small number |
764 | | of LSB/SysV init scripts nowadays. |
765 | | |
766 | | * Priviliged Xen (dom0) domains are not considered |
767 | | virtualization anymore by the virtualization detection |
768 | | logic. After all, they generally have unrestricted access to |
769 | | the hardware and usually are used to manage the unprivileged |
770 | | (domU) domains. |
771 | | |
772 | | * systemd-tmpfiles gained a new "C" line type, for copying |
773 | | files or entire directories. |
774 | | |
775 | | * systemd-tmpfiles "m" lines are now fully equivalent to "z" |
776 | | lines. So far, they have been non-globbing versions of the |
777 | | latter, and have thus been redundant. In future, it is |
778 | | recommended to only use "z". "m" has hence been removed |
779 | | from the documentation, even though it stays supported. |
780 | | |
781 | | * A tmpfiles snippet to recreate the most basic structure in |
782 | | /var has been added. This is enough to create the /var/run → |
783 | | /run symlink and create a couple of structural |
784 | | directories. This allows systems to boot up with an empty or |
785 | | volatile /var. Of course, while with this change, the core OS |
786 | | now is capable with dealing with a volatile /var, not all |
787 | | user services are ready for it. However, we hope that sooner |
788 | | or later, many service daemons will be changed upstream so |
789 | | that they are able to automatically create their necessary |
790 | | directories in /var at boot, should they be missing. This is |
791 | | the first step to allow state-less systems that only require |
792 | | the vendor image for /usr to boot. |
793 | | |
794 | | * systemd-nspawn has gained a new --tmpfs= switch to mount an |
795 | | empty tmpfs instance to a specific directory. This is |
796 | | particularly useful for making use of the automatic |
797 | | reconstruction of /var (see above), by passing --tmpfs=/var. |
798 | | |
799 | | * Access modes specified in tmpfiles snippets may now be |
800 | | prefixed with "~", which indicates that they shall be masked |
801 | | by whether the existing file or directly is currently |
802 | | writable, readable or executable at all. Also, if specified, |
803 | | the sgid/suid/sticky bits will be masked for all |
804 | | non-directories. |
805 | | |
806 | | * A new passive target unit "network-pre.target" has been |
807 | | added which is useful for services that shall run before any |
808 | | network is configured, for example firewall scripts. |
809 | | |
810 | | * The "floppy" group that previously owned the /dev/fd* |
811 | | devices is no longer used. The "disk" group is now used |
812 | | instead. Distributions should probably deprecate usage of |
813 | | this group. |
814 | | |
815 | | Contributions from: Camilo Aguilar, Christian Hesse, Colin Ian |
816 | | King, Cristian Rodríguez, Daniel Buch, Dave Reisner, David |
817 | | Strauss, Denis Tikhomirov, John, Jonathan Liu, Kay Sievers, |
818 | | Lennart Poettering, Mantas Mikulėnas, Mark Eichin, Ronny |
819 | | Chevalier, Susant Sahani, Thomas Blume, Thomas Hindoe Paaboel |
820 | | Andersen, Tom Gundersen, Umut Tezduyar Lindskog, Zbigniew |
821 | | Jędrzejewski-Szmek |
822 | | |
823 | | -- Berlin, 2014-06-11 |
| 63 | Don't need users. Was just checking out what LFS has been doing. |