VNCでOpenGL Applicationsを飛ばす on Ubuntu 16.04 with Nvidia GPU
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
* VNCでOpenGL APplicationsを飛ばす on Ubuntu16.04 with Nvidia GPU [#ab52ae6b]
** Prerequisites [#a12aa7fe]
- Ubuntu 16.06
- Nvidia GPU
-- proper driver (e.g. nvidia-410)
- lightdm
- fcitx 4
** 考え方 [#f0473dff]
- 本物のX (Xorg) 以外でOpenGL applicationを動かす際には、VirtualGLなる(そのまんまな名前な)ミドルウェアが必要
- VirtualGLを上手く動かすには、(renderingのための?)本物のXが起動している必要がある
-- 大抵、display managerがうまくうごいていればよい
** 手順概要 [#o3f0e4d5]
- VNCサーバ (TurboVNC) をリモートマシンにインストールする
- VirtualGLをリモートマシンにインストールする
-- vglserver_config で設定をする
-- ${HOME}/.vnc/xstartup.turbovnc を設定する
- Nvidiaが提供しているツールでXorgの設定をする(xrog.confの生成)
- クライアントでVNCクライアントを起動する
- vglrun ${opengl application}
-- 困ったらDISPLAY, VGL_DISPLAY環境変数をみてみる
** 初期設定手順 [#bf574942]
$ sudo apt install -y turbovnc virtualgl
$ vi ${HOME}/.vnc/xstartup.turbovnc # xfceが立ち上がるように書いたが、おそらくなんでもよい
$ cat ${HOME}/.vnc/xstartup.turbovn
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
XDG_SESSION_TYPE=x11; export XDG_SESSION_TYPE
# This works around pointer disappearance issues under GNOME 3
if [ -x /usr/bin/dconf ]; then
dconf write /org/gnome/settings-daemon/plugins/cursor/active false
fi
OS=`uname -s`
if [ $OS = 'Linux' ]; then
case "$WINDOWMANAGER" in
*gnome*)
if [ -e /etc/SuSE-release ]; then
PATH=$PATH:/opt/gnome/bin
export PATH
fi
;;
esac
fi
startxfce4
$ sudo nvidia-xconfig
$ /opt/VirtualGL/bin/vglserver_config # ウィザードに従って設定をする
$ systemctl restart lightdm # このへんで適当にDMを再起動。意味があるのかは不明。
** つかいかた [#l676d8c8]
- リモートマシンにログイン
- Xorgが起動しているかどうかを確認する (ある環境においては、lightdmが起動しているかを確認)
/opt/TurboVNC/bin/vncserver :2 # :2の部分は適当に変更する。lightdmが何故か:1で起動するようになってしまい、ちょっときもちわるい。
- クライアントマシンからVNC Client App でリモートマシンに接続
-- URI: ${remote machine IP address}:${Display Number (e.g. :2)}
-- いくつかのアプリではポート番号はポート番号を指定しないといけないかも。デフォルトだと5900 + (display number)
-- リモートデスクトップ上でターミナルを開く
vglrun ${application}
** 感想 [#e32963f8]
- Gazeboをremoteで動かしてrender結果を(リアルタイムに)localに持ってきたかった
- Gazeboはそれ自体がサーバー・クライアント分離に対応しているが、サーバのGazeboとクライアントのGazeboのバージョンが完全に一致していないといけない。Debianの公式リポジトリとUbuntuの公式リポジトリのバージョンが合うことは(ほぼ)無いので、しんどい。
- Gazeboのサーバ・クライアントが通信するには[[Full Connectivity>https://wiki.ros.org/ROS/NetworkSetup]]が必要っぽいので、remote serverでdockerコンテナを動かす方法は簡 単には行かない(ソースはROSの話だがGazeboも一緒だろう)。
- VNCで持ってこようとするとOpenGLが使えなくてなんとかと言われるので、VirtualGLを入れるなどしていろいろやるが、"Xlib: extension "GLX" missing on display ":1""と言われてGazeboが一瞬起動して死ぬ
- (こちらのローカルなミスで) xorg.confが消えていた(正確に言うとバックアップしか残っていなかった)ので、GLとWindowの連携が不可能だったと思われる。
- nvidia-xconfigコマンドでxorg.confを再生成して解決。
終了行:
* VNCでOpenGL APplicationsを飛ばす on Ubuntu16.04 with Nvidia GPU [#ab52ae6b]
** Prerequisites [#a12aa7fe]
- Ubuntu 16.06
- Nvidia GPU
-- proper driver (e.g. nvidia-410)
- lightdm
- fcitx 4
** 考え方 [#f0473dff]
- 本物のX (Xorg) 以外でOpenGL applicationを動かす際には、VirtualGLなる(そのまんまな名前な)ミドルウェアが必要
- VirtualGLを上手く動かすには、(renderingのための?)本物のXが起動している必要がある
-- 大抵、display managerがうまくうごいていればよい
** 手順概要 [#o3f0e4d5]
- VNCサーバ (TurboVNC) をリモートマシンにインストールする
- VirtualGLをリモートマシンにインストールする
-- vglserver_config で設定をする
-- ${HOME}/.vnc/xstartup.turbovnc を設定する
- Nvidiaが提供しているツールでXorgの設定をする(xrog.confの生成)
- クライアントでVNCクライアントを起動する
- vglrun ${opengl application}
-- 困ったらDISPLAY, VGL_DISPLAY環境変数をみてみる
** 初期設定手順 [#bf574942]
$ sudo apt install -y turbovnc virtualgl
$ vi ${HOME}/.vnc/xstartup.turbovnc # xfceが立ち上がるように書いたが、おそらくなんでもよい
$ cat ${HOME}/.vnc/xstartup.turbovn
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
XDG_SESSION_TYPE=x11; export XDG_SESSION_TYPE
# This works around pointer disappearance issues under GNOME 3
if [ -x /usr/bin/dconf ]; then
dconf write /org/gnome/settings-daemon/plugins/cursor/active false
fi
OS=`uname -s`
if [ $OS = 'Linux' ]; then
case "$WINDOWMANAGER" in
*gnome*)
if [ -e /etc/SuSE-release ]; then
PATH=$PATH:/opt/gnome/bin
export PATH
fi
;;
esac
fi
startxfce4
$ sudo nvidia-xconfig
$ /opt/VirtualGL/bin/vglserver_config # ウィザードに従って設定をする
$ systemctl restart lightdm # このへんで適当にDMを再起動。意味があるのかは不明。
** つかいかた [#l676d8c8]
- リモートマシンにログイン
- Xorgが起動しているかどうかを確認する (ある環境においては、lightdmが起動しているかを確認)
/opt/TurboVNC/bin/vncserver :2 # :2の部分は適当に変更する。lightdmが何故か:1で起動するようになってしまい、ちょっときもちわるい。
- クライアントマシンからVNC Client App でリモートマシンに接続
-- URI: ${remote machine IP address}:${Display Number (e.g. :2)}
-- いくつかのアプリではポート番号はポート番号を指定しないといけないかも。デフォルトだと5900 + (display number)
-- リモートデスクトップ上でターミナルを開く
vglrun ${application}
** 感想 [#e32963f8]
- Gazeboをremoteで動かしてrender結果を(リアルタイムに)localに持ってきたかった
- Gazeboはそれ自体がサーバー・クライアント分離に対応しているが、サーバのGazeboとクライアントのGazeboのバージョンが完全に一致していないといけない。Debianの公式リポジトリとUbuntuの公式リポジトリのバージョンが合うことは(ほぼ)無いので、しんどい。
- Gazeboのサーバ・クライアントが通信するには[[Full Connectivity>https://wiki.ros.org/ROS/NetworkSetup]]が必要っぽいので、remote serverでdockerコンテナを動かす方法は簡 単には行かない(ソースはROSの話だがGazeboも一緒だろう)。
- VNCで持ってこようとするとOpenGLが使えなくてなんとかと言われるので、VirtualGLを入れるなどしていろいろやるが、"Xlib: extension "GLX" missing on display ":1""と言われてGazeboが一瞬起動して死ぬ
- (こちらのローカルなミスで) xorg.confが消えていた(正確に言うとバックアップしか残っていなかった)ので、GLとWindowの連携が不可能だったと思われる。
- nvidia-xconfigコマンドでxorg.confを再生成して解決。
ページ名: