LPIC-1 - 102試験 - 106:ユーザインターフェイスとデスクトップ - 106.1 X11のインストールと設定

Last Update : September 18 2014 21:34:20

     

a. X Window System の概要

LinuxやUnixではGUIを実現するためにX Window System(X, X11)が使われています。
Linuxではフリーの X Window System として XFree86 が採用されていましたが、ライセンスの関係で現在は X.Org が主流となっています。

X は最初からネットワークを意識してデザインされており、 「クライアント - サーバ」 モデルを採用しています。

X では、「X サーバ」 はキーボードやモニタ、 マウスが接続されたコンピュータ上で動かし、ハードウェアの管理を行います。 このX サーバはディスプレイの表示を管理したり、キーボード、 マウスからの入力を処理したり、他の入出力装置 (すなわち、入力装置として “タブレット” を利用できますし、 出力装置としてビデオプロジェクタを利用することもできます) を取り扱います。 各 X アプリケーション (XTerm や Firefox など) は 「X クライアント」 になります。 クライアントは 「この座標にウィンドウを描いてください」 といったメッセージをサーバへ送り、サーバは 「ユーザが ENTER キーを押しました」 といったメッセージを送り返します。

家庭や小さなオフィスのような環境では、X サーバと X クライアントは同じコンピュータ上で動くことになります。 しかし、X サーバを非力なデスクトップコンピュータで動かし、 X アプリケーション (クライアント) は、例えばオフィス全体で使うような高機能で高価なマシン上で動かすことも可能です。この場合、 X クライアント と X サーバ の通信はネットワークを通じて行なわれます。

X サーバとはモニタとキーボードがついているマシンのことであり、 X クライアントとはウィンドウを表示するプログラムです。
「クライアント」が自分たちのデスク上にあり、サービスを提供する離れた場所のマシンが「サーバー」となっている一般的なクライアント-サーバーモデルとは、反対になっているので注意してください。

X サーバ
ユーザのディスプレイや入力デバイスが接続されたローカルホスト上で実行されるプログラム
X クライアント
データを処理し X サーバへ話しかけるリモートホスト上で実行されるプログラム
アプリケーションサーバ
データを処理しクライアントへ話しかけるリモートホスト上で実行されるプログラム
アプリケーションクライアント
ユーザのディスプレーや入力デバイスが接続されたローカルホスト上で実行されるプログラム

b. X Window System の設定(X.Org)

1. Xサーバ設定ファイル

Xサーバとその関連設定ファイルは/etc/X11/ディレクトリ内にあります。
Xサーバ用の設定ファイルは/etc/X11/xorg.confです。xorg.confにはキーボード・マウス・モニター・フォント・ディスプレイの解像度などの設定ができます。

Linux インストール直後では、/etc/X11/xorg.conf ファイルは存在しません。下記のコマンドで作成します。

# Xorg -configure

実行すると、/root/xorg.conf.new が作成されるので、/etc/X11 下に xorg.conf としてコピーします。


1. xorg.confの構造

/etc/X11/xorg.confのファイルは、異なるセクションの集まりで構成されています。
各セクションは Section "<セクション名>" 行で始まり、EndSection行で終了します。

各セクションは複数のエントリ行からなります。
エントリは、オプション名と少なくとも1つのオプション値からなります。

いくつかのオプションはブール値をとり、これが機能のオンとオフの切り換えをします。
1、on、true、yes 等の値はオプション機能をオンにします。
0、off、false、no 等の値はオプション機能をオフにします。

#マークで始まる行はコメントとして使用されます。


ServerFlags

ServerFlagsセクションではグローバルなX サーバ設定を行います。
このセクションの設定はServerLayoutセクションにあるオプションで上書きされます。
ServerFlagsセクション内の各エントリは、Optionで始まりその後に2重引用符(")で囲まれたオプションが続きます。

● ServerFlagsセクションの例
Section "ServerFlags" Option "DontZap" "true" EndSection

[ ServerFlagsセクションで使用されるエントリ ]
"DontZap" "<boolean>"
<boolean>の値が、「true」の場合、X サーバを直ちに停止するような[Ctrl]-[Alt]-[Backspace]キーの使用を禁止します。
"DontZoom" "<boolean>"
<boolean>の値が、「true」の場合、 [Ctrl]-[Alt]-[Keypad-Plus]キーの 使用と、[Ctrl]-[Alt]-[Keypad-Minus]キーを 使用した、設定済のビデオ解像度を切り換える操作を禁止します。

ServerLayout

ServerLayoutセクションは、Xサーバで制御される入力/出力用のデバイスを定義します。
最低でもこのセクションは1つの出力デバイス(スクリーン)と2つの入力デバイス(キーボードとマウス)を指定します。

● ServerLayoutセクションの例
Section "ServerLayout" Identifier "Default Layout" Screen 0 "Screen0" 0 0 InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" EndSection

[ ServerLayoutセクションで使用されるエントリ ]
Identifier
このServerLayoutセクション用の独自の名前を指定します。
Screen
X サーバで使用されるScreenセクションの名前を指定します。
Screenの右の0は、最初のモニタコネクタをScreenセクション識別子"Screen0"で使用することを示しています。
"Screen0"の右の番号0 0は、画面の左上に使うXとYの絶対座標です。
InputDevice
InputDeviceセクションの名前を指定します。
少なくとも2つのInputDeviceエントリが必要です。
1つはデフォルトのマウスで、もう1つはデフォルトのキーボードです。
オプションのCorePointerとCoreKeyboardはこれらが主要なマウスとキーボードであることを示します。
Option "<option-name>"
このセクションのエクストラパラメータを指定するオプションのエントリです。
ここに書かれているエントリーは ServerFlagsセクションに書かれているものを上書きします。
option-name には、xorg.confの manページに記載されている、このセクションに有効なオプションを書きます。

Files

Filesセクションは、X サーバへのサービス用パスを設定します。

● Filesセクションの例
Section "Files" RgbPath "/usr/X11R6/lib/X11/rgb" FontPath "unix/:7100" EndSection

[ Filesセクションで使用されるエントリ ]
RgbPath
RGBカラーデータベースの場所を指定します。
このデータベースは X の全ての有効なカラー名を定義し、それを特定の RGB値と結合させます。
FontPath
X サーバが、xfsフォントサーバーからフォントを取り出す為に接続する必要のある場所を指定します。
デフォルトで、FontPathはunix/:7100です。
これは、X サーバに対して、ポート7100にあるIPC(inter-process communication)用の UNIXドメインソケットを使用してフォント情報を得るように指定します。
ModulePath
オプションのパラメータで、X サーバモジュールを保存する代替のディレクトリを指定します。

Module

Moduleは、X サーバがロードする予定の/usr/X11R6/lib/modules/ディレクトリ内のモジュールを指定します。 モジュールはXサーバに追加の機能を与えます。

● Moduleセクションの例
Section "Module" Load "dbe" Load "extmod" Load "fbdevhw" Load "glx" Load "record" Load "freetype" Load "type1" Load "dri" EndSection


InputDevice

各InputDeviceセクションは X サーバに対して1つの入力デバイスを設定します。 システムには最低でも2つのInputDeviceセクション(キーボードとマウス)が必要です。

● InputDeviceの例
Section "InputDevice" Identifier "Mouse0"  <--- マウス用 Driver "mouse" Option "Protocol" "IMPS/2" Option "Device" "/dev/input/mice" Option "Emulate3Buttons" "no" EndSection Section "InputDevice" Identifier "Keyboard0"  <--- キーボード用 Driver "kbd" Option "XkbModel" "jp106"  <--- 日本語106キーボード Option "XkbLayout" "jp"  <--- 日本語配列 EndSection

[ InputDeviceセクションで使用されるエントリ ]
Identifier
InputDeviceセクションの独自の名前を指定します。
Driver
デバイス用に X がロードする必要のあるデバイスドライバの名前を指定します。
Option
そのデバイスに関係する必要なオプションを指定します。
マウスには次のようなオプションが必要になります。
  • Protocol
    IMPS/2など、マウスで使用するプロトコルを指定します。
  • Device
    物理デバイスの場所を指定します。
  • Emulate3Buttons
    2つのマウスボタンを同時に押した時に3ボタンマウスのように動作させるかどうか指定します。

Monitor

各Monitorセクションでシステムによって使用されるモニタのタイプを1つ設定します。
1つのMonitorセクションは 最低限必要ですが、マシンによって使用される各モニターの追加の設定も可能です。

● Monitorセクションの例
Section "Monitor" Identifier "Monitor0" VendorName "Monitor Vendor" ModelName "Monitor Model Name" DisplaySize 320 240 HorizSync 30.0 - 70.0  <--- 水平走査周波数 VertRefresh 50.0 - 180.0  <--- 垂直同期周波数 EndSection

[ Monitorセクション使用されるエントリ ]
Identifier
このMonitorセクションを識別させるための名前を指定します。
VendorName
モニタのベンダを指定するオプションのパラメータです。
ModelName
モニタのモデル名を指定するオプションのパラメータです。
DisplaySize
モニタの表示面積をミリメータで指定するオプションのパラメータです。
HorizSync
モニタの水平同期周波数の幅をkHz単位で指定します。
VertRefresh
モニタでサポートされている垂直リフレッシュ周波数の幅をkHz単位で指定します。

Device

各Deviceセクションでシステム上のビデオカード1つを設定します。
最低1つのDeviceセクションが必要ですか、マシン上にインストールされている各ビデオカードの為に追加の設定も可能です。

● Deviceセクションの例
Section "Device" Identifier "Videocard0"  <--- ビデオカードの設定 Driver "mga" VendorName "Videocard vendor" BoardName "Videocard Name" VideoRam 8192 Option "dpms" EndSection

[ Deviceセクションで使用されるエントリ ]
Identifier
このDeviceセクション用の独自の名前を指定します。
Driver
ビデオカードを使用するためにX サーバがロードする必要のあるドライバを指定します。
hwdataパッケージでインストールしてある/usr/X11R6/lib/X11/Cardsの中にドライバの一覧があります。
VendorName
ビデオカードのベンダを指定するオプションのパラメータです。
BoardName
ビデオカードの名前を指定するオプションのパラメータです。
VideoRam
ビデオカード上で利用できる RAMの容量をキロバイトで指定するオプションのパラメータです。
この設定は X サーバーがビデオRAM の容量を検出できなかった時にのみ必要です。
BusID
ビデオカードバスの位置を指定するオプションのパラメータです。
Screen
Deviceセクションが設定するビデオカード上のモニタコネクタを指定するオプションのエントリです。
Option "<option-name>"
このセクションのエクストラパラメータを指定するオプションのエントリです。
一般的なオプションの1つは"dpms"で、モニタのService Star省電力規定機能を起動させます。

Screen

各Screenセクションでは、1つのビデオカードを、DeviceセクションとMonitorセクションを参照することにより1つのモニタに結合します。

● Screenセクションの例
Section "Screen" Identifier "Screen0" Device "Videocard0" Monitor "Monitor0" DefaultDepth 16 SubSection "Display" Depth 24  <--- 色深度24ビットカラー Modes "1280x1024" "1280x960" "1152x864" "1024x768" "800x600" "640x480" EndSubSection SubSection "Display" Depth 16  <--- 色深度24ビットカラー Modes "1152x864" "1024x768" "800x600" "640x480" EndSubSection EndSection

[ Screenセクションの エントリ ]
Identifier
このScreenセクションを識別するための名前を指定します。
Device
Deviceセクションの識別名を指定します。
Monitor
Monitorセクションの識別名を指定します。
DefaultDepth
デフォルトの色の深さをビットで指定します。
SubSection "Display"
特定の色の深さで利用できるスクリーンモードを指定します。
Screenセクションは複数のDisplayサブセクションを使用できます。
DefaultDepthエントリで指定した色の深さ用に1つのDisplayサブセクションが必要になります。

DRI

オプションのDRIセクションは、DRI(Direct Rendering Infrastructure)用のパラメータを指定します。
DRI は、最新のビデオハードウェアに組込みの3Dハードウェア高速化機能 の利点を3Dソフトウェアアプリケーションが利用できるようにするインターフェースです。 また、DRIは、ビデオカードドライバでサポートされていれば、 ハードウェア高速化から2Dのパフォーマンスも向上させることができます。

● DRIセクションの例
Section "DRI" Group 0 Mode 0666 EndSection



c. X Window System の操作

1. ネットワーク経由でのX Window Systemの利用

X Window SystemはクライアントとサーバがXプロトコルで通信するネットワーク型のウィンドウシステムであり、この特徴を生かしてクライアントプログラムをリモートホストで実行し、ローカルホスト上のXサーバで表示や操作をすることができます。

ローカルホストになくリモートホスト上にあるアプリケーションをローカルホストで表示・操作したり、高速なリモートホスト上で演算主体のアプリケーションを実行して表示・操作をローカルホストで行うことができます。

a. Xサーバ側での作業(ローカル)

1. xhostコマンドを実行して、Xクライアントホスト(リモート)からのアクセスを許可します。
(Xサーバ接続許可リストに追加します。)

# xhost +Xクライアントホスト名
  

・すべてのクライアントからのアクセスを許可する場合:xhost +
・特定クライアントからのアクセスを許可する場合:xhost +Xクライアントホスト名
・特定クライアントからのアクセスを取り消す場合:xhost -Xクライアントホスト名


b. Xクライアント側での作業(リモート)

1. Xクライアント(リモート)側の環境変数DISPLAYにXサーバを指定します。

$ DISPLAY=Xサーバ名:0.0 $ export DISPLAY

Xサーバ名、又はXサーバのIPアドレスを指定します。
書式:  DISPLAY=ホスト名:ディスプレイ番号.スクリーン番号
左側の 0 はディスプレイ番号のことです。ディスプレイ番号は通常 0 です。
右側の 0 はスクリーン番号です。これも通常 0 です。

2. Xクライアント側でアプリケーションを起動します。

$ xclock &

xclockの表示がXサーバ側に表示されます。


2. X Window System の開始

X Window System を開始するには、ランレベル 3 の状態のときには、startx コマンドを実行します。 その後の起動の流れは以下のようになります。

  1. startx コマンド投入
     ↓
  2. xinit コマンドを呼び出し、実行します
     ↓
  3. ユーザーのホームディレクトリ内の .xinitrc ファイルを検索して、デスクトップ環境を定義し、実行すべき他の X クライアントアプリケーションも定義します。
    .xinitrcファイルがない場合、システムデフォルトの/etc/X11/xinit/xinitrcファイルを代わりに使用します。
     ↓
  4. デフォルトのxinitrcスクリプトは、その後ユーザーのホーム ディレクトリ内で.Xresources、.Xmodmap、及び .Xkbmapなど、/etc/X11/ディレクトリ内でXresources、Xmodmap、及び Xkbmapを含む、ユーザー定義のファイルやデフォルトのシステムファイルを探します。
    存在していれば、XmodmapとXkbmapは、xmodmapユーティリティに使用されて、キーボードを設定します。Xresourcesファイルが、アプリケーションに対する特定のユーザー設定値を割り当てる為に読み込まれます。
     ↓
  5. これらのオプションの設定の後は、xinitrcスクリプトが /etc/X11/xinit/xinitrc.d/ディレクトリに置かれている全てのスクリプトを実行します。このディレクトリの重要なスクリプトの1つはデフォルト言語の設定などの構成をするxinputです。
     ↓
  6. xinitrcスクリプトは、ユーザーのホームディレクトリ内の .Xclientsを実行しようとして、それがない場合には /etc/X11/xinit/Xclientsへ向かいます。
    Xclients の目的はデスクトップ環境を、または単に基本のウィンドウマネージャを起動するためです。ユーザーのホームディレクトリ内の.Xclients スクリプトは .Xclients-default ファイルにあるユーザー指定のデスクトップ環境を起動します。
    ユーザーのホームディレクトリ内に.Xclientsがなければ、標準の/etc/X11/init/Xclientsスクリプトがもう1つのデスクトップ環境を開始する試みをします。GNOMEを最初に試し、次にKDE、そしてtwmと続きます。
     ↓
  7. ウィンドウマネージャが開始され、グラフィカル画面でのコンピュータの利用が可能になります。

3. xwininfo コマンド

X のウィンドウ情報を表示するユーティリティです。

● xwininfo コマンド構文
  xwininfo [オプション]

● xwininfo コマンドオプション
 -ididを表示する
このオプションを使うことで、ユーザはマウスを使わずに、コマンド行から対象となるウィンドウを指定することができる。指定されるのは、ウィンドウIDが id であるウィンドウである。 このオプションは、対象となるウィンドウがスクリーンにマップされなかったり、マウスの使用が不可能あるいはアプリケーションに干渉されるような、X アプリケーションのデバッグの際に便利である。
 -tree全ての子ウィンドウも表示する
 -rootrootウィンドウの情報を得る
 -stats指定したウィンドウに関する位置や外見についての属性が表示される。(オプション省略時のデフォルト)

$ xwininfo xwininfo: Please select the window about which you would like information by clicking the mouse in that window. . xwininfo: Window id: 0x180002e "デスクトップ" . Absolute upper-left X: 0 Absolute upper-left Y: 0 Relative upper-left X: 0 Relative upper-left Y: 0 Width: 1024 Height: 768 Depth: 24 Visual Class: TrueColor Border width: 0 Class: InputOutput Colormap: 0x20 (installed) Bit Gravity State: NorthWestGravity Window Gravity State: NorthWestGravity Backing Store State: NotUseful Save Under State: no Map State: IsViewable Override Redirect State: no Corners: +0+0 -0+0 -0-0 +0-0 -geometry 1024x768+0+0

4. xdpyinfo コマンド

Xサーバーのディスプレイ情報を表示するコマンドです。
Xサーバに関するディスプレイ情報を表示するユーティリティです。このプログラムは、サーバの機能、クライアントとサーバ間の通信で使われる各種パラメータの既定値、利用可能なスクリーンやビジュアルのタイプを調べることができます。

● xdpyinfo コマンド構文
  xdpyinfo [オプション]

● xdpyinfo コマンドオプション
 -ext all詳細情報を表示する

$ xdpyinfo name of display: :0.0 version number: 11.0 vendor string: The X.Org Foundation vendor release number: 60802000 X.Org version: 6.8.2 maximum request size: 16777212 bytes (以下省略)



d. X フォントサーバ(xfs)

X サーバーは、/etc/X11/xorg.conf設定ファイルのFilesセクション内のFontPathディレクティブに指定してあるフォントサーバーを探します。
X サーバーは、指定のポート上でxfsサーバーに接続し、フォント情報を取得します。この理由から、X がスタートするためにxfsサービスは実行中でなければなりません。


1. Xフォントサーバ設定

/etc/rc.d/init.d/xfs スクリプトは xfs サーバーを開始します。
設定ファイル、/etc/X11/fs/config の中で各オプションが設定できます。

次は一般的なオプションの一覧です:

alternate-servers
このフォントサーバーが利用できない場合に、使用する代替フォントサーバーの一覧を指定します。 一覧内の各フォントサーバーはカンマで区切る必要があります。
catalogue
使用するフォントパスの順番の一覧を指定します。一覧内の各フォントパスはカンマで区切る必要があります。
フォントパスの直後に文字列:unscaledを使用して、そのパス内の無倍率のフォントを最初にロードさせます。その後全体のパスを再度指定すると、他の倍率付きのフォントもロードされるようになります。
client-limit
そのフォントサーバーが処理するクライアントの最大数を指定します。デフォルトは10です。
clone-self
client-limitが打ち込まれた時、フォントサーバーにそれ自身の新しいバージョンをクローンできる様にします。デフォルトでは、このオプションはonです。
default-point-size
この値を指定しないフォント用にデフォルトのフォントを指定します。このオプションの値はデシポイントで設定してあります。 デフォルトの120は、12ポイントのフォントに相当します。
default-resolutions
X サーバーによりサポートされている解像度のリストを指定します。リスト内の各解像度はカンマで区切る必要があります。
deferglyphs
glyphs (フォントを可視的に表示する為に使用されるグラフィックス)を遅延させるかどうか指定します。この機能を無効にするにはnoneを使用し、全ての フォント用にこの機能を有効にするにはallを使用し、またこの機能を16ビットフォント用にのみ有効にするには16を 使用します。
error-file
xfs のエラーが記録された場所のパスとファイル名を指定します。
no-listen
xfsが特定の プロトコルをリッスンしないように防止します。デフォルトでは、このオプションは tcpに設定されており、セキュリティの目的で xfsがTCPポートをリッスンしないようにしています。
※ネットワーク上でフォントを処理するためにxfsを使用する場合は、 この行を削除します。
port
no-listenが存在しない、 又はそれがコメントアウトしてある場合、xfsがリッスンする TCPポートを指定します。
use-syslog
システムエラーログを使用するかどうかを指定します。

2. Xフォントサーバへフォントの追加

コア X フォントサブシステム(xfs)にフォントを追加するには、 次の手順で行います。

1. /usr/share/fonts/local/ディレクトリがなければ、ルートで作成します。

# mkdir /usr/share/fonts/local/

/usr/share/fonts/local/ディレクトリの作成が必要な場合、次のコマンドをルートで入力してディレクトリをxfsのパスに追加します。

# chkfontpath --add /usr/share/fonts/local/

2. 新しいフォントファイルを/usr/share/fonts/local/ ディレクトリにコピーします。

3. ルートとして次のコマンドを発行して、フォント情報を更新します。

# ttmkfdir -d /usr/share/fonts/local/ -o /usr/share/fonts/local/fonts.scale

4. root になり次のコマンドを発行してxfsフォントサーバーを再ロードします。

# service xfs reload


e. ウィンドウマネージャの概要

Xの1つの特徴としてウィンドウに関する見た目、操作などをXサーバは管理していないということがあげられます。これはXサーバが行う仕事はマウス、キーボードなどからのイベント通知、ウィンドウの座標位置、高さ、幅などの描画に関する情報の管理であって、ウィンドウの見た目、移動、サイズ変更などはXクライアントによって提供されるものであるという考えのためです。つまりX Window Systemという仕組みはウィンドウの表現方法を自身ではもっていないということになり、表現をXクライアントというかたちで自由に実現できることを意味しています。このような複数のウィンドウの概観や操作に関する管理を行うのがXクライアントであるウィンドウマネージャです。

ウィンドウマネージャはウィンドウ周りの機能を提供する X クライアントです。ウィンドウマネージャはアプリケーションの外観を操作します: ボーダー、タイトルバー、サイズ、ウィンドウのリサイズ機能などはウィンドウマネージャによって管理されます。



z. 出題範囲概要

●主要な知識範囲
Xサーバがビデオカードおよびモニターをサポートしていることを確認する
Xフォントサーバについての知識
Xの構成ファイルについての基本的な理解と知識
●重要なファイル、用語、ユーティリティ
/etc/X11/xorg.conf, xhost, DISPLAY, xwininfo, xdpyinfo, X


  [ 例題 ] 
  1. 102:106.1 問01  DISPLAY環境変数
  2. 102:106.1 問02  Xが動作しないときの対応
  3. 102:106.1 問03  X Window System
  4. 102:106.1 問04  Xサーバ


     

www.it-shikaku.jp