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

vulkan is not avaible in lxc / lxd container but opengl is

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

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 smoketest上也没有问题:

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/

上的最新指南进行操作

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

After doing some traces, I noticed it is failing to open files in /dev/dri The container has the wrong permissions; on the host those files have an ACL set that lets the current user access them, the container does not. So to fix: in the container run

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

每次启动lxc都要执行setfacl命令