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サーバは終了せずに待機していてくれます。すっきり(^-^)