電源ボタン押下でマシンをシャットダウンする方法について記載します。ここで言う電源ボタン押下とは、電源ボタン長押しによるハードウェア電源断ではなく、ソフトウェアに通知が届くリセットのことです。
Table of Contents
1 電源ボタン押下のデフォルトはサスペンド
CentOS 6ではデフォルトはシャットダウンでしたが、CentOS 7ではサスペンドになっており、電源ボタン押下で以下のようなメッセージとともにサスペンドするようになっています。
[ 85.247233] Freezing user space processes ... (elapsed 0.001 seconds) done. [ 85.249541] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done. [ 85.251926] Suspending console(s) (use no_console_suspend to debug)
Fedora 22でも電源ボタン押下のデフォルトはサスペンドです。しかし、Fedora 23から電源ボタン押下のデフォルトはシャットダウンに戻っています。これはデフォルト値を使うのとは別の方法のようです。
ユーザ毎の電源ボタン押下の挙動はgsettingsやgconf-editorで変更することができますが、デスクトップにログインする前の挙動を変更する方法がありません。
また仮想マシンのCentOS 7の場合、ゲストマシンをシャットダウンするのに、ゲストマシンにいちいちログインする必要があり、管理が煩雑になります。
このデフォルト値に関しはいくつか議論がされており、サスペンドにしたのはタブレット向けの議論によるもののようです。その後、デフォルト値を変更できるようにすべきという議論もあり、Fedora 23ではそれらの議論に合わせたものになったようです。
2 gnome-settings-daemonのリビルド
以下のスクリプトはデフォルト値をshutdownにしたgnome-settings-daemonをインストールします。再起動後、電源ボタン押下でCentOSがシャットダウンできるようになります。
#!/bin/sh
sudo yum install -y rpmdevtools
sudo yum-builddep -y gnome-settings-daemon
sudo yumdownloader --source gnome-settings-daemon
rpm -i gnome-settings-daemon*.src.rpm
rm -f gnome-settings-daemon*.src.rpm
cd ~/rpmbuild
cat <<EOF > SOURCES/button-power-suspend-to-shutdown.patch
--- gnome-settings-daemon-3.14.4.org/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in.in 2015-04-01 04:47:29.000000000 -0400
+++ gnome-settings-daemon-3.14.4/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in.in 2016-10-18 22:16:01.627664826 -0400
@@ -57,7 +57,7 @@
</key>
<!-- See https://bugzilla.gnome.org/show_bug.cgi?id=652183 for rationale -->
<key name="button-power" enum="org.gnome.settings-daemon.GsdPowerActionType">
- <default>'suspend'</default>
+ <default>'shutdown'</default>
<summary>Power button action</summary>
<description>The action to take when the system power button is pressed.</description>
</key>
EOF
cat <<EOF | patch -p1
--- a/SPECS/gnome-settings-daemon.spec 2016-10-18 22:44:16.963433081 -0400
+++ b/SPECS/gnome-settings-daemon.spec 2016-10-18 22:44:50.565951707 -0400
@@ -30,6 +30,8 @@ Patch4: 0001-mouse-Do-not-disable-touchp
# https://bugzilla.redhat.com/show_bug.cgi?id=1260081
Patch5: 0001-smartcard-use-NSS_InitContext-instead-of-NSS_Initial.patch
+Patch6: button-power-suspend-to-shutdown.patch
+
Requires: control-center-filesystem
Requires: colord
@@ -110,6 +112,7 @@ developing applications that use %{name}
%patch3 -p1 -b .power-actions-when-locked
%patch4 -p1 -b .touchpad-buttons
%patch5 -p1 -b .smartcard-fix
+%patch6 -p1 -b .button-power
autoreconf -i -f
EOF
rpmbuild -ba SPECS/gnome-settings-daemon.spec
sudo yum localinstall -y RPMS/x86_64/gnome-settings-daemon*.rpm
sudo reboot