X Window Systemの特徴の一つは、アプリケーションの実行とその表示がクライアントサーバモデルになっていることだ。アプリケーションをあるマシンで実行し、その表示を別のマシンで行うことができる。通常は1台のマシンで実行、表示しているが、このときも内部的にはクライアントサーバモデルで動いている。このためWindowsなどと比べると表示がもっさりしてしまう原因にもなっていると思われる。Windowsでは表示命令は即座にカーネルレベルに入って表示されるため速い。
X Window Systemにおいては、アプリケーションを実行するマシンをXクライアントといい、それを表示するマシン、すなわちディスプレイがつながっているマシンをXサーバという。
ここではXサーバにFreeBSD7を使って実験してみた。というのもLinuxの多くのディストリビューションではXが-nolisten tcpオプションで起動されているため、ローカル意外のXサーバとして動かないらしいからだ。XクライアントにはUbuntuを使った。ネットワーク構成は以下のようになっている。
FreeBSD7=192.168.0.120
Ubuntu=192.168.0.228
まずFreeBSD7側でUbuntuからのアクセスを許可する。xhostを使って行う。
[freebsd7]$ xhost +192.168.0.228
つぎにUbuntu側で環境変数DISPLAYを指定して、アプリケーションを実行する。
[Ubuntu]$ DISPLAY=192.168.0.120:0 xeyes
成功すれば、freebsd7にxeyesが表示される。このときxeyesはUbuntuで実行されており、freebsd7にはxeyesが存在しなくても関係ない。またUbuntuではXが起動していなくてもいい。よってUbuntuのXがぶっ壊れて起動しなくなったときこの方法が役に立つかもしれない。
しかし実際にはこの様な機能はほとんど使用されておらず、通常はVNCなどを使うことが多い。アプリケーションなどもこのような使い方を想定してない場合も多いようで、firefoxなどは既にローカルで起動している場合、–no-remoteなどを付けてもうまくいかなかった。またサウンドはXクライアントから出力される。
freebsd7を元に戻す。
[freebsd7]$ xhost -192.168.0.228
▽関連記事
xorg.conf覚書