2005/04/30

xinetdによるVNCの起動

coLinuxでXwindowsを使用していると、コンソールからVNCサーバーを起動し、VncViewerを 起動するのがだんだん手間になってきました。
そこで、VNCサーバーをxinetd経由で起動させるようにし、Vncにアクセスがあった場合に、 自動的にVNCサーバーを起動するように設定しました。
さらにcoLinuxをWindowsサービス化して、Windows起動時に自動的に起動するようにすれば、 coLinuxでのX環境への接続がかなり簡素化されます。

xinetdのインストール

xinetdをインストールします。
# emerge -pv xinetd
# emerge xinetd
インストールされたxinetdのバージョンは2.3.13でした。

xinetdの設定

xinetdを設定します。
まず、xinetd経由で起動する全サービスで共通の設定を /etc/xinetd.conf で指定します。
#xinetd経由で起動する全サービスに共通の設定を行います
defaults
{

 #アクセス可能なホストを指定

 #例では 192.168.1.2 からのアクセスのみ許可しています
 only_from = 192.168.1.2

 #同時に接続できる数

 instances = 60

 #ログの出力レベルを設定。

 #例では 認証サービスのメッセージが出力されます
 log_type = SYSLOG authpriv info

 #ログオンに成功したときにサービスのプロセスIDとリモートホストのIPアドレスをログに記録します

 log_on_success = HOST PID

 #ログオンに失敗したときにリモートホストのIPアドレスをログに記録します

 log_on_failure = HOST

 #コネクション数、再アクセスできるまでの秒数 の順に指定

 cps = 25 30
}
includedir /etc/xinetd.d

最後の行で、/etc/xinet.d/ 以下の設定ファイルを読み込んでいます。
各サービス固有の設定は、/etc/xinet.d/ 以下にファイルを作成し、設定します。
ここでは /etc/xinetd.d/vnc を作成します。

 #設定するサービス名
service vnc
{
 #サービスを起動する場合はnoを指定
 disable = no

 #ソケットの種類を指定

 socket_type = stream

 #複数の接続を同時に受け付ける場合は no を指定

 wait = no

 #サービスを実行するユーザーを指定

 user = nobody

 #起動するサービスを絶対パスで指定

 server = /usr/bin/Xvnc

 #起動サービスに渡す引数を指定

 server_args = -inetd -query localhost -once -geometry 1024x768 -dpi 96 -depth 16

 #ログオンに失敗した場合に記録するログの種類を指定

 #例では デフォルトの設定に加え、USERIDを記録するようにします
 log_on_failure += USERID
}

ログの指定部分にあるように、"+=" を指定すると、デフォルトの設定に加えるように指定されます。

上記で指定されたサービス名 vnc を /etc/services に設定を加えます。

vnc 5950/tcp

xinetdを自動的に起動するようにします。
# rc-update add xinetd default

XDMCPの設定

XDMCP(X Display Manager Control Protocol)を設定します。
/etc/X11/xdm/Xaccess に以下を追加します。
localhost

xdmを自動的に起動するようにします。
# rc-update add xdm default
xdm経由でのログインでは、.xsessionが読まれる点に注意してください。

coLinuxのWindowサービス化

おまけとしてcoLinuxをWindowsサービスとして自動的に起動する様に設定します。
この機能はcoLinuxのバージョン0.6.1以降であれば、使用可能です。

C:\>cd c:\Program Files\coLinux
C:\Program Files\coLinux>colinux-daemon.ext -c "c:\Program Files\coLinux\default.colinux.xml" --install-service
自動で起動するには 設定→コントロールパネル→管理ツール→サービスで
「Cooperative Linux」を選択し、設定します。
Index
VNC のインストールと基本設定
xinetdによるVNCの起動