云计算百科
云计算领域专业知识百科平台

【如何远程在无图形界面的服务器上通过 X11 转发渲染图形】

如何远程在无图形界面的服务器上通过 X11 转发渲染图形

在没有图形界面的服务器上进行图形渲染时,通过 X11 转发可以将远程服务器的图形界面渲染到本地机器上。本文将介绍如何通过配置 X11 转发,在 PyCharm 中运行远程代码并通过本地显示渲染结果。

设备要求

  • 远程服务器: 配置了 NVIDIA GPU 和正确的 OpenGL 驱动。
  • 本地机器: 支持 X11 转发的操作系统(如 Windows、Linux)。
  • PyCharm: 用于远程开发的集成开发环境(IDE)。
  • 步骤概览

  • 在 Windows 主机上安装 VcXsrv。
  • 开启Windows防火墙、获取IP地址。
  • 配置远程服务器支持 X11 转发。
  • 设置 DISPLAY 环境变量,指向本地机器码。
  • 运行渲染
  • 1. 在 Windows 主机上安装 VcXsrv

    1.1 下载并安装 VcXsrv

    下载地址:https://sourceforge.net/projects/vcxsrv/ 在这里插入图片描述 点击Download即可下载

    1.2 VcXsrv安装

    这里勾选桌面快捷方式,方便使用。 在这里插入图片描述 这里选着一个安装文件,点击install安装。 在这里插入图片描述

    1.3 运行 XLaunch

    安装好VcXsrv之后,桌面会有一个XLaunch的图标,双击打开。 在这里插入图片描述 打开之后,出现Display settings的界面,这是一个x11 server配置的设置。这里的Display number选着默认的-1就行,这是把server端口号设置为0.0。 在这里插入图片描述 接下来直接下一页。 在这里插入图片描述 这里需要勾选第三个Disable access control。这个意思是接受所有x11的转发请求,这里看个人情况,有些设备不勾选也能收到,本人测试自己的设备不勾选接收不到,所以建议勾选。 在这里插入图片描述 最后直接完成即可开启X server服务,电脑右下角会出现XLaunch的图标,鼠标放上面会显示端口号。如下图所示,说明X server成功开启了。Save configuration是保存当前的配置,下次开启可以直接使用保存的选项。 在这里插入图片描述 在这里插入图片描述 VcXsrv安装、配置完成。(参考博客:https://blog.csdn.net/qq_39446635/article/details/132466146)

    2. 开启Windows防火墙、获取IP地址

    2.1 当 Windows 防火墙弹出提示时,允许 VcXsrv 访问所有网络。

    如果没有弹出提示,手动打开: 控制面板 -> Windows Defender 防火墙 -> 允许的应用 找到 VcXsrv windows xserver,勾选 公用和专用网络 在这里插入图片描述

    2.2 获取IP地址

    控制行ipconfig获取Windows获取IP地址,假设是:192.168.1.100。

    2.3 检查 X Server 是否启动

    任务栏右下角应该有一个 X 图标

    运行 PowerShell,输入:

    netstat -an | findstr 6000

    如果输出包含0.0.0.0:6000,说明 X Server 正在运行。

    3. 配置远程服务器支持 X11 转发

    首先,需要确保远程服务器支持 X11 转发。

    3.1 安装必要的包

    安装 xauth 和 x11-utils

    sudo apt update
    sudo apt install -y xauth x11-utils

    在远程服务器上安装 mesa-utils,它们用于支持图形渲染:

    sudo apt update
    sudo apt install mesa-utils

    配置环境变量 在服务器终端运行:

    export DISPLAY=10.12.190.136:0.0 # 设置 Windows IP 作为 X11 目标
    export LIBGL_ALWAYS_INDIRECT=1 # 让 OpenGL 走 X11
    export MESA_GL_VERSION_OVERRIDE=3.3 #强制指定 OpenGL 的版本(根据具体情况配置,或者不配置默认)

    3.2 测试 X11 是否正常

    在服务器上运行:

    xeyes

    如果 Windows 上弹出一个 眼睛跟随鼠标的窗口,说明 X11 配置成功。 在这里插入图片描述 然后再运行:

    glxgears

    如果出现 旋转的 3D 齿轮,说明 OpenGL 也正常。 在这里插入图片描述

    4 设置 DISPLAY 环境变量,指向本地机器

    在代码文件里面加入以下内容:

    os.environ["DISPLAY"] = "xxx" # 将这里的 IP 地址替换为你本地机器的 IP

    在服务器上执行echo $DISPLAY //获取参数信息获取IP地址: 在这里插入图片描述

    5 运行渲染

    import gymnasium as gym
    import mani_skill.envs

    env = gym.make(
    "PickCube-v1",
    num_envs=1,
    obs_mode="state",
    control_mode="pd_ee_delta_pose",
    render_mode="human"
    )

    print("Observation space", env.observation_space)
    print("Action space", env.action_space)

    obs, _ = env.reset(seed=0)
    done = False
    while not done:
    action = env.action_space.sample()
    obs, reward, terminated, truncated, info = env.step(action)
    done = terminated or truncated
    env.render() # 渲染并显示图形
    env.close()

    总结

    通过这种方式,你可以在没有图形界面的服务器上渲染图形并通过本地机器显示,帮助你进行远程开发和调试。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 【如何远程在无图形界面的服务器上通过 X11 转发渲染图形】
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!