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/

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

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

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

二、Nvidia显卡的三种情况

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

1、远程服务器带有物理显示器:例如,我这里测试过使用 GT 710 这块较旧的显卡。在 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 1080Depth 24EndSubSection
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 1080Depth 24EndSubSection
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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/31006.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

靠这套车载测试面试题系列成功哪些20k!

HFP测试内容与测试方法 2.3 接听来电:测试手机来电时,能否从车载蓝牙设备和手机侧正常接听】拒接、通话是否正常。 1、预置条件:待测手机与车载车载设备处于连接状态 2、测试步骤: 1)用辅助测试机拨打待测手机&…

24年计算机等级考试22个常见问题解答❗

24年9月计算机等级考试即将开始,整理了报名中容易遇到的22个问题,大家对照入座,避免遇到了不知道怎么办? 1、报名条件 2、报名入口 3、考生报名之后后悔了,不想考了,能否退费? 4、最多能够报多少…

计网课设-发送TCP数据包

一、效果展示 二、代码实现 import nmap import socket import tkinter as tk from tkinter import messagebox,Listbox from threading import Thread#获取自身IP,从而确定当前局域网范围 def get_ip_address():#创建了一个socket对象,socket.AF_INET表…

扩散模型详细推导过程——训练与采样

扩散模型的训练与采样算法 训练目标的推导 需要使得去噪过程所产生的 x ( i ) \boldsymbol{x}^{(i)} x(i)的总体出现概率最大,先不考虑第几个样本,省略上标,即最大化 p ( x ∣ θ 1 : T ) p(\boldsymbol{x}|\theta_{1:T}) p(x∣θ1:T​)&am…

【Java】计算程序耗时多少

使用hutool自带的工具类实现 import cn.hutool.core.date.StopWatch; Slf4j public class TestApp {Testpublic void test1() {StopWatch stopWatch new StopWatch();try {// 开始计时stopWatch.start("handleReq");// 执行要测量的代码块performTask();// 停止计时…

国际版多商户商城小程序源码(Android+IOS+H5)

一站式全球购物新体验 功能介绍 精准分类、我的团队、开通会员我的返利、我的订单、快速购买 邀请返利、购物车、我的提现 一、引言:为何选择国际版多商户商城小程序? 随着全球化的步伐不断加快,越来越多的人开始追求国际化的购物体验。国…

FreeBSD在zfs挂接第二块ssd 硬盘

为FreeBSD机器新增加了一块ssd硬盘:骑尘 256G 先格式化分区硬盘 进入bsdconfig 选Disk Management 选择ada1 ,也就是新增加的硬盘 选择auto 然后选择Entire Disk 提示信息 The existing partition scheme on this disk (MBR) │ …

密码学与信息安全面试题及参考答案(2万字长文)

目录 什么是密码学?它的主要目标是什么? 请解释明文、密文、加密和解密的概念。 密码系统的安全性通常基于哪三种假设? 什么是Kerckhoffs原则?它对现代密码学设计有何意义? 简述密码学中的“混淆”和“扩散”概念。 什么是AES(高级加密标准)?AES有几种常见的密钥…

代码随想录训练营Day 64|卡码网98. 所有可达路径(深搜)

1.所有可达路径 98. 所有可达路径 | 代码随想录 代码&#xff1a; &#xff08;深搜&#xff09;邻接矩阵表示 #include <iostream> #include <vector> using namespace std; vector<int> path; vector<vector<int>> result; void dfs(const ve…

图论算法学习

图论 dfs是可一个方向去搜&#xff0c;不到黄河不回头&#xff0c;直到遇到绝境了&#xff0c;搜不下去了&#xff0c;再换方向&#xff08;换方向的过程就涉及到了回溯&#xff09;。bfs是先把本节点所连接的所有节点遍历一遍&#xff0c;走到下一个节点的时候&#xff0c;再…

01_RISC-V 入门及指令集学习

参考文档 risc-v入门&#xff1a;https://blog.csdn.net/bebebug/article/details/128039038RISC-V OS&#xff1a;https://blog.csdn.net/bebebug/article/details/130551378riscv-spec文档&#xff1a;https://riscv.org/wp-content/uploads/2019/12/riscv-spec-20191213.pd…

小摩法兴纷纷转多,看涨港股的时机来了吗?

恒生指数今日高开一度上涨89点报18520点&#xff0c;创近两周高。之后持续震荡下行&#xff1b;恒指临近中 午跌幅扩大&#xff0c;恒生科技指数一度跌近1.5%。截止收盘&#xff0c;恒生指数跌0.52%&#xff0c;盘面上&#xff0c;石油、煤炭、环保、建筑节能等板块涨幅居前&a…

java中的Random

Random 是 Java 中的一个内置类&#xff0c;它位于 java.util 包中&#xff0c;主要用于生成伪随机数。伪随机数是指通过一定算法生成的、看似随机的数&#xff0c;但实际上这些数是由确定的算法生成的&#xff0c;因此不是真正的随机数。然而&#xff0c;由于这些数在统计上具…

新手下白对Latex下手啦!

第一次使用latex&#xff0c;浅浅地记录一下子吧。 首先我们一般会下载一个latex模板&#xff0c;如果想知道咋下载&#xff0c;评论去告诉俺哟&#xff01; 新手小白首先要看懂结构&#xff0c;不然完全下不了手&#xff0c;本文就以IEEE的模板&#xff0c;从头往下讲咯~ 第…

网页的CSS和JavaScript文件没有自动更新, 解决办法

项目场景&#xff1a; 无人值守的场馆预定以及管理 问题描述 更新了CSS和JavaScript&#xff0c;访问始终样式不对 原因分析&#xff1a; 浏览器缓存了你的CSS和JavaScript文件 浏览器缓存了你的CSS和JavaScript文件。当文件的修改时间戳&#xff08;last-modified&#xff…

QT处理Unix信号

从Unix信号处理程序中调用Qt函数 你不能从Unix信号处理程序中调用Qt函数。适用于标准POSIX规则:只能从信号处理程序调用异步信号安全的函数。有关可以从Unix信号处理程序调用的函数的完整列表&#xff0c;请参阅Signal Actions。 但不要绝望&#xff0c;有一种方法可以在Qt中使…

力扣503.下一个更大元素II

力扣503.下一个更大元素II 循环数组实现&#xff1a;断环成链 开二倍数组做单调栈 class Solution {public:vector<int> nextGreaterElements(vector<int>& nums) {int n nums.size();vector<int> res(n);stack<int> st;for(int i 2*n-1;i>…

OpenAI 推出“模型规范”:塑造责任制的人工智能的框架

为了提升人工智能开发的责任性和透明度&#xff0c;OpenAI 最近发布了一份名为“模型规范”的初步草案。这份文件首次明确了其 API 和 ChatGPT 模型行为的指导原则&#xff0c;并通过博客形式对外公布。 OpenAI 在博客中解释说&#xff1a;“我们之所以发布此文档&#xff0c;…

云渲染全攻略:平台精挑细选与技巧指南

在数字化浪潮中&#xff0c;创意产业的每一步进步都得益于技术革新。云渲染技术以其卓越的效率和灵活性&#xff0c;已成为推动影视、建筑、游戏等创意行业快速发展的关键力量。本文将为您提供一份详尽的云渲染指导手册&#xff0c;涵盖平台挑选策略和操作技巧&#xff0c;助您…

Centos7.9安装kerberos

文章目录 一、背景二、Kerberos安装部署2.1kerberos服务端必要软件安装2.2配置krb5.conf2.3配置kdc.conf2.4配置kadm5.acl2.5创建Kerberos数据库2.6启动Kerberos服务2.7创建Kerberos管理员principal2.8客户端安装kerberos2.9Kerberos功能验证 本人其他相关文章链接 一、背景 亲…