VNC の利用

FreeBSD 8.0-RELEASE を稼働させている IBM ThinkPad X40 のキーボードが故障した。それ以外はまだなんとか動く。キーボードだけの問題であれば,他のマシンからリモートログインして,作業ができる。ssh でもよいのだけれど,デスクトップの操作ができると嬉しいので,VNC を使うことにした。FreeBSD 上に vncserver を起動し,Mac OS X の VNC Client からこれに接続し FreeBSD を操作するわけである。

FreeBSD での VNC プログラム vnc-4.1.3 のインストールは cd /usr/ports/net/vnc && make install clean でできる。Mac OS X の VNC クライアントはフリーウェア Chicken of the VNC を使うことにした。こちらも dmg パッケージを落として来てマウントし,アイコンをアプリケーションフォルダにドラッグすれば,組込みは完了である。

サーバ側で vncserver :1 -geometry 1024x768 -depth 24 などとして VNC Server を起動し,初回にパスワードを応答しておく。クライアント側では Chicken of the VNC の connection --> open connection メニューから,ホスト名,パスワード,ディスプレイ(この場合 1)を指定して接続を実行すると,Mac 上に FreeBSD のデスクトップが現われる。

vncserver を実行するユーザの $HOME/.vnc/xstartup に X クライアントや X ウィンドウマネージャ等の起動コマンド列を記述しておく。.xinitrc の内容とだいたい同じである。ただし,Emacs などのアプリを使おうとすると,次のようなエラーが出て異常終了してしまうことがある。

Xlib:  extension "RANDR" missing on display ":1.0".
Xlib:  extension "Generic Event Extension" missing on display ":1.0".
Undefined color: "black"

これには結構悩まされたのだけれど,計算機と戯れる日々:2009-05-31 記事に救っていただいた。ありがとうございました。rgb.txt を vncserver に指示してやればよいとのこと。というわけで,次のとおり再起動すれば,Emacs もきちんと動いた(Xlib のエラーは解消しないけれど,実害はなさそうである)。

% vncserver -kill :1
% vncserver :1 -geometry 1024x768 -depth 24 \
  -co /usr/local/share/emacs/23.1.91/etc/rgb

また,X スクリーンセーバーが働くとにっちもさっちも行かなくなるので,止めておいたほうがよい。xset s off を端末から投入するか,xstartup に書いておく。

これで,X40 のキーボードがダメでも,Mac から FreeBSD Mew on Emacs を使ってメールチェックする,などの作業ができるようになった。スクリーンショットはこんな感じ。ちなみに X ウィンドウマネージャは Enlightenment DR-16 である。X40 とまったく同じ画面で FreeBSD が使えるのである。

vnc_screen.png