vulkan недоступен в контейнере lxc / lxd, но есть opengl

#gpu #vulkan #lxc #lxd

#графический процессор #vulkan #lxc #lxd

Вопрос:

Я использую ubuntu 18: 04 с контейнером steam 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 работает просто отлично, игры запускаются быстро, поэтому он должен найти мой единственный графический процессор в системе. Должен ли я отдельно включать vulkan для контейнера?

У хоста также нет проблем с vulkan smoketest:

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

Ответ №1:

Это руководство вручную добавляет необходимые разделяемые библиотеки OpenGL в контейнер LXD и при этом не добавляет разделяемые библиотеки Vulkan.

LXD теперь поддерживает среду выполнения контейнера NVidia (предоставляемую NVidia), поэтому вы можете использовать ее вместо этого. Следуйте более свежему руководству по адресу https://blog.simos.info/running-x11-software-in-lxd-containers /

Ответ №2:

Пользователь reddit по имени zakk написал решение в комментариях https://blog.simos.info/running-steam-in-a-lxd-system-container /.

После выполнения некоторых трассировок я заметил, что не удается открыть файлы в / dev / dri, контейнер имеет неправильные разрешения; на хосте у этих файлов есть набор ACL, который позволяет текущему пользователю получать к ним доступ, контейнер — нет. Итак, чтобы исправить: в контейнере запустите

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

Вы должны выполнять команду setfacl каждый раз, когда запускаете lxc.