見出し画像

VNC なんて、どれも同じと思っていた。 〜 Raspberry Pi に TurboVNC をインストール

 よく調べている方は既にご存知の通り、Raspberry PI には VirtualGL を入れるのが困難なため、TurboVNC も使えません。という情報がほとんどのようです。今回、私は 3D 機能(つまり、VirtualGL)を抜きにした速度向上を求めて調査し、2D のみでも TurboVNC は速いことを確認しましたので、NOTE に記しておきます。

 VNC の性能の向上は最近、十分なレベルに達しており、普通にリモート操作する目的には、どの VNC も不便はありませんが、動画等を扱いたい場合には、回線速度は速くても VNC では実用に耐えられないレベルの動画になってしまうことがほとんどです。もちろん、YouTube や Stream による動画配信を直接参照すれば、動画も綺麗ですが、他の端末に表示されている動画を VNC を経由して利用したいアプリケーションもあるはずです。そんな志のメンバーが TigerVNC の開発をスピンアウトして作っているのが TurboVNC です。前書きが長くなっておりますが、TurboVNC では、3D 処理も高速に扱うために、OpenGL,ES に替わる VirtualGL を利用することが前提となっています。前述の通り、VirtualGL は、Raspberry PI に入れるのが困難な為、他の VNC を薦めるという情報がほとんどですが、レンダーにハードウェア・アクセラレーター(いわゆる GPU )を用いなければ、TurboVNC も Raspberry PI 4B (buster) 上で使えました。私は、他のあるアプリケーションで表示されている動画を高速に参照したかったのですが、YouTube も非常に高速に表示されることを確認しました。

TurboVNC を make するには、libjpeg-turbo library が必要となります。

https://libjpeg-turbo.org/

上記ウェブサイトから GitHub へ遷移し、ソースコードを git clone してきて下さい。

git clone https://github.com/libjpeg-turbo/libjpeg-turbo.git
cd libjpeg-turbo
mkdir build
export JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-armhf
cmake .. -D -DCMAKE_INSTALL_PREFIX=/opt/libjpeg-turbo -D WITH_JAVA=1
make
sudo make install

TurboVNC の make では turbojpeg.jar が必要な為、上記のインストール方法では、Java の設定のみ追加しておりますが、cmake を実行した際に表示される error に従い、必要なライブラリ等をインストールしてください。

問題なく libjpeg-turbo library がインストールできたら、TurboVNC も同様に 下記ウェブサイトから GitHub へ遷移して、ソースコードを git clone してきます。

https://turbovnc.org/

git clone https://github.com/TurboVNC/turbovnc.git
cd turbovnc
mkdir build
cmake ..
make
sudo make install

すると、/opt/TurboVNC に各種ファイルがインストールされます。bin/vncserver というのが、TurboVNC のサーバーです。冒頭でも述べた通り、今回は 2D 専用という事で、3D は外して利用する目的です。3D レンダーを使用するソフトウェアなどでは、起動しない物も多いと思いますので、適時オプション等を調べて OpenGL,ES を使わない設定に変更してください。それでも 2D はかなり高速でした。

VNC ですから、client 側で何かしらの vncviewer を利用すると思われますが、TurboVNC の高速化の恩恵に預かれるのは TurboVNC の vncviewer です。TigerVNC の xtigervncviewer でも高速に表示されましたが、Raspberry PI 標準の Real VNC connect では高速な表示はされませんでした。

※注:vncviewer 側でひとつ注意が必要なのが、vncserver のアドレス指定の際に "必ず" ポート番号 ":1" 等の指定が必要な点です。例えば、192.168.1.10:1 のように指定が必要です。他の vncserver と違い、ポート番号の指定がないと起動しません。

以上




この記事が気に入ったらサポートをしてみませんか?