XSERVER(1) — NEWS-OS Programmer’s Manual
名称
Xserver − X ウィンドウシステムサーバ
形式
X [:displaynumber] [−option ...] [ttyname]
解説
X は、 X ウィンドウシステムサーバの一般名称です。 これは、大抵そのマシン上で最も頻繁に使用されるサーバのバイナリに対する リンクまたはそのコピーです。 MIT によるサンプルのサーバは、下記のプラットフォームをサポートします。
XqvssDigital monochrome vaxstationII or II
XqdssDigital color vaxstationII or II
XsunSun monochrome or color Sun 2, 3, or 4
XhpHP Topcat 9000s300
XibmIBM AED, APA and megapel PC/RT, 8514 and VGA PS/2 model 80
XapolloApollo monochrome or color (Domain/OS SR10.1 or SR10.2)
XmacIIApple monochrome Macintosh II
XcfbpmaxDigital color DECstation 3100
XmfbpmaxDigital monochrome DECstation 3100
XtekTektronix 4319 (this is the only tested configuration)
サーバの起動
サーバは、通常 X ディスプレイマネージャ xdm によって起動されます。 このユーティリティは、システムブートファイルから実行され、 サーバを起動し、ユーザ名とパスワードの入力を促して、 ユーザセッションを開始できるように処理します。 新規ユーザに対して良好な矛盾のないインターフェース を提供したいと考えている現場などが これらの構成を変更することは、容易にできます。
現在、xdm はサーバの自動起動をポータブルな方法で処理できるため、 xterm の −L オプションは時代遅れであると考えられています。 4.3bsd での、/etc/ttys ファイルによる ログインウィンドウの起動に対するサポートは削除されました。
複数の種類のウィンドウシステムを動かす場合は、 依然として xinit ユーティリティを使用する必要があります。 ただし、 xinit は起動スクリプトを作成するためのツールと考えるべきで、 エンドユーザが使用するためのものではありません。 現場のシステム管理者は、 新規ユーザのためにより優れたインターフェースを構築することを求められています。
サーバは起動されるとディスプレイを占有します。 コンソールがディスプレイとなっているワークステーション上では、 サーバが動作している間コンソールにログインすることはできません。
ネットワークコネクション
サンプルのサーバは、下記のリライアブルバイトストリームによる 接続をサポートします。
TCP/IP
サーバはポート htons(6000+n) 上で接続待ち (listen) します。 ここで、 n はディスプレイ番号です。
Unix Domain
サーバはソケットのファイル名として /tmp/.X11−unix/Xn を使用します。 ここで、 n はディスプレイ番号です。
DECnet
サーバは、オブジェクト X$Xn への接続に応答します。 ここで、 n はディスプレイ番号です。 これは全ての環境でサポートされているわけではありません。
オプション
サンプルのサーバは下記のコマンド行オプションを受け付けます。
−a number
ポインタの加速率を設定します (これは、実際にユーザが動かした量のうちどれだけをイベントとして 報告するかを比で表したものです) 。
−auth authorization-file
オーソリゼーションレコードを保持しているファイルを指定します。 認証をともなうアクセスで使用されます。
bc 前のリリースのバグと動作を一致させるため、ある種のエラーチェックを抑制します ( たとえば 、バグのある R2 や R3 の xterm や ツールキットが使えるように) 。
−bs すべてのスクリーン上でバッキングストアのサポートを抑制します。
−c キークリックをオフにします。
c volume キークリックの音量を設定します (範囲 : 0 〜 100) 。
-cc class カラースクリーンにおけるルートウィンドウのビジュアルクラスを設定します。 クラス番号は X プロトコルで指定されているものです。 全てのサーバがこれに従うわけではありません。
−co filename
RGB カラーデータベース名を設定します。
-dpi resolution
スクリーンの解像度を 1 インチ当たりのドット数で指定します。 サーバがハードウェアから解像度を決定できないときにだけ使うべきです。
−f volume
beep ( ベル ) 音量を設定します (範囲 : 0 〜 100) 。
−fc cursorFont
カーソルフォントのデフォルトを設定します。
−fn font
フォントのデフォルトを設定します。
−fp fontPath
フォント探索パスを設定します。 このパスはサーバがフォントデータベースを探すディレクトリを コンマで区切って並べたものです。
−help オプションの簡単な説明を表示します。
−I 以後のコマンド行引数を無視します。
−ld kilobytes
サーバのデータ領域の限界をキロバイト単位で設定します。 デフォルト値はゼロであり、データサイズを可能なかぎり大きくとります。 値が −1 のときはデータ領域の限界を変更しません。 このオプションはすべてのオペレーティングシステムで使用できるとは限りませんん。
−ls kilobytes
サーバのスタック領域の限界をキロバイト単位で設定します。 デフォルト値はゼロであり、スタックサイズを可能なかぎり大きくとります。 値が −1 のときはスタック領域の限界を変更しません。 このオプションはすべてのオペレーティンクシステムで使用できるとは限りませんん。
−logo スクリーンセーバが X ウィンドウシステムのロゴを表示するようにします。 今のところこれをクライアントから変更する手段はありません。
nologo スクリーンセーバが X ウィンドウシステムのロゴを表示しないようにします。 今のところこれをクライアントから変更する手段はありません。
−p minutes
スクリーンセーバのパターンの繰り返し周期を分単位で指定します。
−r オートリピートをオフにします。
r オートリピートをオンにします。
−s minutes
スクリーンセーバのタイムアウト時間を分単位で指定します。
−su すべてのスクリーン上でセーブアンダーを抑制します。
−t number
ポインタ加速のしきい値をピクセル単位で指定します (一度に何ピクセル以上動かした時にポインタ加速が行われるか) 。
−to seconds
接続のタイムアウトのデフォルトを秒単位で設定します。
v ビデオオンのスクリーンセーバを用いるようにします。
−v ビデオオフのスクリーンセーバを用いるようにします。
−wm バッキングストアのデフォルトをすべてのウィンドウに対して WhenMapped にします。 これはすべてのウィンドウでバッキングストアを有効にする簡単な方法です。
−x extension
初期化時に指定されたエクステンションをロードします。 ほとんどの実装ではサポートされていません。
XDMCP を利用して xdm に接続する X サーバもあります。 これは xdm にサーバプロセスを扱うことを許していないことから、 一般的には有用ではありませんが、 XDMCP の実装のデバッグに使えるうえ、 XDMCP のサーバ側の実装例として役に立ちます。 このプロトコルの詳細な情報については /usr/doc/X11/XDMCP/xdmcp.ms の XDMCP specification を参照して下さい。 以下のオプションは XDMCP の動作を制御します。
−query host-name
XDMCP を有効にし、指定されたホストへ Query パケットを送出するようにします。
−broadcast
XDMCP を有効にし、 ネットワーク上に BroadcastQuery パケットをブロードキャストするようにします。 最初に応答したディスプレイマネージャが選択されます。
−indirect host-name
XDMCP を有効にし、 指定されたホストへ IndirectQuery パケットを送出するようにします。
−port port-num
XDMCP パケット用のポート番号を変更します。 指定は、オプション −query 、−broadcast 、−indirect のいずれよりも 前になければなりません。
−once 通常、サーバはセッションの終了後セッションの開始状態を維持しますが、 このオプションは最初のセッションの完了でサーバを終了するようにします。
−class display-class
XDMCP にはディスプレイ依存のオプション用に、 リソース検索で用いられる付加的なディスプレイ修飾子があります。 このオプションはこの修飾子の値を設定します。 デフォルトの値は "MIT-Unspecified" です。 (非常に便利な値というわけではない)
−cookie xdm-auth-bits
XDM-AUTHENTICATION-1 の検査が行われる間、 サーバとマネージャの間でプライベートキーが共有されますが、 このオプションはプライベートデータの値を設定します。
−displayID display-id
もう一つの XDMCP 特有の値で、 共有キーのある場所を見つけるために、 ディスプレイマネージャによる個々のディスプレイの識別を可能にします。
ほとんどのサーバはまた、装置固有のコマンド行オプションをもっています。 詳細については、個々のサーバに対するマニュアルを参照してください。
セキュリティ
サンプルサーバは MIT-MAGIC-COOKIE-1 という 極めて単純な認証プロトコルを実装しています。 これは、サーバとオーソライズされたクライアントとのあいだで 公開されないデータを用いるもので、 サーバの持っているオーソリゼーションデータと同じものを送ってきた クライアントにアクセスを許可するという、ごく単純なものです。 この機構は、 どんなホストでも接続できるような保護されないネットワーク環境では、 プライベートなキーを発見されてしまったような場合、 ホストベースのアクセス制御より良いものではありません。 しかしながら多くの環境では、 ホスト単位でなくユーザ単位のアクセス制御ができるという点で、 ホストベースの機構よりも好ましいものです。
加えて、サーバは DES に基づいたオーソリゼーション機構のサポートを提供します。 これはより安全(安全なキー配布機構をもっている)ですが、 DES のように一般に配布可能でない実装で、 オーソリゼーションデータを暗号化/復号化するためのルーチンは欠けています。 このオーソリゼーション機構は XDMCP の XDM-AUTHENTICATION-1 と組み合わせて、 あるいは別々で用いることが可能です。
オーソリゼーションデータは、コマンド行オプション -auth によって指定される プライベートなファイルを通じてサーバに渡されます。 サーバリセット(あるいはサーバ起動時)後の 最初のコネクションの受付けを行うときに、毎回このファイルが読込まれます。 もしこのファイルに何らかのオーソリゼーションレコードが含まれていると、 そのローカルホストからのサーバに対するアクセスが、 自動的に許可されることはありません。 コネクションセットアップ情報で指定されたファイルに含まれる オーソリゼーションレコードのうちのひとつを送ってきたクライアントのみが アクセスを許されます。 このファイルのバイナリフォーマットに関する記述は Xau の マニュアルページを参照して下さい。 このファイルの維持と、その内容のリモートサイトへの配布については ここでは触れません。
サンプルのサーバはまた、特定のマシン上のクライアントからの接続を受け付ける か否かを決定するためのホストベースのアクセス制御リストも使用します。 このリストは、はじめサーバが動作しているホストならびにファイル /etc/Xn.hosts 内にリストされているホストで構成されます ( ここで、 n はサーバのディスプレイ番号です ) 。 ファイルの各行には、Internet のホスト名 ( 例 : expo.lcs.mit.edu) または 2 重コロンフォーマットの DECnet ホスト名 ( 例 : hydra::) の どちらかが含まれていなければなりません。 どの行にも、行頭または行末に余分な空白文字があってはなりません。 以下に例を示します。
joesworkstation
corporate.company.com
star::
bigcpu::
ユーザはこのリストに対しホストを追加したり削除したりできます。 また、サーバと同じマシンから xhost コマンドを使用して アクセスを可能にしたり不可能にしたりすることができます。 以下に例を示します。
% xhost +janesworkstation
janesworkstation をアクセス制御リストに追加
% xhost −star::
star:: をアクセス制御リストから削除
% xhost +
すべてのホストにたいしてアクセスを許可 ( アクセス制御無効 )
% xhost −
すべてのホストからのアクセスを禁止 ( アクセス制御有効 )
% xhost
現在のアクセス制御の状態の表示
出力例
access control enabled (only the following hosts are allowed)
joesworkstation
janesworkstation
corporate.company.com
bigcpu::
いくつかのウィンドウシステムとは違って、 X はウィンドウオペレーションの許可という考えはなく、 また、クライアントが行えることに対する制限も設けていません。 プログラムはディスプレイに接続できさえすれば、 スクリーンに対して全てのことが実行できます。 より優れたオーセンティケーション ( 認証 ) およびオーソリゼーション システム ( Kerberos のような ) をもっている現場では、 ライブラリ内のフックを使用し、 サーバが付加的な保護モデルを備えるようにすることもできるでしょう。
シグナル
サンプルのサーバは、下記のシグナルに対して特別な意味を付加します。
SIGHUP このシグナルで、サーバはあらゆる既存の接続をクローズし、すべてのリソースを 解放し、デフォルトを復元します。 これは、メインユーザのメインアプリケーション ( 通常は xterm またはウィンドウマネージャ ) が終了した時、 次のユーザに対する準備を行うために ディスプレイマネージャによって送信されます。
SIGTERM
このシグナルは、サーバを問題なく終了させます。
SIGUSR1
このシグナルは前述のものと全く異なるかたちで使用されます。 サーバは実行開始時に、SIGUSR1 が 通常の SIG_DFL でなく SIG_IGN を 引き継いでいるかどうかチェックします。 そのようになっているときには、 サーバは種々のコネクション機構を設定したあと、 その親プロセスに対してシグナル SIGUSR1 を送ります。 xdm はこの機構を利用して、サーバへの接続が可能かどうかを認識します。
フォント
フォントは通常ディレクトリ内に個々のファイルとして保持されます。 フォントをオープンするときにサーバが見るディレクトリのリストは、 フォントパスによって制御されます。 ほとんどの現場では適切なフォントパスを使用してサーバを起動させる ( 上述の −fp オプションを使用して ) ことを選択するでしょうが、 xset プログラムを使用してそれをオーバライドすることができます。
サンプルのサーバに対するデフォルトのフォントパスには、次の 3 つの ディレクトリが含まれます。
/usr/lib/X11/fonts/misc
このディレクトリには、あらゆるシステムで利用できるさまざまなフォントが 含まれます。 これには、非常に小さい固定幅フォントのファミリー (6x10、6x12、6x13、8x13、8x13bold、 9x15)、 とカーソルフォントが含まれます。 これにはまた、一般的に使用されるフォント fixed と variable に 対する別名も含まれています。
/usr/lib/X11/fonts/75dpi
このディレクトリには、Adobe Systems 社と Digital Equipment 社および Bitstream 社が開発した、インチあたり 75 ドットのディスプレイ用 フォントが含まれます。 各ファミリー別に、 選りすぐられたサイズ、スタイル、太さのフォントが提供されています。
/usr/lib/X11/fonts/100dpi
このディレクトリは、75dpi デイレクトリ内のフォントの、 インチあたり 100 ドットのディスプレイ用バージョンが含まれています。
フォントデータベースは、mkfontdir プログラムを、 コンパイルされたフォント(.snf ファイル)を含むディレクトリで 実行することによって作成されます。 フォントがディレクトリに追加されたときは、必ず mkfontdir を 再実行してサーバが新しいフォントを見つけることができるようにしなければ なりません。 mkfontdir が実行されないと、 サーバはディレクトリ内のどのフォントも見つけることができません。
診断
数が多過ぎるので、ここではすべては記載できません。 init(8) から起動された場合は、エラーはファイル /usr/adm/X∗msgs 内に 記録されます。
関連ファイル
/etc/X∗.hosts 初期アクセス制御リスト
/usr/lib/X11/fonts/{misc,75dpi,100dpi}
フォントディレクトリ
/usr/lib/X11/rgb.txt カラーデータベース
/tmp/.X11-unix/X∗ Unix ドメインソケット
/usr/adm/X∗msgs エラーログファイル
関連事項
X(1), xdm(1), mkfontdir(1), xinit(1), xterm(1), twm(1), xhost(1), xset(1), xsetroot(1), ttys(5), init(8), Xnews(1) X Window System Protocol, Definition of the Porting Layer for the X v11 Sample Server, Strategies for Porting the X v11 Sample Server, Godzilla’s Guide to Porting the X V11 Sample Server
バグ
オプションのシンタックスは、 xset(1) と一致していません。
加速オプションは、プロトコルのように分子と分母をとるべきです。
X がそのクライアントより前に終了した場合は、既存の接続のすべてが そのの TCP TIME_WAIT タイマーを終了しない限り新しいクライアントは 接続を行うことができません。
カラーデータベースは、大多数の色を欠きます。 ただし、個々のディスプレイに合わせることのできる RGB 値を生成できる もっと良いものがあるとは考えられません。
著作権
Copyright 1984, 1985, 1986, 1987, 1988, 1989, Massachusetts Institute of Technology.
権利と許可の声明文に関しては、 X(1) を参照のこと。
著者
サンプルのサーバは、多くの人の援助を受けて DEC の Susan Angebranndt, Raymond Drewry, Philip Karlton, および Todd Newman によって書かれました。 さらに MIT の Keith Packard と Bob Scheifler によって 広範にわたって書き換えられました。
NEWS-OSRelease 4.1C