PC-XServerの設定を行いMS-Windowsから便利に X Window System を利用する。
一台のunixホストを複数のMS-Windowsクライアントから利用するような用途で便利。

このページでの定義

  • Host側PC :unix Like OSを実行しているPC/WS。
  • Client側PC:WindowsOSを実行しているPC。

Host側PCから見た空けるべきポート番号

  • SrcPort = TCP:6000(X11)+ディスプレイ番号
  • DstPort = UDP:177(xdmcp)
  • DstPort = TCP:7100(xfs)

Host側の設定

Linux全般

CentOS 4.2 の場合(SELinux無し)

DisplayManagerの設定

  1. Xaccessの設定
    # vi /etc/X11/xdm/Xaccess
    下記の行が有効になっている事を確認する。
    *               CHOOSER BROADCAST       #any indirect host can get a chooser
  2. どのDisplayManagerが使われているかチェックする
    # ps -aux | grep -e dm
    一般的には下記の内のどれか
  3. DisplayManagerの設定変更(コマンドで設定)
    1. xdm
      # ps -aux | grep -e xdm
      xdm-configの設定
      # vi /etc/X11/xdm/xdm-config
      「DisplayManager.requestPort」の変更
      (修正前)
      DisplayManager.requestPort:    0
      (修正後)
      !DisplayManager.requestPort:    0
    2. gdm
      # ps -aux | grep -e gdm
      gdm.confの編集
      # vi /etc/X11/gdm/gdm.conf
      [xdmcp]セクションの変更
      (修正前)
      Enable=false
      #Port=177
      (修正後)
      Enable=true
      Port=177
    3. kdm
      # ps -aux | grep -e kdm
      kdmrcの編集

      一般的な場合

      # vi /etc/kde/kdm/kdmrc
      SuSE Linux 9.2 の場合
      # vi /opt/kde3/share/config/kdm/kdmrc
      [Xdmcp]セクションの変更
      (修正前)
      Enable=false
      (修正後)
      Enable=true
    4. LightDM
      # ps -aux | grep -e lightdm
      lightdm.confの編集
      $ sudo vi /etc/lightdm/lightdm.conf
      (変更内容)
      [SeatDefaults]
      greeter-session=unity-greeter
      user-session=ubuntu
      xserver-allow-tcp=true (追加)
      
      [XDMCPServer] (追加)
      enabled=true  (追加)
  4. DisplayManagerの設定変更(GUIで設定)

    下記のGNOMEメニューを開く

    [アプリケーション] - [システム設定] - [ログイン画面]
    file本画面ではgdmの設定のみ可能。
     
  5. 設定の反映

    TeraTermPro等のターミナルから下記コマンドを実行する。
    但しこの方法では「init 3」で固まりうまく行かない場合もある

    # init 3; sleep 20; init 5
  6. 設定の反映

    上記の方法では駄目ならばログイン画面で下記操作を実行し、

    [Ctrl] + [Alt] + [BackSpace]
    Xを強制終了→自動でXの再起動させる。
     
  7. listen状態のチェック
    # netstat -an | grep -e 177
    こんな感じ
    udp     0    0 0.0.0.0:177        0.0.0.0:*

FontServerの設定

  1. xfsの設定
    # vi /etc/X11/fs/config
    (修正前)
    no-listen = tcp
    (修正後)
    #no-listen = tcp
  2. フォント設定

    フォントの登録

  3. FontServerの再起動
    # /etc/init.d/xfs stop
    # /etc/init.d/xfs start
  4. listen状態のチェック
    # 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:
  • ポート番号の解放
    1. 各ポート番号のサービス名のチェック
      # vi /etc/services
    2. TCPWrapperの設定
      # vi /etc/hosts.allow
      # vi /etc/hosts.deny
    3. iptablesの設定(Redhat向け)

      設定の編集

      # 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

その他の設定

Client側の設定

Windows XP SP2/Windows Server 2003 SP1以降での注意事項
Firewallが有効な場合は、当然下記ポート番号を開ける必要有り。
  • TCP:6000(X11)+ディスプレイ番号
  • UDP:177(xdmcp)
  • TCP:7100(xfs)

Cygwin

  1. Cygwinのインストール

    Setup/Cygwin」の手順通りに行う。但しパッケージに下記のインストールオプションを追加する。

    「All > X11」の下記のものにチェックマークを付ける

    xorg-server: X.Org X servers
    font-XXXX
    CygwinSetup2.png CygwinSetup3.png
  2. 「XWin.exe」の実行

    自ホスト名は「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 0
    Shellスクリプトにする場合の例
    #!/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
  3. 入力が英語キーボード配列になってしまう場合
    1. 引数にキーボード配列の指定を追加する。
      # 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
    2. レイアウトの選択ダイアログが出た場合は「Xの設定を使う」を選択する。

      Cygwin_XKB.png

    3. それでもおかしい場合は、GNOMEなら下記メニューより設定を変更する。

      Cygwin_XKB2.png

  4. Cygwinの起動省略(コンソールウィンドウ有り)

    いちいちCygwinを起動してシェルを実行するのは面倒。

    1. 「XWin.exe」の起動スクリプトを「runXWin.sh」として自分のホームディレクトリに配置
    2. 直接起動を行うバッチファイルを作成し、Cygwinのフォルダにでも入れておく。
      @ECHO OFF
      SET CYGWIN_PATH=C:\cygwin
      CD /D %CYGWIN_PATH%\bin
      bash --login -c ~/runXWin.sh
    3. 上記で作成したバッチファイルのショートカットを作成し、プロパティで実行時の大きさを「最小化」に設定して実行。

      動作ログはCygwinの/tmpフォルダに「XWin.log」として作成される。

    4. (゚Д゚) ウマ〜
       
  5. Cygwinの起動省略(コンソールウィンドウ無し)

    いちいち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%
  6. 接続結果

    fileCentOS 4.2 の場合

  7. 所見

    CentOS4.2/IRIX6.5に接続した場合、ログアウト処理に時間が掛かる場合があるがそれ以外は特に問題はなく快適に使用可能。通信負荷はあまり感じられなく、快適かどうかはHost側のPCの性能に依存するものと思われる。X-WindowのScreenSaverが起動するとかなりCPUリソースを喰う模様。とりあえず最小化しておけば問題はない。

  8. Tips
    • 利用中にマウスカーソルが消えてしまった場合

      Windows側のCygwinのタスクアイコンの右クリックメニューに「Show Cursor」があるので、それを選択すると表示されるようになる。

    • Linuxからのログアウトが遅い

      ASTEC-X > FAQ > Windows ファイアウォール関連の問題

    • DirectXなプログラムとの相性

      XWin.exeはDirectDrawを利用している為、FullScreenなDirectXプログラムやHLSLなShaderを利用しているDirectXプログラムとは相性が悪い・・・というか落ちる。

Xming

  1. Xmingのインストール
    1. SourceForgeのプロジェクトページにアクセスする。
    2. 2007年以降のものは有償化されているので、PublicDomainの最終版のインストーラ(Xming-6-9-0-31-setup.exe)を取得する。

      参考:Document/SourceForge.net
      ※CentOS 4.x との接続において、「Xming-20060412-setup.exe」以降のバージョンを利用すると、キーボード入力が常にカタカナ入力になってしまう悲惨な状況になるので注意が必要。その為に古いバージョンを利用する。
      ※「Xming-6-9-0-20-setup.exe」以降のバージョンのインストールにはWindowsXP以降が必要。

    3. インストーラを実行し、インストールを行う。

      インストール時には、「.xlaunch」への関連付けを有効にしておいた方が良い。
      接続先のFontServerを利用する場合はFontパッケージをインストール必要はない。
      フォントパッケージには下記のものがある。

      • Xming-fonts-20051117-setup.exe
      • Xming-100dpi-setup.exe
      • Xming-75dpi-setup.exe
      • Xming-cyrillic-setup.exe
      • Xming-fonts-6-9-0-6-setup.exe
  2. スタートメニューの [Xming] -> [XLaunch] を実行し、ウィザードにより接続先の指定を行う。

    Cygwinと同様にする場合は、ここを参考に下記の通りにする。

    1. [Select Display Settings]

      fileXmingConfig001.png

    2. [Select How to start Xming]

      fileXmingConfig002.png

    3. [Configure a remote xdmcp connection]

      fileXmingConfig003.png

    4. [Specify parameter settings]

      →FontServer名及び画面解像度(解像度を指定しない場合は現在のClientPCの画面解像度になる)の指定
      fileXmingConfig004.png

      入力が英語キーボード配列になってしまう場合は「Additional parameters〜」の引数にキーボード配列の指定を追加する。

      -xkblayout jp -xkbmodel jp106
    5. [Configuration complete]

      →「Save configuration」ボタンを押下し、設定ファイル(〜.xlaunch)を保存する。
      fileXmingConfig005.png

    6. 最後に保存した設定ファイル(〜.xlaunch)を実行する。

      動作ログはWindowsのTEMPフォルダに「Xming.0.log」として作成される。

  3. 接続結果

    fileTurboLinux10D の場合

  4. 所見

    CentOS4.2に接続した場合、妙に重くなっていく・・・。IRIX6.5では特に問題はなさそうだった。

X-Deep/32

※本アプリの X Window System のライブラリはバージョンが古いので最近のUTF-8ロケールなLinuxディストリビューションには向かない

  1. X-Deep/32のインストール
    1. プロジェクトページにアクセスする。
    2. 最新版のインストーラ(xdp40Full.exe)を取得する。
    3. インストーラよりインストールを行う。
       
  2. 「X-Deep/32」を実行する。自分のサブネットを選択する。

    fileXDeep32_IRIX1.png

  3. メニューより「X-Server Options」を選択する。

    fileXDeep32_IRIX2.png

  4. 「XDMCP」タブの「Configure LocalXDM Chooser」ボタンを押下する。

    fileXDeep32_IRIX3.png

  5. 接続対象のホスト名/IPアドレスを入力する。OKボタンを押下し設定を反映する。

    fileXDeep32_IRIX4.png

  6. プログラムの再度起動を促されるので再起動する。
  7. 追加したホストを選択し「Connect」ボタンを押下する。

    fileXDeep32_IRIX5.png

  8. 接続結果

    fileIRIX6.5 の場合

  9. 所見

    Cygwin/Xmingを使った方が便利・・・orz

TeraTerm

ローカルPC-X Serverと連携する方法。SSH経由なのでXDMCPはあまり関係ないかも知れない。

  1. TeraTermのインストール
    1. SourceForgeのプロジェクトページにアクセスする。

      参考:Document/SourceForge.jp

    2. インストーラを実行し、インストールを行う。
       
  2. Cygwin/Xmingのどちらかのインストール

    インストール手順は上の手順を参照方。

     
  3. TeraTermでSSH転送設定の変更
    1. メニューの [設定] - [SSH転送] を開く。
    2. [リモートのXアプリケーションをローカルのXサーバに表示する]にチェックを入れる。

      fileSSHポート転送

    3. メニューの [設定] - [設定の保存] で変更内容を保存する。
       
  4. ローカルのPC-X Serverを起動する
    • Cygwinの場合
      $ startx
    • Xmingの場合

      スタートメニューの「Xming」を実行する。

  5. TeraTermから利用したいXアプリケーションを起動する
    $ xev


ページ先頭へ   最終更新のRDF 最終更新のRSS
Last-modified: 2013-10-09 (水) 23:48:17 (1295d)
Valid XHTML 1.1 Valid CSS! [Valid RSS]