気がついたら時代に取り残されていた

Fedora 19で「液晶パネル(LID)を閉じたらスリープする」動作を抑止しようとしたら、仕様が変わってて困ったので、健忘禄代わりに、設定方法を記載しておきます。設定方法が知りたい人は、一番下を見てください。


ちょっと休みのうちに複数サーバ環境の検証を…っと思って、今使っているFedora 19のクローンをゴリゴリ作り、ノートPCで起動。えっ?!なんでFedora? しかも仮想ではなく物理環境? うーん、昔は別のディストリビューション使ってたんだけどね、会社がRHEL使う様になったからFedora(Fedora Core)に移行して、後はズルズルとって感じですよ? あとなんで物理マシンを使っているのかは、主にメモリの問題…何ともアナログな…
で、ちょっと新しめのノートを心配したが、取りあえず問題なく起動完了。無線LANも認識したので個別修正…。仮サーバ共は邪魔なので液晶を閉じ、転がしておく。
クライアント側の設定をチョロチョロ弄り接続…ありゃサーバ共が応答しない??
よく見たら電源ランプが点滅しているよ〜そういえば、今のLinuxで液晶閉じるとスリープに入るの忘れてた。

/etc/UPower/UPower.conf

IgnoreLid=false

のfalseをtrueに変えて、/usr/libexec/upowerdを再起動…

# upower -d
…省略…
  lid-is-present:  no
…省略…

今度こそ準備完了。おりゃ!リトライ!っておい!!また止まってるぞ??えーなんで?

確かFedora 15のあたりは問題なかった様な気がするのだが??
…本来やるはずの検証を外れ、別の検証を始める…

Fedora 15

  • kernel-PAE-2.6.38.6-26.rc1.fc15
  • upower-0.9.10-1.fc15

fc15の初期構成。「IgnoreLid=true」に変えればスリープせず。

  • kernel-PAE-2.6.43.8-1.fc15
  • upower-0.9.12-1.fc15

fc15の最終リリース。「IgnoreLid=true」に変えればスリープせず。

Fedora 17

  • kernel-PAE-3.3.4-5.fc17
  • upower-0.9.16-1.fc17

fc17の初期構成。「IgnoreLid=true」に変えればスリープせず。

  • kernel-PAE-3.9.10-100.fc17
  • upower-0.9.19-1.fc17

fc17の最終リリース。「IgnoreLid=true」に変えればスリープせず。

Fedora 18

  • kernel-PAE-3.6.10-4.fc18
  • upower-0.9.18-2.fc18

fc18の初期構成。「IgnoreLid=true」に変えても、スリープしない環境とする環境がある。スリープしない環境でもスリープするときもある。かなり不安定。

  • kernel-PAE-3.6.10-4.fc18
  • upower-0.9.19-1.fc18

取りあえずupowerだけfc18の最終リリースに上げてみる。現象変わらず不安定なまま。

  • kernel-PAE-3.10.14-100.fc18
  • upower-0.9.19-1.fc18

カーネルもfc18の最終リリースに上げてみる。「IgnoreLid=true」に変えてもスリープしてしまう。前カーネルでスリープしない環境で実施してもスリープしてしまい、何度か試したが「スリープしない」現象を確認できず。つまり、Fedora 19の状態。

検証結果まとめ

  • Fedora 17までは、/etc/UPower/UPower.confで「IgnoreLid=true」を指定すれば、液晶パネルを閉じてもスリープすることはない。
  • Fedora 18からは、/etc/UPower/UPower.confで「IgnoreLid=true」を指定しても、液晶パネルを閉じるとスリープしてしまう。また、upower -dで設定を確認すると、Fedora 17以前と変わらず「lid-is-present: no」と認識されているが、動作と矛盾する。

追加調査

upowerdが言うことを聞かないので、killすることに決定。少なくとも、電源ボタン/スリープボタン操作が効かなくても、現状困ることはないし。で、液晶パタン…うをい、またか。どうやら、upowerdが言うことを聞かないのではなく、upowerdに関係なくupowerdのやっていたことを代行している奴がいるらしい。
dmesgを眺めていたところ、奇妙な行を発見。

systemd-logind[470]: Watching system buttons on /dev/input/event0 (Lid Switch)

LIDスイッチを見てるsystemd-logindとかいう奴がおるの? psで確認すると確かに動いているし。
で、こいつ何? と言う訳で systemd-logind → logind.conf とマニュアルを辿っていくと、(他に分担している作業もあるが)upowerdのH/Wボタン監視の上位モデルらしい。肝心の液晶パネルのスイッチ(LIDスイッチ)は…HandleLidSwitchで、設定可能値は、ignore, poweroff, reboot, halt, kexec, suspend, hibernate, hybrid-sleep, lockの9種類があるらしい(デフォルトがsuspend)。画面ロックされても面倒なだけだし、ここは何もするなのignoreかね。と言う訳で、logind.confを弄る。

/etc/systemd/logind.conf

#HandleLidSwitch=suspend
↓
HandleLidSwitch=ignore

killして再起動しても問題ない気もするが一応サービスプログラムらしいので、systemctlコマンドを使う。

# systemctl restart systemd-logind

今度こそ…液晶パタン…おぉ〜スリープしない〜クライアントからもアクセスできるよ。念のため、upowerdの設定をfalseに戻しても、upowerdが干渉してこないことを確認。

結論

Fedoraで液晶パネルを閉じてもスリープさせないためには…

  • Fedora 17までは、/etc/UPower/UPower.confのIgnoreLidにtrueを設定する。
    • 確かLIDスイッチの監視が実装されたときはIgnoreLidは用意されておらず、後から増えた設定値なので、この隙間に入ると多分駄目。
  • Fedora 18は、/etc/systemd/logind.confのHandleLidSwitchのコメントを外し、ignore等を指定する。さらに念のため、/etc/UPower/UPower.confのIgnoreLidにtrueを設定する。
  • Fedora 19は、/etc/systemd/logind.confのHandleLidSwitchのコメントを外し、ignore等を指定する。
    • Fedora 19の初期リリース状態で試してしないので、これで駄目だったらUPower.confの方も修正して。