RHEL 8.8利用 VcXsrv实现xfce4图形界面+声音传输

在 Windows 上使用 VcXsrv 实现 RHEL 8.8 的 XFCE4 图形界面和声音传输,需要一个组合方案:​​VcXsrv 负责图形, PulseAudio 负责声音​​。

 

详细的步骤:


第一部分:使用 VcXsrv 配置 X11 图形转发

1. 在 Windows 上安装并配置 VcXsrv

  1. 1.​下载并安装 VcXsrv​​:
    从 https://sourceforge.net/projects/vcxsrv/ 下载并安装。
  2. 2.​启动 XLaunch​​:
    安装后,在开始菜单找到并运行 XLaunch

    • ​第一步​​: 选择 Multiple windows,Display number 设为 -1
    • ​第二步​​: 选择 Start no client
    • ​第三步​​: 勾选所有额外选项,尤其是 ​Disable access control​(至关重要,否则 Linux 客户端无法连接)。
    • ​第四步​​: 点击完成,启动 VcXsrv。它会在系统托盘运行。
  3. 3.​设置 Windows 防火墙​​:
    首次运行时,Windows 防火墙会弹出提示,务必允许 VcXsrv 通过​​公用和专用网络​​的通信。

2. 在 RHEL 8.8 上安装 XFCE4 和 SSH 服务器

如果还没安装,请通过 SSH 连接到你的 RHEL 服务器并执行:

# 启用 EPEL 并安装 XFCE4
sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf groupinstall -y "Xfce" --enablerepo=epel

# 确保 SSH 服务器已安装并运行
sudo dnf install -y openssh-server
sudo systemctl enable sshd --now

3. 从 Windows 通过 SSH 连接并转发 X11

  1. 1.​获取 RHEL 服务器的 IP 地址​​:
    ip addr show
  2. 2.​在 Windows 上使用 Git Bash、WSL 或 PowerShell 连接​​:
    推荐使用 Git Bash 或 MobaXterm,它们自带 SSH 和 X11 转发支持。
    使用以下命令连接,替换 your_username 和 your_server_ip

    ssh -X -C your_username@your_server_ip
    • -X: 启用 X11 转发。
    • -C: 压缩数据,加速传输(可选)。
  3. 3.​启动 XFCE4​​:
    在 SSH 会话中,输入:

    startxfce4&

    几秒钟后,XFCE4 桌面窗口应该会在你的 Windows 桌面上弹出。


第二部分:使用 PulseAudio 配置音频转发

1. 在 Windows 上安装 PulseAudio

我们不需要完整安装,只需获取必要的二进制文件来运行 PulseAudio 服务器。

  1. 1.​下载最新版本​​:
    从 https://www.freedesktop.org/wiki/Software/PulseAudio/Ports/Windows/Support/ 下载最新 ZIP 包(例如 pulseaudio-xxx.zip)。
  2. 2.​解压文件​​:
    将其解压到一个简单路径,例如 C:\pulseaudio
  3. 3.​运行 PulseAudio 服务器​​:
    在命令提示符或 PowerShell 中,导航到该目录并运行:

    .\bin\pulseaudio.exe --load="module-native-protocol-tcp auth-ip-acl=127.0.0.1;your_rhel_server_ip" --exit-idle-time=-1
    • 将 your_rhel_server_ip 替换为你的 RHEL 服务器的实际 IP。若要允许任何 IP(不安全,仅测试用),可使用 0.0.0.0/0
    • 此命令会在前台运行,保持窗口打开。若要后台运行,可使用 start /b 命令。

2. 在 RHEL 8.8 上配置 PulseAudio 客户端

  1. 1.​安装 PulseAudio 客户端​​:
    sudo dnf install -y pulseaudio-utils
  2. 2.​设置环境变量​​:
    在你的 SSH 会话中,或者在 ~/.bash_profile 中设置以下变量,告诉 RHEL 上的应用程序将音频发送到 Windows 的 PulseAudio 服务器。

    export PULSE_SERVER=your_windows_ip
    • 将 your_windows_ip 替换为你的 Windows 主机的 IP 地址(可以在 Windows 上用 ipconfig 命令查看)。

第三部分:测试整个流程

  1. 1.​启动服务​​:
    • 在 Windows 上:启动 VcXsrv,启动 PulseAudio 服务器。
    • 在 Windows 上:通过 ssh -X 连接到 RHEL。
  2. 2.​设置环境变量并启动桌面​​:
    # 在 SSH 会话中设置音频服务器
    export PULSE_SERVER=192.168.1.100 # 替换为你的 Windows IP
    # 启动 XFCE
    startxfce4&
  3. 3.​测试音频​​:
    • 在 RHEL 上安装一个测试工具:
      sudo dnf install -y paplay
    • 找一个 .wav 文件播放,或者从网上下载一个:
      paplay /usr/share/sounds/alsa/Front_Center.wav
    • 如果配置成功,你应该能在 Windows 的扬声器中听到声音。
  4. 4.​测试图形界面程序​​:
    在 XFCE 终端里打开一个带声音的程序(如 Firefox)或视频播放器(需要安装 vlc 或 smplayer),声音应该也能正常工作。

故障排除

  • ​没有图形界面​​:
    • 确认 SSH 使用了 -X 参数。
    • 确认 VcXsrv 配置中取消了访问控制 (Disable access control)。
    • 检查 Windows 防火墙设置。
  • ​没有声音​​:
    • 确认 Windows IP 和 RHEL IP 设置正确,且能互相 ping 通。
    • 确认 PulseAudio 服务器命令中的 IP ACL 列表包含了你的 RHEL 服务器 IP。
    • 在 RHEL 上,运行 PULSE_SERVER=your_windows_ip paplay sound.wav 进行测试。
    • 检查 Windows 上 PulseAudio 服务器的输出是否有错误信息。
  • ​性能差​​:
    • 确保网络连接良好。对于虚拟机(如 VirtualBox),使用桥接网络模式通常比 NAT 性能更好。
    • 在 SSH 命令中启用压缩 -C

这个组合方案是在 Windows 上获得完整 Linux 桌面和音频体验的最有效方法之一。

发表评论