PC-XServerの設定を行いMS-Windowsから便利に X Window System を利用する。
一台のunixホストを複数のMS-Windowsクライアントから利用するような用途で便利。
このページでの定義
Host側PCから見た空けるべきポート番号
CentOS 4.2 の場合(SELinux無し)
# vi /etc/X11/xdm/Xaccess下記の行が有効になっている事を確認する。
* CHOOSER BROADCAST #any indirect host can get a chooser
# ps -aux | grep -e dm一般的には下記の内のどれか
# ps -aux | grep -e xdmxdm-configの設定
# vi /etc/X11/xdm/xdm-config「DisplayManager.requestPort」の変更
DisplayManager.requestPort: 0(修正後)
!DisplayManager.requestPort: 0
# ps -aux | grep -e gdmgdm.confの編集
# vi /etc/X11/gdm/gdm.conf[xdmcp]セクションの変更
Enable=false #Port=177(修正後)
Enable=true Port=177
# ps -aux | grep -e kdmkdmrcの編集
一般的な場合
# vi /etc/kde/kdm/kdmrcSuSE Linux 9.2 の場合
# vi /opt/kde3/share/config/kdm/kdmrc[Xdmcp]セクションの変更
Enable=false(修正後)
Enable=true
# ps -aux | grep -e lightdmlightdm.confの編集
$ sudo vi /etc/lightdm/lightdm.conf(変更内容)
[SeatDefaults] greeter-session=unity-greeter user-session=ubuntu xserver-allow-tcp=true (追加) [XDMCPServer] (追加) enabled=true (追加)
下記のGNOMEメニューを開く
[アプリケーション] - [システム設定] - [ログイン画面]
TeraTermPro等のターミナルから下記コマンドを実行する。
但しこの方法では「init 3」で固まりうまく行かない場合もある
# init 3; sleep 20; init 5
上記の方法では駄目ならばログイン画面で下記操作を実行し、
[Ctrl] + [Alt] + [BackSpace]Xを強制終了→自動でXの再起動させる。
# netstat -an | grep -e 177こんな感じ
udp 0 0 0.0.0.0:177 0.0.0.0:*
# vi /etc/X11/fs/config(修正前)
no-listen = tcp(修正後)
#no-listen = tcp
# /etc/init.d/xfs stop # /etc/init.d/xfs start
# netstat -an | grep -e 7100こんな感じ
tcp 0 0 0.0.0.0:7100 0.0.0.0:* LISTEN
# vi /etc/inittab起動レベルを「5」に変更
id:5:initdefault:
# vi /etc/services
# vi /etc/hosts.allow # vi /etc/hosts.deny
設定の編集
# vi /etc/sysconfig/iptables(追加)
※REJECT定義している行よりも上に記述する
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 177 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6000 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 7100 -j ACCEPT設定の反映
# /etc/init.d/iptables stop # /etc/init.d/iptables start
「Setup/Cygwin」の手順通りに行う。但しパッケージに下記のインストールオプションを追加する。
「All > X11」の下記のものにチェックマークを付ける
xorg-server: X.Org X servers font-XXXX
自ホスト名は「hostname」コマンドで取得(「`」は「Shift + @」で入力)
Cygwinのフォント利用
# XWin.exe \ :0 \ -query WWW.XXX.YYY.ZZZ \ -from `hostname` \ -screen 0 1280 1024ホストPC(IP:WWW.XXX.YYY.ZZZ)のフォントをxfs経由で利用
# XWin.exe \ :0 \ -fp tcp/WWW.XXX.YYY.ZZZ:7100 \ -query WWW.XXX.YYY.ZZZ \ -from `hostname` \ -screen 0 1280 1024現在のクライアントのデスクトップサイズに「XWin.exe」を合わせたい場合は、下記のように指定する。
-screen 0Shellスクリプトにする場合の例
#!/bin/sh DISPLAYNO=0 SCREENNO=0 TARGET_HOST=WWW.XXX.YYY.ZZZ XWin.exe \ :${DISPLAYNO} \ -fp tcp/${TARGET_HOST}:7100 \ -query ${TARGET_HOST} \ -from `hostname` \ -screen ${SCREENNO} \ -logfile /tmp/Xwin${DISPLAYNO}.log
# XWin.exe \ :0 \ -fp tcp/WWW.XXX.YYY.ZZZ:7100 \ -query WWW.XXX.YYY.ZZZ \ -from `hostname` \ -screen 0 1280 1024 \ -xkblayout jp \ -xkbmodel jp106
いちいちCygwinを起動してシェルを実行するのは面倒。
@ECHO OFF SET CYGWIN_PATH=C:\cygwin CD /D %CYGWIN_PATH%\bin bash --login -c ~/runXWin.sh
動作ログはCygwinの/tmpフォルダに「XWin.log」として作成される。
いちいちCygwinを起動してシェルを実行するのは面倒。コンソールウィンドウが表示されるのも邪魔。
Cygwinの「run.exe」を使用して「XWin.exe」「XWin_GL.exe」を呼び出すバッチファイルを作成する。
@ECHO OFF SET CYGWIN_PATH=C:\cygwin SET DISPLAYNO=0 SET SCREENNO=0 SET TARGET_HOST=WWW.XXX.YYY.ZZZ SET ARG_PARAM= SET ARG_PARAM=%ARG_PARAM% :%DISPLAYNO% SET ARG_PARAM=%ARG_PARAM% -fp tcp/%TARGET_HOST%:7100 SET ARG_PARAM=%ARG_PARAM% -query %TARGET_HOST% SET ARG_PARAM=%ARG_PARAM% -from %COMPUTERNAME% SET ARG_PARAM=%ARG_PARAM% -screen %SCREENNO% 1280 1024 SET ARG_PARAM=%ARG_PARAM% -logfile /tmp/Xwin%DISPLAYNO%.log SET ARG_PARAM=%ARG_PARAM% -xkblayout jp SET ARG_PARAM=%ARG_PARAM% -xkbmodel jp106 SET ARG_PARAM=%ARG_PARAM% -clipboard REM 環境変数「PATH」にCygwinのbinを登録 SET PATH=%CYGWIN_PATH%\bin;%CYGWIN_PATH%\usr\X11R6\bin;%PATH% run.exe XWin_GL.exe %ARG_PARAM%
CentOS4.2/IRIX6.5に接続した場合、ログアウト処理に時間が掛かる場合があるがそれ以外は特に問題はなく快適に使用可能。通信負荷はあまり感じられなく、快適かどうかはHost側のPCの性能に依存するものと思われる。X-WindowのScreenSaverが起動するとかなりCPUリソースを喰う模様。とりあえず最小化しておけば問題はない。
Windows側のCygwinのタスクアイコンの右クリックメニューに「Show Cursor」があるので、それを選択すると表示されるようになる。
XWin.exeはDirectDrawを利用している為、FullScreenなDirectXプログラムやHLSLなShaderを利用しているDirectXプログラムとは相性が悪い・・・というか落ちる。
参考:Document/SourceForge.net
※CentOS 4.x との接続において、「Xming-20060412-setup.exe」以降のバージョンを利用すると、キーボード入力が常にカタカナ入力になってしまう悲惨な状況になるので注意が必要。その為に古いバージョンを利用する。
※「Xming-6-9-0-20-setup.exe」以降のバージョンのインストールにはWindowsXP以降が必要。
インストール時には、「.xlaunch」への関連付けを有効にしておいた方が良い。
接続先のFontServerを利用する場合はFontパッケージをインストール必要はない。
フォントパッケージには下記のものがある。
Cygwinと同様にする場合は、ここを参考に下記の通りにする。
→FontServer名及び画面解像度(解像度を指定しない場合は現在のClientPCの画面解像度になる)の指定
XmingConfig004.png
入力が英語キーボード配列になってしまう場合は「Additional parameters〜」の引数にキーボード配列の指定を追加する。
-xkblayout jp -xkbmodel jp106
→「Save configuration」ボタンを押下し、設定ファイル(〜.xlaunch)を保存する。
XmingConfig005.png
動作ログはWindowsのTEMPフォルダに「Xming.0.log」として作成される。
CentOS4.2に接続した場合、妙に重くなっていく・・・。IRIX6.5では特に問題はなさそうだった。
※本アプリの X Window System のライブラリはバージョンが古いので最近のUTF-8ロケールなLinuxディストリビューションには向かない
Cygwin/Xmingを使った方が便利・・・orz
ローカルPC-X Serverと連携する方法。SSH経由なのでXDMCPはあまり関係ないかも知れない。
インストール手順は上の手順を参照方。
$ startx
スタートメニューの「Xming」を実行する。
$ xev