ホーム < ゲームつくろー! < IKD備忘録

Raspberry Pi
VNCでRaspberry Piを別のPCから操作しよう


 ここまでRaspberry Piの備忘録を付けてきて不満が一つ。「画面写真撮りはもうヤダ」。見た目も微妙だし加工も面倒くさい。そこでRaspberry Piの画面を別のPCで見られるようにしてしまいます。これには「VNC(Vertual Network Computing)」という方法を使います。



@ VNCとは?

 VNCとはとあるPCの画面を別のPCの画面の中に表示するリモートデスクトップ技術の事です。Wikipediaはこちら。RFB(リモートフレームバッファ:Remort FrameBuffer)プロトコルという単純な通信で、PC上のGUI画面を他のPCへ転送します。画面を見たいPCにはVNCサーバを入れます。一方画面を見るPCにはVNCクライアントソフトを入れます。VNCクライアントがVNCサーバとRFBで通信する事でリモートデスクトップが実現するというわけです。



A Raspberry PiにVNCサーバを入れる

 VNCサーバにも色々あるようですが、ここではx11vncというサーバアプリをRaspberry Piに入れます。インストールの仕方は至極簡単、いつもの「apt-get」をターミナル上で使います。LXTerminalを起動して、

apt-get install x11vnc

と入力します。x11vnc(VNCサーバアプリ)をDLしてインストールしてね、という命令です。便利(^-^)。コマンドを実行するとすぐに「3kb程使うけどいい?」と聞かれるのでもちろん「y」でパッケージのDLが始まり、続いてインストールされます。少し時間がかかります。インストールが終わったら、

x11vnc -storepasswd

とx11vncのパスワードを保持するように言うと「Enter VNC password」とパスワード入力を促されるので、VNCサーバを起動するためのパスワードを登録します。パスワードを入れたら「Write password to /home/pi/.vnc/passwd ?(パスワードをこのパスに書いていい?)」と聞かれるので、良ければ「y」にします。「n」にする理由は特に無いと思います(^-^;。コマンドライン引数の「-」をうっかり入れ忘れるとWARNIMG画面が出ます。少しびっくりします(^-^;;;

 これでVNCを使う準備が整いました。



B VNC起動

 X11VNCを起動するには、

x11vnc -usepw

とします。-usepwは「設定してあるパスワードを使います」という引数です。コマンドを実行すると、何やら沢山出力され、最終的に、

The VNC desktop is:      raspverrypi:0
PORT=5900

という表記が出ます。VNCのデスクトップがRaspberry Piで、5900番のポートを使っていますよ、という意味です。つまり、VNCサーバとなったRaspberry Piの5900番ポートに向けてRFBプロトコル通信をすると、リモートデスクトップが出来るという事になります!



C WindowsからRaspberry Piを見てみる

 VNCでRaspberry Piのデスクトップ画面を見るには、見る側にVNCクライアントソフトを入れる必要があります。ネットで検索するといくつか出てきますが、ここでは「Ultra VNC」というアプリを使ってみます。公式サイト「uVNC」からWindows PC用のUltraVNCのインストーラをダウンロードします。普通です。途中Select Componentの画面でVNC Serverにチェックが入っています。入れるとWindows PCもVNCサーバになれます(つまり、VNCクライアントでリモートデスクトップができる)。クライアントに徹するならチェックを外しても良いです。Select Additional Taskで付加機能を付けられます。インストールが終わったら、UktraVNC Viewerを起動:

VNC ServerにVNCサーバのホスト名、つまりIPアドレスを入れると繋がるはずです。Raspberry PiのIPアドレスを調べるにはターミナルで、

ifconfig

を入れます。VNCサーバが起動している間はコマンドを入れられないので、別のLXTerminalを立ち上げて確認しましょう。eth0(ethernet0番)にあるlnetが欲しいIPアドレスです。私の場合はDHCPサーバが適当に割り振ったローカルIP(192.168.0.6)でした。これを上のVNC Serverに入れるのですが、ポートも指定しなければなりません。確か5900番で待ってくれているのでした。なので、

192.168.0.6:5900

と入れます。すると:

とパスワード入力画面が出ます。この段階でもうVNCサーバが働いていて、ターミナル上に起こったイベントがわさわさ出力されていました。先に設定したパスワードを入れると…:

わ〜い(^-^)/。

 これでWindows PC上からRaspberry Piのデスクトップを直接操作できるようになりました。画面が綺麗で気持ち良いです(^-^)。スクリーンショットも取り放題、ほほほ。ただ、この状態でクライアントソフトを終了させると、Raspberry PiのVNCサーバに次のような出力が出ます:

14/07/2013 10:20:30 client_count:0
14/07/2013 10:20:30 viewer exited.
14/07/2013 10:20:30 deleted 37 tile_row polling images.

クライアントの数が0になって、ビューワが終了しましたと言っています。そしてVNCサーバが終了してしまいます。もちろんVNCクライアントで再度接続に行ってももう応答してくれません。これはちょっと不便です。



D VNCクライアントが終了してもVNCサーバを切らないように起動

 VNCクライアントが切れてもVNCサーバを待機状態にしておくには、X11VNCを起動する時に「-forever」という引数を追加します:

x11vnc -usepw -forever

これでVNCクライアントをきってもVNCサーバは終了せずに待機していてくれます。すっきり(^-^)