【Xubuntu 22.04】xrdp接続で勝手にスリープする怪奇現象をlogind.confでねじ伏せた話

みなさん、こんにちは。

普段、私はノートPCに Xubuntu 22.04 LTS を入れて使っています。
メインマシンはWindowsのデスクトップなので、WSLだけでは足りない「ガッツリLinux環境」が必要な時は、このXubuntuノートに xrdp でログインして、リモートデスクトップで作業するスタイルです。

ところが先日、久しぶりにXubuntuにログインしてリモート作業をしようとしたら、非常に厄介な現象に遭遇してしまいました。

「GUIで電源設定をいくらいじっても、勝手にスリープして接続が切れる」 という現象です。

これの解決だけで半日溶かしてしまったので(泣)、同じ現象に悩んでいる方の助けになればと思い、解決策を共有します。

結論から言うと、GUIの設定ではなく logind.conf という設定ファイルを直接編集して、システムレベルでスリープを強制停止させる ことで解決しました。

 


 

今回の環境と発生したトラブル

 

まず、今回問題が起きた環境はこんな感じです。いろいろとデスクトップ環境(DE)を入れているのが怪しいポイントですね。

  • OS: Xubuntu 22.04 LTS
  • リモート接続: xrdp を使用
  • ログインマネージャー: GDM(GNOME Display Manager) ※デフォルトのLightDMから変更済み
  • 導入デスクトップ環境: XFCE4(デフォルト)、GNOME、Enlightenment
  • ログインセッション: xrdp接続時は XFCE4 を使用

どんな現象?

xrdpでリモートログインして作業中、少し席を外して戻ってくると…問答無用でシステムがスリープ(サスペンド)している!
もちろん、スリープするとネットワークも切れるので、リモートセッションが強制切断されてしまいます。これは地味に、いやかなりストレスです。

 


 

GUIの設定が効かない!? 試行錯誤の経緯

 

最初は「あー、電源設定がデフォルトのままだったかな?」くらいに軽く考えていました。しかし、ここから泥沼にはまります。

1. XFCE4の電源設定を変更

まずは基本通り、XFCE4の電源管理マネージャーで「スリープしない」に設定。

XFCE4の電源管理
スリープしないに設定

結果:解決せず。 まだ寝ます。

2. GNOMEの設定も確認

「あ、ログインマネージャーをGDMにしてるし、GNOMEの設定が悪さしてるのかも?」と思い、GNOMEのコントロールパネルからも自動サスペンドを無効化。

Gnome電源管理
自動サスペンドをオフ

結果:解決せず。 まだ寝ます。

3. Enlightenmentの設定確認

一応確認しましたが、こちらは特に影響なさそうでした。

ここまでやって気づきました。

「これ、デスクトップ環境ごとの設定じゃなくて、もっと上位のシステム設定が優先されてるな…?」

 


 

最終奥義 – logind.conf を直接編集する

 

Ubuntu系のOSでは、システム全体の電源管理を systemd-logind というサービスが担当しています。
通常はGUIの設定がこことうまく連携するはずなんですが、私の環境(複数DE混在+GDM+xrdp)では、どうやら連携がうまくいかず、システム側のデフォルト設定が強制発動していたようです。

今まで Bodhi Linux 7.0.0 にxrdpでログインして作業する時にはスリープに悩まされることはなかったので、やはりこの複雑な環境構成が根本原因だと目星をつけました。

というわけで、GUIは諦めて設定ファイルを直接書き換えます。これが一番確実です。

設定手順

1. ターミナルを開き、設定ファイルを編集

スーパーユーザー権限で /etc/systemd/logind.conf を開きます。(ここではviを使っていますが、nanoなど使い慣れたエディタでOKです)

sudo vi /etc/systemd/logind.conf

2. IdleAction の設定を変更

ファイル内から IdleAction という項目を探します。デフォルトではコメントアウトされていることが多いです。 これを「ignore(無視)」に書き換えます。

# 変更前
#IdleAction=ignore

# 変更後(コメントアウトの # を外すのを忘れずに!)
IdleAction=ignore

ファイルを保存してエディタを終了します(viなら :wq)。

3. 設定を反映させる

以下のコマンドでサービスを再起動します。

sudo systemctl restart systemd-logind

これで試してみたところ…やっとスリープしなくなりました!リモート接続をつなぎっぱなしにしても、切断されることなく快適です。

ちょっとした注意点

この設定後も、OS自体を再起動して使い続けていると、たまにまたスリープしてしまうことがありました(謎挙動…)。
その場合は、再度 sudo systemctl restart systemd-logind を叩いてサービスを入れ直すと解消されました。

はたしてlogind.confが根本原因なのか謎は深まるばかりですが、少なくとも logind.confignore している間は抑制できているようです。

 


 

まとめ

 

今回の原因は、「XFCE4、GNOME、Enlightenmentなどの複数環境 + GDM + xrdp」 という特殊な構成だったため、各デスクトップ環境の電源設定が無視され、システムのデフォルト動作が優先されてしまったことにあると考えられます。

logind.confIdleAction=ignore は、いわば「システムレベルでの強制命令」なので、GUIの設定が効かない時には非常に強力な解決策になります。

  • リモートサーバー用途で絶対にスリープさせたくない
  • GUIの電源設定を変えてもなぜかスリープしてしまう

こんな時は、ぜひこの systemd の設定変更を試してみてください。

 

本日も最後までお読みいただきありがとうございました。

それでは、よいLinuxライフを!

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール