(O+P)ut

OutPut Log by SE in SIer



(O+P)ut

OutPut Log by SE in SIer

【サルでも分かる】X11入門

スポンサーリンク

f:id:mtiit:20190409210627p:plain

はじめに

かけるじゅういち?

という方でも理解できるようX11に関する知識をざっくり整理しました。


X11とは

まず、意味と読み方ですが

意味

X Window System バージョン11のこと

読み方

通称「エックスイレブン」たまに「エックスじゅういち」
「X windows System」「X」と誰かが言ってる場合も「X11」を指している場合あり


...X11を理解するには、X Windows Systemを理解すればよさそう。



X WIndow Systemとは

UNIX系を操作する場合は一般的にテキストベースのインターフェースで操作を行います。
これをCUIと言います。

一方、WindowsやMacでは、グラフィカルなウィンドウをマウスの移動やクリックで操作します。
これをGUIと言います。


X Window Systemは"X"というウィンドウシステム、という名の通りGUIを提供するためのシステムです。

UNIX系では標準的に採用されており、デスクトップ環境のGNOMEやKDEもX Window Systemで動作しています。


構成を確認するためのX Window Systemの全体像ですが、以下が分かりやすいです。
f:id:mtiit:20181107213700p:plain
https://www.kenschool.jp/blog/?p=3349 より図を抜粋



上の図ではサーバとクライアントが同一筐体のように見えますが、よくある構成はサーバが手元のPCでクライアントがリモートのサーバというものです。



次は、図の中にある

  • Xサーバ
  • Xクライアント
  • Xプロトコロル

というX Window Systemを語る上で重要な用語について説明します。

Xサーバ

ユーザが操作したキーボードやマウスの動作をXクライアントへ送信し、またXクライアントから送られてきた画面描画情報を解釈してディスブレイに表示するプログラム
主にローカルで実行される

Xクライアント

Xサーバから受信した動作を元にデータを処理し、結果を画面描画情報としてX サーバーへ送信するプログラム
主にリモートで実行される

Xプロトコル

X Window Systemの基本プロトコルでXサーバとXクライアントのやりとりを規定している
要求/応答/エラー/イベントと4種類のパケットがある。例を挙げれば、要求はクライアントからサーバに画面の描画を依頼、イベントはサーバからクライアントに操作の発生を知らせるなど
ボタンやメニューなどを規定していないため、クライアント(アプリケーション側)で規定している



サーバとクライアント、どっちがどっちかややこしい。



X Windows Systemはクライアント・サーバモデルではありますが、操作しているユーザではなくサーバ上で動作しているアプリ視点のアーキテクチャであるため画面を描画する機能側がサーバという風になっているようです。
確かに、「サーバはクライアントからの要求を待つ」というモデルから考えれば納得できます。

X Windows Systemの中でのX11

やっとX11に関してです。

歴史的な経緯は、1984年にマサチューセッツ工科大学(MIT)の中でX1が開発され、その後も続々と改良を重ねて1987年にX11がリリースされました。
ちなみに、XはOSに依存しないウインドウシステムであり、多言語化に対応した初めてのソフトウェアでもあります。
UNIXにGUI操作を提供したことから、UNIXの普及に大きく貢献したとも言われています。

そんなX11の現在ですが、MITを離れてX.Orgという非営利団体が主に開発・メンテナンスを進めており、アップデートはリリースとして管理されています。
2018年現在は「X11R7」(バージョン11、リリース7)です。

また、Linuxの設定ファイルにある/etc/X11/xorg.confも、この団体名からきています。


使用例

X Window Systemが必要となる場面だと、例えばOracle製品のインストールなどがあります。
というのも、Oracleでは専用のインストーラであるOracle Universal Installerを起動するには、X Window Systemが利用できる環境が必要だからです。

同じような理由で、IBM製品におけるIBM Installation ManagerでもX Windows SystemがあればGUIベースで操作が可能です。


そのような場面では、リモートはUNIX系のサーバでローカルがWIndowsのパソコンとなる事が多いです。



X Windows Systemを使用するには、サーバ上にX11がインストールされている事 そして パソコン上にXサーバシステムがインストールされている事 が必要です。

Xサーバシステムはフリーソフトや商用ソフト含めて多々ありますが、大体の流れはSSHからのX11 forwardingだと思います。

TeratermなどのSSHクライアントにはX11転送機能がついているので、SSHを通してXアプリケーションを利用できます。

ssh -X

なんて引数もあるので興味がある方はぜひ調べてみてください。


大事な点ですがXプロトコル自体は暗号化がなされていないので、SSH接続を介してX Window Systemアプリケーションを利用するのが良いとされています。


X WIndow Systemを使う際のポイントは、サーバ側でDISPLAY変数を設定で、こちらにはローカルにいるパソコンのIPアドレスを入力します。

$ export DISPLAY=XX.XX.XX.XX:0.0 

これらの準備が完了すれば、例えばデフォルトでOSに付属しているのX11プログラム、例えばxclockコマンドを実行すれば、パソコンに以下のような窓が出現します。

f:id:mtiit:20181107231534j:plain

xclockはアナログ時計のフォーマットで時刻を表示してくれるXアプリなんだね


最後に

必要に迫られないとなかなか触れることのないシステムだとは思いますが、構成や用語などを頭に入れておくと良いかと思います。

以上です。