CentOS7
systemd と gnome-settings-daemon によって電源ボタンが管理されている。
gnomeがインストーされていない場合は、systemdが管理している。
電源ボタンでシャットダウンする(gnomeがインストールされていない場合)
電源ボタンでシャットダウンする場合
/etc/systemd/logind.conf
HandlePowerKey=poweroff
設定をリロード
systemctl restart systemd-logind.service
電源ボタンでシャットダウンする(gnomeがインストールされている場合)
gnome-settings-daemonがユーザごとに org.gnome.settings-daemon.plugins.power.power-button-action の値を見ている。
ログイン画面の場合は gdmユーザの値を見る。
標準のままでは、nothing、suspend、hibernateしか選べないので
gnome-settings-daemonを再コンパイルする必要がある。
gnome-settings-daemonをコンパイルする
https://www.hiroom2.com/2016/10/19/centos-7-%E9%9B%BB%E6%BA%90%E3%83%9C%E3%82%BF%E3%83%B3%E6%8A%BC%E4%B8%8B%E3%81%A7%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%81%99%E3%82%8B/
https://unix.stackexchange.com/questions/242129/gnome-3-how-to-set-power-button-to-shutdown-instead-of-suspend
準備
sudo yum install -y rpmdevtools sudo yum-builddep -y gnome-settings-daemon sudo yumdownloader --source gnome-settings-daemon cd ~/rpmbuild/ rpmbuild -ba SPECS/gnome-settings-daemon.spec <-- ビルドできるか確認 cd BUILD cp -rp gnome-settings-daemon-3.22.2 gnome-settings-daemon-3.22.2.org
ソース修正
diff -uprN gnome-settings-daemon-3.22.2.org/data/gsd-enums.h gnome-settings-daemon-3.22.2/data/gsd-enums.h --- gnome-settings-daemon-3.22.2.org/data/gsd-enums.h 2016-10-08 23:08:22.000000000 +0900 +++ gnome-settings-daemon-3.22.2/data/gsd-enums.h 2017-12-16 12:57:05.680314214 +0900 @@ -114,7 +114,8 @@ typedef enum { GSD_POWER_BUTTON_ACTION_NOTHING, GSD_POWER_BUTTON_ACTION_SUSPEND, - GSD_POWER_BUTTON_ACTION_HIBERNATE + GSD_POWER_BUTTON_ACTION_HIBERNATE, + GSD_POWER_BUTTON_ACTION_SHUTDOWN } GsdPowerButtonActionType; typedef enum diff -uprN gnome-settings-daemon-3.22.2.org/plugins/media-keys/gsd-media-keys-manager.c gnome-settings-daemon-3.22.2/plugins/media-keys/gsd-media-keys-manager.c --- gnome-settings-daemon-3.22.2.org/plugins/media-keys/gsd-media-keys-manager.c 2017-12-16 12:54:33.099018583 +0900 +++ gnome-settings-daemon-3.22.2/plugins/media-keys/gsd-media-keys-manager.c 2017-12-16 12:58:28.447409152 +0900 @@ -1990,6 +1990,9 @@ do_config_power_button_action (GsdMediaK action_type = g_settings_get_enum (manager->priv->power_settings, "power-button-action"); switch (action_type) { + case GSD_POWER_BUTTON_ACTION_SHUTDOWN: + do_config_power_action (manager, GSD_POWER_ACTION_SHUTDOWN, in_lock_screen); + break; case GSD_POWER_BUTTON_ACTION_SUSPEND: do_config_power_action (manager, GSD_POWER_ACTION_SUSPEND, in_lock_screen); break;
パッチ作成
diff -uprN gnome-settings-daemon-3.22.2.org gnome-settings-daemon-3.22.2 > ../SOURCES/shutdown.patch
パッチ適用
vim ../SPECS/gnome-settings-daemon.spec
Patch5: shutdown.patch <-- 他のパッチと同じように追記 %patch5 -p1 <-- こっちも他のパッチと同じように追記
ビルド
rpmbuild -ba SPECS/gnome-settings-daemon.spec
インストール
yum localinstall RPMS/x86_64/gnome-settings-daemon-3.22.2-5.el7.centos.x86_64.rpm
設定変更
ユーザごとに設定を変更する。
dconf-editor や gsettings などを使う。
パス | 設定値 |
---|---|
/org/gnome/settings-daemon/plugins/power/power-button-action | 'shutdown' |
dconfの場合 dconf write /org/gnome/settings-daemon/plugins/power/power-button-action "'shutdown'" gsettingsの場合 gsettings set org.gnome.settings-daemon.plugins.power power-button-action shutdown
ログイン画面で電源ボタンでシャットダウンするにはgdmユーザに対して設定する
dconfの場合 sudo -u gdm dbus-launch dconf write /org/gnome/settings-daemon/plugins/power/power-button-action "'shutdown'" gsettingsの場合 sudo -u gdm dbus-launch gsettings set org.gnome.settings-daemon.plugins.power power-button-action shutdown
その他の設定
/etc/systemd/logind.conf にも以下の設定が必要らしいが、設定しても特に効いていないように思う・・・。
HandlePowerKey=poweroff PowerKeyIgnoreInhibited=yes
CentOS5
$ dmesg | grep ACPI
で何か表示されたらACPI。
$ dmesg | grep APM
で何か表示されたらAPM。
BIOSの設定で、電源ボタンを押しても何も起きないように設定しておく必要あり。
(4秒以上電源ボタンを押さないと電源が落ちない、サスペンド機能オフなど)
電源ボタンでshutdown(APM編)
フ ァ イ ル | 内 容 |
---|---|
/etc/sysconfig/apmd | 主要設定ファイル |
/etc/sysconfig/apm-scripts/apmscript | APM動作時に実行されるスクリプト |
/etc/sysconfig/apm-scripts/apmcontinue | ユーザ定義スクリプト |
電源ボタンでshutdown(ACPI編)
/etc/acpi/events に次の内容を例えば power という名前で保存します。
# /etc/acpi/events/power event=button.power.* action=/sbin/poweroff
バッテリーの残量などでシャットダウンしたい場合は
/proc/acpi/battery/BAT1/state
に情報がある。
またログは
/var/log/acpi
にある。
/etc/acpi/events/batteryファイル
event=battery action=/etc/acpi/battery.sh
/etc/acpi/battery.sh
#!/bin/sh PATH=/bin:/usr/bin:/sbin:/usr/sbin STAT=/proc/acpi/battery/BAT0/state if grep "capacity state:.*critical" $STAT > /dev/null 2>&1; then shutdown -h +1 "Battery critical" fi
とするとバッテリー残量が少なくなると自動でシャットダウンするはず・・・。
参考
http://blog.fuktommy.com/1118236244
http://www.gentoo.org/doc/ja/power-management-guide.xml
http://www.fujirushi.jp/bekkan/ybb/ybb5.html
http://www.shino.pos.to/linux/pwrsw.html
[通知用URL]
Tweet
最終更新時間:2017年12月16日 13時15分47秒