1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
|
systemd System and Service Manager
CHANGES WITH 183:
* Note that we skipped 139 releases here in order to set the
new version to something that is greater than both udev's
and systemd's most recent version number.
* udev: all udev sources are merged into the systemd source tree now.
All future udev development will happen in the systemd tree. It
is still fully supported to use the udev daemon and tools without
systemd running, like in initramfs or other init systems. Building
udev though, will require the *build* of the systemd tree, but
udev can be properly *run* without systemd.
* udev: /lib/udev/devices/ are not read anymore; systemd-tmpfiles
should be used to create dead device nodes as workarounds for broken
subsystems.
* udev: RUN+="socket:..." and udev_monitor_new_from_socket() is
no longer supported. udev_monitor_new_from_netlink() needs to be
used to subscribe to events.
* udev: when udevd is started by systemd, processes which are left
behind by forking them off of udev rules, are unconditionally cleaned
up and killed now after the event handling has finished. Services or
daemons must be started as systemd services. Services can be
pulled-in by udev to get started, but they can no longer be directly
forked by udev rules.
* udev: the daemon binary is called systemd-udevd now and installed
in /usr/lib/systemd/. Standalone builds or non-systemd systems need
to adapt to that, create symlink, or rename the binary after building
it.
* libudev no longer provides these symbols:
udev_monitor_from_socket()
udev_queue_get_failed_list_entry()
udev_get_{dev,sys,run}_path()
The versions number was bumped and symbol versioning introduced.
* systemd-loginctl and systemd-journalctl have been renamed
to loginctl and journalctl to match systemctl.
* The config files: /etc/systemd/systemd-logind.conf and
/etc/systemd/systemd-journald.conf have been renamed to
logind.conf and journald.conf. Package updates should rename
the files to the new names on upgrade.
* For almost all files the license is now LGPL2.1+, changed
from the previous GPL2.0+. Exceptions are some minor stuff
of udev (which will be changed to LGPL2.1 eventually, too),
and the MIT licensed sd-daemon.[ch] library that is suitable
to be used as drop-in files.
* systemd and logind now handle system sleep states, in
particulary suspending and hibernating.
* logind now implements a sleep/shutdown/idle inhibiting logic
suitable for a variety of uses. Soonishly Lennart will blog
about this in more detail.
* var-run.mount and var-lock.mount are no longer provided
(which prevously bind mounted these directories to their new
places). Distributions which have not converted these
directories to symlinks should consider stealing these files
from git history and add them downstream.
* We introduced the Documentation= field for units and added
this to all our shipped units. This is useful to make it
easier to explore that boot and the purpose of the various
units.
* All smaller setup units (such as
systemd-vconsole-setup.service) now detect properly if they
are run in a container and are skipped when
appropriate. This guarantees an entirely noise-free boot in
Linux container environments such as systemd-nspawn.
* A framework for implementing offline system updates is now
integrated, for details see:
http://freedesktop.org/wiki/Software/systemd/SystemUpdates
* A new service type Type=idle is available now which helps us
avoiding ugly interleaving of getty output and boot status
messages.
* There's now a system-wide CapabalityBoundingSet= option to
globally reduce the set of capabailities for the
system. This is useful to drop CAP_SYS_MKNOD, CAP_SYS_RAWIO,
CAP_NET_RAW, CAP_SYS_MODULE, CAP_SYS_TIME, CAP_SYS_PTRACE or
even CAP_NET_ADMIN system-wide for secure systems.
* There are now system-wide DefaultLimitXXX= options to
globally change the defaults of the various resource limits
for all units started by PID 1.
* Harald Hoyer's systemd test suite has been integrated into
systemd which allows easy testing of systemd builds in qemu
and nspawn. (This is really awesome! Ask us for details!)
* The fstab parser is now implemented as generator not inside
of PID 1.
* systemctl will now warn you if .mount units generated from
/etc/fstab are out of date due to changes in fstab that
haven't been read by systemd yet.
* systemd is now suitable for usage in initrds. Dracut has
already been updated to make use of this. With this in place
initrds get a slight bit faster but primarily are much
easier to introspect and debug since "systemctl status" in
the host system can be used to introspect initrd services,
and the journal from the initrd is kept around too.
* systemd-delta has been added, a tool to explore differences
between user/admin configuration and vendor defaults.
* PrivateTmp= now affects both /tmp and /var/tmp.
* Boot time status messages are now much prettier and feature
proper english language. Booting up systemd has never been
so sexy.
* Read-ahead pack files now include the inode number of all
files to pre-cache. When the inode changes the pre-caching
is not attempted. This should be nicer to deal with updated
packages which might result in changes of read-ahead
patterns.
* We now temporaritly lower the kernel's read_ahead_kb variable
when collecting read-ahead data to ensure the kernel's
built-in read-ahead does not add noise to our measurements
of necessary blocks to pre-cache.
* There's now RequiresMountsFor= to add automatic dependencies
for all mounts necessary for a specific file system path.
* MountAuto= and SwapAuto= have been removed from
system.conf. Mounting file systems at boot has to take place
in systemd now.
* nspawn now learned a new switch --uuid= to set the machine
ID on the command line.
* nspawn now loearned the -b switch to automatically search
for an init system.
* vt102 is now the default TERM for serial TTYs, upgraded from
vt100.
* systemd-logind now works on VT-less systems.
* The build tree has been reorganized. The individual
componets now have directories of their own.
* A new condition type ConditionPathIsReadWrite= is now available.
* nspawn learned the new -C switch to create cgroups for the
container in other hierarchies.
* We now have support for hardware watchdogs, configurable in
system.conf.
* The scheduled shutdown logic now has a public API.
* We now mount /tmp as tmpfs by default, but this can be
masked and /etc/fstab can override it.
* Since udisks doesn't make use of /media anymore we are not
mounting a tmpfs on it anymore.
* journalctl gained a new --local switch to only interleave
locally generated journal files.
* We can now load the IMA policy at boot automatically.
* The GTK tools have been split off into a systemd-ui.
CHANGES WITH 44:
* This is mostly a bugfix release
* Support optional initialization of the machine ID from the
KVM or container configured UUID.
* Support immediate reboots with "systemctl reboot -ff"
* Show /etc/os-release data in systemd-analyze output
* Many bugfixes for the journal, including endianess fixes and
ensuring that disk space enforcement works
* sd-login.h is C++ comptaible again
* Extend the /etc/os-release format on request of the Debian
folks
* We now refuse non-UTF8 strings used in various configuration
and unit files. This is done to ensure we don't pass invalid
data over D-Bus or expose it elsewhere.
* Register Mimo USB Screens as suitable for automatic seat
configuration
* Read SELinux client context from journal clients in a race
free fashion
* Reorder configuration file lookup order. /etc now always
overrides /run in order to allow the administrator to always
and unconditionally override vendor supplied or
automatically generated data.
* The various user visible bits of the journal now have man
pages. We still lack man pages for the journal API calls
however.
* We now ship all man pages in HTML format again in the
tarball.
Contributions from: Dave Reisner, Dirk Eibach, Frederic
Crozat, Harald Hoyer, Kay Sievers, Lennart Poettering, Marti
Raudsepp, Michal Schmidt, Shawn Landden, Tero Roponen, Thierry
Reding
CHANGES WITH 43:
* This is mostly a bugfix release
* systems lacking /etc/os-release are no longer supported.
* Various functionality updates to libsystemd-login.so
* Track class of PAM logins to distuingish greeters from
normal user logins.
Contributions from: Kay Sievers, Lennart Poettering, Michael
Biebl
CHANGES WITH 42:
* This is an important bugfix release for v41.
* Building man pages is now optional which should be useful
for those building systemd from git but unwilling to install
xsltproc.
* Watchdog support for supervising services is now usable. In
a future release support for hardware watchdogs
(i.e. /dev/watchdog) will be added building on this.
* Service start rate limiting is now configurable and can be
turned off per service. When a start rate limit is hit a
reboot can automatically be triggered.
* New CanReboot(), CanPowerOff() bus calls in systemd-logind.
Contributions from: Benjamin Franzke, Bill Nottingham,
Frederic Crozat, Lennart Poettering, Michael Olbrich, Michal
Schmidt, Michał Górny, Piotr Drąg
CHANGES WITH 41:
* The systemd binary is installed /usr/lib/systemd/systemd now;
An existing /sbin/init symlink needs to be adapted with the
package update.
* The code that loads kernel modules has been ported to invoke
libkmod directly, instead of modprobe. This means we do not
support systems with module-init-tools anymore.
* Watchdog support is now already useful, but still not
complete.
* A new kernel command line option systemd.setenv= is
understood to set system wide environment variables
dynamically at boot.
* We now limit the set of capabilities of systemd-journald.
* We now set SIGPIPE to ignore by default, since it only is
useful in shell pipelines, and has little use in general
code. This can be disabled with IgnoreSIPIPE=no in unit
files.
Contributions from: Benjamin Franzke, Kay Sievers, Lennart
Poettering, Michael Olbrich, Michal Schmidt, Tom Gundersen,
William Douglas
CHANGES WITH 40:
* This is mostly a bugfix release
* We now expose the reason why a service failed in the
"Result" D-Bus property.
* Rudimentary service watchdog support (will be completed over
the next few releases.)
* When systemd forks off in order execute some service we will
now immediately changes its argv[0] to reflect which process
it will execute. This is useful to minimize the time window
with a generic argv[0], which makes bootcharts more useful
Contributions from: Alvaro Soliverez, Chris Paulson-Ellis, Kay
Sievers, Lennart Poettering, Michael Olbrich, Michal Schmidt,
Mike Kazantsev, Ray Strode
CHANGES WITH 39:
* This is mostly a test release, but incorporates many
bugfixes.
* New systemd-cgtop tool to show control groups by their
resource usage.
* Linking against libacl for ACLs is optional again. If
disabled, support tracking device access for active logins
goes becomes unavailable, and so does access to the user
journals by the respective users.
* If a group "adm" exists, journal files are automatically
owned by them, thus allow members of this group full access
to the system journal as well as all user journals.
* The journal now stores the SELinux context of the logging
client for all entries.
* Add C++ inclusion guards to all public headers
* New output mode "cat" in the journal to print only text
messages, without any meta data like date or time.
* Include tiny X server wrapper as a temporary stop-gap to
teach XOrg udev display enumeration. This is used by display
managers such as gdm, and will go away as soon as XOrg
learned native udev hotplugging for display devices.
* Add new systemd-cat tool for executing arbitrary programs
with STDERR/STDOUT connected to the journal. Can also act as
BSD logger replacement, and does so by default.
* Optionally store all locally generated coredumps in the
journal along with meta data.
* systemd-tmpfiles learnt four new commands: n, L, c, b, for
writing short strings to files (for usage for /sys), and for
creating symlinks, character and block device nodes.
* New unit file option ControlGroupPersistent= to make cgroups
persistent, following the mechanisms outlined in
http://www.freedesktop.org/wiki/Software/systemd/PaxControlGroups
* Support multiple local RTCs in a sane way
* No longer monopolize IO when replaying readahead data on
rotating disks, since we might starve non-file-system IO to
death, since fanotify() will not see accesses done by blkid,
or fsck.
* Don't show kernel threads in systemd-cgls anymore, unless
requested with new -k switch.
Contributions from: Dan Horák, Kay Sievers, Lennart
Poettering, Michal Schmidt
CHANGES WITH 38:
* This is mostly a test release, but incorporates many
bugfixes.
* The git repository moved to:
git://anongit.freedesktop.org/systemd/systemd
ssh://git.freedesktop.org/git/systemd/systemd
* First release with the journal
http://0pointer.de/blog/projects/the-journal.html
* The journal replaces both systemd-kmsg-syslogd and
systemd-stdout-bridge.
* New sd_pid_get_unit() API call in libsystemd-logind
* Many systemadm clean-ups
* Introduce remote-fs-pre.target which is ordered before all
remote mounts and may be used to start services before all
remote mounts.
* Added Mageia support
* Add bash completion for systemd-loginctl
* Actively monitor PID file creation for daemons which exit in
the parent process before having finished writing the PID
file in the daemon process. Daemons which do this need to be
fixed (i.e. PID file creation must have finished before the
parent exits), but we now react a bit more gracefully to them.
* Add colourful boot output, mimicking the well-known output
of existing distributions.
* New option PassCredentials= for socket units, for
compatibility with a recent kernel ABI breakage.
* /etc/rc.local is now hooked in via a generator binary, and
thus will no longer act as synchronization point during
boot.
* systemctl list-unit-files now supports --root=.
* systemd-tmpfiles now understands two new commands: z, Z for
relabelling files according to the SELinux database. This is
useful to apply SELinux labels to specific files in /sys,
among other things.
* Output of SysV services is now forwarded to both the console
and the journal by default, not only just the console.
* New man pages for all APIs from libsystemd-login.
* The build tree got reorganized and a the build system is a
lot more modular allowing embedded setups to specifically
select the components of systemd they are interested in.
* Support for Linux systems lacking the kernel VT subsystem is
restored.
* configure's --with-rootdir= got renamed to
--with-rootprefix= to follow the naming used by udev and
kmod
* Unless specified otherwise we'll now install to /usr instead
of /usr/local by default.
* Processes with '@' in argv[0][0] are now excluded from the
final shut-down killing spree, following the logic explained
in:
http://www.freedesktop.org/wiki/Software/systemd/RootStorageDaemons
* All processes remaining in a service cgroup when we enter
the START or START_PRE states are now killed with
SIGKILL. That means it is no longer possible to spawn
background processes from ExecStart= lines (which was never
supported anyway, and bad style).
* New PropagateReloadTo=/PropagateReloadFrom= options to bind
reloading of units together.
Contributions from: Bill Nottingham, Daniel Walsh, Dave
Reisner, Dexter Morgan, Gregs Gregs, Jonathan Nieder, Kay
Sievers, Lennart Poettering, Michael Biebl, Michal Schmidt,
Michał Górny, Ran Benita, Thomas Jarosch, Tim Waugh, Tollef
Fog Heen, Tom Gundersen, Zbigniew Jędrzejewski-Szmek
|