OpenBlockS / VNC


VNC Serverのインストール手順


OpenBlockS に VNC Server を入れる手順をメモ書きしたもの

目次

リンク

  • RealVNC - 配布元
  • VNCの設定 - TightVNCを使って inetd, wdm 経由でログインするインストール方法

VNC server (4.0)

TrueType? や GTK 等を使わないのであれば、VNC 3.3で十分なのだが、 何となく思い立って 4.0 にしてみた。 先に XFree86を入れておく必要がある。 buildに2.5時間程度かかるので注意。

cd ~/src/01distfiles
mkdir vnc4 ; cd vnc4
wget ftp://ftp.jp.debian.org/debian/pool/main/v/vnc4/vnc4_4.0.orig.tar.gz
wget ftp://ftp.jp.debian.org/debian/pool/main/v/vnc4/vnc4_4.0-5.diff.gz
wget ftp://ftp.jp.debian.org/debian/pool/main/v/vnc4/vnc4_4.0-5.dsc
cd ~/src
tar xzvf 01distfiles/vnc4/vnc4_4.0.orig.tar.gz
mv vnc4-4.0.orig vnc4-4.0-5
cd vnc4-4.0-5
zcat ~/src/01distfiles/vnc4/vnc4_4.0-5.diff.gz | patch -p1
./configure --with-installed-zlib
make
chmod 755 debian/buildX.sh
debian/buildX.sh
mkdir -p ~/src/02localpkg/vnc4/usr/local/bin
mkdir -p ~/src/02localpkg/vnc4/usr/local/man/man1
mkdir -p ~/src/02localpkg/vnc4/usr/local/vnc/classes
./vncinstall ~/src/02localpkg/vnc4/usr/local/bin
cp -p java/* ~/src/02localpkg/vnc4/usr/local/vnc/classes
cd ~/src/02localpkg/vnc4
tar czvf vnc4_4.0-5-ssdlinux-1.tgz --owner=root --group=wheel usr
rm -rf usr
sudo tar xzvpf vnc4_4.0-5-ssdlinux-1.tgz -C /

とりあえずうまく動いているようだ。 clipboardの転送は、vncconfig を立ち上げておかないと有効に ならないので注意。

http://minig:5801/ のようにアクセスすると、Xvncごと落ちて しまうようだ。この機能は使っていないので、原因を追究していない。

しばらく動かしていると、勝手に落ちてしまうようだ。 新しいファーム(HDDイメージ)の乗ったOpenBlockS266では、 問題ないようなので、gcc++かlibc++のバージョンの違いなのかもしれない。 古い環境では、VNC 3.3に戻した。

FontPath?にモナーフォントを加えるため、以下を /etc/X11/XF86Config-4 として置いておくと FontPath? を見てくれる。

Section "Files"
  RgbPath       "/usr/X11R6/lib/X11/rgb"
  FontPath      "/usr/X11R6/lib/X11/fonts/Type1/"
  FontPath      "/usr/X11R6/lib/X11/fonts/Speedo/"
  FontPath      "/usr/X11R6/lib/X11/fonts/misc/"
  FontPath      "/usr/X11R6/lib/X11/fonts/75dpi/"
  FontPath      "/usr/X11R6/lib/X11/fonts/100dpi/"
  FontPath      "/usr/X11R6/lib/X11/fonts/local/"
EndSection

FontPath?が、ちゃんと設定されているかどうかは xset q で分かる。

タイムアウト

気が付くと、勝手にviewerと切断されていることがある。

/.vnc/minig\:1/log を見ると、以下のようなログが残っているので、 timeoutによる自動切断と思われるが、VNC 3.3や他のサーバーなどでは 勝手に切れることは無いようなので、誤ってタイムアウトが設定されている ようだが詳細は不明。

Connections: closed: 192.168.0.80::3391 (Idle timeout)
SMsgWriter:  framebuffer updates 27
SMsgWriter:    copyRect rects 5, bytes 80
SMsgWriter:    hextile rects 2, bytes 136284
SMsgWriter:    ZRLE rects 166, bytes 4363
SMsgWriter:    raw bytes equivalent 1616666, compression ratio 11.494493

接続時の時刻と切断時の時刻の差を見ると、1時間で切っているように思われる。 man Xvnc に書いてあるが、-IdleTimeout? seconds オプションで指定するように なっていて、デフォルトが 3600秒(1時間)となっている。


xinetdによる起動

man Xvnc に書いてあるが、gdmを通してloginから接続できるようにする。

VNC server (3.3)

vnc server が動けば、X Server (cygwin) が動かせないような非力な PC でも、複数のコンソールを使って操作できたり、コンパイルなどの時間のかかる処理中にPCを切ったりできる。当然ながら powerpc-ssdlinux のバイナリ・パッケージは用意されていないので、ソースからコンパイルを試みる。オリジナルのソースをそのままコンパイルすると、Xvnc の make World で、以下のようなエラーで止まった。

cd ./config/imake && make -f Makefile.proto all 
make[2]: Entering directory `/home/otsuka/src/vnc-3.3.7-unixsrc/Xvnc/config/imake'
gcc -O -ansi -pedantic  -I../../include -I../../exports/include/X11 (以後省略)
gcc: cannot specify -o with -c or -S and multiple compilations
make[2]: *** [imake.o] Error 1
make[2]: Leaving directory `/home/otsuka/src/vnc-3.3.7-unixsrc/Xvnc/config/imake'
make[1]: *** [imake.bootstrap] Error 2
make[1]: Leaving directory `/home/otsuka/src/vnc-3.3.7-unixsrc/Xvnc'
make: *** [World] Error 2

vnc-list(メーリングリスト)の検索で、同様の問題があるようだが、簡単な解決方法は無いようだ。

簡単な修正ではコンパイルが通りそうもないので、Red Hat の SRPM を取り寄せて調べてみたら、vnc 3.3.3r2 をベースに18ものパッチを当てて組み立てられていた。パッチを眺めてみたら、オリジナルのコードは、Intel 以外の環境ではコンパイルしたことが無いような様子。

PowerPC版がある、Debian のパッケージから vncserver 3.3.7-1 の patch を取り寄せてコンパイルしてみることにする。

$ mkdir ~/src/01distfiles/vnc
$ cd ~/src/01distfiles/vnc
$ wget http://www.realvnc.com/dist/vnc-3.3.7-unixsrc.tar.gz
$ mkdir debian-package; cd debian-package
$ wget http://ftp.debian.org/debian/pool/main/v/vnc/vnc_3.3.7-1.diff.gz
$ cd ../../..
$ tar xzvf 01distfiles/vnc/vnc-3.3.7-unixsrc.tar.gz
$ cd vnc-3.3.7-unixsrc
$ zcat ../01distfiles/vnc/debian-package/vnc_3.3.7-1.diff.gz | patch -p1
$ ./configure --with-installed-zlib
$ make
$ cd Xvnc
$ make World

コンパイルは成功するようだ。

# cd ~/src/vnc-3.3.7-unixsrc
# ./vncinstall /usr/local/bin /usr/local/man
# mkdir -p /usr/local/vnc/classes
# cp classes/* /usr/local/vnc/classes
# cd /usr/lib
# ln -s ../X11R6/lib/X11 .

実行に先立って、パスワードを設定

$ vncpasswd
$ cat <<EOF >.vnc/xstartup
#!/bin/sh
exec /usr/X11R6/bin/xterm -ls
EOF
$ vncserver -depth 16 -geometry 1280x1024 :1

あとは、Windows 等の vncviewer から 'ホスト名:1' に接続すればよい。

免責事項

ここに記載されている内容を実際に運用した場合のトラブルに関しては一切責任を負えませんのでご了承ください。
Copyright 2000-2005 Koichi Otsuka