SVR4 ユーザのための情報 The XFree86 Project, Inc 1998年2月27日(1998年3月1日訳) 野村 高明(Takaaki Nomura) 注意: アクセラレーションがサポートされたサーバをお使いになる場合は、 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 がサーバのために使用 する1つも含め、全ての 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 ドライバで起きた問題 は、現在はフィックスされています。