  SVR4 ユーザのための情報
  The XFree86 Project, Inc 著
  野村高明 (Takaaki Nomura) 訳
  1998 年 2 月 27 日 (1998 年 3 月 1 日訳)

  注意: アクセラレーションがサポートされたサーバをお使いになる場合は、10
  節をお読みになり、書いてあることに従って下さい。そうしないと、X サーバ
  を終了させたり、再起動したり、仮想端末の切替えを行なったりした時に、X
  サーバはクラッシュするかもしれません。

  1.  XFree86 がテストされている SVR4 のバージョン

  XFree86 は、次のバージョンの SVR4 上でテストされています。

  SVR4.0

  o  Microport: 2.2, 3.1, 4.1, 4.2
  o  Esix: 4.0.3A, 4.0.4, 4.0.4.1
  o  Dell: 2.1, 2.2, 2.2.1
  o  UHC: 2.0, 3.6
  o  Consensys: 1.2
  o  MST: 4.0.3
  o  AT&T: 2.1, 4.0
  o  ISC: 4.0.3
  o  NCR: MP-RAS
  o  PANIX: 5.0

  SVR4.2

  o  Consensys
  o  Novell/SCO UnixWare 1.x, 2.0

  基本的に、XFree86 の SVR4 用バイナリは、ISA、EISA、MCA プラットフォー
  ム上のいかなる SVR4.0(Solaris 2.x は例外) あるいは SVR4.2 上でも無変更
  で動作するでしょう。このリストに載っていない SVR4 上で XFree86 をお使
  いであれば、そのことを我々に知らせて下さい。

  2.  VT-switch のホットキーの対処方法

  VT-switch(仮想端末の切り替え) のホットキーに関しては、いくつかのバー
  ジョンの SVR4(Esix, Microport) は、2 キー・シーケンス (Alt-Fn) を可能
  にするメカニズムを持っています。標準的な SVR4 のメカニズムは、Alt-
  SysReq-Fn です。X を走らせると、Alt-Fn シーケンスは、サーバが見るより
  も先にドライバが横取りしてしまい、X のアプリケーションでそれを使うこと
  はできません。そこで、X を走らせている時は、標準的な 3 キー・シーケン
  スに戻ることになるでしょう。これへの対処の仕方は、次の通りです。

     Microport
        Microport のやり方は非常に単純です。2 キー・モードは"Microport
        Mode"、3 キー・モードは"Compatible Mode" と呼ばれています。
        Microport Mode には Alt-SysReq-m で、Compatible Mode には Alt-
        SysReq-c で入れます。X のクライアントが Alt-Fn シーケンスにアク
        セスするのを可能にするためには、X サーバを起動後、Alt-SysReq-c
        を入力するだけでいいのです。

     Esix
        Esix にはモード切り替えをするキー・シーケンスはありません。それ
        は、次の 2 レベルで行ないます。

        1. どちらのモードをデフォルトにするかを決めるカーネルパラメータ
           があります。カーネルパラメータは、/etc/conf/pack.d/kd/space.c
           における kd_2keysw の初期化で、それを 1(デフォルト) にする
           と、2 キー・モードになり、0 にすると、それが disable されま
           す。

        2. モードは、各々の VT が ioctl() を発行することにより変更できま
           す。XFree86 ユーザの便宜を図るため、`2key' と呼ばれるプログラ
           ムが用意されています。(ソースツリー上では
           xc/programs/Xserver/hw/xfree86/etc/ に、バイナリでは
           /usr/X11R6/lib/X11/etc/ にあります。) このプログラムをコンパ
           イルしてインストールして下さい。これを使うためには、
           XF86Config の Keyboard セクションに `VTInit "2key off"' の 1
           行を入れて、サーバ起動時にそのプログラムが自動的に実行される
           ようにして下さい。これを実行すると、サーバの VT では 2 キーに
           よる切り替えが OFF となり、他の VT では ON のままになります。

        詳細は、リリースノートに含まれる keyboard(7) manpage を参照して
        下さい (オンラインの manpage にはこの情報は含まれていません)。

  3.  SVR4.0.4 と SVR4.2 上での SVR3 のバイナリの実行

  SVR4.0.4 は SVR3 のバイナリ実行のための iBCS-2 に従った `Advanced
  Compatibility Package' を追加しました。このツールは SVR4.2 にも存在し
  ます。XFree86 は、SVR3 のクライアントからのローカル接続を受け入れるた
  めに、これを利用します。XFree86 のバイナリはこれらのツールを使うように
  作られています。もしまだであれば、`Advanced Compatibility Package' を
  インストールする必要があります。

  SVR4.0.4 がすべての SCO バイナリと、ことによると ISC SVR3 のバイナリの
  多くも実行できる訳ではないことがわかっています。これは、XFree86 が悪い
  からではなく、SVR4 自身によるものです。その 1 例としては、多くの SVR3
  のプログラムが UFS ファイルシステムのことを知っておらず、そのために定
  義されているシステムコールを使うのではなく、ディレクトリをファイルとし
  て読もうとすることがあります。これは明らかに失敗します。USL の
  SVR4.0.4 のリリースノート (ベンダから手に入れることができます) には、
  コンパチビリティを向上させるための沢山の示唆があります。

  いくつかの SCO バイナリに関しては、幸運にもそのまま使えるようです。何
  も変更は要りません。xterm のウィンドウ上でプログラムを実行するだけでい
  いのです。

  ISC ユーザは、バイナリを実行する前に、バイナリエディタを必要とするで
  しょう。ISC は、どういう訳か、ローカル接続のためのパイプを
  /tmp/.X11-unix/Xn に置きます。不運なことに、ここは X コンソーシアムの
  X サーバが、ローカル接続のためにいつも使われる Unix ドメインソケットを
  置く場所でもあるのです。XFree86 のサーバは、ISC のクライアントへのロー
  カル接続のために、/dev/X/ISCCONN/Xn を使うように変更されました。従っ
  て、バイナリエディタで、クライアントプログラムを編集しなければいけませ
  ん。/tmp/.X11-unix をサーチして、それを /dev/X/ISCCONN に変更して下さ
  い。そうすれば、後はベース OS のコンパチビリティについて心配するだけで
  済みます。

  4.  SVR4 上で XFree86 を構築する場合の注意

  1. SVR4 で gcc をお使いなら、gcc-2.4.5(あるいは、最近の安定したリリー
     ス) をお使いになることを強くお勧めします。2.6.0 は i386 プラット
     フォームではいくつかの問題があり、お勧めできません。

  2. 構築を行なう前に、UFSNINODE(UFS ファイルシステムの場合) あるいは
     S5INODE(S5 ファイルシステムの場合) のカーネルパラメータを約 650 に
     上げることをお勧めします。他のいくつかのパラメータについては、"SVR4
     上で XFree86 を動作させる場合の注意" を御覧下さい。

  3. BOOTSTRAPCFLAGS としては、以下が必要です。

        Unixware:     "-DUSL"

        NCR:          "-DNCR"

        他の SVR4:   "-DSVR4 -Di386"

  5.  SVR4 上で XFree86 を動作させる場合の注意

  注意: アクセラレーションをサポートしたサーバをお使いになるおつもりであ
  れば、10 節をお読みになり、書いてあることに従って下さい。そうしない
  と、X サーバを終了させたり、再起動したり、仮想端末の切替えを行なったり
  した時に、X サーバはクラッシュするかもしれません。

  1. SVR4 では、/usr/X11R6/lib を LD_LIBRARY_PATH に加える必要があるかも
     しれません。しかし、正しく構築されたクライアントを実行する場合は、
     必要ありません。

  2. 次のいくつかのカーネルパラメータを増加させるといいかもしれません。
     (idtune を実行するか、/etc/conf/cf.d/stune を編集して、idbuild で
     カーネルを再構築して下さい。)

        [HS]FNOLIM    オープンされたファイル数のハード / ソフト上の制限

        MAXUP         1 ユーザ当りのプロセスの最大値

        ARG_MAX       引数リストの最大長

        SHMMAX        共有メモリセグメントの最大サイズ (単位: バイト)

  3. どのマウスドライバを使うかを選択して下さい。最良の選択は、SVR4 のど
     のバージョンを使うかに依存します。バスマウスをお使いなら、Xqueue が
     多分唯一の選択でしょう。シリアルマウスの場合は、次のようにして下さ
     い。

     Esix 4.0.3
        Xqueue が動作します。標準の asy ドライバを直接使うこともできます
        が、マウスはスムーズに動かないでしょう。

     Microport SVR4 [34].1
        Xqueue が動作します。asy ドライバを直接使ってもマウスはスムーズ
        に動きます。

     Xqueue を使用するためには、XF86Config の Keyboard、Pointer セクショ
     ンにおいて、どちらも Protocol に Xqueue を指定して下さい。また、マ
     ウスドライバパッケージをインストールし、mouseadmin を実行してマウス
     のセットアップを行なう必要があります。mouseadmin が動かない場合は、
     `touch /dev/gmse' を事前に実行して下さい。(mouseadmin は、カーネル
     再構築後に再実行する必要があります。さもなければ、
     /etc/conf/node.d/gmse に適当なエントリを加えて下さい。)
     <注意: ハードウェアカーソルと Xqueue を同時に使用すると、アクセラ
     レーションのかかったサーバやドライバの多くで問題が起きます。シリア
     ルマウスをお持ちの場合は、Xqueue を使わないことでこれを回避できます。
     そうでない場合は、XF86Config の Device セクションに、

           Option "sw_cursor"

     の 1 行を入れて下さい。S3 サーバは、この問題が無いことで知られる唯
     一のサーバです。

     Xqueue と標準 asy ドライバを同時に使用して問題が出る場合は、SAS を
     インストールする必要があります。SAS を使う場合、XF86Config は標準ド
     ライバを使うように設定して下さい。

     SAS は、ftp.physics.su.oz.au にあります。シリアルマウスに SAS を使
     う場合、sas.h 内の EVENT_TIME を 80 から 30 に変更すれば、スムーズ
     な動きをするようになるでしょう。SAS の README に書いていないことと
     して、次の 2 点があります。

     - /etc/ap/chan.ap に、次の 1 行を加えて下さい。

           MAJOR    0       255     ldterm ttcompat

  MAJOR は、SAS デバイスが使う major 番号です。それがいくつであるかは、
  カーネル再構築後、/etc/conf/cf.d/mdevice で調べて下さい。major 番号
  は、`sas' で始まる行の 6 番目のフィールドにあります。このファイルは、
  新しいカーネルでリブートする前に更新しなければいけません。

  - インストールの手引きに、次のことが書いてありません。

        3a) `kconfig' を実行するか、/etc/conf/sdevice.d/asy を編集して、
        asy ドライバを disable して下さい。

        3b) /etc/conf/bin/idbuild を実行して、カーネルを再構築して下さ
        い。

  4. SVR4 で xdm を使いたい場合は、shar ファイル
     /usr/X11R6/lib/X11/etc/XdmConf.svr4 を一時ディレクトリに展開して下
     さい。README にどのファイルをどこにインストールすべきかが書いてあり
     ます。各々のファイルをよく読んで、必要な変更を行なって下さい。

     注意いくつかの SVR4 のバージョン (ex. Esix 4.0.3) では、コンソール
     で `vtgetty' を実行するデフォルトの inittab を持っています。xdm を
     ブート時にスタートさせる場合、それはうまく動きません。問題なのは、
     vtgetty セッションから logout すると、xdm がサーバのために使用する
     １つも含め、全ての VT がクローズされてしまうことです。`getty' を使
     うのがお勧めです。/etc/inittab を変更する場合は、
     /etc/conf/cf.d/init.base も同時に変更して下さい。さもないと、次に
     カーネルを再構築した後で変更がキャンセルされてしまいます。

  5. VT の最大数を変更するためには、/etc/default/workstations のファイル
     を編集して、その数を変更して下さい。次にリブートした時に、デバイス
     ノードは作成 / 削除されます。

  6. デフォルトのローカル接続タイプは、X11R6 で変更されました。Unix ドメ
     インのソケットは、もはや" ローカル" 接続タイプとしては扱われませ
     ん。このことは、:0 に接続するクライアントは接続に Unix のソケットを
     使用しないことを意味します。Unix のソケット接続を使うためには、クラ
     イアントは unix:0 に接続しなければなりません。

     ローカル接続タイプは、"NAMED"(named ストリームパイプ)、"PTS"(古い形
     式の USL のストリームパイプ)、"SCO"(SCO Xsight のストリームパイ
     プ)、"ISC"(ISC のストリームパイプ) のいずれかです。XLOCAL 環境変数
     が、どの優先順位でローカル接続を行なうかを決めるのに使用されます。
     デフォルトの設定は、PTS:NAMED:ISC:SCO です。大抵の場合は、NAMED を
     使うのが推奨されます。その理由は、それがデフォルトの PTS よりも速
     く、PTS を使うと /dev/pts デバイスが不足してしまう (PTS を使う各々
     のクライアントが /dev/pts デバイスを必要とします) からです。デフォ
     ルトのローカル接続タイプを設定するためには、.xinitrc(xinit か
     startx を使う場合) か /usr/X11R6/lib/xdm/Xsession(xdm を使う場合)
     において、XLOCAL が設定され、export されるようにして下さい。

  6.  SVR4 での一般のクライアントの構築

  1. 沢山のクライアント (いくつかの明確に SVR4 をサポートしているものも
     含む) が、SVR4 環境下の構築で -DSYSV の指定を必要とします。デフォル
     トの設定でも指定されないかもしれません。手っ取り早い方法は、クライ
     アントの Imakefile に次のようなものを加えることです。

           #if SystemV4
                DEFINES = -DSYSV OTHER_CLIENT_DEPENDENT_DEFINES
           #endif

  一番いいのは、-DSYSV 無しで正しくコンパイルされるように、コードを書き
  直すことです。

  7.  XFree86 で DOS/Merge 2.2 を使用するためには

  Locus DOS/Merge 2.2 X クライアントは、XFree86 上で使用することができま
  す。しかし、それを動かすためには、いくつかのことをする必要があります。
  1 つの変更は、X クライアントと X11R5/6 の一般的な問題で、その他は、
  XFree86 のサーバに特有なことに対する作業です。必要な作業は以下の通りで
  す。

  1. .xinitrc、.xsession の中で、$XMERGE を設定し、export して下さい。一
     般に、XMERGE=vga と設定するようです。

  2. `dos' クライアントの"zoom" 機能を使用されるのなら、サーバのキーボー
     ドとマウスの本来のドライバの代わりに、"xqueue" を使わなければいけま
     せん。そうでないと、最初に"zoom" を行なった後に、マウスは機能しなく
     なるでしょう (`dos' クライアントが本来のドライバを使用するため、
     サーバは、zoom が終った後にマウスをアクセスできなくなるからです)。
     他の唯一の選択肢は、各々のデバイスに別々のマウスを使用することです。

  3. `dos' クライアントのフォントを XFree86 のフォントディレクトリにイン
     ストールする必要があります。BDF ファイルを探して下さい
     (`*pc???.bdf' というパターンにマッチするファイルを見つけて下さい)。
     これらは、/usr/lib/X11/fonts/misc にあるでしょう。これらのファイル
     があるディレクトリに移動し、次のことを (`sh' か `ksh' を使って) 行
     なって下さい。

             for i in *pc???.bdf
             do
                 /usr/X11R6/bin/bdftopcf $i > \
                       /usr/X11R6/lib/X11/fonts/misc/`basename $i .bdf`.pcf
             done
             cd /usr/X11R6/lib/X11/fonts/misc
             /usr/X11R6/bin/mkfontdir
             # Do this only if the server is already running.
             /usr/X11R6/bin/xset fp rehash

  4. `dos' クライアントは、内部キー表現から X のキーマップへの変換テーブ
     ルを使います。Merge 2.2 に付いているテーブルは、SCO のサーバに対す
     るマッピングを使用するようです。正しいマッピングテーブルは、
     /usr/X11R6/lib/X11/etc/xcode.xfree86 にあります。このファイルは、
     /usr/lib/merge/xc にインストールして下さい。さらに、次のリソースを
     `dos' クライアントの application-defaults ファイル (通常、
     /usr/lib/X11/app-defaults/DOS にあります) に加えて下さい。

             dos*xcodetable: /usr/lib/merge/xc/xcode.xfree86

  もし間違ったテーブルがインストールされれば、テンキーの矢印キーは `dos'
  クライアントで機能しなくなりますから、この新しいコードテーブルが必要な
  のは明らかでしょう。

  5. "zoom" 機能を正しく動かすためには、$DISPLAY を"unix:N"
     か"host_name:N" に設定して、`dos' を実行して下さい。単に":0" を使う
     と、クライアントは正しく動かないでしょう。`dos' は、`-display' パラ
     メータを受け付けません。従って、`dos' プログラムを次のようなものに
     置き換えるのが多分いいでしょう。

             #!/usr/bin/ksh
             if [ "X${DISPLAY}" != "X" ]
             then
                     case ${DISPLAY} in
                     :*)
                             DISPLAY=unix${DISPLAY}
                             ;;
                     esac
             fi
             /usr/bin/dos.real "$@"

  8.  Esix システムでのキーボードマッピングの問題

  Esix 4.0.3A のあるコンソールドライバのパッチは、XFree86 のサーバのデ
  フォルトキーマップを破壊します。キーのほとんどが正しくマップされなくな
  るので、この問題の影響を受ければ、それは明白になるでしょう。これに対す
  る解決策は 2 つあります。1 つ目は、問題を起こしたコンソールドライバの
  パッチを削除することです。2 つ目は、サーバ起動後にデフォルトのマッピン
  グをリセットするために、xmodmap(1) を使用することです。デフォルトマッ
  ピングは /usr/X11R6/lib/X11/etc/xmodmap.std にあり、.xinitrc(xdm を使
  用している場合は、Xsetup) に、次の行を加えれば、自動的にインストールさ
  れます。

          xmodmap /usr/X11R6/lib/X11/etc/xmodmap.std

  9.  PANIX 上での 106 日本語キーボードの問題

  PANIX for PC-AT は、DICOP(Desktop UNIX for Intel Cooperative Promotion
  Group) で標準化された日本語キーコードを使っています。そのため、XFree86
  で 106 日本語キーボードを使用すると、キーコードのコンフリクトが起こり
  ます。これを避けるためには、XF86Config にキーワード"panix106" を次のよ
  うに指定して下さい。

    Section "Keyboard"
      Protocol    "Standard"
      Autorepeat  500 5
      XkbModel    "jp106"
      XkbLayout   "jp"
      panix106
    EndSection

  10.  アクセラレーションをサポートするサーバで必要なカーネルパッチ

  SVR4.0 は、拡張 I/O レジスタ (0x3FF 以降) をアクセスするプログラムの処
  理に関してバグがあります。しかし、S3 や IBM 8514/A のようなチップを使
  用したビデオカードはそれらのレジスタを使用します。このバグを引き起こす
  ボードをサポートするため、XFree86 ではこの問題をフィックスするカーネル
  パッチを作成し、インストール、アンインストールができるスクリプトを用意
  しました。S3, 8514, Mach8, Mach32, P9000, AGX, W32 のサーバを使用する
  場合は、このパッチをインストールする必要があります。

  Dell 2.2 は、Thomas Roell が Dell に勤めていた頃、このバグを見つけて
  フィックスしたので、パッチを当てる必要はないことが分かっています。
  Microport も 4.0 v4.2 リリースでフィックスしています。SVR4.2 も、USL
  がこの問題をフィックスしたので、パッチは必要ありません。

  パッチは、ソースツリー上では xc/programs/Xserver/hw/xfree86/etc、バイ
  ナリ上では /usr/X11R6/lib/X11/etc のディレクトリの下にあります。インス
  トールするスクリプトは `svr4_patch'、アンインストールするスクリプトは
  `svr4_rem_pch' です。パッチが当てられる対象のファイルは、
  /etc/conf/pack.d/kernel/os.o です。パッチのスクリプトは、パッチを当て
  る前にバグの存在を確認し、パッチ当てに成功したか失敗したかを知らせま
  す。`svr4_patch' スクリプトは、もちろん root 権限で実行して下さい。オ
  リジナルの os.o、パッチを当てるプログラム、削除するスクリプトのコピー
  は、/etc/conf/pack.d/kernel/.xfree86 のディレクトリの下に保存されま
  す。

  我々がこの問題に対する簡単な解決策を見い出すのを手伝い、その情報をリ
  リースする許可を与えてくれた Microport の John M. Sully に感謝します。

  11.  他の問題

  アクセラレーションをサポートしたドライバは、SVR4.0 のいくつかのバー
  ジョンでハングアップを起こします。この問題は、/dev/pmem をメモリマップ
  する時、物理メモリがあるかどうかをカーネルがチェックすることに関連する
  ようです。このことは、メモリマップトレジスタをマップする時に問題を起こ
  します。これは、かつて SVGA サーバの中の MGA ドライバで起きた問題で
  す。他のドライバでも影響があるかもしれません。MGA ドライバで起きた問題
  は、現在はフィックスされています。
