最近攒了一台服务器,安装上去ubuntu20然后用vnc在开发的电脑上控制,使用了virtualgl和tourboVnc来保证游戏画面也可以正常映射,下面是安装配置的过程:
安装后:
安装smb
sudo apt install samba
配置/etc/samba/smb.conf
systemctl start samba
支持opengl的vnc
从这里下载virtual gl
https://sourceforge.net/projects/virtualgl/
缺少包 从这里下载deb包先安装
https://launchpad.net/ubuntu/+archive/primary/+files/libegl1-mesa_23.0.4-0ubuntu1~22.04.1_amd64.deb
对于笔者这种没有显示器的神奇需求,需要先在显卡上创建一个没有显示器的X-window,有显示器可以忽略这一步。
BASH
# https://virtualgl.org/Documentation/HeadlessNV
# 查看显卡的车牌号(划掉,busid)
nvidia-xconfig --query-gpu-info
# 在对应的显卡上创建X-window
sudo nvidia-xconfig -a --allow-empty-initial-configuration --use-display-device=None --virtual=1920x1080 --busid {busid}
配置从VirtualGL启动3D X-server,这个过程中需要关闭桌面环境
BASH
service gdm stop
如果在本地操作,这时屏幕会进入黑屏,因为图形化的界面已经被关闭了,按ctrl+alt+f1进入命令行界面,配置VirtualGL。
BASH
/opt/VirtualGL/bin/vglserver_config
选择 1 configure server for use with VirtualGL in GLX mode
途中需要选择一些选项,全部选No即可。安装完成后,重新启动桌面环境
BASH
service gdm start
这时按ctrl+alt+f7就可以重新切换到桌面环境。进入终端,测试安装是否正确
xdpyinfo -display :0
/opt/VirtualGL/bin/glxinfo -display :0 -c
正常情况下可以看到如下内容
GL_OES_vertex_array_object, GL_OES_vertex_half_float,
GL_OES_viewport_array, GL_OVR_multiview, GL_OVR_multiview2,
GL_OVR_multiview_multisampled_render_to_texture
215 GLXFBConfigs:
visual x bf lv rg d st colorbuffer ax dp st accumbuffer ms cav drw
id dep cl sp sz l ci b ro r g b a F bf th cl r g b a ns b eat typ
------------------------------------------------------------------------------
0x0a5 24 tc 0 24 0 s y . 8 8 8 0 . 4 24 8 16 16 16 16 0 0 None PRW
0x0a6 24 dc 0 24 0 s y . 8 8 8 0 . 4 24 8 16 16 16 16 0 0 None PRW
0x0a7 24 tc 0 32 0 s y . 8 8 8 8 . 4 24 8 16 16 16 16 0 0 None PAW
0x0a8 24 dc 0 32 0 s y . 8 8 8 8 . 4 24 8 16 16 16 16 0 0 None PAW
0x0a9 24 tc 0 24 0 s . . 8 8 8 0 . 4 24 8 16 16 16 16 0 0 None PRW
0x0aa 24 dc 0 24 0 s . . 8 8 8 0 . 4 24 8 16 16 16 16 0 0 None PRW
0x0ab 24 tc 0 32 0 s . . 8 8 8 8 . 4 24 8 16 16 16 16 0 0 None PAW
0x0ac 24 dc 0 32 0 s . . 8 8 8 8 . 4 24 8 16 16 16 16 0 0 None PAW
0x0ad 24 tc 0 24 0 s y . 8 8 8 0 . 4 24 0 16 16 16 16 0 0 None PRW
0x0ae 24 dc 0 24 0 s y . 8 8 8 0 . 4 24 0 16 16 16 16 0 0 None PRW
fig2
如果出现问题,可以删除当前配置
BASH
/opt/VirtualGL/bin/vglserver_config
选择 2 Unconfigure server for use with VirtualGL in GLX mode
安装TurboVnc
https://sourceforge.net/projects/turbovnc/files
参照官网文档,使用dpkg安装TurboVNC
BASH
# https://turbovnc.org/Documentation/Documentation
dpkg -i turbovnc*.deb
启动服务,首次启动时需要设置密码
BASH
/opt/TurboVNC/bin/vncserver
启动成功后,可以得到如下结果。注意记下最后一个数字。当开启多个Turbovnc服务时,使用最后的数字区分不同屏幕。
BASH
Desktop 'TurboVNC: XmechGPU:1 (my_user)' started on display XmechGPU:1
启动成功后,除非使用下方命令手动关闭,服务一直会运行。其中n为上面的数字。
/opt/TurboVNC/bin/vncserver -kill :n
从windows或mac远程访问服务器
回到Source Forge,下载符合自己系统版本的TurboVNC,mac的版本需要单独安装jdk。
https://sourceforge.net/projects/turbovnc/files
连接内网,输入服务器ip以及上面获得的vnc编号,验证密码即可登录服务器
TurboVNC内置了CPU软件实现的OpenGL,可以直接运行OpenGL的程序,但背后是软件渲染。例如使用glxgears进行测试,可以看到旋转的齿轮。
如果使用硬件加速,需要在原本的命令前加上vglrun。此时画面会使用GPU进行硬件加速,齿轮的帧速就会大幅提高。
如果服务器安装了anaconda,可能会产生黑屏,需要将anaconda的路径从PATH中移除,并重新启动vncserver,就能恢复正常。当vncserver正常运行时,环境变量就不会再影响vnc,可以正常使用anaconda。