標準様式

RedHawk7 上で acpid を動作させる方法

版

日付

記述

発行

作成

版

日付

2

発行

版

日付

1

発行

表題

2016/06/09
2016/06/02
プロフェッショナルサービス

記述

加筆、修正

作成

大島龍博

記述

新規発行

作成

大島龍博

RedHawk7 上で acpid を動作させる方法

No

確認

承認

確認

承認

確認

承認

版

2ﾍﾟｰｼﾞ

1/7

標準様式

目次
RedHawk7 上で acpid を動作させる方法 ......................................................................................... 1
1 概要 ................................................................................................................................................. 4
2 パッケージのインストール ............................................................................................................. 4
3 設定 ................................................................................................................................................. 44 Embeded Controller を無効にする................................................................................................... 6

表題

RedHawk7 上で acpid を動作させる方法

No

版

2ﾍﾟｰｼﾞ

2/7

標準様式

表 1-1 改版履歴
版数
12表題

日付
2016/06/02
2016/06/09

改版内容
初版発行
加筆、修正

RedHawk7 上で acpid を動作させる方法

No版

2ﾍﾟｰｼﾞ

3/7

標準様式

1 概要
本稿は、RedHawk7 上で acpid を動作させる方法について記述する。
2 パッケージのインストール
CentOS7 インストールパッケージ DVD の Package ディレクトリ下にある acpid-2.0.195.el7.x86_64.rpm を追加でインストールする。
# rpm -ivh acpid-2.0.19-5.el7.x86_64.rpm
3 設定①/etc/systemd/logind.conf の以下の項目を ignore,yes に設定する。
# This file is part of systemd.
## systemd is free software; you can redistribute it and/or modify it# under the terms of the GNU Lesser General Public License as published by# the Free Software Foundation; either version 2.1 of the License, or# (at your option) any later version.
## See logind.conf(5) for details[Login]#NAutoVTs=6#ReserveVT=6#KillUserProcesses=no#KillOnlyUsers=#KillExcludeUsers=root
Handle* = ignore に設定しない場合には、udev セクション"power-switch"#InhibitDelayMaxSec=5
HandlePowerKey=ignoreを持つ入力デバイスを systemd-uvdev が監視する。
HandleSuspendKey=ignore
HandleHibernateKey=ignore
acpid など他のプログラムで ACPI イベントを管理したい場合は、Handle
HandleLidSwitch=ignorePowerKeyIgnoreInhibited=yes
オプションを ignore に設定する必要がある。
SuspendKeyIgnoreInhibited=yes
HibernateKeyIgnoreInhibited=yes*Inhibited = yes を設定すると systemd-logind による処理は行われない
LidSwitchIgnoreInhibited=yes#IdleAction=ignore#IdleActionSec=30min

設定ファイル変更後、# systemctl restart systemd-logind.serviceを実行する。

②

acpid サービスを起動する# service acpid start# chkconfig acpid on# systemctl enable acpid# systemctl start acpid③ reboot し 電 源 ボ タ ン を 押 す と 、 フ ァ イ ル “/etc/acpi/events/power.conf” に 定 義 さ れ た ”/etc/acpid/actions/power.sh”が動作するので、環境に合わせて編集する。

表題

RedHawk7 上で acpid を動作させる方法

No版

2

ﾍﾟｰｼﾞ4/7

標準様式

例えば、以下のように、編集するとボタンを押すたび、"TRAP @@@@" が /tmp/xxx に追加される。
/etc/acpi/events/power.conf の内容# ACPID config to power down machine if powerbutton is pressed, but only if# no gnome-power-manager is running
event=button/power.*
action=/etc/acpi/actions/power.sh/etc/acpid/actions/power.sh の例#!/bin/sh
PATH=/sbin:/bin:/usr/bin
echo "TRAP @@@@" >> /tmp/xxx

この時、以下の様に acpi_listen を使用してモニタすることができる。
RedHawk7.0 では、（ソフト）パワーボタンを 1 回押すと、以下の様にイベントが２回配信される。
# acpi_listen
button/power PBTN 00000080 00000000
button/power LNXPWRBN:00 00000080 00000003

２回目のイベント名は、"LNXPWRBN"なので/etc/acpi/events/powerconf

フ ァ イ ル の ” button/power.*” を ” button/power.PBTN” に 変 更 す ると、”PBTN”のみ配信される。
# ACPID config to power down machine if powerbutton is pressed, but only if# no gnome-power-manager is running
event=button/power.PBTN
action=/etc/acpi/actions/power.sh③ 必要に応じてデーモンの優先度を変更する# run -b 0 -s fifo -P 99 -n acpid# run -b 0 -s fifo -P 99 -n systemd# run -b 0 -s fifo -P 99 -n systemd-journald# run -b 0 -s fifo -P 99 -n systemd-udevd# run -b 0 -s fifo -P 99 -n systemd-logind

表題

RedHawk7 上で acpid を動作させる方法

No版

2

ﾍﾟｰｼﾞ

5/7

標準様式

4 Embeded Controller を無効にする
下記 dmesg のログから "GPE"の番号に注目する。（GPE = 0x17）# dmesg | grap GPE[0.163110] ACPI: Enabled 5 GPEs in block 00 to 3F[0.163164] ACPI : EC: GPE = 0x17, I/O: command/status = 0x6e6, data = 0x6e2

これは、ACPI によるきめ細やかな電源管理を実現するための、「EC（Embeded Controller）」が搭載されていることの出力である。EC とは、内蔵するキーボードコントローラーに、電源コントロール機能を持たせたマイコンチップであり、機能としては、温度センサーの監視、CPU ファンの制御、電源ボタン制御、電源ステータス表示 LED の制御、バッテリーの充電制御と放電監視などがある。
下記、ディレクトリに ACPI の# ls –l /sys/firmware/acpi/interrupts
合計 0-rw-r--r-- 1 root root 4096 Jun

8 13:10 error-rw-r--r-- 1 root root 4096 Jun

8 13:22 ff_gbl_lock-rw-r--r-- 1 root root 4096 Jun

8 13:13 ff_pmtimer-rw-r--r-- 1 root root 4096 Jun

8 13:10 ff_pwr_btn-rw-r--r-- 1 root root 4096 Jun

8 13:10 ff_rt_clk-rw-r--r-- 1 root root 4096 Jun

8 13:10 ff_slp_btn-rw-r--r-- 1 root root 4096 Jun

8 13:10 gpe00：-rw-r--r-- 1 root root 4096 Jun

8 13:10 gpe3E-rw-r--r-- 1 root root 4096 Jun

8 13:10 gpe3F-rw-r--r-- 1 root root 4096 Jun

8 13:10 gpe_all-rw-r--r-- 1 root root 4096 Jun

8 13:10 sci-rw-r--r-- 1 root root 4096 Jun

8 13:10 sci_not

この時、下記の様に値をモニターすると、電源ボタンを押すたびに値が変化していることを確認できる。
# cat /sys/firmware/acpi/interrupts/gpe17/sys/firmware/acpi/interrupts/gpe17:

表題

54753

enabled

RedHawk7 上で acpid を動作させる方法

No

版

2

ﾍﾟｰｼﾞ

6/7

標準様式

この値は、
# cat /proc/interrupts|grep acpiでモニタした値に連動している。

ここで# echo "0" > /sys/firmware/acpi/interrupts/gpe17# echo "disable" > /sys/firmware/acpi/interrupts/gpe17を実行し、同様に電源ボタンを押すことによって、
cat 設定ファイル変更後、# systemctl restart systemd-logind.servicegpe17が 0 に固定されcat /proc/interrupts|grep acpiの値が電源ボタン１回ごとに 1 回インクリメントすることが確認できる。
必要に応じて、他の設定ファイル変更後、# systemctl restart systemd-logind.service/gpe?? をdisable

参考に設定すること。

URL

http://unix.stackexchange.com/questions/242013/disable-gpe-acpi-interrupts-on-boot
http://sudoremember.blogspot.jp/2013/05/high-cpu-usage-due-to-kworker.html

表題

RedHawk7 上で acpid を動作させる方法

No版

2ﾍﾟｰｼﾞ

7/7