[systemd-devel] [ANNOUNCE] systemd v12

Lennart Poettering lennart at poettering.net
Tue Nov 16 16:44:02 PST 2010


Heya,

http://www.freedesktop.org/software/systemd/systemd-12.tar.bz2

Quite a number of new features. I'll probably do another blog story
about all of this one of the next days. Here's the exciting stuff, and
below the detailed stuff:

- Bash completion support for systemctl
- Handling of cryttab, fsck, quota, and shutdown in pure C, a normal
  desktop system should be able to boot without a single shell now.
- Automatically kill remaining user sessions when going down.
- Ubuntu support. Yay, welcome to the club!
- We got rid of --session and replaced it with --user.
- A working infrastructure to query system-level passphrases (LUKS, SSL,
  ...) via UI agents, plymouth, console, wall.
- condition logic, which allows us to skip services based on existance
  of file, kernel command line option, or whether a directory is
  empty. If they are skipped they are still useful for synchronization
  purposes.
- "generator" logic. A really minimal facility to allow others projects to
  generate unit files dynamically and integrate them in the systemd
  dependency tree. The crypttab support is implemented as a generator,
  which allows us to support cryptodisks without polluting the code of
  systemd itself with handling this. Other thinkable generators could be
  stuff that generates an automatic .service file for each lxc or kvm
  machine configured.
- support for initrd-less booting but with selinux
- 'systemctl kill' for sending signals to all processes of a service
- tmpfiles now integrates automatic cleanup op directories it manages, a
  la tmpwatch

The cryptsetup logic currently does everything the Fedora logic used to
do, plus a couple of features Debian had on top of that. However, Debian
has a couple of more, and while I think they are more on the crazy side
of things I am not opposed to adding support for those too, and would be
wiling to merge a patch.

Shortlog:

Andrew Edmunds (3):
      ubuntu: Treat Ubuntu as a distinct distro in configure.ac etc
      util: Add welcome message for Ubuntu
      man: Fix various typos

Andrey Borzenkov (4):
      main: fix typo in kernel cmdline parameters help
      socket: fix IPv6 availability detection
      do not overwrite other udev tags
      vconsole: support additional keymap for toggling layouts

Bill Nottingham (9):
      tmpfiles: Make wtmp match utmp perms, and add btmp.
      tmpfiles: Don't clean /var/lock/subsys; it is not aged content
      Fedora: Don't ship a init.d reboot symlink.
      Fedora: Assorted tweaks to Fedora single-user mode.
      Fedora: further unit tweaks
      Fedora: don't ship [Install] sections; these are enabled in the system configuration.
      Fedora: by default, run prefdm last to match prior behavior.
      Fedora: Make systemunitdir/graphical.target.wants on 'make install'.
      Fedora: Link graphical-target.wants to the virtual display-manager.service, not the specific prefdm.service.

Brandon Philips (1):
      man/tmpfiles.d.xml: add a manpage for tmpfiles.d

Fabiano Fidencio (6):
      util: Adding a strneq, to represent (!strncmp(a, b, n))
      umount: Adding unmount functions to be used in shutdown
      shutdown: Adding binary to shutdown the system
      README: Check for libudev-160, as in configure.ac
      manager: hookup execution of systemd-shutdown helper
      vala: register new D-Bus calls

Franz Dietrich (2):
      units: Since killall.service does not exist anymore remove all references.
      units: Remove the distro specific references to killall.service.

Gustavo Sverzut Barbieri (2):
      tmpfiles: consider TRUNCATE_DIRECTORY as well.
      build-sys: dbus-glib is just required by gtk's systemadm

Kay Sievers (14):
      use common names: fixme -> TODO, bootstrap.sh -> autogen.sh
      systemd-shutdown: add umount.h to sources
      move .h file from SOURCES to DIST to make vala autotools happy
      fsck: drop -C from fsck cmdline to avoid EPIPE
      TODO: add getty on-demand, man: --system
      TODO: /proc/swaps is poll()able now
      getty at .service: switch to agetty as the default
      fsck: skip checking / if it is writable
      fsck: return SUCCESS when we skip the check
      update TODO with mtab issue
      split mount_point_is_api() and mount_point_ignore()
      update TODO
      update TODO
      delete tmp.mount which may conflict with an unrelated fstab entry

Lennart Poettering (228):
      sd-daemon: in some places sizeof(sa_family_t) actually does make sense
      util: unify implementations of freeze()
      shutdown: create /var/run/nologin instead of /etc/nologin which is supported since PAM 1.1.2
      shutdown: drop redundant read_only bool var
      shutdown: drop last referral to mp->read_only
      user-sessions: add minimal utility to kill user sessions that shall be called before destroying services on shutdown
      user-sessions: properly unlink both nologin files
      systemd-user-sessions: install .service file and enable by default
      update fixme
      unit: introduce 'banned' load state for units symlinked to /dev/null
      mount: properly handle NULL fstype
      service: increase default timeout for sysv scripts to 3min
      systemctl: fix 'systemctl enable getty at .service'
      service: optionally, create INIT_PROCESS/DEAD_PROCESS entries for a service
      unit: rename 'banned' load state to 'masked'
      util: don't specifically check for the /dev/null major/minor, just check whether something is a char or block device
      units: enable utmp for serial gettys too
      service: introduce Restart=on-failure and Restart=on-abort
      update fixme
      systemctl: show whether we follow somebody in 'status' output
      systemctl: drop [] around date in status output
      mount: minor cleanups
      swap: major rework, use /sbin/swapon for setting up swaps, fix merging of aliased swap disks
      unit: add minimal condition checker for unit startup
      inotify: properly handle multiple inotify events per read()
      lookup: look for dynamic throw-away units in /dev/.systemd/system
      dbus: add introspection to midlevel paths
      systemctl: warn if user enables unit with no installation instructions
      mount: hook in q fsck at .service instance for all mount points with passno > 0
      mount: pull in fsck only in systemd instances
      condition: fix copyright
      umount: unescape path from /proc/self/mountinfo first, then check against api mount list
      umount: properly enumerate loopback devices
      umount: simplify code for deactivating loop devices
      umount: be a bit more verbose when unable to umount/unswap/delete loopbacks
      shutdown: don't chdir to /, since init is running with / as cwd anyway
      shutdown: execute rescue kill only once
      shutdown: make use of wait_for_terminate_and_warn()
      dbus: expose shutdown helper via D-Bus
      manager: hookup shutdown helper and signals
      systemctl: rework halt/reboot/poweroff/kexec/exit logic around --force
      units: introduce kexec.service, kexec.target and exit.target
      shutdown: log to console by default
      umount: try to get rid of DM devices
      units: get rid of distro-specific shutdown scripts, replace them by systemd-shutdown invocations
      units: introduce final.target that can be used to plug units between shutdown.target and the final shutdown
      systemctl: accept -f as short for --force
      fedora: add compat unit for /sbin/halt.local
      umount: disable dm devices by devnode, not by path name
      update fixme
      shutdown: loop only as long as we manage to unmount/detach devices, give up immediately when we are stuck
      tmpfiles: integrate kay's directory cleanup code and otherwise beef up tmpfiles quite a bit
      manager: serialize/deserialize finish timestamp
      util: ignore quota files by default
      label: if the selinux policy knows no label, then silently don't do anything
      swap: listen for POLLPRI events on /proc/swaps if available
      tmpfiles: remove forcefsck/fastboot flag files after boot
      label: don't fail miserably if filesystem doesn't do xattrs/labels
      tmpfiles: destruct selinux database after use
      man: properly refer to $MAINPID instead of $(MAINPID) which doesnt work anymore
      man: extend commenting of .spec file snippets a bit
      systemctl: fix counting in list-units output
      fsck: add initial version of fsck and quotacheck wrappers
      fsck: be verbose when skipping fsck due to missing AC
      fsck: atomically replace base.target by rescue.target/reboot.target when fsck fails
      fsck: properly hook in fsck everywhere, add special support for fsck'ing root dir
      fsck: make fsck idempotent
      units: add missing fsck units
      fsck: don't be idempotent for root directories
      log: reopen console so that we have logging on shutdown
      service: implement FsckPassNo= option
      units: properly use ConditionPathExists= instead of ConditionFileExists=
      mount: do not implicitly pull in fsck service for root dir
      manager: properly write header marker on serialization
      manager: properly parse finish timestamp
      mount: require fsck
      mount: pull in quotacheck.service, not quotacheck.target
      fsck: wait for device to show up
      quota: add install hooks for basic.target
      quota: enable quotaon/quotacheck in local-fs.target, not basic.target
      install: enable quota/fsck-root/hwclock load by default
      unit: introduce %f specifier to decode file names
      quota: fix quotaon command line
      syslog: enable kmsg bridge by default and enable syslogging for early boot services
      units: order syslog.target after syslog.socket
      systemctl: introduce systemctl kill
      man: document systemctl --force
      dbus: epose FsckPassNo property for service objects
      fsck: suppress error message if we cannot change into single user mode since we are already passt early bootup
      man: numerous updates to document updated systemctl behaviour
      update fixme
      ask-password: rename ask-password-agent to gnome-ask-password-agent
      ask-password: add basic tty agent
      update fixme
      units: activate wall agent automatically if something is dropped in /dev/.systemd/ask-password
      systemd: unset HOME and TERM set from the kernel
      mount: add nosuid,nodev,noexec switches to /var/lock and /var/run
      update fixme
      update fixme
      main: don't unset HOME/TERM when run in session mode
      service: make sure to pass TERM=linux to all sysv scripts
      units: now that we don't set TERM anymore by default, make sure to pass it to our rescue sessions
      ask-password: add minimal plymouth password agent
      ask-password: enable plymouth agent by default
      ask-password: properly handle multiple pending passwords when writing wall msg
      systemctl: automatically spawn temporary password agent when we might need one
      ask-password-tty: properly handle SIGINT/SIGTERM
      exec: fix dbus exposure of UtmpIdentifier field
      shutdown: properly handle sigtimedwait() timing out
      readahead: bump a device's request_nr when enabling readahead
      swap: expose swap exec env proprties via dbus
      swap: add default cgroup to swap exec env
      errors: refer to systemctl status when useful
      swap: add only swaps listed in /etc/fstab automatically to swap.target, others should be added via .wants/ links
      build-sys: fix 'make fedora'
      update fixme
      man: be more explicit about the usefulness of --system
      unit: serialize active timestamps
      service: when after startup only one process is in a service's cgroup, assume it is the main process
      units: run sysv related scripts with TERM=linux
      main: move make_null_stdio() to util.c
      selinux: automatically load policy if the initrd hasn't done this for us yet
      mounts: automatically create /dev/stderr and friends early on boot so that they are around when we run shell scripts before udevd
      update fixme
      swap: there's no reason not order swap after sysinit, so drop it
      unit: suppress incorrect deserialization errors
      device: set recursive_stop=true by default
      service: unify tstamp serialization code
      unit: replace recursive_stop by stop_retroactively to simplify things a little
      timer: when deserializing timer state stay elapsed when we are elapsed
      manager: show which jobs are actually installed after a transaction
      shutdown: reword a few messages a little
      systemctl: always show what and where for mount units in status output
      units: run sysctl only if /etc/sysctl.conf exists
      automount: show who's triggering an automount
      unit: replace StopRetroactively= by BindTo= dependencies
      unit: get rid of gnoreDependencyFailure= instead treat ConflictedBy= as weaker counterpart of Conflicts=, similar to Wants= vs. Requires=
      update fixme
      fedora: get rid of sysinit.service
      units: introduce plymouth-start and plymouth-kexec, and move a few things back from basic to sysinit
      units: make fedora/single.service standard and rename it to rescue.service
      units: no need to create rescue.target.wants anymore
      fedora plymouthd doesn't seem to like --attach-to-session here
      units: fix quota check description
      fedora: enable system mounting/swapping by default
      units: order units by default before appropriate targets in case they are pulled indirectly
      fsck: fix target name to check for
      job: recursively fail BoundBy dependencies
      mount: don't pull in nofail mounts by default, but use them if they are around
      units: fix variable expansion
      fedora: invoke plymouth with its /bin instead of the /usr/bin/ path
      fedora: /bin/plymouth --sysinit is not necessary on shut down
      units: add unit to call /bin/plymouth update-root-fs --read-write
      fsck: add new -l switch to fsck mount options
      fedora: start plymouth after udev-settle, so that the graphics modules are loaded
      readahead: shortcut replay if /.readahead doesn't exist
      manager: only minimize impact if we are in fail mode
      manager: when isolating undo all pending jobs, too
      update fixme
      service: delay automatic restart if job is pending
      log: downgrade syslog connection failure message since it might happen during normal operation
      selinux: relabel /dev after loading policy
      cryptsetup: minimal cryptsetup unit generator
      label: use internal utility functions wher epossible
      modules-load: fix minor race
      manager: parse RD_TIMESTAMP passed from initrd
      ac-power: make ac-power a proper binary that scripts can call
      unit: add ConditionNull= condition
      main: rename process on startup to 'systemd' to avoid confusion
      man: minor tmpfiles(5) updates and reindenting
      main: warn if /etc/mtab is not a symlink
      tmpfiles: include reference to man page in tmpfiles files
      units: deal properly with the fact that agetty is called getty on Debian
      mount: don't relabel /dev twice in a row
      build-sys: fix usage of path macros
      manager: hookup generators
      cryptsetup: hook up tool with ask-password
      log: add automatic log target
      log: fix build
      cryptsetup: automatically start cryptsetup when looking for mount source
      manager: be a bit more verbose if we receive unknown epoll event
      ask-password: properly NULL terminate table
      ask-password: ignore unknown query file fields
      ask-password: refer to right binary name in wall message
      ask-password: don't show wall message on ttys we are already running a tty agent on
      ask-password: leave printing of final prompt colon to message
      update fixme
      cryptsetup: support non-LUKS crypto partitions
      cryptsetup: properly parse cipher= switch
      cryptsetup: handle password=none properly
      udev: ignore temporary udev devices
      load-fragment: properly do comparison of words
      tmpfiles: ignore files marked with the sticky bit
      job: make it possible to wait for devices to be unplugged
      pam: rename 'no-session' to 'user' cgroup
      manager: don't fail transaction if adding CONFLICTED_BY job fails
      units: make use of agetty mandatory
      util: always highlight distro name
      manager: always pull 'following' units into transaction
      path: always look for IN_ATTRIB since deletion is signalled that way
      path: avoid immediate restarting of units triggered by paths if nothing actually changed on disk
      manager: consider jobs already installed as redundant when reducing new transactions
      cryptsetup: bind cryptsetup service to both source and destination device
      load-dropin: add support for .requires directories
      units: get rid of no_requires unit flag, and make crypto disks require cryptsetup service
      build-sys: make check for libnotify explicit
      unit: introduce ConditionDirectoryNotEmpty=
      units: use ConditionDirectoryNotEmpty= where applicable
      manager: ignore invalid epoll events
      path: properly free PathSpec structs
      drop support for MANAGER_SESSION, introduce MANAGER_USER instead
      pam: rename master user cgroup to 'master'
      exec: automatically determine right TERM= setting based on tty name
      cgroup: call root cgroup system instead of systemd-1
      pam: always rely on loginuid instead of uid to determine cgroup and XDG_RUNTIME_DIR
      units: delay getty until logins are allowed
      units: enable ask-paswword .path units early enough to be useful for early mounts
      units: allow start-up of plymouth ask-password agent very early
      units: set TERM for gettys again, since they acquire a TTY on their own
      plymouth: use updated socket name
      cryptsetup: lock ourselves into memory as long as we deal with passwords
      cryptsetup: include device name in password question
      path: don't mention too many inotify msgs
      units: order hwclock after readahead
      cryptsetup: reword questions a little
      ask-password: add --console mode to ask questions on /dev/console
      update TODO
      build-sys: prep release 12

Lucas De Marchi (1):
      vconsole-setup: fix path on Arch

Matthias Clasen (1):
      build-sys: fix building against libnotify 0.7

Michael Biebl (3):
      umount: Make sure / is remounted ro on shutdown
      Revert "fsck: add new -l switch to fsck mount options"
      Remove umount*.service files for Debian

Mike Kazantsev (1):
      service: fix sysv-less build

Ran Benita (1):
      add bash completion for systemctl --system

Tom Gundersen (3):
      unit-name: Fix unescaping
      fsck: remove symlink from fsck.target to sysinit.target
      arch: remove obsolete sysinit.service

Lennart

-- 
Lennart Poettering - Red Hat, Inc.


More information about the systemd-devel mailing list