背景
这里使用的是国产统信UOS操作系统的实体机,显卡是Nvidia Quadro P620
,默认源里是没有VirtualGL和TurboVNC两个软件的,所以需要编译安装。还测试了EXSI8.0情况下使用Nvidia Tesla V100
直通安装的银河麒麟SP10虚拟机,这里需要注意一下,开机启动方式必须是EFI或者UEFI,并且勾选安全启动,要不直接使用BIdOS的方式启动你的驱动时怎么也安装不上的。
安装显卡驱动
更新系统及查看相关信息
- sudo apt update && sudo apt upgrade -y # 更新系统
- sudo apt install dkms build-essential linux-headers-generic
-
- sudo lsmod | grep nouveau #查看nouveau的开源驱动是否被使用
- sudo lspci | grep VGA #查看集成显卡
- sudo lspci | grep NVIDIA #查看英伟达显卡
- sudo lshw –c video | grep configuration #查看显卡驱动
-
- sudo systemctl stop lightdm # 暂停界面
禁用nouveau驱动
打开或创建黑名单配置文件:
通常,这个文件位于 /etc/modprobe.d/ 目录下。你可以创建一个新的配置文件专门用来禁用 nouveau,例如:
- sudo touch /etc/modprobe.d/blacklist-nvidia-nouveau.conf
- cat >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf << EOF
- blacklist nouveau
- options nouveau modeset=0
- EOF
以上作用是将 nouveau 驱动添加到黑名单,并设置 nouveau 不使用任何模式设置。
如果时EXSI直通显卡的话需要启用对不支持的GPU的支持。
- sudo touch /etc/modprobe.d/nvidia.conf
- cat >> /etc/modprobe.d/nvidia.conf << EOF
- options nvidia NVreg_OpenRmEnableUnsupportedGpus=1
- EOF
禁用驱动后,需要重新生成initramfs,以确保在下一次启动时不加载 nouveau 驱动。
- sudo dracut --force # 重新生成初始化RAM磁盘Fedora、CentOS和RHEL的系统
- sudo update-initramfs -u # 重新生成初始化RAM磁盘Debian或Ubuntu的系统
-
- sudo apt --purge remove nvidia-* # 删除所有Nvidia的驱动
-
- sudo reboot #重启系统
安装Nvidia驱动
Nvidia官网查好版本下载指定驱动:NVIDIA-Linux-x86_64-535.183.06.run
- wget https://us.download.nvidia.com/tesla/535.183.06/NVIDIA-Linux-x86_64-535.183.06.run
- chmod +x NVIDIA-Linux-x86_64-535.183.06.run # 给文件执行权限
- sudo ./NVIDIA-Linux-x86_64-535.183.06.run # 运行后一路回车确认就行
查看最终驱动安装结果:
VirtualGL
编译环境安装
- # 银河麒麟
- yum install gcc gcc-c++ git cmake libstdc++-static
- # 统信
- sudo apt install gcc g++
依赖环境安装
- # 银河麒麟
- yum install opencl-headers ocl-icd ocl-icd-devel libX11-devel libXext-devel libXrender-dev libXtst-devel libXt-devel xcb-util-keysyms-devel
- # 统信
- sudo apt install opencl-headers ocl-icd-opencl-dev libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev libxcb-keysyms-dev
下载源码编译安装
- git clone https://github.com/VirtualGL/virtualgl.git # 下载源码项目
- cmake . # 配置项目 或者加上-DCMKAE_INSTALL_PREFIX=/usr/opt参数设置安装目录 默认安装到/opt目录下
- make -j9 && make install # 编译并且安装
配置
- sudo nvidia-xconfig --query-gpu-info # 查看busid
- sudo nvidia-xconfig -a --allow-empty-initial-configuration --virtual=1920x1200 --busid PCI:0@3:0:0 # 填上一步中获取的busid
-
- sudo service lightdm stop # 关闭显示服务
- sudo /opt/VirtualGL/bin/vglserver_config # 选1,其他都为Y,最后x退出
- usermod -a -G vglusers <用户名> # 添加用户进用户组vglusers,使其具有相关权限,否则后面远程桌面的时候启用不了VirtualGL。<用户名> 改为你的用户名
- sudo service lightdm start # 开启显示服务
-
- sudo reboot
TurboVNC
依赖环境安装
- # 银河麒麟
- yum install libjpeg-turbo libjpeg-turbo-devel pam-devel java java-devel
- # 统信
- sudo apt install libturbojpeg0-dev libpam0g-dev java-dev
防止配置时出现Could no find PAM headers
报错
主要是依赖安装完了,对应的头文件也有,说啥检查不到文件,应该是有些环境没配置才导致的这个错误。
注释掉
unix/Xvnc/programs/Xserver/hw/vnc/CMakelists.txt
的14行#message(FATAL_ERROR "Could no find PAM headers")
下载源码编译安装
- git clone https://github.com/TurboVNC/turbovnc.git
- cmake . # 配置项目 或者加上-DCMKAE_INSTALL_PREFIX=/usr/opt参数设置安装目录 默认安装到/opt目录下
- make -j9 && make install # 编译并且安装
配置
在/opt/TurboVNC/etc/turbovncserver.conf
配置文件修改配置如下:
- $useVGL=1; # 主要是让vnc使用VirtualGL
- $wm="deepin"; # 正常找`/usr/share/xsession/`下的桌面配置,默认会找gnome.desktop或ubuntu.destop,统信用的lightdm,所以这里添加一个deepin。
运行vncserver
- /opt/TurboVNC/bin/vncserver -geometry 1920x1080 :1 # 开启VNC
结合VirtualGL运行相关程序
- /opt/VirtualGL/bin/vglrun glxinfo | grep OpenGL # 将会输出使用显卡的情况输出