Toolbox: سائق نفيديا

تم إنشاؤها على ١٦ أبريل ٢٠١٩  ·  16تعليقات  ·  مصدر: containers/toolbox

أولا ، مشروع عظيم!

إذا كنت أستخدم برنامج تشغيل Nvidia الخاص ، فإن برامج OpenGL (مثل Blender) لا تعمل داخل حاوية صندوق الأدوات. حاولت تثبيت برنامج التشغيل الخاص داخل الحاوية ، تم تثبيته ولكن برامج OpenGL لا تعمل. هل من الضروري تثبيت المزيد من الأشياء؟ أو ضع بعض المتغير env؟

شكرا!

1. Bug 5. Help Wanted

التعليق الأكثر فائدة

لذلك لكي تعمل عناصر NVIDIA داخل Toolbox ، كان علي القيام بذلك (مستوحى من https://github.com/thewtex/docker-opengl-nvidia):

1) يجب عليك تصحيح Toolbox لربط / dev / nvidia0 و / dev / nvidiactl بصندوق الأدوات وإعداد أشياء X11 - راجع https://github.com/tpopela/toolbox/commit/40231e8591d70065199c0df9b6811c2f9e9d7269

2) قم بتنزيل برامج التشغيل الخاصة بـ NVIDIA على المضيف:

#!/bin/sh

# Get your current host nvidia driver version, e.g. 340.24
nvidia_version=$(cat /proc/driver/nvidia/version | head -n 1 | awk '{ print $8 }')

# We must use the same driver in the image as on the host
if test ! -f nvidia-driver.run; then
  nvidia_driver_uri=http://us.download.nvidia.com/XFree86/Linux-x86_64/${nvidia_version}/NVIDIA-Linux-x86_64-${nvidia_version}.run
  wget -O ~/nvidia-driver.run $nvidia_driver_uri
fi

3) قم بتثبيت برامج التشغيل أثناء وجودك داخل Toolbox:

#!/bin/sh

sudo dnf install -y glx-utils kmod libglvnd-devel || exit 1
sudo sh ~/nvidia-driver.run -a -N --ui=none --no-kernel-module || exit 1
glxinfo | grep "OpenGL version"

ال 16 كومينتر

Toolbox عبارة عن حاوية ، يجب عليك تعيين بطاقة الرسومات الخاصة بك بالداخل ، أو القيام بالأشياء بالطريقة التي يعمل بها nvidia-docker.

Findarato تقصد إضافة شيء مثل --volume /dev/nvidia0:/dev/nvidia0 وملفات أخرى / dev؟

لذلك لكي تعمل عناصر NVIDIA داخل Toolbox ، كان علي القيام بذلك (مستوحى من https://github.com/thewtex/docker-opengl-nvidia):

1) يجب عليك تصحيح Toolbox لربط / dev / nvidia0 و / dev / nvidiactl بصندوق الأدوات وإعداد أشياء X11 - راجع https://github.com/tpopela/toolbox/commit/40231e8591d70065199c0df9b6811c2f9e9d7269

2) قم بتنزيل برامج التشغيل الخاصة بـ NVIDIA على المضيف:

#!/bin/sh

# Get your current host nvidia driver version, e.g. 340.24
nvidia_version=$(cat /proc/driver/nvidia/version | head -n 1 | awk '{ print $8 }')

# We must use the same driver in the image as on the host
if test ! -f nvidia-driver.run; then
  nvidia_driver_uri=http://us.download.nvidia.com/XFree86/Linux-x86_64/${nvidia_version}/NVIDIA-Linux-x86_64-${nvidia_version}.run
  wget -O ~/nvidia-driver.run $nvidia_driver_uri
fi

3) قم بتثبيت برامج التشغيل أثناء وجودك داخل Toolbox:

#!/bin/sh

sudo dnf install -y glx-utils kmod libglvnd-devel || exit 1
sudo sh ~/nvidia-driver.run -a -N --ui=none --no-kernel-module || exit 1
glxinfo | grep "OpenGL version"

tpopela عملت. شكرا!

أنا سعيد لأنه نجح! ولكن كان هناك خطأ قد يؤدي إلى حدوث أعطال بعد إعادة تشغيل المضيف - ستحتاج إلى تطبيق https://github.com/tpopela/toolbox/commit/3db450a8e5762399fd81c848f311da950437dd04 أعلى التصحيح السابق.

tpopela قد نكون قادرين على الابتعاد دون تثبيت الربط /tmp/.x11-unix . في هذه الأيام ، يستمع خادم X.org إلى مقبس UNIX مجردة ومقبس UNIX على نظام الملفات. السابق لا يعمل إذا كان لديك مساحة اسم شبكة ، لكن Toolbox لا يحتوي على واحد (لأن podman create --net host ) ، ولهذا تعمل تطبيقات X يقع الأخير في /tmp/.x11-unix ويستخدم بواسطة حاويات Flatpak لأن تلك تحتوي على مساحات أسماء للشبكة.

مراجع:

آه طيبdebarshiray! شكرا لك على التوضيح. أستطيع أن أؤكد أن عدم ربط تثبيت /tmp/X11-unix لا يغير شيئًا وأن التكامل يعمل (حاول تشغيل Blender هنا).

ربما يكون هناك تغيير طفيف بعد ربطنا بتركيب /dev بالكامل. يبحث الخلاط الآن عن nvcc (أشياء CUDA) في PATH ولا يمكنه العثور عليه.

من خلال دمج https://github.com/debarshiray/toolbox/pull/119 ، قد يتم إغلاق هذه المشكلة ، نظرًا لأن Nvidia تعمل الآن مع برنامج تشغيل خاص. من الضروري فقط تثبيت برنامج تشغيل nvidia مرة واحدة داخل حاوية مربع الأدوات. تساعد البرامج النصية tpopela في تثبيت برنامج التشغيل. tpopela عليك تثبيت CUDA Toolkit . لتثبيته ، قمت بتمرير المعلمات --override و --toolkit . بعد تثبيت CUDA Toolkit Blender ، أظهر لي خيار التقديم باستخدام CUDA. لكن للأسف لا تعمل CUDA مع GCC9 :(

في الواقع ، سأترك هذا مفتوحًا (لكنني سأتركه على Rishi) حيث كنا نفكر مع

هذا سيكون رائع!

كنا نفكر مع debarshiray حول تسريب برامج تشغيل مضيف NVIDIA إلى
الحاوية ، لذلك لن تكون هناك حاجة لتثبيت برامج التشغيل يدويًا في الحاوية.

نعم ، أوافق على أن هذا سيكون الشيء الصحيح الذي ينبغي عمله. تحتوي برامج تشغيل OpenGL على وحدة kernel وبعض مكونات مساحة المستخدم (مثل المكتبات المشتركة) التي تتحدث مع بعضها البعض. في حالة NVIDIA ، تكون الواجهة بين هذين المكونين غير مستقرة ، وبالتالي يجب أن تتطابق وحدات مساحة المستخدم داخل الحاوية مع وحدة kernel على المضيف. يمكن أن يخرج هذان العنصران عن المزامنة إذا كان مضيفك متخلفًا عن الحاوية أو العكس.

تكمن مشكلة تسريب الملفات في الحاوية في الاحتفاظ بقائمة بهذه الملفات في مكان ما لأنها تختلف من إصدار إلى آخر. سيكون هذا أبسط بكثير إذا كان هناك دليل nvidia معروف جيدًا في مكان ما على المضيف يمكن ربطه لأنه عندئذٍ لن نضطر إلى القلق بشأن أسماء ومواقع الملفات الفردية نفسها. للأسف هذا ليس هو الحال.

بالنظر حولي ، وجدت أن حل Flatpak هو nvidia المعروف /var/lib/flatpak/extension/org.freedesktop.Platform.GL.host/x86_64/1.4 ويتم تنفيذ ذلك عن طريق تعديل الحزمة التي تشحن برنامج تشغيل NVIDIA.

بعد القيام بذلك ، سنحتاج إلى معرفة مكان وضع هذه الملفات داخل الحاوية وكيفية توجيه بيئة وقت تشغيل الحاوية إليها.

لدى Nvidia الحل الخاص بها لهذا nvidia-container-runtime-hook والذي يعمل بشكل جيد للغاية مع podman الذي يتم تشغيله بواسطة خطاف تشغيل مسبق. واجهت للتو مشكلات في الوقت الحالي عند استخدام --uidmap s مما أدى إلى فقدان الأذونات لتشغيل ldconfig :

could not start /sbin/ldconfig: mount operation failed: /proc: operation not permitted

قد يكون من الأفضل لصندوق الأدوات أن يحاول الاندماج مع هذه الأداة الحالية بدلاً من الحفاظ على تطبيق آخر.

المشكلة المتعلقة بمشكلة إذن uidmap:

https://github.com/NVIDIA/libnvidia-container/issues/49

كنت أحاول تشغيل البخار في الخطأ رقم 343 في صندوق الأدوات ، لم أقم بإصلاح مربع الأدوات وتشغيل البخار وأعمال opengl ولكن يبدو أن فولكان لا يعمل ، جربت vkmark و Rise of Tomb Raider على Steam.

هل من أفكار حول كيفية تشغيله؟

رأيت أن Singularity ccontainer يعمل على حل هذه المشكلة بدون libnvidia-container . يستخدمون قائمة بالملفات المطلوبة

إذن ما هي حالة استخدام برامج تشغيل Nvidia GPU في الحاوية في عام 2021؟
يمكنني تثبيت /dev/nvidia0 و /dev/nvidiactl .
ومع ذلك ، لا يمكنني تثبيت برامج تشغيل Nvidia بنجاح. يستمر التثبيت بشكل طبيعي ولكن التحقق باستخدام modinfo -F version nvidia يعطي خطأ:
modinfo: ERROR: Module alias nvidia not found. .
ولا يتم دعم Nvidia Container Toolkit رسميًا في Fedora ، لذلك لا يبدو أنها فكرة جيدة لاستخدامها مع Fedora Silverblue.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات