Post

RHEL9 XFCE ETX Multiple Session Gray Screen Fix

RHEL9 XFCE ETX Multiple Session Gray Screen Fix

RHEL 9 下 XFCE 在 OpenText ETX 多会话中出现灰屏问题的解决方案

参考资料:

背景

在使用 OpenText Exceed TurboX(ETX)部署远程 Linux 桌面时,用户往往会配置轻量级桌面如 xfce4-session 以适配 RHEL 9 图形栈。但当同一用户尝试启动第二个会话时,桌面无法正确加载,常见表现为:

  • 仅显示灰屏(无任务栏/窗口管理器)
  • 不响应鼠标/键盘
  • 关闭 Session 时无法正常退出

根因分析

根据社区讨论与官方 bug 跟踪,出现该问题的主要原因包括:

1. xfce4-session 不支持并发运行多实例(同用户)

XFCE 的 session 管理器(xfce4-session)会尝试通过 DBus 注册 session,如果同一用户已有运行中的 session,则第二个 session 会因为注册失败或资源锁冲突而退出或挂起。

2. 环境变量继承导致资源冲突

当启动第二个 ETX 会话时,若复用了以下关键环境变量,会话初始化将失败:

  • DBUS_SESSION_BUS_ADDRESS
  • XDG_RUNTIME_DIR
  • XAUTHORITY
  • DISPLAY

这些变量与第一个 session 紧密关联,导致桌面组件(如 xfwm4xfce4-panel)无法初始化或连接错误的 socket 文件。

3. ~/.cache/sessions/ 下的 session 文件未隔离

XFCE 会在该目录记录 session 状态,多 session 并发写入/读取会触发 race condition。


解决方案

✅ 使用干净环境变量启动 xfce4-session

创建如下脚本(如 /nfs/etx/scripts/startxfce4-clean.sh):

1
2
3
4
5
6
7
8
9
#!/bin/bash

env -i /bin/sh -c "export PATH=$PATH;
                   export XAUTHORITY=$XAUTHORITY;
                   export DISPLAY=$DISPLAY;
                   export HOME=$HOME;
                   export LOGNAME=$LOGNAME;
                   export USER=$USER;
                   /usr/bin/xfce4-session"

确保设置权限:

1
chmod +x /nfs/etx/scripts/startxfce4-clean.sh

在 ETX 中,将该脚本设置为会话的启动命令(launch command)。


验证方式

  1. 启动第一个 ETX session,观察日志是否正常:

    1
    
    tail -f ~/.xsession-errors
    
  2. 启动第二个 session,确认灰屏是否消失。
  3. 可对比前后 env 差异:

    1
    2
    3
    
    env > /tmp/env1   # 第一个正常
    env > /tmp/env2   # 第二个失败
    diff -u /tmp/env1 /tmp/env2
    

总结

在 RHEL 9 + ETX 环境中,使用 XFCE 桌面时遇到灰屏,绝大多数是由于环境变量未隔离引起的。通过 env -i 启动一个最小化的会话环境,可以彻底绕过 xfce4-session 多实例带来的冲突。


附录:引用

This post is licensed under CC BY 4.0 by the author.

支持创作者

如果本文帮助到你,可以通过以下收款码支持我:

收款码

感谢你的支持!