さて、今回はLinuxネタ。

昨今のノートPCは液晶を閉じるとサスペンドする仕様である。
今回は液晶蓋を閉じるとサスペンドする機能を無効化をしたいのではなく、AC電源接続中、何も操作しない場合、一定時間経過により省電力機能が働きサスペンドしてしまう。
この省電力機能を無効化をしたいと考えて調査した結果を記述していく。

そして今回の対象のマシンはLenovo ThinkPad X230。
OSはUbuntu系のLinuxであるelementaryOS。

このelementaryOSの管理メニューには電源管理の項目があり、スリープ無効化が選択できるようになっている。
しかし、無効化を選択しても無効化が機能せず、スリープしてしまいます。

なぜだぁ〜!
バグなのか?

検索してみるとUbuntuでスリープさせない対策として、たくさん引っかかるのが以下の方法である。

修正対象ファイル
/etc/systemd/logind.conf

上記ファイルの以下の部分のコメントアウトを解除、=以降を「ignore」に修正。

<修正例>
#HandleLidSwitch=suspend(修正前)
HandleLidSwitch=ignore(修正後)

そして以下コマンド実行をするというものである。

sudo systemctl restart systemd-logind


しかし、この設定はスリープ無効化ではなく、ノートPCの蓋を閉じてもスリープしないという設定である。ミスリードしてしまうハウツーサイトがあるので注意が必要である。

※気になったのは上記のsystemctlを記載していないサイトが複数あり、他人のネタパクリしているのではないかと疑ってしまう。

では、本来の目的に戻るが、海外のelementaryOSのフォーラムに対応方法があった。そちらを貼っておく。

sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

Created symlink /etc/systemd/system/sleep.target → /dev/null.
Created symlink /etc/systemd/system/suspend.target → /dev/null.
Created symlink /etc/systemd/system/hibernate.target → /dev/null.
Created symlink /etc/systemd/system/hybrid-sleep.target → /dev/null.

これで確実にスリープ無効化ができた。