我正在运行一个附加了 nvidia v100 的 ubuntu gcp 实例。我安装了图形驱动程序并使用和检查了nvidia-smi
正确性vulkaninfo
。两者都没有显示错误。这表明图形驱动程序已正确安装。
现在我想使用Google 的远程桌面服务进行远程显示访问。所以我遵循了无头安装说明,在我测试显卡之前一切似乎都很顺利。不知何故,在远程桌面内的终端中运行时vulkaninfo
,会出现以下错误消息:
/build/vulkan-UL09PJ/vulkan-1.1.70+dfsg1/demos/vulkaninfo.c:2700: failed with VK_ERROR_INITIALIZATION_FAILED
我到处搜索,甚至搜索了 vulkaninfo 源代码以了解此错误的来源,但我找不到它。
有谁知道是什么导致了这个错误?为什么 vulkan 驱动程序在 ssh 终端中可以正常工作,但在虚拟显示器中却不行?
我想出了一种让它工作的方法,但它很老套。对于敏感系统,我不建议这样做
这一切都始于这个告诉我们的页面
这使我想到了这个问题和这个命令:
ps -ef | grep X
。这表明当前显示是使用 开始的xvfb
。这是x 虚拟帧缓冲区。显然xvbf 不支持 vulkan。所以让我们看看我们是否可以让 google-remote-desktop 使用普通的 x 服务器(剧透:是的!)。服务背后的代码
chrome-remote-desktop
是 in/etc/init.d/chrome-remote-desktop
,然后运行/opt/google/chrome-remote-desktop/chrome-remote-desktop
(sourcecode)。在那里,我们发现我们可以使用CHROME_REMOTE_DESKTOP_USE_XORG
环境变量让 google-remote-desktop 使用虚拟驱动程序启动 Xorg 显示器。让我们通过将以下行添加到/etc/environment
文件中来启用它:重新启动服务后出现以下错误
为什么 X 服务器不是由 root 启动的?因为 chrome-remote-desktop 服务以该用户的名义为每个用户启动一个单独的显示。
要修复上述错误,您可以编辑
/etc/X11/Xwrapper.config
和设置allowed_users = anybody
.现在 X 服务器抱怨
-logfile
只有当服务器以 root 身份运行时才可用(即,使用 real-uid 0)。如果您像我一样并且不关心日志记录,您可以编辑/opt/google/chrome-remote-desktop/chrome-remote-desktop
并删除以下行(在第 581 行附近):差不多好了!
现在 X 服务器抱怨
-config
必须是相对路径。这个页面解释了配置文件必须放在/etc/X11/<cmdline>
or中/usr/etc/X11/<cmdline>
。通过查看源代码,/opt/google/chrome-remote-desktop/chrome-remote-desktop
我们看到以下内容:此时配置文件已在 中创建
/tmp
,所以让我们移动它。在前缀和后缀行之间添加以下行:X 想要接收一个相对路径,所以我们必须改变
至
由于我们不是 root,我们必须授予用户对该文件夹的写入权限。所以让我们运行:
我们这样做是为了使用 nvidia 驱动程序。更换虚拟驱动程序:
使用 nvidia 驱动程序:
不知何故,此设置不喜欢调整大小,因此我通过设置
DEFAULT_SIZES_XORG
为"1920x1080"
.现在它起作用了!