Bug#814758: Case power button is ignored unless dbus is installed.
Trent W. Buck
trentbuck at gmail.com
Mon Feb 15 07:27:46 GMT 2016
Package: systemd
Version: 215-17+deb8u3
Severity: normal
My computers have physical power buttons on their cases.
When the button is pressed, I want it to initiate a clean shutdown.
On a desktop install, this happens because systemd-logind handles it:
root at het:~# journalctl -fu systemd-logind
-- Logs begin at Mon 2016-02-15 15:42:58 AEDT. --
Feb 15 15:43:08 het systemd-logind[470]: New seat seat0.
Feb 15 15:43:08 het systemd-logind[470]: Watching system buttons on /dev/input/event1 (Power Button)
Feb 15 15:43:08 het systemd-logind[470]: Watching system buttons on /dev/input/event5 (Video Bus)
Feb 15 15:43:08 het systemd-logind[470]: Watching system buttons on /dev/input/event0 (Power Button)
[...]
Feb 15 17:50:47 het systemd-logind[470]: Power key pressed.
Feb 15 17:50:47 het systemd-logind[470]: Powering Off...
Feb 15 17:50:47 het systemd-logind[470]: System is powering down.
On a server install, this does not happen,
The logs indicate systemd-logind started without issue, then nothing:
root at alpha-understudy:~# journalctl -u systemd-logind
-- Logs begin at Mon 2015-11-23 15:29:23 AEDT, end at Mon 2016-02-15 17:45:16 AEDT. --
Nov 23 15:29:29 alpha-understudy.cyber.com.au systemd[1]: Started Login Service.
However, on closer inspection it has actually failed:
root at alpha-understudy:~# systemctl status systemd-logind
● systemd-logind.service - Login Service
Loaded: loaded (/lib/systemd/system/systemd-logind.service; static)
Active: inactive (dead)
start condition failed at Mon 2015-11-23 15:29:29 AEDT; 2 months 23 days ago
ConditionPathExists=/lib/systemd/system/dbus.service was not met
Docs: man:systemd-logind.service(8)
man:logind.conf(5)
http://www.freedesktop.org/wiki/Software/systemd/logind
http://www.freedesktop.org/wiki/Software/systemd/multiseat
Nov 23 15:29:29 alpha-understudy.cyber.com.au systemd[1]: Started Login Service.
root at alpha-understudy:~# pgrep logind
root at alpha-understudy:~# pgrep dbus
root at alpha-understudy:~# dpkg-query -W '*dbus*'
dbus
libdbus-1-3:amd64 1.8.20-0+deb8u1
It's failing because dbus isn't installed.
Installing dbus fixes the problem.
systemd Recommends: dbus.
dbus is Priority: standard.
If a system is created with debootstrap,
this means dbus is never installed,
and the power button doesn't work:
# script -c 'sh -xc "debootstrap jessie /tmp/bootstrap/delete-me http://apt.cyber.com.au/debian"' typescript
# grep dbus typescript
[no hits]
I believe debian-install users get Priority: standard packages via tasksel defaults,
though they can opt-out of this.
systemd-logind wants dbus so that shutdown "inhibitors" can be used.
AFAICT these are the available options:
* change systemd Recommends: dbus to systemd Depends: dbus.
I strongly dislike this option,
because it will force dbus & expat on minbase installs.
(Also, even upstream doesn't say dbus is mandatory.)
* change systemd so the power button works without dbus.
I like this best, but I expect upstream to hate it.
* change systemd so when systemd-logind fails to start (as above),
it actually SAYS THERE'S A PROBLEM in the journal/syslog.
I expect upstream to hate this, too.
* change systemd's Description, and/or the Debian release notes,
to warn users about this.
* do nothing.
PS: I used to install acpid & acpi-support-base to work around this issue,
until I discovered that on my faster production hosts,
acpid doesn't start reliably under systemd.
About 48% of the time, acpid starts before /dev/input/ is made, giving:
acpid: inotify_add_watch() failed: No such file or directory (DIGITS)
Sigh.
More information about the Pkg-systemd-maintainers
mailing list