标签 统信 下的文章

教程 | Linux下VirtualGL+TurboVNC远程桌面使用显卡


背景

这里使用的是国产统信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  #重启系统

官网解决此问题的大神回复1
官网解决此问题的大神回复2

安装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  # 运行后一路回车确认就行

查看最终驱动安装结果:
CIOMP_2024-09-14_09-26-17.png

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")
CIOMP_2024-09-10_20-01-30.png

下载源码编译安装

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  # 将会输出使用显卡的情况输出

CIOMP_2024-09-14_11-28-57.png

最终连接效果

CIOMP_2024-09-13_10-32-35.png


Linux: 统信的机子输入密码进入不了界面。。


问题

同事说有一台统信(UOS)的机子输入密码进不去界面了。之前就发生过此问题,以为跟一个缺qt库一样的问题。一查看,并不是想象的那样。因为缺qt库的情况是输入密码的界面也会直接卡死没有。这个问题不一样,有输入密码的界面,而且密码输入正确,会无限次输入密码,而且提示了输入正确。
微信图片_20230426074845.jpg

解决过程

Ctrl+Alt+F2进入命令行模式

尝试着在命令行里重启以下桌面,会提示【QXcbConnection: Could not connect to display】,这个问题个之前的统信缺库就不一样的,那只好百度以下。

# 输入账号密码进入命令行
cas_user@casuser-PC:/$ dde-desktop
qt.qpa.screen: QXcbConnection: Could not connect to display
Could not connect ot any X display.
cas_user@casuser-PC:/$

百度出来的解决办法

首先

vim ~/.bashrc
然后在里面添加

export QT_QPA_PLATFORM='offscreen'
即时生效

source ~/.bashrc
这样就可以额

每次修改.bashrc后,使用source ~/.bashrc(或者 . ~/.bashrc)就可以立刻加载修改后的设置,使之生效。
一般会在.bash_profile文件中显式调用.bashrc。登陆linux启动bash时首先会去读取~/.bash_profile文件,这样~/.bashrc也就得到执行了,你的个性化设置也就生效了。

` 其过程就是首先其次再然后。

准备处理

cas_user@casuser-PC:/$ cd ~
cas_user@casuser-PC:/$
# 然后发现居然进不去自己的目录
cas_user@casuser-PC:/$ cd /home && ls -al
cas_user@casuser-PC:/$
总用量 16
drwxr-xr-x  4 root     root     4096 4月  11 19:18 .
drwxr-xr-x 25 root     root     4096 4月  20 03:08 ..
drwxr-x--- 27 root     root     4096 4月  26 07:19 cas_user  # ? 权限咋都是root?
drwxr-xr-x  3 root     root     4096 4月  20 16:59 highgo
cas_user@casuser-PC:/home$ sudo chown cas_user:cas_user cas_user -R
请输入密码:
验证成功
cas_user@casuser-PC:/home$ ls -al
总用量 16
drwxr-xr-x  4 root     root     4096 4月  11 19:18 .
drwxr-xr-x 25 root     root     4096 4月  20 03:08 ..
drwxr-x--- 27 cas_user cas_user 4096 4月  26 07:19 cas_user  # 这回权限才对啊
drwxr-xr-x  3 root     root     4096 4月  20 16:59 highgo

就这么发现问题了,由于用户自己的目录权限变成了root,导致的界面访问不到相关的配置文件导致的进不了页面。那就不用百度的方法了啊。。。。

找找问题是出自哪里

cas_user@casuser-PC:/home$ sudo su
请输入密码:
验证成功
root@casuser-PC:/home# history
···
373  chown -R root:root /home/cas_user
···

???这谁受得了啊,说实话这命令跟rm /* -rf 可能没啥区别,所以我建议尽可能的别用root权限,真的很容易出现问题。