Linux界隈がCentOSとUbuntuに収束しようとしている・・・。
もはや誰もRHELとか使ってないんじゃないのかな?
久しぶりに仮想環境ではない実機にLinuxを新規にインストールしてみて、こんなの絶対おかしいと思う現象に出会ったので書き記す。
インストールしたのはdebian 10(buster)のserver + desktop(GNOME)。
普通にGUIでインストールする分には全く問題がなく、
「最近のLinuxのインストールは簡単すぎて面白みがないなぁwん?w」
とか調子こいてたら、インストール後に罠があった。
xrdpをインストールしてWindows端末で遠隔操作していると、
しばらくすると応答がなくなる
↓
画面が固まったまま動かなくなる
↓
RDP切れる
↓
本体電源ランプ消灯
仕方なくwakeonlanで遠隔起動させるとデスクトップが復旧。
どうも電源断ではなく、「サスペンド」(休止状態)に入っている模様。
ノートPCにインストールしているわけでもない常時電力供給がある端末なのになぜ省電力設計なのか・・・?
syslogの内容を”Suspending”でgrepするとちゃんと時限的にサスペンドが動いてることがわかる。
Jan XX HH:mm:ss debian10 systemd[1]: Reached target Sleep. Jan XX HH:mm:ss debian10 systemd[1]: Starting Suspend… Jan XX HH:mm:ss debian10 systemd-sleep[2425]: Suspending system…
この自動サスペンド。
実はdesktopインストール後、ファーストログイン時に
「自動的にONにされる」
らしい。
この画面の項目(アクティビティ→設定→[電源]リージョン)で
初期設定の「20分」をオフに切り替えれば、サスペンドしなくなる・・・。
と、思うじゃん?
実はこの設定をオフに切り替えただけでは、解決しない。
gsettings list-recursively | grep -i "suspend|sleep"
こちらのコマンドでgnomeの設定の中から、suspendとsleepに関連するものを抽出すると、下記が出てくる。
org.freedesktop.Tracker.Miner.Files initial-sleep 15 org.gnome.Music inhibit-suspend false org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing' org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout 1200 org.gnome.settings-daemon.plugins.power sleep-inactive-battery-type 'suspend' org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 1200
この部分の 1200 とか suspend ってのが残ってると、
電源につなぎっぱだろうがなんだろうが
1200秒のカウントダウンが容赦なく始まる。
なんでこんなことになるのかまったく謎。(CPUが省電力のものだとモバイル扱いになる?)
なので、下記のコマンドで全部強制的に無効に書き換える。
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type nothing gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout 0 gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-type nothing gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 0
このあと、いったんreboot(もしくはXwindow systemの再起動)で解消した。
しかし・・・・これ遠隔地インストールしていて、
wakeonlanを無効化していたらもれなく死ぬ案件では??
この罠を考えて実装した人は本当に素晴らしい脳みそを持っていると思う。