vulkan 在 lxc / lxd 容器中不可用,但 opengl 是

问题描述

我正在使用带有 lxc / lxd 蒸汽容器的 ubuntu 18:04。效果很好,我按照本教程对网络内容进行了一些更改。

https://blog.simos.info/running-steam-in-a-lxd-system-container/

Steam 适用于 opengl 游戏,但不适用于 vulkan 游戏。 lutris 也一样。

主机端:

===========
VULKAN INFO
===========

Vulkan Instance Version: 1.1.70


Instance Extensions:
====================
Instance Extensions     count = 16

容器端:

ubuntu@steam:~$ vulkaninfo

===========
VULKAN INFO
===========

Vulkan Instance Version: 1.1.70

ERROR: setupLoaderTermPhysDevs:  Failed to detect any valid GPUs in the current config
ERROR: setupLoaderTrampPhysDevs:  Failed during dispatch call of 'vkEnumeratePhysicalDevices' to lower layers or loader to get count.

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

OpenGL 工作得很好,游戏运行得很快,所以它必须在系统中找到我唯一的 gpu。我是否必须为容器单独启用 vulkan?

宿主在 vulkan 烟雾测试中也没有问题:

user@host:~$ vulkan-smoketest 
7223 presents in 5.00039 seconds (FPS: 1444.49)

解决方法

该指南在 LXD 容器中手动添加了必要的 OpenGL 共享库,并且这样做不会添加 Vulkan 共享库。

LXD 现在支持 NVidia 容器运行时(由 NVidia 提供),因此您可以改用它。按照 https://blog.simos.info/running-x11-software-in-lxd-containers/

上的最新指南进行操作 ,

一位名叫 zakk 的 reddit 用户在 https://blog.simos.info/running-steam-in-a-lxd-system-container/ 的评论中写了一个解决方案。

做了一些跟踪后,我注意到它无法打开文件 /dev/dri 容器权限错误;在主机上那些 文件有一个允许当前用户访问它们的 ACL 集, 容器没有。所以要修复:在容器中运行

sudo setfacl -m "u:ubuntu:rw-" /dev/dri/*

每次启动 lxc 时都必须执行 setfacl 命令。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...