トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

電源管理

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

[カテゴリ: OS > Linux]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2017年12月16日 13時15分47秒