Opensource:LinuxとXdmxを使用した分散型マルチヘッド・サポート

1つの連続したデスクトップを表示するマルチモニター構成を作成する

この記事では、個人用のマルチスクリーン構成と物理レイアウトを作成してコンピューティング・エクスペリエンスを向上させるツールについて紹介します。Linux® とXdmxを使用して、それぞれのコンピューターに接続された複数の表示装置から1つの連続したデスクトップを作成することができます。Linuxが実行されているラップトップ・コンピューターとデスクトップ・コンピューターを組み合わせて1つの大きなディスプレイを作成し、生産性を向上させることができます。大きなディスプレイ・ウォール構成や、グラフィック・カードを購入することなくマルチヘッド構成を作成する方法について説明します。

Nathan Harrington, Programmer, EMC

Nathan Harrington は IBM のプログラマーで、現在 Linux とリソース特定技術に従事しています。


developerWorks 貢献著者レベル

2006年 3月 28日

現在のコンピューティング構成に複数のモニターを追加することにより、頻繁にタスクの切り替えを行う必要がなくなるため、作業の生産性が大きく向上します。この他にも多くの利点がありますが、こうした利点はマルチヘッド・グラフィック・カードを使用しているユーザーや、1台のPCで複数のグラフィック・カードを使用しているユーザーにはよく知られています。LinuxとXdmxを使用することにより、2台の表示装置と2台のコンピューターを所有しているユーザーは誰でも、新しいハードウェアを購入することなくマルチヘッド構成の利点を体験することができます。

この記事ではXdmxと簡単な構成情報を使用して、1台のデスクトップ・コンピューターと3台のラップトップPCが4つのモニターを共有するコンピューティング環境を設定していきます。また、Chromiumとギガビットのネットワーク速度を利用し、複数のマルチメガピクセル画面に対してリアルタイムの3-D画像を送信する高性能の表示構成を紹介します。個人用のマルチスクリーン構成と物理レイアウトを作成してコンピューティング・エクスペリエンスを向上させるツールについても紹介します。

要件

この記事で取り上げるシステム環境は、4台のコンピューターに対して3枚のビデオ・カード、異なる3つの画面サイズ、異なる3つの解像度設定という構成になっています。分散されたRed Hat Enterprise Linux (RHEL) V3.5とFedora Core 3上のX11およびxorg構成には、Kernel levels 2.4.21-2.6.15を使用しました。ハードウェアとソフトウェアが不統一でも障害にならないということがポイントです。さまざまなハードウェア構成を持った多くの分散コンピューターに対して、正常にXdmxをインストールして使用することができます。

ハードウェア

以下のハードウェアが必要です。

  • 比較的新しいCPU ? 処理速度が多少落ちるが、486以上ならば可。
  • 回線速度の速いネットワーク ? イーサネット以上。
  • 最低16ビット以上の色深度に対応したグラフィック・カード ? これより低い仕様のグラフィック・カードを使用した場合、xinerama対応の表示装置が正しく機能しない場合がある。

ソフトウェア

この記事では最新のRed HatとFedora Coreの分散コンピューター上で環境を作成しましたが、その他の分散コンピューターを使用しても問題ありません。選択した分散コンピューターでRPMがサポートされている場合、Xdmxアプリケーションをソースからコンパイルすることなくすぐに起動できる必要があります。


Xdmxの取得とインストール

ソフトウェアの取得

今すぐSourceforge.netからXdmxを入手してください(「参考文献」を参照)。この記事の環境で使用する場合、RPM版で問題ありません。Sourceforge.netの「Download DMX」セクションからdmx-1.2.20040630-1.i386.rpmファイルを検索してください。使用している分散コンピューターが非常に古い場合やRPMをサポートしていない場合、DMXを最初からコンパイルする必要があるかもしれません。コンパイルに必要なソースは「Download DMX」セクションにありますが、この記事ではコンパイルの手順についての説明はしません。

インストール

Xdmx RPMをダウンロードしたら、インストール処理を実行します。RHEL V3.5ベースのシステムの場合、rpm -Uvh dmx-1.2.20040630-1.i386.rpmを実行すると、Xdmxアプリケーションを正常にインストールすることができます。Fedora Core 3以降のシステムでRPMコマンドを実行している場合、「file /usr/X11R6/lib/libdmx.a from install of dmx-1.2.20040630-1 conflicts with file from package xorg-x11-devel-6.8.2-31」のようなエラー・メッセージが表示される場合があります。

回避策として--forceオプションを使用し、rpm --force -Uvh dmx-1.2.20040630-1.i386.rpmと指定します。Xdmxソフトウェアを強制的にインストールすると、開発環境が不安定になる場合があるので注意してください。私はXdmxソフトウェアの「強制インストール」を使用して1年以上開発作業を行っていますが、これまでにエラーが出たことはありません。しかし、異なった環境ではエラーが出る可能性もあります。強制インストールを実行したくない場合は、Xdmxアプリケーションをソースからコンパイルし、その後インストールを実行してください。

Debianベースのシステムやapt-getを使用したシステムの場合、apt-get install xdmxを使用してXdmxのインストールと設定を実行してください。

マルチヘッド・ディスプレイ構成に組み込むすべてのコンピューターに、Xdmxをインストールする必要があります。Xdmxのインストール・パッケージにはサーバーとクライアントの両方が含まれているため、表示ノードを追加したり、管理ノードを変更したり、ハードウェア障害を既存のノードに設定する場合に、異なる構成をサポートするソフトウェアを再インストールする必要はありません。


マルチヘッド操作用にPCを構成する

Xdmxのマニュアル

Xdmxには、分散型マルチヘッド・ディスプレイ構成の開始に必要な情報がすべて記載された素晴らしいマニュアルが用意されています。この記事では、異なるハードウェア構成に関連して発生するいくつかの問題をどのように解決するかということに焦点を当てて説明します。実際のXdmxの使用例をいくつか紹介し、その際に直面する問題をいかに解決するかを説明します。

1台のデスクトップPCと1台のラップトップPC

これから取り上げる最初の例では、1台のデスクトップPCと1台のラップトップPCを使用して2画面構成にし、デスクトップ画面が2つの画面にまたがって表示される場合を見ていきます。最初に、どちらのコンピューターを管理ノードにするかを決めます。この例では、デスクトップPCを管理ノードに指定します。

X構成ファイルの設定

異なるハードウェアを使用する際に大きな問題となるのは、コンピューティング・リソース間で異なる機能をサポートする必要があるということです。Xdmxを実行する前に、それぞれのシステムで同じオプションのセットを使用できるように設定しておく必要があります。この例では、どちらのシステムにも異なったフォントがインストールされています。後で説明しますが、Xdmxには異なったフォントを処理するオプションが用意されています。今のところは、GLXサポートとデフォルトの表示ビット深度が、Xdmxの正常な稼動を妨げる共通の問題となっていることを覚えておいてください。デスクトップを複数のスクリーンに表示させるには、各スクリーンのルート・ウィンドウのビット深度を統一する必要があります。デスクトップをそれぞれ独立して表示する場合は、各スクリーンのビット深度を統一する必要はありません。この例では各デスクトップを1つにまとめて大きなデスクトップにするため、Xorg.confファイルまたはXF86Configファイルを修正し、デフォルト値として16ビットの色深度を選択します(システム環境でサポートされていれば、24ビット以上の深度も設定することができます)。この例の場合、すべてのハードウェアでサポートされる最大の深度は16ビットです。

Xorg.confファイルまたはXF86Configファイルのバックアップ・コピーを作成し、以下に示す変更を行います。たとえば、RHEL 3.5ラップトップのXF86Configファイルには、以下のような命令行が記述されています。

リスト1. XF86Configファイルのサンプル
Section "Screen"
        Identifier "Screen0"
        Device     "Videocard0"
        Monitor    "Monitor0"
        DefaultDepth     24
        SubSection "Display"
                Depth     24
                Modes    "1400x1050" "1280x1024" \
                "1280x960" "1152x864" "1024x768" "800x600" "640x480"
        EndSubSection
EndSection

DefaultDepth 24をDefaultDepth 16に変更し、SubSection "Display"行の下のDepth 24をDepth 16に変更します。

ハードウェア固有のカスタム・ドライバーが設定されている場合、デフォルト設定に戻すか、互換性のあるハードウェア・サポートを適用する必要があります。ハードウェアに付属している資料を参照し、ハードウェアの詳細なサポート情報を確認してください。たとえば、この例で使用するRHEL V3.5ラップトップには、ATI FireGL Mobility T2カードと、それに関連するドライバーが搭載されています。上に記したXF86Configファイルに対する変更を実行すると、fglrxドライバーでは16ビット深度の設定がサポートされていないため、エラーが発生します。この問題を解決するには、system-config-xfree86を実行して(Fedora Core の場合はsystem-config-displayを実行)互換性をサポートするVESAモードを選択します。[Advanced] タブから、ビデオ・カードとしてVESA Driver(標準)を選択します。[Monitor Type] セクションから、表示装置がサポートする最大解像度を設定します。[Display] タブに戻って画面の解像度を選択し、使用する色深度として [Thousands of Color] を選択します。

これでビット深度が統一されました。マルチスクリーン構成を開始することができます。クライアント・ノードでXセッションを開始してください。ランレベル3の場合、xinitコマンドを実行して基本Xセッションを開始します。GNOMEやKDEなどのグラフィック・ウィンドウ・マネージャーをすでに起動している場合、Xtermを起動します。クライアント・ノード画面のXtermウィンドウからコマンドxhost + control_node_ipを入力します。このcontrol_node_ipには、ドット付きの4つの数字で管理ノードを入力します。この例では管理ノードは192.168.1.101なので、クライアント・ノード画面から入力するコマンドはxhost + 192.168.1.101となります。

Xdmx起動コマンド

管理ノードでデフォルトのX Window Systemセッションを開始してください。たとえば、xdmを実行している場合は起動時にログイン画面が表示され、GNOMEセッションまたはKDEセッションを開始しますが、どんな場合であっても管理ノードでXtermを起動します。twmウィンドウ・マネージャーを実行して、両方のノードにまたがる新しいXdmxセッションを開始します。実行するウィンドウ・マネージャーはもちろん任意のウィンドウ・マネージャーでかまいませんが、GNOMEでは1台のコンピューター上で2つのインスタンスを実行することはできないため注意が必要です。管理ノードから以下のコマンドを実行してください。

リスト2. Xdmx起動コマンドのサンプル
startx `which twm` --         \
  /usr/bin/X11R6/Xdmx :1      \
  -display control_node_ip:0  \
  -display client_node_1_ip:0 \
  -ignorebadfontpaths         \

control_node_ipには192.168.1.101を入力し、client_node_1_ipにはクライアント・ノードのIPアドレスを入力します。コマンドの詳細をテーブル1に示します。


テーブル1.起動コマンドの詳細

コマンド行説明
startx `which twm`ウィンドウ・マネージャーを使用して新しいXセッションを開始する
-- /usr/bin/X11R6/Xdmx :1Xdmxプログラムを起動する(:1がXセッション)
-display control_node_ip:0管理ノードの表示装置を第1画面として使用する
-display client_node_1_ip:0第1クライアント・ノードの表示装置を第2画面として使用する
-ignorebadfontpaths設定を無視する
+xinerama画面を1つのデスクトップとして処理する

コマンドが正常に実行されると、デスクトップの背景が両方の画面にまたがって表示されるはずです。管理ノードの画面上でマウスを移動させ、管理ノードの入力装置に対して2つの画面が1つのデスクトップとして使用可能になっていることを確認してください。確認できたら、Ctrl+Alt+qを押してXdmxを終了します。

Xdmxのエラーと解決方法

コマンドが正常に実行されなかった場合、以下のようなエラー・メッセージが表示されることがあります。

リスト3. Xdmxエラー・メッセージのサンプル
(II) dmx: ===== End of Summary =====
(!!) dmx: The default visual for screen #0 does not match any of the
(!!) dmx: consolidated visuals from Xinerama (listed above)
(!!) dmx: The default visual for screen #1 does not match any of the
(!!) dmx: consolidated visuals from Xinerama (listed above)
(Fatal Error) dmx: dmxConnectionBlockCallback: invalid screen(s) found
XIO:  fatal IO error 104 (Connection reset by peer) on X server ":1.0"
      after 0 requests (0 known processed) with 0 events remaining.

これはわかりにくいエラー・メッセージで、Xdmxプログラムの数少ない明らかな欠点の1つです。このエラー・メッセージは、クライアント・ノードと管理ノード上のGLX構成が一致していないために表示されるということがわかっています。こうしたエラー・メッセージはただの人間である私たちにとってはわかりにくいものですが、Xdmx機能には常に単純明快な解決策が用意されています。この場合、-noglxproxyオプションをコマンドに追加してもう一度実行するだけです。

startx `which twm` --         \
  /usr/bin/X11R6/Xdmx :1      \
  -display control_node_ip:0  \
  -display client_node_1_ip:0 \
  -ignorebadfontpaths         \
  +xinerama                   \
  -noglxproxy

これで問題は解決しました。Xdmxが失敗したときにキーボードの動作がおかしくなることに気付いたかもしれませんが、これはあなたのせいではありません。私も、Xdmx が失敗したときにCtrlキー、Shiftキー、Altキーが正しく機能しないことに気付きました。一番有効な解決策は、ウィンドウ・マネージャーを再起動することです。こうすればこの問題は解決します。

3台のノードと3つの画面

2台のノード構成に成功したので、今度はクライアント・ノードをもう一台追加しましょう。ランレベル3の状態でxinitを実行し、追加するクライアント・ノードで基本Xセッションを開始してください。Xセッションを開始するとXtermが表示されるので、そこからxhost + contrl_node_ipを入力します。リスト5のようにXdmx起動コマンドを変更し、3台目のノードを指定してください。

startx `which twm` --         \
  /usr/bin/X11R6/Xdmx :1      \
  -display control_node_ip:0  \
  -display client_node_1_ip:0 \
  -display client_node_2_ip:0 \
  -ignorebadfontpaths         \
  +xinerama                   \
  -noglxproxy

順番に並んだ構成に新しいノードを追加するのは非常に簡単です。以下の写真は、別のdeveloperWorksの記事から取ったものです。3台のノードの画面がモザイク状にデスクトップを表示しているのがわかります。

図1.3台のノード構成
図1.3台のノード構成

4台のノードと2 x 2の画面

今度は少し変わった構成を見てみましょう。画面を2つずつ正方形に配置するにはどうすればいいでしょうか。Xdmxなら可能です。構成ファイル・オプションを使用し、希望の構成になるよう配列指定子を設定すればいいのです。たとえば、左上に1024 x 768の画面、右上に1400 x 1050の画面、左下に1600 x 1200の画面、右下に1024 x 768の画面を配置したい場合、以下の構成ファイルを使用します。

リスト6. Xdmx構成ファイルのサンプル
# xdmx.conf  - Xdmx configuration file
# quad config setup 2x2

virtual quad_config {
  display "client_node_upper_left_ip:0"   @0x0;
  display "client_node_upper_right_ip:0"  @1024x0;
  display "client_node_lower_left_ip:0"   @0x768;
  display "client_node_lower_right_ip:0"  @1024x768;
}

管理ノードから、以下のコマンドを使用して上の設定を実行します。

リスト7. 設定ファイルを使用したXdmxコマンドのサンプル
startx `which twm`  -- /usr/bin/X11R6/Xdmx :1 \
  -configfile  xdmx.conf                      \
  -config  quad_config                        \
  -ignorebadfontpaths                         \
  -noglxproxy

私がこの画面構成を紹介したのは、表示装置を重ねて作成した連続するデスクトップ画面がどういうものかを理解するためには、この画面構成以外にはないと考えたからです。以下の写真は、2 x 2画面の分散型マルチヘッド構成で、Googleマップのサンフランシスコ地区を表示したものです。

図2.4台のノード構成
図2.4台のノード構成

高度な構成とディスプレイ・ウォール

画面を物理的に隣同士に配置する必要はないということを覚えておいてださい。以下の写真は、プログラミング作業に焦点を当てた画面構成です。4つのデスクトップ画面がそれぞれIon3ウィンドウ・マネージャーを使用しています。

図3.4台のノード構成(1台は他から離れている)
図3.4台のノード構成(1台は他から離れている)

左端の画面に注目してください。他のウィンドウをこの画面まで移動してすべての画面を一目で見ることもできますが、プログラミング作業に集中しているときに注意がそれることのないよう、この画面が視界に入らないように他の画面から離しています。Xdmxの構成ファイルを使用してロケーションと配列の指定子を設定し、作業環境に適した台数の接続構成を作成してください。

3-D処理の構成

Chromiumは、Xdmx構成上の各ノードがOpenGL情報を個別に処理(自分のノードに表示されている情報だけを処理)することができるように設計されたパッケージです。クライアント・ノード(およびグラフィック・カード)の処理能力を利用して大規模な3-D環境をすばやく構成する場合、Chromiumを使用するのは大変有効な方法です。Chromiumの詳細と拡張3-D表示のシステム構成については、「参考資料」を参照してください。

ディスプレイ・ウォール

Xdmxの主な利用方法として、大規模なデータセットの表示に取り組んでいる大学や研究施設における大規模な表示システムでの利用があります。こうしたシステム構成では、複雑なデータセット(クライアント・ノード上で同一のハードウェアが存在したり、専用のマシン構成が必要な場合など)を必要とする拡張3-D表示を処理する場合に、よくChromiumが使用されます。この記事では、デスクトップ・ユーザーを中心に、既存のハードウェアを使用して分散マルチヘッド構成を作成する方法について説明しています。大規模なディスプレイ・ウォール(16000 x 4800など)や表示ノードの自動構成の詳細については、「参考文献」を参照してください。素晴らしい例が載っています。


まとめ

Linux のデスクトップ用にマルチヘッド・ディスプレイを構成することにより、新しいハードウェアを購入することなく大幅に作業の生産性を向上させることができます。オープン・ソースのXdmxとLinuxを使用すれば、現在の表示構成に簡単に新しいマシンを追加することができます。大きなデスクトップ画面を作って、友達を驚かせてください。自分だけのディスプレイ・ウォール作りに凝ってみるのも面白いでしょう。そのためには、大量にコードを書くか、大量にバグを修正するか、あるいはdeveloperWorksの記事を3本同時に読んでください。

参考文献

学ぶために

製品や技術を入手するために

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Open source, Linux
ArticleID=237202
ArticleTitle=Opensource:LinuxとXdmxを使用した分散型マルチヘッド・サポート
publish-date=03282006