  NetBSD で XFree86 を使用する人は読んでください
  Rich  Murphey, David Dawes, Marc  Wandschneider, Mark
  Weaver, Matthieu Herrb
  Last modified on: 20 August 1999
  大石  勲 Isao Ohishi <ohishi@hf.rim.or.jp> & The X Documen-
  tation Project
  Last modified on: 12 September 1999
  ____________________________________________________________

  目次


  1. XFree86 って何？どこにあるの？
  2. このドキュメントのバグの報告について
  3. XFree86 3.3.4 における、OS 依存の新機能
  4. バイナリのインストール
  5. ハードウェアに応じた X の設定
     5.1 マウスの設定について
     5.2 その他の入力デバイス
     5.3 PEX と XIE 拡張機能の設定

  6. X の実行
     6.1 xdm(ディスプレイマネージャ)のインストール

  7. X に関するカーネルサポート
     7.1 コンソールドライバ
     7.2 アパーチャドライバ
     7.3 MIT-SHM

  8. XFree86 配布物の再構築
     8.1 コンソールドライバ
     8.2 pcvt_ioctl.h ファイル:
     8.3 console.h と ioctl_pc.h ファイル:
     8.4 NetBSD 1.0 以降での共有ライブラリのサポート
     8.5 他のアーキテクチャでの構築

  9. 新しい X クライアントの構築
  10. 謝辞
  11. 日本語訳について


  ______________________________________________________________________

  1.  XFree86 って何？どこにあるの？

  XFree86 は Intel ベースの様々な種類の UNIX の幾つかをサポートしている
  X11R6.3 の移植版です。X11R5 と一緒に配布された X386 1.2 という X サー
  バに由来しています。今回のリリースには沢山のバグ修正とともに多くの特徴
  と性能の改善が含まれています。本リリースは the X Consortium の X11R6.3
  のソースコードへのパッチとして入手できますし、また多くのアーキテクチャ
  用のバイナリ配布としても入手できます。

  Copyright Notice を見てください。

  XFree86 のソースは次の anonymous ftp から入手できます:

  ftp://ftp.XFree86.org/pub/XFree86/current

  NetBSD 1.4 以降用のバイナリは以下の場所から入手できます:
  ftp://ftp.XFree86.org/pub/XFree86/current/binaries/NetBSD-1.4

  ミラーサイトのリストは以下の場所にあります:
  ftp://ftp.XFree86.org/pub/XFree86/MIRRORS



  その他のバージョンの NetBSD :

  これらのバイナリは初期のバージョンの NetBSD とは互換性がありません。も
  しバージョン 1.4 より前の NetBSD を使用しているのであれば、まず最初に
  新しいバージョンの NetBSD を使用する事を検討してください。

  アップグレードを行わないなら、XFree86 をソースから構築する必要がありま
  す。XFree86 は初期のバージョンの NetBSD でもきちんとコンパイルできるは
  ずですが、テストは行われていません。

  NetBSD/sparc に関しても XFree86 は作られています。詳細は ``他のアーキ
  テクチャでの構築'' セクション見てください。

  XFree86 のクライアントに関しても、NetBSD/alpha や NetBSD がサポートす
  る他の多くのアーキテクチャで作られています。

  XFree86 は PC98 の NetBSD もサポートしています。


  2.  このドキュメントのバグの報告について

  このファイルに関してコメントや提案があるならば、 電子メールを
  matthieu@laas.fr (Matthieu Herrb) か XFree86@XFree86.org 宛に送ってい
  ただければ、修正します。


  3.  XFree86 3.3.4 における、OS 依存の新機能


  o  サーバの最大接続数が 128 に増えました。

  o  NetBSD 1.4 に含まれている wsmouse マウスプロトコルに対応しました。



  4.  バイナリのインストール

  インストール作業の詳細な手順に関しては、リリースノート のセクション 5
  を参照してください。


  5.  ハードウェアに応じた X の設定

  XF86Config ファイルには、使っているモニタやビデオカードやマウスを X サ
  ーバに伝えます。使用している特定のハードウェアをサーバに伝えるためにそ
  のファイルを作る必要があります。

  このファイルを作成するための最も簡単な方法は、root ユーザとして
  XF86Setup ユーティリティを実行することです。使用に際しての詳細な部分に
  関しては、QuickStart.doc を参照してください。

  ハードウェアに関する情報が必要です:

  o  マウスの種類、転送速度、/devでのデバイスファイル名。

  o  ビデオカードのチップセット(例えば ET4000, S3, 等)。

  o  モニタの同期周波数。

  XF86Config ファイルを作る方法としては XF86Setup の使用をお勧めしま
  す。xf86config というテキストベースのツールも XF86Setup が使えないよう
  な(数少ない)場合に備えてまだ用意されています。また、サンプルのファイル
  例も /usr/X11R6/lib/X11/XF86Config.eg にインストールされていますので、
  それをベースに修正して使用することもできます。


  XF86Config ファイルの記述形式の詳細に関しては、XF86Config(5) のマニュ
  アルを参照してください。

  XF86Config ファイルの設定が一旦終ったら、xvidtune ユーティリティを使用
  してビデオモードのチューニングを行う事ができます。


  5.1.  マウスの設定について

  シリアルマウスが動作しない場合は、kermit とか tip 等を使用してマウスの
  繋がっているシリアルポートに接続して、マウスを動かすとちゃんと文字が発
  生するかどうかを確認してください。

  NetBSD では pms マウスドライバが PS/2 タイプのマウスをバスマウスとして
  扱っています。PS/2 マウスを使用している場合には、XF86Config ファイル中
  の Mouse セクションで、busmouse をプロトコルとして指定してください。

  このドライバは普通の PS/2 マウスしかサポートしていません。最新のPS/2
  マウス(特に"3D"ローラー付の IntelliMouse や MouseMan+ 等)は一度に3バイ
  ト以上の通信が可能ですが、これらはまだサポートされていません。

  XFree86 3.3.4 以降は NetBSD 1.4 で導入された新しい wscons コンソールド
  ライバに含まれているマウスドライバもサポートしています。NetBSD 1.4 で
  wscons を使っているならば、/etc/XF86Config ではマウスのプロトコルとし
  て ``wsmouse'' を指定し、デバイスとして ``/dev/wsmouse0'' を指定してく
  ださい。

  XFree86 での一般的なマウスの設定手順に関しては README.mouse を見てくだ
  さい。


  5.2.  その他の入力デバイス

  XFree86 は XInput 機能拡張を使用して外部入力機器ドライバのダイナミック
  ローディングをサポートしました。現在では、以下の機器がサポートされてい
  ます:

  o  ジョイスティック (xf86Jstk.so)

  o  Wacom タブレット (Wacom IV プロトコルのみ, xf86Wacom.so)

  o  SummaSketch タブレット (xf86Summa.so)

  o  Elographics タッチスクリーン (xf86Elo.so)

  特定の機器を使用するには、以下の行を XF86Config の Module セクション追
  加します。

       load "module"


  ここで module は機器に対応した .so ファイルの名称です。 XF86Config の
  XInput セクションも設定する必要があります。設定手順の詳細に関しては
  XF86Config(5) のマニュアルを参照してください。

  xsetpointer(1) コマンドを使用すれば、X のポインタを操作する機器を変更
  する事ができます。

  ジョイスティックをサポートするためには、カーネル内にジョイスティックデ
  バイスドライバが含まれていなければなりません。NetBSD 1.2 では含まれて
  います。詳しくは joy(4) を見てください。





  5.3.  PEX と XIE 拡張機能の設定

  PEX と XIE 拡張機能は外部モジュールでサポートされています。これらの拡
  張機能を使いたいならば、XF86Config の Module セクションに次の行を追加
  してください:


          load    "pex5.so"
          load    "xie.so"






  6.  X の実行

  X を実行させるには最低限 8MB のメモリが推奨されます。サーバとウィンド
  ウマネージャと xterm 一つで約 4MB 程のメモリを消費します。4MB のシステ
  ムだと、gcc等のような数MBの空きを期待しているアプリケーションへのメモ
  リが残らなくなります。X は 4MB のメモリでも動作しますが、実際問題とし
  て X を動作させながらコンパイルを行うと、常にページングが発生している
  状態となり 5 〜 10 倍程度の処理時間差が発生します。

  初めてのユーザが X ウィンドウをする場合の最も簡単な方法は以下のコマン
  ドを入力することです:


       startx >& startx.log




  エラーメッセージをリダイレクトしておかないと、サーバに画面が切り替わっ
  てしまって見えなくなります。

  X から抜けるには、``exit'' とコンソールの xterm で入力します。ホーム
  ディレクトリに .xinitrc, .xserverrc や .twmrc のファイルを xinit や
  startx のマニュアルで説明されているように作っておけば、X をカスタマイ
  ズすることができます。


  6.1.  xdm(ディスプレイマネージャ)のインストール

  ディスプレイマネージャを起動させるには、コンソールで root でログインし
  てから ``xdm -nodaemon'' と入力してください。

  getty を無効にし、かつ次の記述を /etc/rc.local に追加することで、シス
  テム起動時に自動的に xdm を起動することができます:



         if [ -x /usr/X11R6/bin/xdm ]; then
           echo -n ' xdm'; /usr/X11R6/bin/xdm
         fi




  コンソールの getty を無効にするには、/etc/ttys 中のコンソールのエント
  リの ``on'' を ``off'' に変えます:



        ttyv0  "/usr/libexec/getty Pc"     pc      off secure

  NetBSD 1.4 で wscons コンソールドライバを使っている場合、最初に X サー
  バ用の仮想コンソールを有効にしなければなりません。これを行うには、以下
  の手順に従ってください:

  o  デバイスファイルが存在することを確かめます。もしなければ ``cd /dev
     ; ./MAKEDEV wscons'' で作ります。

  o  次に、カーネルが wscons を使う設定になっていることを確かめます (こ
     れは ``後述します'')。

  o  次に、/etc/rc.conf において ``wscons=YES'' が設定されていることを確
     かめます。


       #screen 0       -       vt100
       screen  1       -       vt100
       screen  2       -       vt100
       screen  3       -       vt100
       screen  4       -       -
       screen  5       -       vt100




  (この説明を書いてくださった Mason Loring Bliss さ
  ん(<mason@acheron.middleboro.ma.us>) に感謝します)

  NetBSD 用の XFree86 のバイナリ配布には、XDM-AUTHORIZATION-1 プロトコル
  のサポートは含まれていない点に注意してください。


  7.  X に関するカーネルサポート

  NetBSD で X のサポートを行うためには、次の行を /sys/arch/i386/conf 中
  の設定ファイルに記述しておかなければなりません:


       options XSERVER, UCONSOLE



  7.1.  コンソールドライバ

  このサーバは NetBSD/i386 で標準的な コンソールドライバである pccons,
  pcvt, wscons(pcvt 互換モード)をサポートしています。これらは実行時に検
  出されるので、サーバの設定などは必要ありません。


  pccons ドライバは最もよくテストされ、NetBSD のバイナリ配布用のカーネル
  にも含まれているドライバです。


  pcvt ドライバは NetBSD に付属しています。pcvt の X モードは pccons の
  X モードと互換性があります。複数の仮想コンソールが利用できたり、各国対
  応のキーボードをサポートしていたりします。このドライバを使用するために
  は、カーネル設定ファイル中の次の行:


       device          pc0     at isa? port "IO_KBD" irq 1


  を


       device         vt0     at isa? port "IO_KBD" irq 1

  に変更してカーネルを再構築して新しいカーネルをインストールしてくださ
  い。



  XFree86 は NetBSD 1.4 の  wscons コンソールドライバでも動作します。現
  在のところは pcvt 互換モードを使っているので、wscons を使っている場合
  には、以下の行をカーネルの設定ファイルに必ず入れてください:


       options         WSDISPLAY_COMPAT_PCVT           # emulate some ioctls
       options         WSDISPLAY_COMPAT_SYSCONS        # emulate some ioctls
       options         WSDISPLAY_COMPAT_USL            # VT handling
       options         WSDISPLAY_COMPAT_RAWKBD         # can get raw scancodes




  wscons をカーネルに組み込む方法については、wscons(4) と wsmouse(4) の
  オンラインマニュアルを参照してください。


  7.2.  アパーチャドライバ

  NetBSD 0.9C 以降ではマルチユーザモード環境での /dev/mem へのアクセスを
  拒否するという 4.4BSD のカーネルセキュリティ機能が含まれています。しか
  し XFree86 のサーバではビデオメモリへのリニアなアクセスが性能の向上に
  使われたり(必須となることもあります)します。

  最近のアクセラレーション付きのサーバのほとんどはリニアメモリアクセスが
  必須ですが、リニアメモリアクセスを利用できるけれど必要とはしないサーバ
  もあります。

  XFree86 にリニアメモリアクセスを許可するには2つの方法があります:

  一つの方法は、カーネルの設定ファイルに `option INSECURE' を追加してカ
  ーネルを作り直し、カーネルのセキュリティ機能を無効にすることです。

  もう一つの方法はアパーチャドライバをインストールすることです: アパー
  チャドライバのソースは
  ftp://ftp.netbsd.org/pub/NetBSD/arch/i386/apNetBSD.shar から入手するこ
  とができます。

  アパーチャドライバを有効にする方法は、使用している OS のバージョンに強
  く依存します。

  o  NetBSD 1.0, 1.1, 1.2, 1.2.1 の場合

     /etc/rc.local の最後に次の行を追加します:


        KERNDIR=/usr/X11R6/lib/X11/kernel
        if [ -f ${KERNDIR}/ap.o ]; then
          modload -o ${KERNDIR}/ap -e ap -p ${KERNDIR}/apinstall ${KERNDIR}/ap.o
        fi





  o  NetBSD 1.2D 以降の場合

     /etc/lkm.conf に次の行を追加します。



  /usr/X11R6/lib/X11/kernel/ap.o  -  ap /usr/X11R6/lib/X11/kernel/apinstall -






  o  NetBSD 1.2G, 1.3 以降の場合

     lkm.conf のフォーマットが 1.2G で変わりました。 /etc/lkm.conf に次
     の行を追加してください:


       /usr/X11R6/lib/X11/kernel/ap.o  -  ap /usr/X11R6/lib/X11/kernel/apinstall - -AFTERMOUNT





  システムを再起動します。アパーチャドライバが使用できる場合は、XFree86
  はこれを自動認識するしょう。

  <1-- Warning: if you boot another kernel than /netbsd or /bsd,
  loadable kernel modules can crash your system. Always boot in single
  user mode when you want to run another kernel.  --> 警告: /netbsd や
  /bsd 以外のカーネルで起動する場合、ローダブルカーネルモジュールを使用
  するとシステムがクラッシュします。他のカーネルで起動する場合には、必ず
  シングルユーザモードで起動するようにしてください。



       注意: アパーチャドライバは一度に一つのアクセスしか許可しませ
       ん (だから一旦 X が起動されるとシステムは同じセキュリティ状
       態になります)。これは複数のサーバを複数の仮想端末で実行した
       場合に、最初の一つだけがリニアアクセスできるということです。
       同時に複数の X サーバを使用する必要がある場合には、'option
       INSECURE' を使用してください。



  7.3.  MIT-SHM

  NetBSD 1.0 以降では System V 形式の共有メモリがサポートされています。
  XFree86 はカーネル内でこれがサポートされていることを検出すると、MIT-
  SHM 機能拡張をサポートするようになります。

  カーネルに System V 形式の共有メモリサポートを組み込むには、以下の行を
  カーネル設定ファイルに追加してください:



        # System V-like IPC
        options         SYSVMSG
        options         SYSVSEM
        options         SYSVSHM






  8.  XFree86 配布物の再構築

  サーバリンクキットを使用すれば、Xサーバを再構築するのに最低限のディス
  ク容量で済みます。リンクキットの圧縮を解いて、xf86site.def の内容を必
  要に応じて変更し、``./mkmf'' と ``make''  を入力してサーバをリンクしま
  す。詳細に関しては /usr/X11R6/lib/Server/README を見てください。

  ソース配布物の展開と構築の手順については INSTALL を参照してください。

  コンパイルする前に xc/config/cf/xf86site.def を編集して配布物の設定を
  行わなければなりません。ソースをコンパイルするには、 xc ディレクトリで
  ``make World'' と入力します。


  8.1.  コンソールドライバ

  XFree86 では xf86site.def 中のオプション設定を使用しているコンソールド
  ライバの選択に使います。

  o  pccons を使用している場合:


        #define XFree86ConsoleDefines -DPCCONS_SUPPORT




  o  pcvt を使用している場合:


        #define XFree86ConsoleDefines -DPCVT_SUPPORT




  o  syscons を使用している場合:


        #define XFree86ConsoleDefines -DSYSCONS_SUPPORT




  o  codrv を使用している場合:


        #define XFree86ConsoleDefines -DCODRV_SUPPORT




  xf86site.def で XFree86ConsoleDefines を設定しない場合は、pccons と
  pcvt のドライバがサポートされます。


  syscons と codrv は NetBSD には付属していません。これらはあちこちのサ
  イトから anonymous FTP で入手することができます。これらは XFree86 のバ
  イナリ配布ではサポートされていません。


  8.2.  pcvt_ioctl.h ファイル:

  標準設定の XFree86 には PCVT コンソールドライバのサポートが含まれてい
  ます。しかし残念ながら、19980413 以前のバージョンの NetBSD は
  /usr/include/machine へ pcvt_ioctl.h をインストールしません。PCVT をサ
  ポートする XFree86を作る場合には、以下のコマンドを root で実行してから
  make World を始めなければなりません。


       cp /usr/src/sys/arch/i386/isa/pcvt/pcvt_ioctl.h /usr/include/machine

  カーネルのソースが無い場合は、ftp.netbsd.org かそのミラーサイトからこ
  のファイルを入手する事もできます。また PCVT を使用していなければ、
  xf86site.def の XFree86ConsoleDefines から -DPCVT_SUPPORT を削除するこ
  ともできます。



  8.3.  console.h と ioctl_pc.h ファイル:

  codrv をサポートしたサーバを作りたいが、対応するヘッダファイルである
  ioctl_pc.h が /usr/include/machine にインストールされていない場合は、
  xc/programs/Xserver/hw/xfree86/etc にあるファイルをインストールしてお
  きます。NetBSD-current を使用している場合には
  /usr/src/sys/arch/i386/include にもインストールしておくと、 make
  includes する度に再インストールされます。

  codrv コンソールドライバをインストールした場合、このファイルはドライバ
  に付属しているものを使用しなければなりません。

  syscons の console.h ファイルは XFree86 からは提供していませ
  ん。syscons に付属のものを使用してください。


  8.4.  NetBSD 1.0 以降での共有ライブラリのサポート

  XFree86 は標準で NetBSD の共有ライブラリサポートを使用して作られていま
  す。NetBSD 0.9 で XFree86 を作る場合や、共有ライブラリを使用したくない
  場合は、xf86site.def に次の行を加えます:



       #define BuildBsdSharedLibs      NO



  8.5.  他のアーキテクチャでの構築

  XFree86 は NetBSD/sparc 上でもコンパイルされています。 Dennis Ferguson
  氏と Matthew Green 氏が作成した Sun 用のサーバのパッチは既に
  xc/programs/Xserver/hw/sun に統合されています。 xf86site.def は多少の
  変更する必要があります:

  o  構築するサーバを定義する変数を全て NO に設定します。(Sun 用のサーバ
     Xsun24Server, XsunServer, XsunMonoServer のどれを作るかという指示は
     NetBSD.cf の最後に定義します。)

  o  ServerToInstall を設定して、使用したい Sun 用のサーバをを選択してく
     ださい(Xsun または XsunMono)。

  o  その他の設定可能なオプションに関しては、インストールドキュメント を
     参照してください。

  この Sun 用に移植したサーバに関して問題が発生した場合は、XFree86 のメ
  ーリングリストよりも port-sparc@NetBSD.Org メーリングリストか、直接筆
  者 matthieu@laas.fr まで連絡してください。


  現在 NetBSD プロジェクトでは、XFree86 のソースを元にいくつかの変更が行
  われた独自のソースツリーを持っていることに注意してください。こちらのソ
  ースを使用して再構築することもできます。NetBSD の xsrc ソースツリーは
  以下のところから入手可能です: ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-
  current/xsrc/




  9.  新しい X クライアントの構築

  新しいクライアント(X のアプリケーション)を作る場合、ソース中に
  Imakefile が含まれているなら、xmkmf を使うのが最も簡単でしょ
  う。``xmkmf -a'' と入力して Makefileを作り、必要に応じて設定のチェック
  を行、それから ``make'' と入力します。同時にマニュアルもインストールし
  た場合、whatis.db を更新するために ``makewhatis /usr/X11R6/man'' と実
  行しておきます。

  コンパイル中に ``Virtual memory exhausted'' というメッセージが cc から
  出力されるのを避けるには、データやスタックのサイズ制限を増やしておくと
  いいでしょう(csh の場合 ``limit datasize 32M'' と ``limit stacksize
  16M'' を実行しておきます)。

  メモ: NetBSD 0.9A と XFree86 2.1 からは、__386BSD__ というシンボルをコ
  ンパイラも X の *BSD 用の設定ファイルも設定しなくなっています。クライ
  アントを各種 BSD 系のシステムへ移植する時は、BSD というシンボルを本来
  BSD 特有なコードに使うようにする必要があります。シンボルの値を使って
  BSD のリリースを区別することもできます。例えば、 Net-2 以降のリリース
  に特有のコードの場合には以下のようにします:



       #if (BSD >= 199103)


  このシンボルを正しく設定する為に、<sys/param.h> をソース中でインクルー
  ドするようにしてください。XFree86 3.1.1 以降では、 CSRG_BASED というシ
  ンボルが各種 BSD システムのために定義されています。これは
  <sys/param.h> のインクルードの保護のために使われます。

  本当に i386 系の各種 BSD に特有な部分に関するコードには、 FreeBSD には
  __FreeBSD__ を、NetBSD には __NetBSD__ を、 OpenBSD には __OpenBSD__
  を、386BSD には __386BSD__ を、 BSD/386 には __bsdi__ を使用してくださ
  い。

  メモ(その2): 実行時に次のようなメッセージが出たら



       ld.so: undefined symbol _XtCvtStringToFont


  NetBSD のダイナミックリンク機構の弱点でつまづいています。libXmu を使用
  するアプリケーションは、libXt も使用します。クライアントがごく普通の
  Imakefile を使用するなら、この依存性は自動的に Makefile 中に含まれま
  す。したがって問題が現れることはないでしょう。もしそうでない場合は単
  に、``-lXt'' を Imakefile や Makefile のライブラリリストに追加して、再
  リンクを行ってください。


  10.  謝辞

  以下の方々に深く感謝します:

  o  Pace Willison さんは最初に 386BSD への移植を行いました。

  o  Amancio Hasty さんはカーソルの復元やマウスのバグなどたくさんの修正
     を行いました。

  o  Christoph Robitschko さんは com.c と、それに伴って select() を修正
     しました。

  o  Nate Williams さんは X 用のパッチキットのサポートを行いました。


  o  Walnut Creek Cdrom の Rod Grimes さんと Jack Velte さんは FreeBSD
     のバイナリリリース用に機材の提供してくださいました。


  $XFree86: xc/programs/Xserver/hw/xfree86/doc/Japanese/README.NetBSD,v 1.1.2.4 1999/12/28 12:13:47 hohndel Exp $






  $XConsortium: NetBSD.sgml /main/26 1996/10/28 05:43:20 kaleb $




  11.  日本語訳について

  この日本語訳(バージョン 3.3.3-3.3.6)は大石勲 さん
  <ohishi@hf.rim.or.jp> の 3.3.2 版の翻訳をベースに X Japanese
  Documentation Project が更新を行ったものです (更新: 藤原輝嘉
  <fujiwara@linux.or.jp> <mailto:fujiwara@linux.or.jp>)。
