使用putty和vcxsrv实现win10运行Linux GUI程序

背景

有些时候要远程运行开发板上的Linux GUI程序,但VNC经常抽风用不了,特别在Ubuntu 1604下面更是如此,所以需要用ssh客户端的X11转发功能,来将Linux GUI程序通过unix domain socket发给本地X server的视频流数据,转换成inet socket并转发到运行在Windows的X server

操作步骤

PuTTY配置

PuTTY是一款支持X11端口转发的ssh客户端,要使能该特性,在创建session时按下图配置
PuTTY开启X11转发

VcXsrv配置

VcXsrv是一款运行在Windows上的X server,可以接收并解析Windows从X11端口收到的GUI数据流并显示到屏幕

  1. 安装后从开始菜单里找到XLaunch菜单项,点击,进入下图界面X显卡号设成10
    注意display number最好填成0(开发板自身显卡)和-1(X server和X client自动协商,不靠谱)以外的数字(比如10)

  2. 初始不启动任何GUI程序X启动时不带任何程序

  3. 切记禁用访问控制切记禁用访问控制
    否则会无法连接

  4. 不用保存配置,因为保存了也用不了,直接点完成,下次启动重头再来别保存,直接点完成

Windows防火墙配置(简单关闭)

X11对应的端口默认是关闭的,为了开启,你可以添加一条防火墙规则
或者像我一样,直接关闭防火墙,简单粗暴😉
关闭Windows防火墙!

Linux侧配置

启动GUI程序前,配置DISPLAY环境变量,告诉GUI程序X server在哪

export DISPLAY=192.168.20.103:10.0

解释下:

  • export关键字用于导出DISPLAY环境变量
  • 192.168.20.103是X server的IP,也就是win10电脑的IP
  • 10是X server的显卡编号(一台机器可能有多个显卡)
  • 0是连到X server指定显卡的显示器编号(一个显卡可能输出到多台显示器)

最终效果

远程启动X效果

一个注意事项

该方法仅适用于2D GUI程序,如果是3D程序,特别是用到OpenGL加速的3D程序,则GUI程序还是会启动失败,此时可以用远程桌面程序来远程到开发板,再启动3D程序,才能启动成功。
这样能成的原因是,3D程序的矢量输出开发板的显卡驱动光栅化成2D像素,然后被远程桌面服务器程序压缩传输到远程桌面客户端,所以我们看到的3D程序其实是它的2D化远程投影。
如果在开发板上安装xrdp程序,Windows的远程桌面程序可能连接成功,但大概率失败,此时可以

  1. 在win10上安装WSL,再在WSL里安装Remmina软件包
  2. 用本贴所述方法在WSL里启动Remmina程序,注意启动前X server的IP改成localhost
  3. 然后用Remmia远程桌面到开发板
  4. 祝你好运!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值