inetd経由でvncserverを起動する

ちょっと寄り道してlinuxのメモ。
inetd経由でvncserverを起動するメリットは、ログイン待機状態のlinuxに直接他のPCからvnc接続できること。Debian etchでの導入手順は以下の通り。

  • vncserverのインストール(X-windowは導入済みの前提)
    • synapticまたはapt-get等でvnc4server,vnc4-commonをインストールする
  • /etc/servicesの編集
    • 以下の設定を追加する。
vnc-xga16  5950/tcp
vnc-svga16 5953/tcp
      • vnc-***は設定名。後述のinetd.conf内の記述と統一されていれば名称は何でも良い。
      • ポート番号は5900台を使う。下2桁が接続時のディスプレイ番号になる。
  • /etc/inetd.confの編集
    • 以下の設定を追加する。
vnc-xga16  stream tcp nowait nobody /usr/bin/Xvnc Xvnc -inetd -query サーバのIPアドレス -once -geometry 1024x768 -depth 16 -SecurityTypes None
vnc-svga16 stream tcp nowait nobody /usr/bin/Xvnc Xvnc -inetd -query サーバのIPアドレス -once -geometry 800x600 -depth 16 -SecurityTypes None
      • vnc-***は/etc/servicesで追加した設定名。各設定行は実際には改行せずに1行で記述する。
      • -geometryは解像度、-depthは色ビット数を記述する。
      • -SecurityTypesは vnc 3.xでは不要?
  • inetdの再起動
# kill -HUP `cat /var/run/inetd.pid`
  • /etc/gdm/gdm.confの編集
    • [xdmcp]セクションと[servers]セクションを以下のように変更する。(設定がない場合は追記する)
[xdmcp]
Enable=1

[servers]
0=Standard
  • gdmの再起動
# /etc/init.d/gdm restart

これで他のPCからvncviewerを起動して/etc/servicesで設定したディスプレイ番号(ポート番号の下2桁)で接続すると、Xサーバのログイン画面が表示されるようになる。