まず、素晴らしいプロジェクトです!
Nvidia独自のドライバーを使用している場合、OpenGLソフトウェア(Blenderなど)はツールボックスコンテナー内では機能しません。 コンテナ内にプロプライエタリドライバをインストールしようとしましたが、インストールされますが、OpenGLソフトウェアが機能しません。 もっとインストールする必要がありますか? または、いくつかの環境変数を設定しますか?
ありがとう!
ツールボックスはコンテナです。グラフィックカードを内部にマッピングするか、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ソケットをリッスンします。 前者はネットワーク名前空間がある場合は機能しませんが、ツールボックスには名前空間がありません( podman create --net host
)。そのため、Xアプリケーションが機能します。 後者は/tmp/.x11-unix
あり、Flatpakコンテナにはネットワーク名前空間があるため使用されます。
参照:
ああ、@ debarshiray! ご説明ありがとうございます。 /tmp/X11-unix
バインドマウントしなくても何も変わらず、統合が機能することを確認できます(ここでBlenderを実行しようとしました)。
/dev
全体をバインドマウントした後、おそらく小さな変更があります。 BlenderはPATHでnvcc
(CUDAのもの)を探すようになりましたが、見つかりません。
https://github.com/debarshiray/toolbox/pull/119のマージにより、Nvidiaは現在プロプライエタリドライバーで動作しているため、この問題は解決される可能性があり@tpopelaのスクリプトは、ドライバーのインストールに役立ちます。 @tpopela CUDAToolkitをインストールする必要があります。 インストールするために、パラメーター--override
と--toolkit
を渡しました。 CUDA Toolkit Blenderをインストールした後、CUDAを使用してレンダリングするオプションを表示します。 しかし残念ながら、CUDAはGCC9では動作しません:(
NVIDIAホストドライバーをコンテナーにリークすることについて@debarshirayと考えていた
それは素晴らしいことです!
NVIDIAホストドライバーをにリークすることについて@debarshirayと考えていました
コンテナなので、コンテナにドライバを手動でインストールする必要はありません。
はい、これが正しいことであることに同意します。 OpenGLドライバーには、カーネルモジュールと、相互に通信するいくつかのユーザースペースコンポーネント(共有ライブラリなど)があります。 NVIDIAの場合、これら2つのコンポーネント間のインターフェイスは安定していないため、コンテナ内のユーザースペースビットはホスト上のカーネルモジュールと一致する必要があります。 ホストがコンテナより遅れている場合、またはその逆の場合、これら2つは同期しなくなる可能性があります。
ファイルをコンテナにリークする際の問題は、バージョンごとに異なるため、それらのファイルのリストをどこかに維持することです。 ホストのどこかにバインドマウント可能な既知のnvidiaディレクトリがあれば、個々のファイル自体の名前と場所を気にする必要がないため、これは非常に簡単です。 残念ながら、そうではありません。
周りを見回すと、Flatpakのソリューションが妥当な妥協点であることがわかりました。 要するに、それはこのよく知られているnvidiaディレクトリを発明して実施します。 ホストOSのディストリビューターがすべてのユーザースペースファイルを/var/lib/flatpak/extension/org.freedesktop.Platform.GL.host/x86_64/1.4
に入れることを期待しており、これはNVIDIAドライバーを出荷するパッケージを変更することで実装されます。
これが完了したら、これらのファイルをコンテナー内のどこに配置するか、およびコンテナーのランタイム環境をそれらに向ける方法を理解する必要があります。
Nvidiaには、このnvidia-container-runtime-hook
に対する独自のソリューションがあります。これは、ociprestartフックによってトリガーされるpodmanで非常にうまく機能します。 --uidmap
を使用しているときに問題が発生し、 ldconfig
を実行する権限が失われました。
could not start /sbin/ldconfig: mount operation failed: /proc: operation not permitted
ツールボックスは、別の実装を維持するよりも、この既存のツールと統合しようとする方がよい場合があります。
uidmap権限の問題に関連する問題:
ツールボックスのバグ#343でsteamを実行しようとしていました。ツールボックスにパッチを適用しなかったため、steamが実行され、openglが機能しますが、vulkanが機能しないようです。蒸気で、vkmarkとRise of TombRaiderを試しました。
それを機能させる方法について何かアイデアはありますか?
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で公式にサポートされていないため、FedoraSilverblueで使用するのは良い考えではないようです。
最も参考になるコメント
したがって、ツールボックス内でNVIDIAのものを機能させるには、これを行う必要がありました(https://github.com/thewtex/docker-opengl-nvidiaに触発されました)。
1)/ dev / nvidia0と/ dev / nvidiactlをツールボックスにバインドマウントしてX11のものをセットアップするには、ツールボックスにパッチを適用する必要があります-https://github.com/tpopela/toolbox/commit/40231e8591d70065199c0df9b6811c2f9e9d7269を参照してください
2)ホストにNVIDIA独自のドライバーをダウンロードします。
3)ツールボックス内にいる間にドライバーをインストールします。