KEYMAP are use to pass keymap configuration to initrd, but not to the
system itself. Since the initrd might get out of date we need to make
sure that changes made in userspace override the settings from the
cmdline, hence drpo any use of it all for these variables.
Michal Schmidt [Tue, 27 Sep 2011 09:20:20 +0000 (11:20 +0200)]
systemctl: better width and alignment of fields
Provide nicer output by taking advantage of the available columns.
Expand UNIT and DESCRIPTION if possible. Economize the space:
- never give UNIT more width than it can use.
- if there's a shortage of space, give 25 columns to UNIT, even
if it would result in overflowing the total columns. The field would not
be useful below width 25.
- then if possible, assign up to 25 columns to DESCRIPTION.
- then split any remaining space evenly between UNIT and DESCRIPTION.
Michal Schmidt [Mon, 26 Sep 2011 22:48:40 +0000 (00:48 +0200)]
systemctl: print the legend regardless of stdout type, add --no-legend
Print the legend (the column headers and the footer with hints) by
default even to non-tty output. People seem to get confused by the
difference when they redirect the output.
Add a parameter to suppress the printing of the legend.
Michal Schmidt [Fri, 23 Sep 2011 11:58:00 +0000 (13:58 +0200)]
unit: fix complementing of requirement deps with After deps for targets
'man systemd.target' says:
Unless DefaultDependencies= is set to false, target units will
implicitly complement all configured dependencies of type
Wants=, Requires=, RequiresOverridable= with dependencies of type
After= if the units in question also have DefaultDependencies=true.
Michal Schmidt [Fri, 23 Sep 2011 00:10:00 +0000 (02:10 +0200)]
condition: fix reversed tests if path does not exist at all
CONDITION_PATH_IS_DIRECTORY, CONDITION_PATH_IS_SYMBOLIC_LINK and
CONDITION_FILE_IS_EXECUTABLE gave reversed results when the path
did not exist at all.
Michal Schmidt [Thu, 22 Sep 2011 21:52:38 +0000 (23:52 +0200)]
units: fix rescue.service race with plymouth
It was possible for the "ExecStartPre=-/bin/plymouth quit" to race
with plymouth-start.service which is pulled in indirectly by
basic.target -> sysinit.target.
The race left plymouth running on the terminal, making it unusable for
rescue purposes.
Michal Schmidt [Thu, 22 Sep 2011 11:10:32 +0000 (13:10 +0200)]
service: warn if a service fails to write its PID file
Warn if a service promises to write a PID file (using 'PIDFile=' in the
unit file or '# pidfile:' in SysV header), but fails to keep the
promise.
This warning will likely trigger also for the forking services with a
racy daemonization, which exit the original process before the PID file
is written.
service: if StandardInput=socket and StandardOutput=inherit imply socket for output, don't imply default output
This is useful for inetd-style per-connection services, so that they
again can simply specify StandardOutput=socket to connect all three fds
to the socket.
The mount point directory /sys/kernel/config is only created after the
module is loaded, hence there's little value in having this an automount
unit: the runtime penalty for mounting an autofs here should be the same
as for a real mount.
Michal Schmidt [Tue, 20 Sep 2011 19:43:30 +0000 (21:43 +0200)]
service: handle forking services that move to a new PID
When some forking daemons receive a SIGHUP, they re-execute themselves
and consequently change to a new main PID. As long as they update the
PID file in the right order (before exiting the old PID), we can detect
that and avoid killing them.
Michal Schmidt [Tue, 20 Sep 2011 10:28:22 +0000 (12:28 +0200)]
man: document which condition tests follow symlinks
ConditionPathExists and ConditionFileIsExecutable follow symlinks.
ConditionPathIsDirectory does not follow symlinks.
(XXX: is this actually the desired behavior?)
Michal Schmidt [Tue, 20 Sep 2011 10:11:04 +0000 (12:11 +0200)]
units: direct stdout/stderr of rescue shells to tty
With output of services going to syslog by default now, the rescue shell
units need to direct their output to tty explicitly.
Specify stderr too, just in case.
service: drop broken support for X-Interactive fields in LSB headers
The logic never worked since reading from the boot console is useless
when a service is started after boot. Hence drop this half-baked code,
since we now have a place document incompatibilities like this.
It was noted on IRC that the current layout is not necessarily the
easiest to parse by humans. I personnally struggled understanding it the
first time I read it.
Hopefully, this change makes it easier to understand.
Note: I only reformatted the information that was already present in the
documentation, I didn't add anything.
systemctl: if we managed to reexec the init system via the bus don't retry via signal
If we managed to reeexec the init system via the bus this allows us to
provide synchronous behaviour to callers. This is all lost if we then
repeat the reexecution via SIGTERM.
/run/initramfs usually contains the initrd so that we can jump back into
it on shutdown. It's usually relatively large and static data, hence we
should avoid relabelling of it. On my netbook this saves 6s. (6.6s
needed for relabelling /dev and /run goes down to 600ms -- still way too
much, but much better).