本着乐于助人的精神,这是我遇到并解决的问题,所以我将在这里回答这个问题。
问题
我有:
必须安装在 Redhat 或 SuSE 企业上的应用程序。
它有巨大的系统要求并且需要 OpenGL。
它是一套工具的一部分,需要在一台机器上一起操作。
此应用程序用于工时方面的时间密集型任务。
我不想坐在服务器机房里处理这个应用程序。
所以,问题来了......我如何从远程 Windows 机器运行这个应用程序?
我将概述我的解决方案。随意评论替代品。该解决方案也适用于更简单的环境。我的情况有些极端。
解决方案
我安装了两个软件:
XMing-mesa台面部分很重要。
腻子配置
Connection->Seconds Between Keepalives: 30
Connection->Enable TCP Keepalives: Yes
Connection->SSH->X11->Enable X11 forwarding: Yes
Connection->SSH->X11->X display location: localhost:0:0
发射
运行Xming,它将简单地启动一个进程并在系统托盘中放置一个图标。使用上述配置启动 putty,指向您的 linux 框。运行程序
希望,成功!
如果您希望在本地计算机上执行 OpenGL 渲染,则使用 Windows X 服务器(如 Xming)是一个很好的解决方案。但是,如果您希望仅通过将图像发送到本地计算机来在远程端进行渲染,您需要一个可以处理远程 OpenGL 渲染的专用 VNC 系统,例如VirtualGL。
您也可以使用 VNC(如跨平台远程桌面)X 更有效,因为它只发送绘制命令而不是像素,但如果您使用的是 opengl,则很可能大部分数据都是渲染图像。
VNC 的另一大优点是您可以在服务器上本地启动程序,然后使用 VNC 连接到它,断开连接,从另一台机器重新连接等,而不会干扰主运行的程序。
对于 OpenGL,运行 X 服务器绝对是更好的解决方案。只需确保将应用程序开发为联网即可。它不应该使用即时模式进行渲染,并且应该很少传输纹理。
为什么在这种情况下 X 服务器是一个更好的解决方案(相对于 VNC)?因为您可以在工作站上获得加速,而 VNC 解决方案通常甚至不会在大型机上加速。因此,只要在 X 服务器上缓冲数据(使用顶点数组、顶点缓冲区对象、纹理对象等),您应该获得比使用 VNC 更高的速度,尤其是对于复杂场景,因为 VNC 必须将它们分析、传输和解码为像素。
如果您需要服务器 glx 1.2 版,Xming (Mesa 2007) 的免费版本可以正常工作。但是,如果您的应用程序需要 1.4 版,例如 qt5,Cygwin 的 X Server 可以免费使用以下命令运行它:
[在服务器上]
sudo vi /etc/ssh/ssh_config
添加:
X11转发是
X11DisplayOffset 10
X11UseLocalHost 否
AllowTcpForwarding 是
TCPKeepAlive 是
ClientAliveInterval 30
ClientAliveCountMax 10000
sudo vi ~/.bashrc
添加:
导出显示=ip_from_remote:0
现在重新启动 ssh 服务器
[在客户幻灯片上]
运行以下命令后安装Cygwin64(支持 X 包):
d:\cygwin64\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/xinit /etc/X11/xinit/startxwinrc -- /usr/bin/XWin :0 -ac -multiwindow -listen tcp"
现在执行 ssh 客户端:
d:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -e /usr/bin/ssh -Y user_name@ip_from_server