Toolbox: Nvidia 독점 λ“œλΌμ΄λ²„

에 λ§Œλ“  2019λ…„ 04μ›” 16일  Β·  16μ½”λ©˜νŠΈ  Β·  좜처: containers/toolbox

첫째, μœ„λŒ€ν•œ ν”„λ‘œμ νŠΈ!

Nvidia 독점 λ“œλΌμ΄λ²„λ₯Ό μ‚¬μš©ν•˜λŠ” 경우 OpenGL μ†Œν”„νŠΈμ›¨μ–΄(예: Blender)λŠ” 도ꡬ μƒμž μ»¨ν…Œμ΄λ„ˆ λ‚΄μ—μ„œ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ»¨ν…Œμ΄λ„ˆ 내뢀에 독점 λ“œλΌμ΄λ²„λ₯Ό μ„€μΉ˜ν•˜λ €κ³  ν–ˆμ§€λ§Œ μ„€μΉ˜λ˜μ§€λ§Œ OpenGL μ†Œν”„νŠΈμ›¨μ–΄κ°€ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 더 λ§Žμ€ 것을 μ„€μΉ˜ν•΄μ•Ό ν•©λ‹ˆκΉŒ? μ•„λ‹ˆλ©΄ 일뢀 ν™˜κ²½ λ³€μˆ˜λ₯Ό μ„€μ •ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?

감사!

1. Bug 5. Help Wanted

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

λ”°λΌμ„œ 도ꡬ μƒμž λ‚΄μ—μ„œ NVIDIA ν•­λͺ©μ΄ μž‘λ™ν•˜λ„λ‘ ν•˜λ €λ©΄ λ‹€μŒμ„ μˆ˜ν–‰ν•΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€(https://github.com/thewtex/docker-opengl-nvidiaμ—μ„œ μ˜κ°μ„ λ°›μŒ).

μ°Έμ‘° - 1) 당신은 도ꡬ μƒμžμ— 패치λ₯Ό λ°”μΈλ“œλŠ” / 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) 도ꡬ μƒμž μ•ˆμ— μžˆλŠ” λ™μ•ˆ λ“œλΌμ΄λ²„λ₯Ό μ„€μΉ˜ν•©λ‹ˆλ‹€.

#!/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 ν•­λͺ©μ΄ μž‘λ™ν•˜λ„λ‘ ν•˜λ €λ©΄ λ‹€μŒμ„ μˆ˜ν–‰ν•΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€(https://github.com/thewtex/docker-opengl-nvidiaμ—μ„œ μ˜κ°μ„ λ°›μŒ).

μ°Έμ‘° - 1) 당신은 도ꡬ μƒμžμ— 패치λ₯Ό λ°”μΈλ“œλŠ” / 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) 도ꡬ μƒμž μ•ˆμ— μžˆλŠ” λ™μ•ˆ λ“œλΌμ΄λ²„λ₯Ό μ„€μΉ˜ν•©λ‹ˆλ‹€.

#!/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 전체λ₯Ό λ°”μΈλ“œ λ§ˆμš΄νŠΈν•œ ν›„ μ•½κ°„μ˜ 변경이 μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. λΈ”λ Œλ”λŠ” 이제 PATHμ—μ„œ nvcc (CUDA ν•­λͺ©)을 μ°Ύκ³  찾을 수 μ—†μŠ΅λ‹ˆλ‹€.

https://github.com/debarshiray/toolbox/pull/119λ₯Ό λ³‘ν•©ν•˜λ©΄ Nvidiaκ°€ ν˜„μž¬ 독점 λ“œλΌμ΄λ²„λ‘œ μž‘μ—…ν•˜κ³  있기 λ•Œλ¬Έμ— 이 λ¬Έμ œκ°€ μ’…λ£Œλ  수 μžˆμŠ΅λ‹ˆλ‹€. 도ꡬ μƒμž μ»¨ν…Œμ΄λ„ˆ 내뢀에 ν•œ 번 nvidia λ“œλΌμ΄λ²„λ₯Ό μ„€μΉ˜ν•˜κΈ°λ§Œ ν•˜λ©΄ λ©λ‹ˆλ‹€. @tpopela 의 슀크립트 λŠ” λ“œλΌμ΄λ²„ μ„€μΉ˜μ— 도움이 λ©λ‹ˆλ‹€. @tpopela CUDA Toolkit 을 μ„€μΉ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. μ„€μΉ˜ν•˜κΈ° μœ„ν•΄ --override 및 --toolkit λ§€κ°œλ³€μˆ˜λ₯Ό μ „λ‹¬ν–ˆμŠ΅λ‹ˆλ‹€. CUDA Toolkit Blenderλ₯Ό μ„€μΉ˜ν•œ ν›„ CUDAλ₯Ό μ‚¬μš©ν•˜μ—¬ λ Œλ”λ§ν•˜λŠ” μ˜΅μ…˜μ„ ν‘œμ‹œν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λΆˆν–‰νžˆλ„ CUDAλŠ” GCC9μ—μ„œ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ :(

사싀 μ €λŠ” NVIDIA 호슀트 λ“œλΌμ΄λ²„λ₯Ό μ»¨ν…Œμ΄λ„ˆλ‘œ μœ μΆœν•˜λŠ” 것에 λŒ€ν•΄ μžˆμ—ˆκΈ° λ•Œλ¬Έμ— 이것을 μ—΄μ–΄ λ‘‘λ‹ˆλ‹€(ν•˜μ§€λ§Œ Rishi에 남겨 λ‘˜ κ²ƒμž…λ‹ˆλ‹€). λ”°λΌμ„œ μ»¨ν…Œμ΄λ„ˆμ— λ“œλΌμ΄λ²„λ₯Ό μˆ˜λ™μœΌλ‘œ μ„€μΉ˜ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€. 이λ₯Ό μœ„ν•œ WIP μ†”λ£¨μ…˜μ΄ μžˆμŠ΅λ‹ˆλ‹€.

그것은 쒋을 κ²ƒμž…λ‹ˆλ‹€!

μš°λ¦¬λŠ” @debarshiray 와 ν•¨κ»˜ NVIDIA 호슀트 λ“œλΌμ΄λ²„λ₯Ό
μ»¨ν…Œμ΄λ„ˆμ— λ“œλΌμ΄λ²„λ₯Ό μˆ˜λ™μœΌλ‘œ μ„€μΉ˜ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.

예, 이것이 μ˜³μ€ μΌμ΄λΌλŠ” 데 λ™μ˜ν•©λ‹ˆλ‹€. OpenGL λ“œλΌμ΄λ²„μ—λŠ” μ„œλ‘œ ν†΅μ‹ ν•˜λŠ” 컀널 λͺ¨λ“ˆκ³Ό 일뢀 μ‚¬μš©μž 곡간 ꡬ성 μš”μ†Œ(예: 곡유 라이브러리)κ°€ μžˆμŠ΅λ‹ˆλ‹€. NVIDIA의 경우 이 두 ꡬ성 μš”μ†Œ κ°„μ˜ μΈν„°νŽ˜μ΄μŠ€κ°€ μ•ˆμ •μ μ΄μ§€ μ•ŠμœΌλ―€λ‘œ μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ˜ μ‚¬μš©μž 곡간 λΉ„νŠΈλŠ” 호슀트의 컀널 λͺ¨λ“ˆκ³Ό μΌμΉ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. ν˜ΈμŠ€νŠΈκ°€ μ»¨ν…Œμ΄λ„ˆλ³΄λ‹€ λ’€μ²˜μ§€λŠ” 경우 λ˜λŠ” κ·Έ λ°˜λŒ€μ˜ 경우 이 두 가지가 λ™κΈ°ν™”λ˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

νŒŒμΌμ„ μ»¨ν…Œμ΄λ„ˆλ‘œ μœ μΆœν•˜λŠ” λ¬Έμ œλŠ” λ²„μ „λ§ˆλ‹€ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— ν•΄λ‹Ή 파일의 λͺ©λ‘μ„ μ–΄λ”˜κ°€μ— μœ μ§€ κ΄€λ¦¬ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. λ°”μΈλ“œ 마운트될 수 μžˆλŠ” 잘 μ•Œλ €μ§„ nvidia 디렉토리가 호슀트 μ–΄λ”˜κ°€μ— μžˆλ‹€λ©΄ κ°œλ³„ 파일 자체의 이름과 μœ„μΉ˜μ— λŒ€ν•΄ κ±±μ •ν•  ν•„μš”κ°€ μ—†κΈ° λ•Œλ¬Έμ— 이것은 훨씬 더 간단할 κ²ƒμž…λ‹ˆλ‹€. λΆˆν–‰νžˆλ„ 그렇지 μ•ŠμŠ΅λ‹ˆλ‹€.

μ£Όμœ„λ₯Ό λ‘˜λŸ¬λ³΄λ‹ˆ Flatpak의 μ†”λ£¨μ…˜ 이 합리적인 νƒ€ν˜‘μ μ΄λΌλŠ” 것을 μ•Œμ•˜μŠ΅λ‹ˆλ‹€. μš”μ»¨λŒ€, 이 잘 μ•Œλ €μ§„ nvidia 디렉토리λ₯Ό 발λͺ…ν•˜κ³  μ‹œν–‰ν•©λ‹ˆλ‹€. 호슀트 OS의 λ°°ν¬μžκ°€ λͺ¨λ“  μ‚¬μš©μž 곡간 νŒŒμΌμ„ /var/lib/flatpak/extension/org.freedesktop.Platform.GL.host/x86_64/1.4 에 넣을 κ²ƒμœΌλ‘œ μ˜ˆμƒν•˜λ©° μ΄λŠ” NVIDIA λ“œλΌμ΄λ²„λ₯Ό μ œκ³΅ν•˜λŠ” νŒ¨ν‚€μ§€λ₯Ό μˆ˜μ • ν•˜μ—¬ κ΅¬ν˜„λ©λ‹ˆλ‹€.

이 μž‘μ—…μ΄ μ™„λ£Œλ˜λ©΄ μ»¨ν…Œμ΄λ„ˆ 내뢀에 μ΄λŸ¬ν•œ νŒŒμΌμ„ λ°°μΉ˜ν•  μœ„μΉ˜μ™€ μ»¨ν…Œμ΄λ„ˆμ˜ λŸ°νƒ€μž„ ν™˜κ²½μ—μ„œ ν•΄λ‹Ή νŒŒμΌμ„ κ°€λ¦¬ν‚€λŠ” 방법을 νŒŒμ•…ν•΄μ•Ό ν•©λ‹ˆλ‹€.

Nvidiaμ—λŠ” ​​이 nvidia-container-runtime-hook λŒ€ν•œ 자체 μ†”λ£¨μ…˜ 이 μžˆμŠ΅λ‹ˆλ‹€. 이 --uidmap μ‚¬μš©ν•  λ•Œ ldconfig μ‹€ν–‰ κΆŒν•œμ„ μžƒκ²Œ λ˜λŠ” μˆœκ°„μ— λ¬Έμ œκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.

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

도ꡬ μƒμžκ°€ λ‹€λ₯Έ κ΅¬ν˜„μ„ μœ μ§€ κ΄€λ¦¬ν•˜λŠ” 것보닀 κΈ°μ‘΄ 도ꡬ와 톡합을 μ‹œλ„ν•˜κ³  ν†΅ν•©ν•˜λŠ” 것이 더 λ‚˜μ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

uidmap κΆŒν•œ λ¬Έμ œμ™€ κ΄€λ ¨λœ 문제:

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

도ꡬ μƒμž 버그 #343μ—μ„œ Steam을 μ‹€ν–‰ν•˜λ €κ³  ν–ˆμŠ΅λ‹ˆλ‹€. 도ꡬ μƒμžλ₯Ό νŒ¨μΉ˜ν•˜μ§€ μ•Šμ•˜κ³ , Steam이 μ‹€ν–‰λ˜κ³  OpenGL이 μž‘λ™ν•˜μ§€λ§Œ vulkan이 μž‘λ™ν•˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. Steamμ—μ„œ vkmark 및 Rise of Tomb Raiderλ₯Ό μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€.

μž‘λ™μ‹œν‚€λŠ” 방법에 λŒ€ν•œ 아이디어가 μžˆμŠ΅λ‹ˆκΉŒ?

Singularity ccontainerκ°€ libnvidia-container 없이 이 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 것을 λ³΄μ•˜μŠ΅λ‹ˆλ‹€. 그듀은 ν•„μš”ν•œ 파일 λͺ©λ‘μ„ μ‚¬μš©

κ·Έλ ‡λ‹€λ©΄ 2021λ…„ μ»¨ν…Œμ΄λ„ˆμ—μ„œ Nvidia GPU λ“œλΌμ΄λ²„λ₯Ό μ‚¬μš©ν•˜λŠ” ν˜„ν™©μ€ λ¬΄μ—‡μž…λ‹ˆκΉŒ?
/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 λ“±κΈ‰