Raspberry PiをWindowsのシンクライアントにしてみる

RPiは、RAMも少ないしCPUも弱いので、まともなWebブラウザひとつ使うのも結構辛い感じですが、VNCクライアントとしてWindowsを使うならばどうか? と思って試してみました。

VNCは、ネットワーク越しに画面とキーボードやマウスの入力を送受信することで、他のコンピュータを操作するツールです。
Windowsのリモートデスクトップが汎用の仕組みになったようなものです。
RPiは画面表示に専念することになりますので、RAMが少ないことはあまり問題ならないと思われます。

raspbianで利用できるVNCクライアントとしては、xtightvncviewer、gtkvncviewer、gvncviewerなどがあります。
VNCクライアントとしての動作自体には大きな違いはありませんが、GtkなどのGUIツールキットを使ったソフトは、関連ライブラリを読み込むためか、起動はちょっと重たい感じがします。

まず普通のVNCクライアントとして、TightVNCを使ってWindowsを操作してみます。
これはX Window上で動作するソフトで、

sudo apt-get install xtightvncviewer

でインストールします。

操作される側のPCには、VNCサーバをインストールする必要があります。
実は、意外にパフォーマンスに影響が大きいのは、Windows側にインストールするVNCサーバです。

VNCサーバは、UltraVNCRealVNCを試してみましたが、どちらかというとRealVNCのほうが良さそうな感じです。
画面の広い範囲を書き換えるのは遅いのですが、文章を書いたりする場合には反応が早いと感じました。

TightVNCの起動は

vncviewer

です。

起動するとサーバのIPアドレスを聞かれますので、WindowsマシンのIPアドレスを入力します。
パスワードはWindowsのログオンパスワードです。

使ってみた感じ、テキストで書き物をする程度ならば、まあ使えなくはないかと思います。
ウインドウを切り替えるような、大幅な画面書き換えはかなり遅いですが、テキスト編集程度であれば我慢できる速度です。
動画などは、もちろん紙芝居状態になります。

このほか、krdcというソフトもあります。
これはVNCのほかに、WindowsのRemote Desktop Protocolにも対応しています。

Remote Desktopで試してみたところ、反応はVNCよりも良好で、画面の更新が早く感じられます。
また、X Windowのクリップボードの内容をWindows側へペーストすることが出来るのも便利です。
RDPでは音声をクライアント側(RPi側)から出力させることもできるのですが、さすがに処理が追いつかないのか、ノイズだらけで使い物になりませんでした。

大量のライブラリがリンクされているため、インストールにかなり時間がかかりますが、リモートでWindowsに接続させたいなら、試してみる価値はあるソフトだと思います。

以上のソフトはX Windowの中の1つのウインドウの中でVNCが動作することになりますが、X Windowを立ち上げず、画面全体をVNC専用にしてしまう方法もあります。

それには、DirectFBで動作するdirectvncを使います。

X Windowを使わないからといって、大幅に高速になるわけではありませんが、起動に手間がかからず、お手軽ではあります。

directvncを使用する場合は、DirectFBの設定が必要な場合があります。
DirectFBの画面解像度は/etc/fb.modesに設定があり、この中から選択できますが、私が使っている1920×1200という設定が入っていませんでした。

コンソール自体が1920×1200で動作していますので、この状態をfb.modesに追記します。

fbset

を実行すると

mode "1920x1200"
geometry 1920 1200 1920 1200 16
timings 0 0 0 0 0 0 0
rgba 5/11,6/5,5/0,0/16
endmode

という出力が得られますが、これを/etc/fb.modesに追記してやればOKです。
簡単には

sudo fbset >> /etc/fb.modes

となります。

そして、このモードを使用するようにDirectFB用の設定ファイルを書きます。
設定ファイルは$HOME/.directbrcです。

私は以下のように設定しました。

mode=1920×1200
depth=16
hardware
vsync-none

ただしハードウェアアクセラレーションは効いてないような気がします。

以上の設定に加えて、さらに/dev/tty0の読み書きができるようにする必要があります。

sudo chmod go+rw /dev/tty0

これでようやく起動できます。

directvnc ipaddr -p password -m xxx -b 16

xxxのところは、存在しないファイルを指定してください。
本来はキーボードマッピングを記述したファイルを指定する箇所ですが、何も指定しないとエラーになってしまうので、ダミーで指定しています。

この記事はWindowsにRDP接続したRaspbery Piで書いてみました。
なかなかしんどいところもありますが、全く無理と言うわけでもない…と思いました。

コメント