Linux 远程使用 Nvidia 显卡加速桌面

(首发地址:学习日记 https://www.learndiary.com/2024/06/nvidia-remote-desktop/

朋友们,大家好!我是来自淘宝网学习日记小店的 learndiary,专注于 Linux 服务领域。今天,我想和大家分享一些关于在 Linux 系统中如何实现远程使用 Nvidia 显卡加速桌面的经验,这对于需要远程使用图形加速功能的朋友有所帮助,比如游戏、3D建模等。

在开始之前,我想澄清一点,虽然我并不完全了解所有背后的原理,但我愿意根据自己的实践经验,向你们展示如何达成这一效果。在 Linux 中,传统的 VNC 服务器如 TightVNC、TigerVNC 等并不支持显卡加速,这意味着如果你无法在远程桌面上运行 3D 游戏或进行 3D 绘图。但是,通过下面的方法,我们可以克服这一限制。视频演示:【Linux 远程使用 Nvidia 显卡加速桌面】https://www.bilibili.com/video/BV1E6421Z7m1/

一、有效配置的显示管理器与桌面环境

首先,我需要指出,并非所有的显示管理器和桌面环境都适合这项任务。在我的测试中,LightDM 显示管理器表现良好,而一般发行版默认的 GDM 管理器则未能满足需求。至于桌面环境,我发现 Deepin 桌面环境(Deepin Linux 20.9 自带)和 XFCE4 这种轻量级桌面环境能够胜任。相比之下,Ubuntu 22.04 默认桌面 和 GNOME 桌面环境则未能达到预期的效果。

二、Nvidia显卡的三种情况

对于 Nvidia 显卡,我测试了三种常见的情景,均使用 RealVNC 远程桌面客户端连接。连接远程桌面后,我们可以通过在远程桌面环境终端执行 glxinfo -B 命令来验证是否启用了 Nvidia 显卡的硬件加速功能。如果命令输出显示了如 NVIDIA GeForce GT 710 等相关信息,即表示配置成功。

1、远程服务器带有物理显示器:例如,我这里测试过使用 GT710 这块较旧的显卡。在 Deepin 20.9 或 Ubuntu 22.04 系统上,通过 X11 服务器的默认配置或 nvidia-xconfig 生成的 xorg.conf 文件和 x11vnc 命令,我们可以轻松实现远程桌面的显卡加速。这里使用的是 SSH 远程连接到 Linux 上,手动执行 x11vnc 命令启动远程桌面。
启动 x11vnc 示例命令如下(ssh 远程的普通用户执行):

#!/bin/sh
x11vnc -display :0 -xkb -capslock -repeat -auth ~/.Xauthority -forever
exit 0

2、无物理显示器的一类显卡:P106-100 矿卡或 GT 710。在这种情况下,我曾在一篇关于《P106-100矿卡在Linux系统下算力及游戏应用小结》中详细介绍过这一配置。这里给出关键的 /etc/X11/xorg.conf 和启动 x11vnc 命令二者的示例如下:
xorg.conf:

Section "ServerLayout"
     Identifier     "Default Layout"
     Screen         "Default Screen" 0 0
EndSection
Section "Device"
     Identifier     "NV0"
     Driver         "nvidia"
     BusID          "PCI:02:00:0"
EndSection
Section "Monitor"
     Identifier    "Monitor0"
EndSection
Section "Screen"
     Identifier     "Default Screen"
     Device         "NV0"
     Option         "ProbeAllGpus" "False"
     Monitor        "Monitor0"
     Option         "NoLogo" "True"
     SubSection     "Display"
         Virtual 1920 1080
         Depth 24
     EndSubSection
EndSection

启动 x11vnc(root 用户执行):

#!/bin/bash
x11vnc -clip 1920x1080+0+0 -display :0 -xkb -capslock -repeat -auth /var/run/lightdm/root/:0

3、无物理显示器的另一类显卡:例如,使用 RTX 4090 这样的显卡。在我为一位使用双 4090 显卡的客户配置远程图形加速桌面时发现,上面用于 GT 710 或 P106-100 的配置在 RTX 4090 上无法正常工作。可以正常工作的上述两个配置文件如下:
xorg.conf:

Section "ServerLayout"
     Identifier     "Default Layout"
     Screen         "Default Screen" 0 0
EndSection
Section "Device"
     Identifier     "NV0"
     Driver         "nvidia"
     Option         "VirtualHeads" "1"
EndSection
Section "Monitor"
     Identifier    "Monitor0"
EndSection
Section "Screen"
     Identifier     "Default Screen"
     Device         "NV0"
     Option         "ProbeAllGpus" "False"
     Monitor        "Monitor0"
     Option         "NoLogo" "True"
     SubSection     "Display"
         Virtual 1920 1080
         Depth 24
     EndSubSection
EndSection

启动 x11vnc(root 用户执行):

#!/bin/bash
export DISPLAY=:0
xrandr --fb 1920x1080
x11vnc -xkb -capslock -repeat -display :0 -geometry 1920x1080 -auth /var/run/lightdm/root/:0

三、小结

通过上述分享可以看出,当前 Linux 主流的显示管理器 GDM 和桌面环境 GNOME 对 x11vnc 远程物理桌面的支持似乎正在消失。在无显示器的 x11vnc 远程桌面设置中,不同的显卡需要的配置似乎不一样(我也不知道原因)。如果大家还有更好的其它远程图形加速桌面方案,或者我的经验分享中有任何不当或不准确之处,欢迎各位留言指正,共同探讨。感谢大家的观看,我们下次分享再见!

四、参考链接

1、P106-100矿卡在Linux系统下算力及游戏应用小结:https://www.learndiary.com/2023/06/p106-100-linux/
2、x11vnc without monitor connected:https://bbs.archlinux.org/viewtopic.php?id=197299

发表评论

电子邮件地址不会被公开。 必填项已用*标注