[systemd-devel] [ANNOUNCE] systemd v38

Lennart Poettering lennart at poettering.net
Tue Jan 10 20:19:53 PST 2012



This is the first release with the journal. The journal replaces both
systemd-kmsg-syslogd and systemd-stdout-kmsg-bridge, thus simplifying
greatly our set of always-running services. The journal is quite
complete at this time, but a small number of bigger features are still
missing. Documentation is currently terse and will be extended in the
coming versions. If you want to see the effect of the journal, try
"systemctl status" which is now hooked up with the journal and will show
the most recent log output of a service.

Compatibility with classic syslog implementations is provided, via a
socket /run/systemd/journal/syslog, to which all messages are forwarded,
regardless whether they came in via /dev/log, the journal native
protocol or any other source. To make your syslog implementaiton work
with this make sure that it binds to that socket instead of /dev/log
which is now systemd-journal property.

Note that the journal will store log data only on /run/log/journal,
which makes it volatile. If a subdirectory /var/log/journal is created
the journal will instead store its data on /var, thus making the journal

systemd-journalctl may be used to explore the journal. By default it
generates an output that is a pixel perfect copy of the usual
/var/log/messages log format. It can alternatively generate a couple of
differnt outputs, controllable with "-o verbose", "-o short-monotonic"
or "-o json". Use "-f" for something that resembles "tail -f".

This release is more kind of a test release, i.e. like you'd place it in
your distribution's equivalent of Rawhide, not the kind you'd update
your released distro with. We hope to stabilize things in the next
coming releases a bit.

Bill Nottingham (1):
      Allow 'list-unit-files' to run with --root.

Dan Walsh (1):
      label: fix labeling of symbolic links

Daniel Walsh (1):
      namespace: remount namespace root dir for SLAVE to avoid propagation of mounts from the namespace to the host

Dave Reisner (1):
      systemctl-completion: always invoke with --no-legend

Dexter Morgan (1):
      Add Mageia support

Gregs Gregs (1):
      fsck: Fix typo in comment

Jonathan Nieder (1):
      audit: do not complain if kernel lacks audit

Kay Sievers (33):
      update TODO
      journal: silence gcc warnings
      Makefile.am: consistently use tabs
      logind: add 'login' subdir to include dirs
      logind: fix POTFILES location
      build-sys: restructure logind parts in Makefile.am and add --disable-logind
      timedated: move sources to subdirectory
      localed: move sources to subdirectory
      hostnamed: move sources to subdirectory
      hostnamed, localed: move config files to subdir
      binfmt: move sources to subdirectory
      journal: restructure Makefile.am
      libsystemd-id128: restructure Makefile.am
      pam_systemd: restructure Makefile.am and move inside ENABLE_LOGIND
      libsystemd-daemon: restructure Makefile.am
      build-sys: remove redundant _CFLAGS assignment
      build-sys: restructure sd-daemon, sd-readahead, sd-login files
      build-sys: more remaining parts of sd-deamon to their own section in Makefile.am
      gnome-ask-password-agent: require libnotify >= 0.7.0
      build-sys: login - remove specified include dir; all subdirs are in the list now
      build-sys: switch to tar xz
      do not install drop-in files; the shared library should be used by default
      build-sys: rename 'rootdir' to 'rootprefix' like udev and kmod uses
      conf-parser: silence compiler warning
      logind: add needed include for sd_notify()
      build-sys: switch autoconf's default prefix from /usr/local to /usr
      build-sys: install pam module in $rootlibdir
      build-sys: add some headers to fix 'make distcheck'
      build-sys: use ${ac_default_prefix}
      build-sys: add headers to EXTRA_DIST to fix 'make distcheck'
      autogen: add --with-rootlibdir= and switch /usr/local to /usr
      fix compiler warning
      autogen.sh: diet and sync with udev and kmod

Lennart Poettering (184):
      journal: add preliminary incomplete implementation
      journal: store XOR combination of entry data object hashes to identify hash lines
      journal: replace linked list by hashmap when merging files
      journal: split user logs into their own journal files
      journal: implement parallel traversal in client
      util: properly detect what the last capability is
      Merge branch 'master' into journal
      journal: only fallocate() what we really need to avoid slowness on file systems which do not support fallocate natively
      util: fix build
      journal: place machin journals in machine specific subdirectories
      journal: add cgroup path to entries
      journal: add cgroup path to entries
      journalctl: find journal files in right path
      journal: implementation rotation
      journal: implement parallel file traversal
      journal: fix field retrieval by name
      journal: synchronize seqnum across files
      journal: when the same entry is in two files, skip over them in sync
      journal: move field index from file into journal object
      journal: if two entries match with everything but seqnums, they are still identical
      journal: properly implement matching with multiple matches
      journal: unify code for up and for down traversal
      journal: implement seek to head/tail
      journal: automaticall reset location when the set of matches changes
      update TODO
      README: explain dependency on cgroups
      plymouth: fix ply proto endianess issues
      initctl: don't use dbus connection after PID 1 got respawned
      cgroup: always recreate cgroup before we try to apply attributes
      mount: order remote mounts after both network.target and remote-fs-pre.target
      units: drop [Install] section from remote-fs-pre.target
      update TODO
      Merge remote-tracking branch 'zbigniew/systemadm_changes'
      cgroup: immediately remove all cgroups which run empty
      update TODO
      macro: fix ALIGN_TO macro definition
      journal: implement multiple field matches
      Merge branch 'master' into journal
      update TODO
      journal: add native protocol to journald, and client side API to send journal messages
      journal: enforce limits on open journal files
      journal: introduce mandatory sd_journal_printf() priority parameter
      journald: filter fields send from client starting with underscore
      man: document the sd-login interfaces
      sd-daemon: fix #include lines since we now ship a shared library
      man: build new man pages
      man: sd_readahead is not actually available in libsystemd-daemon
      build-sys: add rules for man page aliases
      man: add sd-login(7) page
      man: various updates
      man: extend sd-login(7) in regards to mixing D-Bus and synchronous library calls a bit
      hashmap: add hashmap_first_key()
      man: generate HTML instead of XHTML with XSL docbook to work around 'fsfunc' noise
      man: switch to UTF-8 output, to work around charset issues
      journal: implement inotify-based live logging logic
      journal: fix matches
      journal: fix space reservation limit enforcement
      journal: add inline compression support with XZ
      journalctl: add json, export, short and verbose output modes
      journalctl: add command line parsing
      journal: add missing compress.[ch]
      journal: properly handle first inline bisect array entry
      journald: enforce some syntax restrictions on field names sent from the client side
      journal: implement stdout transport
      journald: implement sophisticated rate limiting
      udev: exclude loopback device from udev rule based sysctl application, since we can just apply that directly at boot
      journal: fix typo
      journal: fix hash table lookup logic
      journald: when checking available disk space for rate limiting, cache the results temporarily
      journal: never mmap beyond file size
      journald: increase rate limit burst rate
      journald: flush /run to /var as soon as it becomes available
      journald: don't recheck /var availability more often than 30s
      remount-api-vfs: handle another OOM condition
      journald: add missing header
      journal: add unit files and shared library glue
      journald: forward all syslog messages to syslogd
      journal: fix a few bad memory accesses and leaks
      journal: disable default debug logging
      journal: move max_use into metrics structure
      Merge branch 'journal'
      socket: rename the PassCred= option to PassCredentials=, since we don't want to needlessly abbreviate options unless they are very well established
      kmsg: drop unused variable
      journal: automatically deduce journal metrics from file system sizes
      git: update gitignore
      logind: move logind into its own subdirectory
      logind: move more files into subdirectory
      journal: move symver file into subdirectory
      util: fix warning
      login: move libsystemd-login.pc.in into src/login/
      test: rename test directory
      login: move the PAM module to src/login/ since it is just a client to logind
      build-sys: fix mageia kbd mappings
      build-sys: make readahead and vconsole optional
      login: move systemd-user-sessions.service into login/, too
      cryptsetup: split off cryptsetup into its own subdir
      build-sys: move kbd-model-map to locale/
      build-sys: make quotacheck and randomseed optional
      socket: only add dependency on kmsg socket to socket units which have any kind of exec program specified
      readahead: bring export definition of sd-readahead in line with sd-daemon
      nspawn: get rid of BUFFER_SIZE, use LINE_MAX instead
      login: introduce sd_pid_get_service()
      journal: add _public_ to all sd-journal calls, and add parameter checks
      sd-id128: add _public_ to all exports, and add validity checks for all parameters
      journald: add _SYSTEMD_SESSION, _SYSTEMD_OWNER_UID, _SYSTEMD_SERVICE to all entries
      journald: treat a read-only /var identical to an unmounted one
      journal: never fail if we cannot access /var, just print a warning
      systemctl: hook up systemctl with the journal
      logind: if we can't open /dev/tty0, assume there is no VT subsystem and don't pretend we could do VT switching
      logind: don't watch vcsa if nobody cares
      logind: send out Lock signal when locking
      journald: fix _SYSTEMD_CGROUP= values
      sd128: add format string macros for outputting sd_id128_t variables
      sd128: rename SD_FORMAT_ID128_STR to SD_ID128_FORMAT_STR to follow naming scheme
      journalctl: add -n switch
      journal: add missing error check
      journal: add memory barrier before linking in newly created entries
      journal: apply seek check before resizing window, and refresh stat data if necessary
      journal: when increasing window, make sure to use the increased window
      journald: don't rotate on startup
      journal: don't mind too much if we can't find a monotonic timestamp
      journal: add missing error check
      journal: fix reverse traversing of entries
      journalctl: fix counting of -n parameter
      journalctl: only output 10 most recent lines in --follow mode
      journald: store _SYSTEMD_UNIT= instead of _SYSTEMD_SERVICE= field, since processes might also be related to mount, swap or socket units, not just services
      systemctl: shortcut log output for non-service, non-socket, non-mount, non-swap units
      journal: it's not a problem if the realtime jumps, hence don't ensure monotonicity of realtime for entries we write
      journal: beef up journal output of systemctl and journalctl
      journal: fix XZ build flags
      journald: parse configuration file
      util: when printing status updates during boot, take terminal width into account
      log: minor optimization
      journald: add configuration file options to forward all logged data to kmsg, console, syslog
      util: never ellipsize welcome message
      build-sys: move public header files into a dir of their own
      journal: add missing sd-messages.h
      journalctl: add --new-id switch to generate a new 128Bit id
      git: only ignore toplevel systemd file
      journal: fix include in sd-journal.h
      build-sys: add stub makefiles to subdirs
      build-sys: drop colorgcc
      headers: fix git URLs for source files
      README: correct license claims
      journalctl: rework short output mode to rebuild full syslog message
      journal: move sockets into their own subdir
      journal: store used transport in journal
      journal: store used transport in journal
      execute: talk directly to the journald, instead to the stdout-syslog-bridge
      sd-journal: close reading side of sd_journal_stream_fd() file descriptors
      journal: rename priority_prefix to level_prefix, since that's how we call it in PID 1
      journal: rename syslog tag to identifier since that's what we call it on the server side.
      login: implement sd_session_get_service()
      stdout: remove stdout-syslog-bridge since it is now obsoleted by journald
      journal: introduce log target 'journal' for executed processes
      special: fix name of journal socket unit
      kmsg-syslogd: remove kmsg-syslogd, since it's entirely obsoleted and replaced by journald
      journald: start the journal after the syslog socket, so that the syslog socket queues syslog messages from early boot on
      units: remove left-over unit file
      service: add dependencies on configured sockets
      unit: properly update references to units which are merged
      journald: shorten the time we wait for a forwarding syslog
      journald: start journald right away, don't wait until activation
      journald: introduce systemd_journald.forward_to_kmsg=1 (and friends) to enable kmsg forwarding globally via kernel cmdline
      main: fix spelling
      load-fragment: fix parsing of Socket= setting
      build-sys: move .pc files next to the matching sources
      journalctl: rename --new-id to --new-id128 in order not to introduce yet another new name
      sd-id128: let's make our API a bit smaller, since sd_id128_make_v4_uuid() is dispensable
      journald: remove inner loop debug message
      journald: add kmsg source
      journalctl: add new short-monotonic output mode
      journalctl: display source timestamp, not journald timestamp, if known
      shutdown: exclude processes with argv[0][0] from killing
      update TODO
      service: brutally slaughter processes that are running in the cgroup when we enter START_PRE and START
      shutdown: add link to root storage daemon text
      unit: implement new PropagateReloadTo=/PropagateReloadFrom= operations
      Update TODO
      journalctl: always show monotonic timestamp even if it's from an old boot
      systemd: reconnect to syslog as soon as the journal is fully up
      sd-journal: implement a number of non-implemented calls from the API for now
      journal: don't realign window twice
      build-sys: bump version
      build-sys: fix upload rule for xz

Michael Biebl (2):
      build-sys: fix typo in help string
      build-sys: link systemctl and systemd-journalctl against libsystemd-id128

Michal Schmidt (55):
      manager: fix a crash in isolating
      utmp: remove unneded parameters
      utmp: no need to zero a struct before overwriting it with memcpy
      utmp: initialize store with the found entry, not with the lookup key
      utmp: for DEAD_PROCESS write the current time to wtmp
      man: fix a typo in signal number
      units: drop unnecessary 'StandardOutput=syslog'
      units/fedora: let rc-local.service log to syslog
      units/suse: let rc-local.service log to syslog
      service: don't warn if the pidfile still exists after SIGCHLD
      job: colored status messages on boot
      man: fix typo in sd_notify
      execute: avoid logging to closed fds
      execute: make setup_pam() return -errno when possible
      execute: log errors from "sd(EXEC)"
      pam-module: use the correct session type "unspecified"
      pam-module: treat "cron" in PAM_TTY as empty tty
      let mount and swap units log to the configured defaults
      socket: add option for SO_PASSCRED
      shutdownd: use PassCred=yes in the socket unit
      syslog: use PassCred=yes for the /dev/log socket
      man: document the PassCred option
      add a generator to pull rc-local.service in
      rc-local: no need to check if the script is executable
      rc-local: order after network.target
      util: fix error checking after fgets()
      path: use %m instead of strerror(errno)
      path: refactor PathSpec usage
      path: add PathModified (= PathChanged + IN_MODIFY)
      service: handle services with racy daemonization gracefully
      service: stop the service if ExecStartPost ends with a failure
      unit: garbage collect units with load error
      systemctl: print 'error' load state in red
      path: add missing pieces for PathModified
      unit: fix false positive in check for unneeded unit
      unit: check for unneeded dependencies even when unit stop was expected
      pam-module: add a couple of debugging prints
      systemctl: fix typo in 'is-enabled'
      tmpfiles: use an enum instead of plain char for item type
      tmpfiles: rename a couple of functions
      tmpfiles: use a common function to set owner/group/mode/label
      tmpfiles: separate a generic item glob processing function
      tmpfiles: add RECURSIVE_RELABEL_PATH ('Z')
      man: document 'Z' in tmpfiles
      man: mention that 'Z' ignores uid/gid/mode
      service: use 'syslog+console' for sysv_console
      tmpfiles: apply chown, chmod for 'Z' entries too
      tmpfiles: add 'z', like 'Z' but not recursive
      man: fix misplaced remark in description of Sockets=
      execute: fix losing of start timestamps
      dbus: register to DBus asynchronously
      dbus: no sync D-Bus connection flushing
      log: never block on syslog in PID 1
      util: fix switching to console unicode mode
      util: switch the console to text mode on reset

Michał Górny (2):
      man: Fix out-of-source manpage builds.
      build-sys: Fix missing directories with parallel 'make install'.

Ran Benita (3):
      bash-completion: update with new verbs and arguments
      bash-completion: add completions for systemd-loginctl
      bash-completion: rename file since it is no longer for systemctl only

Thomas Jarosch (2):
      condition: Fix file descriptor leak in test_capability()
      Fix same expression on both sides of '&&'

Tim Waugh (1):
      '@' is an 'ampersat' not an 'ampersand'; let's call it 'at symbol'

Tollef Fog Heen (1):
      service: Drop rcN.d runlevels from SysV services that also exist in rcS.d

Tom Gundersen (3):
      random-seed: convert poolsize from bits to bytes
      cryptsetup-generator: avoid ordering cycle on swap
      man: fix SEE ALSO in hostname(5)

Zbigniew Jędrzejewski-Szmek (16):
      systemadm: break timestamp formatting out into a seperate function
      systemadm: allow sorting of jobs and units
      systemadm: split the type+status combo box into type combo & status checkbox
      systemadm: filter on swaps, paths, and timers too.
      systemadm: add a wrappable label and use it for status lines
      systemadm: add libgee as dependency and use it for a unit map
      systemadm: display dependencies sorted
      systemadm: use color for dependency links
      systemadm: use bold for "requires", etc.
      systemadm: make the dependency listing  selectable
      systemadm: catch exceptions generated by dbus
      systemadm: coalesce id and decription fields
      systemadm: adjust row numbers after removing 'aliases'
      systemadm: use colors for id too, remove color from fragment link
      systemctl: make list-unit-files output more economical
      fix compilation error with 'PathSpec redefined'


Lennart Poettering - Red Hat, Inc.

More information about the systemd-devel mailing list