NVIDIA製GPU付きホスト上のLXDでOpenGLを使用する方法
背景
LXD上でROSのGUIを出そうと思ったらOpenGLのversionがmesaは1.2までしか対応していないけれど1.4を要求されるので動かないという事態が発生した。
NVIDIAじゃなくてIntelのeGPUとかでも動く。
解決策
ホストにはNVIDIAのGPUが刺さっているので、これをコンテナから使えるようにしてやる。
基本的にはこれとこれの内容を組み合わせてまとめただけである。
1度だけやる必要のある処理
これはホストに変更を加える。
ホスト側のUID周りの設定を変更して、LXCコンテナに存在するユーザをホストのユーザにマップできるようにする。こうすることでホストのドライバやGPUを使えるようにする。
echo "root:$UID:1" | sudo tee -a /etc/subuid /etc/subgid
コンテナに適用する処理
ここではコンテナの名前をnoeticとする。
lxc launch ubuntu:20.04 noetic
以下のコマンドはLXCコンテナのユーザを実際にホストのユーザにマップしている。
lxc config set noetic raw.idmap "both $UID 1000"
lxc restart noetic
以下のコマンドはLXCコンテナの中からX serverにアクセスできるように、必要なファイルをマウントしている。
lxc config device add noetic X0 disk path=/tmp/.X11-unix/X0 source=/tmp/.X11-unix/X0
lxc config device add noetic Xauthority disk path=/home/ubuntu/.Xauthority source=${XAUTHORITY}
以下のコマンドはgpuをLXCコンテナに追加して、マップしたユーザで使用できるようにUIDとGIDを設定する。
lxc config device add noetic mygpu gpu
lxc config device set noetic mygpu uid 1000
lxc config device set noetic mygpu gid 1000
NVIDIAのGPUを使っている場合は以下のコマンドでLXCコンテナにNVIDIAのGPUを利用するための全権限を許可する。IntelのeGPUとかであればこの設定は不要。
lxc config set noetic nvidia.driver.capabilities all
lxc config set noetic nvidia.runtime "true"
設定を反映するために再起動する。
lxc restart noetic
テスト
設定がうまく行ったか確認する
lxc exec noetic -- sudo --login --user ubuntu
sudo apt update
sudo apt install x11-apps mesa-utils alsa-utils
nvidia-smi
export DISPLAY=:0
xclock
glxgears
Author And Source
この問題について(NVIDIA製GPU付きホスト上のLXDでOpenGLを使用する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/nindanaoto/items/b3d76a17e8ba21b34587著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .