仕事の関係上、何かとWindowsとSolaris8を交互に使うことが多い。ほとんどのことは、telnetで済むのだけれど、GUIを駆使したソフトウエアなんかも使わなきゃいけないこともある。それじゃあ、「X端末を使えばいいんじゃないの?」ってなことになるんだけど、フリーのX端末は日本語の設定が面倒だし、製品版は高い。
そこでVNCの登場となる。VNC Server をインストールすれば、Web ブラウザからでも、VNC Viewer からでも、Solaris 8のCDE(デスクトップ環境)にアクセスできる。Webブラウザなら、ほとんどのパソコンに初めからインストールされているし、VNCViewer だってちょっと設定すれば、X端末を設定するのに比べれば、何百倍も簡単なのだ。
しかし、VNC Server を Solaris 8 で使うには、ちょっとしたノウハウが必要だ。
たとえば、CDEを使えるようにするとか、日本語をきちんと表示させること、VNCからデスクトップにログインすることだ。
今回、やってみて気がついたが、これが意外に日本語で最初から最後まできちんと説明したドキュメントがみつからない。そこで、山ほどあるVNCの設定に関するドキュメントをもう一つ増やすことにした。それがこのドキュメントだ。
このドキュメントでは次のことを説明している。
VNCは次のサイトでダウンロードできる。
Real VNC - http://www.realvnc.com/
英語で「こっからダウンロードしてね」っていうところをクリックしてダウンロードするプログラムにチェックマークをつけることになっている。
今回使用するのは次の2つのプログラムだ。
ごちゃごちゃといろんな質問の書いてあるフォームがあるけど、英語が苦手な人は空欄のまま「Proceed to download」ってボタンをクリックしても大丈夫だよ。
あまりにも、簡単なので、Windows版のインストール方法は省略する。Solaris版も ReadME ってファイルに書いてあるんだけど、ここでは敢えて詳しく説明しましょう。大雑把な手順は次の通り、
これをコマンドラインで列挙するとこんな感じになる。
特別な事情が無い限り、これでうまくいく予定。
それから、vi などのテキストエディタで /usr/local/bin/vncserver の最初の1行目を次のように書き換える。
変更前 | #!/usr/local/bin/perl |
---|---|
変更後 | #!/usr/bin/perl |
それから、自分の使っている PATH 環境変数に /usr/local/bin を、MANPATHに /usr/local/man を追加する。
ここでやることの大雑把な手順は次の通り、
では、はじめてみよう。
vncserverを実行すると、次のようにパスワードを聞いてくるので。8文字程度のパスワードを入れる。
$ vncserver
You will require a password to access your desktops
↑.(デスクトップにアクセスするときのパスワードを入れてください)
Password: ←(パスワード入力プロンプト)
Verify: ←(パスワード再入力確認プロンプト)
New 'X' desktop is localhost.localdomain:1
Creating default startup script /home/nick/.vnc/xstartup
Starting applications specified in /home/nick/.vnc/xstartup
Log file is /home/nick/.vnc/localhost.localdomain:1.log$
これで、ディスプレイ番号が1でVNC Server が起動した。
vncserver コマンドによって、同時に、ホームディレクトリの .vnc ディレクトリが作成され、パスワードファイルやVNC Server 起動時に実行されるスクリプトファイルが格納される。
今度は、Windows マシンに移って VNC Viewer を実行してみよう。
上のようなプロンプトが表示されるので、
<ホスト名>:ディスプレイ番号
という形式で入力する。DNSやhosts ファイルを設定していない場合は、IPアドレスを指定する。VNC Server は現在、ディスプレイ番号1番で実行しているので、次のような形式でできる。
192.168.1.7:1
次のこんなプロンプトが表示されるので、VNC Server を起動するときに設定したパスワードを入力する。
つぎのような画面が表示されれば、接続テストは完了となる。
Solaris 8 の VNC Server を終了するには次のコマンドを実行する。
vncserver -kill :1
日本人なのでやっぱり日本語フォントが使いたい。フォントの管理はフォントサーバーに任せると簡単だ。Solaris 8 ではデフォルトでフォントサーバーが使える設定になっている。しかし、日本語のフォントは設定されない。
フォントの設定を変更するには次のファイルを編集する必要がある。
/usr/openwin/lib/X11/fontserver.cfg
まず、忘れないように編集前のファイルを別な名前でコピーしておこう。
# cp -p /usr/openwin/lib/X11/fontserver.cfg /usr/openwin/lib/X11/fontserver.cfg.org
インストールされているフォントによって内容が変わるが、SunBlade 150 でプレインストールされていたフォントを元に次のように書き加えた。追加したところは茶色で示してある。コメントは緑
# font server configuration file
# $XConsortium: config.cpp,v 1.7 91/08/22 11:39:59 rws Exp $
clone-self = on
use-syslog = off
catalogue = /usr/openwin/lib/X11/fonts/F3bitmaps/,/usr/openwin/lib/X11/fonts/Type1/,/usr/openwin/lib/X11/fonts/Speedo/,/usr/openwin/lib/X11/fonts/misc/,/usr/openwin/lib/X11/fonts/75dpi/,/usr/openwin/lib/X11/fonts/100dpi/, ←ここにあるカンマを忘れないでね!
/usr/openwin/lib/X11/fonts/Xt+,
/usr/openwin/lib/locale/ja/X11/fonts/75dpi,
/usr/openwin/lib/locale/ja/X11/fonts/TT,
/usr/openwin/lib/locale/ja/X11/fonts/UTF8,
/usr/openwin/lib/locale/ja/X11/fonts/TTbitmaps
# in decipoints
default-point-size = 120
default-resolutions = 75,75,100,100
今度はフォントサーバーの実行を確認しよう。fontserver.cfgを設定したら、フォントサーバーを再起動する必要がある。
フォントサーバーは、fs という名前なのでコマンドラインで次のように入力してみる。
# ps -ef | grep -w fs
フォントサーバーが見つかったら修正したfontserver.cfgを有効にするため、kill しておく必要がある。
フォントサーバーが見つからないとき、フォントサーバーが自動的に起動する設定になっていない可能性がある。フォントサーバーの設定がどうなっているかわからないとき、次のコマンドを入力すると、状況がわかる。
# /usr/openwin/bin/fsadmin
このコマンドが次のように出力される場合、フォントサーバーは、自動起動設定されている。
fsadmin: font server is enabled to start from inetd
上記のメッセージがでないときは、次のように入力すると、自動起動するように設定される。
# /usr/openwin/bin/fsadmin -e
今度は、フォントサーバーが正しく起動すること、日本語フォントが正しく設定されていることを確認しよう。
次のコマンドを入力すると、フォントサーバーが起動して、jisxという文字列を含むフォント(日本語のフォント)の一覧が表示される
# /usr/openwin/bin/fslsfonts -s localhost:7100 -fn \*jisx\*
ここでは、フォントサーバーが自分自身(localhost)でポート番号が7100であることを前提にしている。
フォントファイルの一覧が表示されれば、フォントの設定は成功ということになる。
いつまでたっても、結果が表示されないときは、次のことをチェックしてみよう。
fontserver.cfgの設定がおかしくて、inetdの設定が正しいときは /var/adm/messages に次のようなログが書き込まれることがある。
Oct 29 22:04:20 pico inetd[177]: [ID 858011 daemon.warning] /usr/openwin/lib/fs.auto: Abort
Oct 29 22:05:08 pico last message repeated 41 times
fontserver.cfgの設定が間違っている場合、フォントサーバーは起動しない。
fontserver.cfgの設定を元に戻して次のコマンドを実行してみよう。
# /usr/openwin/bin/fslsfonts -s localhost:7100
同じように何も表示されないのであれば、fontserver.cfg の問題ではないので /etc/services と /etc/inetd.conf が適切かどうかチェックしよう。
フォントの一覧が表示される場合、fontserver.cfg の設定が誤っていると考えられる。このページに書いてある設定とフォントファイルの構成が違っているかもしれないので、fontserver.cfgで設定している日本語フォントファイルが実際に存在しているかしらべてみよう。詳細は man ページの xfs(1) 等で確認してみよう。
通常は、fsadmin を使って、フォントサーバーを自動起動に設定すると、inetd が自動的にフォントサーバー起動する。起動しないときは、inetdの設定ファイルを調べて、フォントサーバーを起動する設定になっているかどうか調べてみよう。
/etc/inetd.conf に次の行が含まれていますか?
#
# Sun Font Server
#
#
fs stream tcp wait nobody /usr/openwin/lib/fs.auto fs
# fs stream tcp6 wait nobody /usr/openwin/lib/fs.auto fs
/etc/services に次の行が含まれていますか?
fs 7100/tcp # Font server
※注意: ここに書いてある設定内容は、デフォルトの設定です。これらの設定ファイルは環境によって異なる場合があるので、inetd(1M) などを参考に適切な値に書き換えましょう。
今度はWindowsからVNCへログインできるように設定しよう。この設定をすれば、起動時にVNC Server も起動するし、日本語も問題なくデスクトップ上で使用できる。また、VNC Viewer がなくても、Webブラウザからデスクトップにアクセスできるようにする。
ここで行う作業を大雑把に説明すると、次のようになる。
ここで再び、インストールディレクトリに移動し、次のコマンドを実行する。
- su root
- mkdir -p /usr/local/vnc/classes
- cp classes/* /usr/local/vnc/classes
これで、VNC Java Applet のインストールが完了した。
こんどは、先ほど、ホームディレクトリで作成した ".vnc"ディレクトリをまるごと、/usr/local/vnc/へコピーし、所有者を変更する。
- su root
- cp -R /home/nick/.vnc /usr/local/vnc/.
- chown -R root:sys /usr/local/vnc
通常、Solaris 8 では、システムの起動時にディスプレイ番号 0 でログインプロンプトを表示する。これを Solaris マシンに接続されているディスプレイではなく、、VNC上に表示するようにする。VNC用のディスプレイ番号は5とする。
この設定の雛形になるファイルが /usr/dt/config/Xservers にある。このファイルは /usr/dt/config ディレクトリにコピーして使用する。
コピーが完了したら、/etc/dt/config/Xservers へ次の記述を追加する。
::5 Local local_uid@console root /bin/env PATH=/usr/sbin:/usr/bin:/usr/openwin/bin:/usr/dt/bin:/usr/local/vnc:/usr/local/bin Xvnc :5 -httpd /usr/local/vnc/classes -geometry 1152x900 -cc 3 -depth 8 -rfbwait 120000 -rfbauth /usr/local/vnc/.vnc/passwd -rfbport 5905 -httpport 5805 -fp tcp/localhost:7100 -alwaysshared
※一応折り返されてますが、全部1行です。
これで、Solaris 8 を再起動してから、vncviewer で 192.168.1.7:5 というようにディスプレイ番号5で接続したとき、ログインプロンプトが日本語で表示されていれば、完了となる。
成功するとこんな感じになる。
ログインするとこんな風に、Windows のプログラムを使いながら、Solaris が使える。
また、Internet Expolorer などの Java に対応したWeb ブラウザで "http://192.168.1.7:5805"へアクセスすると、VNC Viewer のように Web ブラウザからもアクセスが可能になる。
さて、今まで、Solaris 8 で日本語キーボードを使っていた人は、「日本語」キーが無くて戸惑うかもしれない。ご心配なく[CTRL]+[SPACE](コントロールキーを押しながらスペースバーをたたく)で代用できる。
また、Windows のマウスはボタンが2つしかない。こんなときは、両方のボタンを同時に押すと真ん中のボタンの代わりになる。ホイールマウスを使っている人はホイールをクリックしても同じだ。
どうしてもできなければ困るということはないが、デスクトップからログアウトしたときに、VNC Viewer が終了しないようにできないものかと思っている。また、このドキュメント自身、あまり細かいチェックが行われていないため、不都合な点や誤りが、あれば掲示板やメール等で指摘していただければ幸いです。
VNC経由でNetscapeから http://www.street-f.net/へアクセスすると、Netscapeが異常終了してしまう。しかし、直接本体のコンソールからアクセスすると正常に動作する。フォントサーバーの設定がまだ完全ではないのかもしれない。原因は不明。
T社のSさん、ありがとう。設定に失敗しても無理ないです。説明不足だったので「日本語フォントの設定」について加筆しました。
V社のIさん、ありがとう。確かに、chown と書くべきところを chmod とミスタイプしていました。
このドキュメントを書く直前に、設定を試してくれた、隣の席のMちゃん、ありがとう。おかげで、間違いやすいところがわかったり、私自身が忘れていたことを思い出させてもらいました。
1997年ごろ、私にVNCの存在を教えてくれたC社のSさんありがとう。あの時はISDN経由ダイアルアップ、Windows NTの管理をリモートでやっていましたっけ。あれ以来、ずっと使い続けています。