coLinux(0.6.x)のインストール その9: VNCを使ったGUI環境

このページでは、VNCというリモート接続プロトコルを使って、 coLinuxでGUIを実現します。

VNCサーバ/VNCクライアントのインストール・設定

VNCサーバのインストール

DebianではいくつかのVNCサーバ(xserver, tightvncserver, vnc4server)を サポートしているのですが、 ここでは高機能っぽいtightvncserverをインストールします。 以下のコマンドです。 とりあえずこれでおしまいです。

sudo aptitude install tightvncserver xfonts-base

xfonts-baseは最低限必要なフォントが入ったパッケージです。

VNCクライアントのインストール

次にHost PCにVNCクライアントをインストールします。 もちろんネットワーク上の他のPCにVNCクライアントを インストールしてもかまいません。

調べてみるとVNCクライアント(Windows用)は 以下のような種類があるようです。 こちらのサイト(http://www.amy.hi-ho.ne.jp/masuda/pc/vnc/vnc_extend.html)に詳しく解説されています。

RealVNC
オリジナル(開発終了)を受け継いだVNCだそうです。 VNCの基本となるものです。
TightVNC
これは画面の転送プロトコルに改良(Tightエンコーディング)を加えて、 通信効率を上げたものだそうです。 もちろんVNCサーバがわがTightエンコーディングに対応していないと、 意味がないのですが、 DebianのVNCサーバはTightエンコーディングに対応しているようです。
UltraVNC
これはTightVNCに更に改良を加えて、高機能化したもの様です。

とりあえず私は高機能そうなUltraVNCを使ってみることにしました。

UltraVNCは有志の方により日本語化されたパッケージがあるので、 http://www.nihongoka.com/jpatch_dairi/ultravnc/から、 最新版のインストーラ版をダウンロードします。

ダウンロードしたファイルを実行するとインストーラが起動しますが、 Windowsの画面を他のマシンに転送する必要がない人は、 「コンポーネントの選択」で「ビューアのみ」を 選択することをお勧めします。

ultra-vnc-setup-1

テスト

ここまできたらテストしてみます。 まず、coLinux一般ユーザでログインして以下のコマンドを実行します。 -depthの後の「24」は色数、-geometryの後の「1024×768」は VNCクライアントで表示する画面のサイズです。 自分の環境に合わせて適当に替えましょう。 ちなみに最後の「-compatiblekbd」はVNCクライアント内で ALTキーで使えるようにするおまじないです。

vncserver :1 -depth 24 -geometry 1024x768 -compatiblekbd

コマンドを初回実行時にパスワードを聞かれます。 これはVNCクライアントで接続するためのものです。 確認のため2回入力する必要があります。

次に、UltraVNCをインストールしたWindowsマシンで、 Ultr@VNC Viewerを起動します。 表示されたダイアログの一番上のVNC Serverのところに 「colinux:1」を入力して、「接続ボタン」を押します。

ultra-vnc-setting

するとパスワードを入力するダイアログが出るので 先ほど設定したパスワードを入力しましょう。

ultra-vnc-password

Window Managerのないさびしい画面ですが、 下記のような画面が表示されればOKです。

ultra-vnc-screen

VNCサーバを停止するには、colinuxで以下のコマンドを実行します。

vncserver -kill :1

なお、VNCサーバを停止した直後は何故か、 VNCサーバを起動できない場合があるようです。 この場合は、しばらく待ってから起動するか、 「:」の後の数字を「2」とかに変更して起動してください。

X端末風化

上記の設定でとりあえず、 coLinuxをGUIで使用することができるようになりました。 しかしこのままでは、GUIを使用するのには一旦coLinuxにログインしてから vncserverを起動させなければなりません。これではさすがに面倒です。

で、実はこれを解決するための機構が、 既にvncserverの方に組み込まれています。 それはVNCクライアントで接続すると 自動的にvncserverが起動するというものです。 ただし、それなりの設定が必要です。

なお、この設定は下記のWebページを参考にしました。 とても参考になりますので見てみてください。

/etc/servicesの変更

まず、/etc/servicesを変更して以下の行を追加します。 追加する場所は、このファイルのどこでもよいのですが、 とりあえず最後尾にしておきましょう。

ポイントは「5950」などの数字の部分です。 この数字は5950からはじめて1刻みに増やしていってください。 「vnc-1024x768x8」などは、VNCサーバの画面設定を表すものです。 これは横800、縦600、8bitカラー(256色)を意味しています。 本当は適当な文字列でよいのですが、 画面設定を意味する文字列にするとわかりやすいのでお勧めです。

vnc-1024x768x8 5950/tcp
vnc-1024x768x32 5951/tcp
vnc-1280x1024x8 5952/tcp
vnc-1280x1024x32 5953/tcp

/etc/inetd.confの変更

次に、/etc/inetd.confを変更して以下の行を追加します。 これも、どこに追加してもいいのですが、最後尾にしておきます。

ここでのポイントは、各行の先頭の「vnc-1024x768x8」などは、 /etc/servicesに追加した文字列と完全に同じ者にするところと、 「-query」に続く「colinux」を 自分のcolinuxのホスト名にする点です(IPアドレスでも可)。

vnc-1024x768x8 stream tcp nowait nobody /usr/bin/Xvnc Xvnc -inetd -query colinux -once -geometry 1024x768 -depth 8 -cc 3
vnc-1024x768x32 stream tcp nowait nobody /usr/bin/Xvnc Xvnc -inetd -query colinux -once -geometry 1024x768 -depth 32
vnc-1280x1024x8 stream tcp nowait nobody /usr/bin/Xvnc Xvnc -inetd -query colinux -once -geometry 1280x1024 -depth 8 -cc 3
vnc-1280x1024x32 stream tcp nowait nobody /usr/bin/Xvnc Xvnc -inetd -query colinux -once -geometry 1280x1024 -depth 32

inetdの再起動

変更が終わったらinetd.confを反映をさせましょう。 以下のコマンドでinetdを再起動させます。

sudo /etc/init.d/openbsd-inetd restart 

Xvfbのインストール

その次は、Xvfbをインストールします。 これはビデオボードがないマシンでも動くXserverです。 後述するgdmはXサーバを起動するので、 何らかのXサーバがインストールされていなければいけません。 colinuxにはビデオカードがないのでこのXvfbを使います。

インストールは以下のコマンドです。 もしかしたら既にインストールされているかもしれません。

sudo aptitude install xvfb

ディスプレイマネージャのインストール

次にディスプレイマネージャをインストールします。 xdm, gdm, kdmの3つのディスプレイマネージャが使用できますので、 お好みに応じて選択しましょう。

kdmが表示が綺麗で好みなのですが、 私の環境ではイマイチうまく動かない場合もあるので、 私はgdmを使っています。

xdmの場合

xdmのインストール

以下のコマンドを実行します。

sudo aptitude install xdm

インストールを開始するとデフォルトのディスプレイマネージャを どうするかときかれるので、迷わず「xdm」を選びます。

xdmの選択

この操作は必要ないかもしれませんが、念のため記載しておきます。

xdmをデフォルトのディスプレイマネージャにするには 以下のコマンドを実行して「xdm」を選びます。

sudo dpkg-reconfigure xdm
xdmの設定変更

設定はVNCクライアントから接続したVNCサーバにxdmが対応できるように することと、xdmが起動するXサーバをXvfbに変更するところです。 変更は/etc/X11/xdm/以下のファイルを変更することにより行います。 変更点は以下の個所です。

  1. /etc/X11/xdm/Xaccess
    • 「#* #any host can get a login window」という行の 先頭の「#」を削除する(48行目付近です)。
  2. /etc/X11/xdm/Xservers
    • 「:0 local /usr/bin/X vt7 -dpi 100 -nolisten tcp」の 先頭に先頭に「#」を挿入してコメントアウトする。
    • 「:0 local /usr/bin/Xvfb」という行を挿入する。
  3. /etc/x11/xdm-config
    • 「DisplayManager.requestPort: 0」という行の先頭に 「!」を挿入してコメントアウトする。
xdmの起動

以下のコマンドでxdmを起動します。 なお、次回起動時からは自動的にxdmが起動するようになります。

sudo /etc/init.d/xdm start

gdmの場合

gdmのインストール

インストールは以下のコマンドで一発です。 同時に他のパッケージもたくさんインストールされますが 気にしないことにしましょう。

sudo aptitude install gdm

インストールを開始するとデフォルトのディスプレイマネージャを どうするかときかれるので、迷わず「gdm」を選びます。

gdmの選択

この操作は必要ないかもしれませんが、念のため記載しておきます。

gdmをデフォルトのディスプレイマネージャにするには 以下のコマンドを実行して「gdm」を選びます。

sudo dpkg-reconfigure gdm
gdmの設定変更

gdmの場合は/etc/gdm/gdm.confを変更することにより行います。 変更点は以下の個所です。

  • [daemon]セクションに「KillInitClients=true」, 「StandardXServer=/usr/bin/Xvfb」, 「VTAllocation=false」を追加。
  • [security]セクションに「AllowRoot=true」, 「AllowRemoteRoot=true」を追加。
  • [xdmcp]セクションに[Enable=true」を追加
  • [server-Standard]セクションを作成して、 「name=Standard server」, 「command=/usr/bin/Xvfb」を追加。

わかりにくいので以下に私の/etc/gdm/gdm.confを 「gdmの設定」に 記載しておきます。

gdmの起動

以下のコマンドでgdmを起動します。 なお、次回起動時からは自動的にgdmが起動するようになります。

sudo /etc/init.d/gdm start

kdmの場合

kdmのインストール

インストールは以下のコマンドで一発です。 同時に他のパッケージもたくさんインストールされますが 気にしないことにしましょう。

sudo aptitude install kdm

インストールを開始するとデフォルトのディスプレイマネージャを どうするかときかれるので、迷わず「kdm」を選びます。

kdmの選択

この操作は必要ないかもしれませんが、念のため記載しておきます。

kdmをデフォルトのディスプレイマネージャにするには 以下のコマンドを実行して「kdm」を選びます。

dpkg-reconfigure kdm
kdmの設定変更

kdmの場合は/etc/kde3/kdm/xdm/以下のファイルを変更することにより 行います。 変更点は以下の個所です。

  1. /etc/kde3/kdm/Xaccess
    • 「#* #any host can get a login window」という行の 先頭の「#」を削除する(38行目付近です)。
  2. /etc/kde3/kdm/kmrc
    • 「ServerCmd=/usr/bin/X -br」を 「ServerCmd=/usr/bin/Xvfb」に変更する(471行目付近)。
    • 「ServerArgsLocal=-nolisten tcp」を 「ServerArgsLocal=」に変更する(475行目付近)。
    • 「Enable=false」を「Enable=true」に変更する(119行目付近)。
    • 「AllowRootLogin=false」を 「AllowRootLogin=true」に変更する(253行目付近)。
kdmの起動

以下のコマンドでkdmを起動します。 なお、次回起動時からは自動的にkdmが起動するようになります。

sudo /etc/init.d/kdm start

接続!

お疲れまでした。ようやくUltraVNCで接続できます。 Ultr@VNC Viewerを起動して、 表示されたダイアログの一番上のVNC Serverのところに 「colinux:50」と入力して「接続ボタン」を押します。

「colinux:50」の「50」というのは、 /etc/servicesに追記した「vnc-1024x768x8 5950/tcp」の 「5950」から「5900」を引いた数字です。 なので「colinux:50」で接続すると解像度は1024×768、 色は8bit(256色)となります。 例えば、解像度1280×1024、色32bitのVNCサーバに接続するには、 「colinux:53」(53=5953-5900)とします。

下記のような画面(gdmの場合)が表示されれば設定完了です! (フルカラーの接続を選んだのに色数がおかしい場合には、 UltraVNCのダイアログの簡単設定で「LAN」を選んでみてください)

ultra-vnc-gdm

おまけ: Xvfbを使わない場合

上記の説明ではディスプレイマネージャから起動されるXserverとして Xvfbと使用しました。

最近ではXorgにdummyサーバが付いており、 Xvfbの替わりに使用することができるようです。

この場合は、まずdummyサーバをインストールします。

sudo aptitude install xserver-xorg-video-dummy

次に、/etc/X11/xorg.confを次のように編集します。

  • 「Module」セクションのLoadの行を全てコメントアウト。 (これはメモリを節約するためです)
  • 「Device」セクションのDriverの行を 「Driver “dummy”」に変更。

ディスプレイマネージャの設定は以下の様になります (下記の説明はXvfb用に修正していない場合です)。

  1. xdmの場合
    • /etc/X11/xdm/Xaccessの「#* #any host can get a login window」 という行の先頭の「#」を削除(48行目付近)。
    • /etc/x11/xdm-configの「DisplayManager.requestPort: 0」 という行の先頭に「!」を挿入してコメントアウト。
  2. gdmの場合
    • /etc/gdm/gdm.confの[security]セクションに 「AllowRoot=true」,「AllowRemoteRoot=true」を追加。
    • /etc/gdm/gdm.confの[xdmcp]セクションに 「Enable=true」を追加。
  3. kdmの場合
    • /etc/kde3/kdm/Xaccessの「#* #any host can get a login window」 という行の先頭の「#」を削除(38行目付近です)。
    • /etc/kde3/kdm/kmrcの「Enable=false」を 「Enable=true」に変更(119行目付近)。
    • /etc/kde3/kdm/kmrcの「AllowRootLogin=false」を 「AllowRootLogin=true」に変更(253行目付近)。

ただXorgのdummyサーバの方がメモリを消費するようです。

フォローする