!!!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 {{category2 OS,Linux}}