配布物の構築と設定の詳細については、
xc/programs/Xserver/hw/xfree86/INSTALL
を参照してください。
筆者は Mach 2.5 カーネルを使っている Tahoe Binary Environment で XFree86 を構築しました。Mach 3.0「リリース」のインクルードファイルとラ イブラリはパスに入っていないことを確認しています。Mach のインタフェー ス(API)は Mach 2.5 カーネルと Mach 3.0 カーネルでは少し違いますが、 Mach 3.0 カーネルは Mach 2.5 の上位互換となるように設計されています。 つまり、Mach 2.5 のインクルードファイルとライブラリ(Tahoe Environment のデフォルト)を使って XFree86 を構築すれば、バイナリは Mach 3.0 でも Mach 2.5 でも動作します。
Mach 3.0 のヘッダファイルとライブラリで構築することにした場合は、アプ
リケーションは Mach 3.0 カーネル上でしか動作しません。
vga*/*/*driver.c
のいくつかと SuperProbe で行われている Mach
のカーネルコールは、Mach 2.5 のコール名を使っています。Mach 3.0 でこれ
らの構築を行うためには、これらのいくつかある Mach 2.5 への依存部分を変
更しなければなりません。
入手可能な Mach オペレーティングシステムには、異なるものがいくつかあり ます。そのうちの 1 つは Mt.Xinu によるものです。他には CMU が配布して いるものがあります。CMU は異なる 2 つの OS を配布しています。 これが Mach 2.5 (モノリシックなカーネル)と Mach 3.0(Unix をサーバとし て使うマイクロカーネル)です。CMU の OS はどちらも、BSD4.3 Tahoe リリー スから開発した同じバイナリのセットを使います。(Mt.Xinu システムは後の 「世代」のアプリケーションプログラムを使う点に注意してください。 最後に、CMU 内部で使われている環境はまだ外部で配布されているものとは異 なります。この環境は AFS や Kerberos 等をサポートしています。) CMU Tahoe 環境では gcc 1.36 コンパイラを BSD 由来の cpp (__STDC__ ではあ りません)と組み合わせて使います。Mt.Xinu システムは gcc 1.37 を使いま す。
筆者らはこれら全ての環境で XFree86 を構築したわけではなく、Mach 2.5 と 一緒に配布されている CMU Tahoe 環境だけを使っています。どんなアプリケー ション環境を用いても、Mach 2.5 でも Mach 3.0 でも XFree86 を構築するこ とはできるはずです。難しい点があればお知らせください。
++XFree86 を構築するには、オリジナルの Tahoe 環境を何ヶ所か変更する ++
++必要があります。いくつかの「新しい」機能が呼び出されるので、 ++
++/lib/libc.a(mbtowc.c, putenv.c, strdup.c, strtol.c)に追加されてお ++
++り、多重インクルードを防ぐためにいくつかの古いヘッダファイルが変更++
++されています(/usr/include/{time.h,utmp.h})。これら 3 つのファイル ++
++の日付は「May 31 1994」のはずです。そうでない場合には、"sup" を ++
++行って最新版を入手してください。XFree86 の構築は Mach 3.0 と一緒に++
++出されている gcc 2.3.3 コンパイラで行われました。たぶんこの gcc を++
++使うか、最新版を使いたいと思うでしょう。xc/config/cf/mach.cf には ++
++コンパイラに依存する部分が 1 ヶ所あります。cpp を次のように指定し ++
++てください: ++
++#define CppCmd /usr/mach3/lib/gcc-lib/i386-mach/2.3.3/cpp ++
++#define PreProcessCmd /usr/mach3/lib/gcc-lib/i386-mach/2.3.3/cpp ++
++ここでは、コンパイラと Mach3 「リリース」のルートディレクトリが ++
++/usr/mach3 であるものと想定しています。この習慣に従っていない場合 ++
++や、別のコンパイラを使っている場合には、それに合わせてこれらの 2 ++
++行を変更してください。コンパイルを始める前には ++
++ limit datasize unlimited ++
++を実行しなければなりません。2 つの .c ファイル(lib/X11/StrKeysym.c++
++と programs/Xserver/XIE/mixie/fax/faxtabs.c)については、デフォルト++
++の 6MB を越えるサイズの中間ファイルが生成されるためです。最後にな ++
++りますが、Local CMU Environment を構築する場合には、 ++
++/usr/cs/include がパスに<em/入っていない/ことを確認してください。 ++
通常の XFree86 ディストリビューションでは、 bin ディレクトリ内の全ての
サーバが root に setuid されています。Mach では I/O へのアクセス権限を
管理するのは root ではなく /dev/iopl
です。Mach の場合に必要
なのは、X サーバが /dev/iopl
を読み書き可能でオープンできるこ
とです。これを実現する方法はたくさんあります。
$XFree86: xc/programs/Xserver/hw/xfree86/doc/Japanese/sgml/Mach.sgml,v 1.1.2.2 1999/11/26 15:23:43 hohndel Exp $ $XConsortium: Mach.sgml /main/7 1996/02/21 17:45:27 kaleb $