Vulkan 驱动程序在谷歌远程桌面中运行时停止工作

Vulkan 驱动程序在谷歌远程桌面中运行时停止工作

nvidia-smi我正在运行一个连接了 nvidia v100 的 ubuntu gcp 实例。我安装了显卡驱动程序,并使用和检查了正确性vulkaninfo。两者都没有显示错误。这表明显卡驱动程序安装正确。

现在我想使用远程显示访问Google 的远程桌面服务。所以我跟着无头安装说明一切似乎都进展顺利,直到我测试了显卡。不知何故,vulkaninfo在远程桌面内的终端中运行时,它出现以下错误信息:

/build/vulkan-UL09PJ/vulkan-1.1.70+dfsg1/demos/vulkaninfo.c:2700: failed with VK_ERROR_INITIALIZATION_FAILED

我已经在各处用 Google 搜索过,甚至搜索了 vulkaninfo 源代码来了解这个错误的根源,但我找不到它。

有人知道是什么原因导致了这个错误吗?为什么 vulkan 驱动程序在 ssh 终端中工作正常,但在虚拟显示器中却不行?

答案1

我找到了一种方法来让它工作,但它很不可靠。我不建议在敏感系统上使用这种方法

一切都始于这一页这告诉我们

如果与 dpy 关联的 X11 服务器不拥有显示器,或者访问它的权限已被另一个实体获取,则该调用必须返回错误代码 VK_ERROR_INITIALIZATION_FAILED。

这让我这个问题和这个命令:ps -ef | grep X。这表明当前显示是使用 启动的xvfb。这是x 虚拟帧缓冲区。 显然xvbf 不支持 vulkan。那么让我们看看是否可以让 google-remote-desktop 使用普通的 x 服务器(剧透:是的!)。

该服务背后的代码chrome-remote-desktop位于/etc/init.d/chrome-remote-desktop,它依次运行/opt/google/chrome-remote-desktop/chrome-remote-desktop源代码)。我们发现可以使用CHROME_REMOTE_DESKTOP_USE_XORG环境变量让 google-remote-desktop 使用虚拟驱动程序启动 Xorg 显示器。让我们通过在文件中添加以下行来启用它/etc/environment

CHROME_REMOTE_DESKTOP_USE_XORG=1

重新启动服务后,出现以下错误

Only console users are allowed to run the X server

为什么 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 行):

"-logfile", "/dev/null",

差不多了!

现在 X 服务器抱怨必须-config是相对路径。这一页说明配置文件必须放在/etc/X11/<cmdline>或中/usr/etc/X11/<cmdline>。查看 的源代码,/opt/google/chrome-remote-desktop/chrome-remote-desktop我们看到以下内容:

    with tempfile.NamedTemporaryFile(
        prefix="chrome_remote_desktop_",
        suffix=".conf", delete=False) as config_file:
      config_file.write(gen_xorg_config(self.sizes).encode())

此时配置文件已在中创建/tmp,因此让我们移动它。在前缀和后缀行之间添加以下行:

dir="/etc/X11/",

X 想要接收相对路径,所以我们必须改变

"-config", config_file.name

"-config", os.path.basename(config_file.name)

由于我们不是 root,因此我们必须授予用户对此文件夹的写入权限。因此,让我们运行:

sudo chmod 777 /etc/X11

我们这样做是为了能够使用 nvidia 驱动程序。替换虚拟驱动程序:

      'Section "Device"\n'
      '  Identifier "Chrome Remote Desktop Videocard"\n'
      '  Driver "dummy"\n'
      '  VideoRam {video_ram}\n'
      'EndSection\n'

使用 nvidia 驱动程序:

      'Section "Device"\n'
      '  Identifier "Chrome Remote Desktop Videocard"\n'
      '  Driver "nvidia"\n'
      '  VendorName "NVIDIA Corporation"\n'
      '  VideoRam {video_ram}\n'
      'EndSection\n'

不知为何,这个设置不喜欢调整大小,因此我通过设置DEFAULT_SIZES_XORG为来强制使用单一尺寸"1920x1080"

现在它起作用了!

相关内容