Ubuntu16.04系统nvidia显卡上图形界面及OpenGL环境搭建心得

之前实验室的服务器上的外置GPU一直是用来处理深度学习等任务,没有用来做图形界面的显示,现在想要用OpenGL做开发,然而在Linux下,OpenGL是使用输出图形界面的GPU做为运算资源的,无法更改到其他GPU上去(也许是我能力不足,在网上找了好几天都没有找到办法更改)。而我的集显(默认输出),最高只支持GLSL3.0,我却需要GLSL3.3的支持,所以不得不把NVIDIA显卡用来做输出显示。罗列一下要点:

第一点,将显示器接在外置GPU上。

这一点很基础,但却容易忘,不要把GPU想象成内存条一样的存在,并不存在使用集显上的VGA输出口输出NVIDIA图形界面的方法。

第二点,安装正确的NVIDIA驱动

网上有很多关于安装驱动的教程,我就不多讲了,提一点:

如果要用sudo ubuntu-driver autoinstall来安装系统推荐的显卡驱动的话,一定要先添加教程里说的ppa:graphics-drivers/ppa的镜像源,不然下不到正确的版本。我没添加这个镜像源之前,让系统自动安装,它会帮我安装一个nvidia-410.79的驱动(对应NVIDIA tesla 系列的显卡,之前服务器上装的就是这种显卡,但是很久之前就已经被拆下来了,不知道什么原因系统把它记住了)。

如果要手动安装.run文件,不需要加上-no-opengl-flies选项,因为据说NVIDIA有自己的OpenGL文件,如果不加这个选项,可能会导致原来用来支持集显驱动的OpenGL文件受到影响,导致原来的集显没有输出(所谓的黑屏)。但如果加上这个选项,则NVIDIA的输出可能就不能用了,所以像我们这些需要NVIDIA做OpenGL开发的人,还是什么选项都不加的好

第三点,修改xorg.conf文件

这一点是最最重要的一点,NVIDIA有个nvidia-xconfig的命令用来自动配置xorg.conf文件,然而我按这个配置文件来并不能正常开启屏幕,后来我发现一定要在xorg.conf文件中的那个有NVIDIA的device单元中加上显示设备输出的BusID。而这个BusID可以通过lspci | grep -i vga 来查看(不过你是HDMI还是DVI口等,这里都写着“类似VGA的输出”),然而最最狗血的一点来了,通过lspci查看的BusID是16进制的,而xorg.conf里要填的是十进制的!!之前我通过lspci 查看我的1080Ti的显卡的ID是82:0:0,然后一直没有输出,后来查看xorg.0.log里一直有个130:0:0的设备,拿计算器算了下,擦!!16进制的82就是10进制的130,这才明白发生了什么。。后来改了BusID后就立马进去了。

 

额外任务一,远程启动图像界面

由于是实验室的服务器,也就意味着不会一直在它身边,因此需要一个远程桌面的工具来查看你的OpenGL输出结果。teamviewer是个不错的选择,但有个不足是长时间连接不是很稳定(比如一夜不动,第二天一来发现已经断开连接了),这是就需要远程启动界面。

其实很开teamviewer很简单,只需一个ID,一个密码,和一个远程机子上开启的teamviewer服务就行了。。

#设密码...

sudo teamviewer passwd YourNewPasswd

# 这里可以看id

teamviewer info

#开启teamviewer服务

sudo teamviewer --daemon restart

额外任务二,添加双屏

由于服务器集显是被厂商设计成硬件监测,即使在BIOS界面上都能被远程监测到。因此不行浪费集显的这个功能,正在研究如何进行双屏显示,大致思想还是修改xorg.conf。

参考:

http://blog.sina.com.cn/s/blog_7cd2354e01018s9j.html

http://www.cnblogs.com/huadongw/p/6298430.html

https://blog.csdn.net/Blaider/article/details/7992615

你可能感兴趣的:(杂)