DG/ux R4.20MU04 が動作する Intel Pentium Aviion マシンでの XFree86 の構築手順 Takis Psarogiannakopoulos July 27, 1999 The X Japanese Documentation Project September 12, 1999 ____________________________________________________________ 目次 1. 新しいことがら 2. 一般的な手順: 3. 構築のための設定: 4. GCC に関する説明 5. 構築 6. バイナリのインストール: 7. What is about: 8. 日本語訳について ______________________________________________________________________ 1. 新しいことがら 1999 年 7 月 12 日 DG は /usr/lib/tcpip.so にあるストリームのバグを修正しました(後述)。 7 月 25 日のソース時点での問題回避のコードは削除されました。筆者は DG よ り、DGUX では BSD ソケットの方が SVR4 ネイティブの STREAMS より高性能 であると聞きました。R4.20MU06 から DG/ux は正しい tcpip.so を持ってい ます(STREAMS にバグがない)。MU05, MU04 をお使いで、何らかの理由により STREAMS が絶対必要ならば、DG に連絡して修正済みの /usr/lib/tcpip.so を もらいましょう(MU04,5 へのパッチです)。 現時点では DG/ux には sysi86 システムコールと SYSI86IOPL の定義があり ません(SYSI86IOPL の定義は にありますが、UNIXWARE の定 義に守られています。UNIXWARE の定義は当然、DG/ux には適用できません)。 このヘッダが単純に -DDGUX を指定することで適用されるようになり、かつ _sysi86 と sysi86 サブルーチンが libc(あるいはその他の追加ライブラ リ)に加えらるまでは、DG_NO_SYSI86 に 1 を定義しなければなりません。 DG がこのような修正を行えば、(構築前に!)手動でファイル xc/programs/Xserver/hw/xfree86/SuperProbe/OS_DGUX.c, xc/programs/Xserver/hw/xfree86/etc/scanpci.c, xc/programs/Xserver/hw/xfree86/os-support/dgux/dgux_video.c を編集 し、DG_NO_SYSI86 フラグを 1 から 0 に変えることにより取り消す必要があ ります。 1999 年 7 月 25 日 大きなバグはこのリリースで修正されました。バグにより DG/ux の STREAMS インタフェースが壊れていたため、サーバはポート 6000(= 0x1770) ではなく 0x7017 を監視していました。3.3.3.1 と 3.3.3 に含まれていた全てのバイナ リはローカル(プログラムをサーバと同じマシンで動かした場合)、では動きま すがリモートでは動きません。なぜならこれらはポート 28365 に接続しよう とする Xlib を使っているからです。リモートでも動作するようにしたけれ ば、再コンパイルが必要です! 最初にこれに気づかせてくれた Steve さんに 感謝しますが、その後忙しすぎて詳しく見ることができませんでした…。多分 やらなければならなかったのでしょうが…。 ioctl ではなくソケットを使うようにしました。しかし STREAMS の修正とテ ストも行いました。 これは実は DG/ux の問題であることをわからせてくれた David さんに感謝し ます。 筆者は、苦労して gdb-4.17/8 と ddd (gdb の X インタフェース)の移植も行 いました。これは X サーバが生成したコアファイルのトレース結果を筆者に 送れるようにするためのもので、 pub/XFree86/3.3.5/binaries/DGUX- ix86/GDB_BETA にあります(バイナリとソースの両方)。コマンド gdb /usr/X11R6/bin/X location of core/core gdb: where を実行し、その表示結果を筆者に送ってください。(X サーバの実行ファイル は /usr/X11R6.3/bin にあるものとしています。) 3.3.3.1 より: いくつかのバグが修正されました。この公式リリースパッチで DG/ux がサポートされるようになりました。全ての設定は xc/config/cf/DGUX.cf と xf86site.def にあります。また、Imake は DGUX OS を(リリースバージョンも含めて)自動検出します(David Dawes に感謝)。 したがって、ただ "make World" するだけで ix86 用の DG/ux を構築できま す。普通の構築手順は、("xc" ツリーの展開とパッチ当てを行った後に) xc/config/cf に行き、ファイル xf86site.def を site.def にコピーし、 DGUX.cf, site.def を編集して必要な変更を全て行うというものです。 3.3.5 での ProjectRoot のデフォルト値は /usr/X11R6 です(DGUX.cf で特別 にこの値を設定している場合は除きます。筆者は /usr/X11R6.3 にしています し、読者の皆さんが好きな値を設定していることもあるでしょう)。 1998 年 12 月 1 日。重要: README-GCC-2.8.1 ファイルを読んでください。 X11R6.3 を DGUX で構築するには、GCC のバージョン 2.8.1 が推奨されま す。既に gcc-2.8.1 をお使いであれば、gcc コンパイラに関する以下の古い 説明は無視して構いません。 2. 一般的な手順: ftp.xfree86.org から XFree 3.3.x のソースコードを入手します: ftp ftp.xfree86.org login: ftp passwd: あなたのメールアドレス cd pub/XFree86/3.3.5/source You need the files: X335src-1.tgz X335src-2.tgz X335src-3.tgz X の contrib ソフトウェアを入手します。 cd /pub/XFree86/3.3.5/source X335contrib.tgz 3.3.3 のソースファイルの tar アーカイブをお持ちであれば、 /pub/XfFree86/3.3.5/binaries/DGUX-ix86/SOURCE に移動し、DGUX 用のソー スパッチを入手します: 3.3.3-3.3.5-DGUX.diff.gz X335contrib-DGUX.diff.gz (contrib ソフトウェア用のパッチ) これは同じソースコードを何度もダウンロードするのを避けるためです。 申し訳ありませんが、DGUX 用の変更は 3.3.4 の公式リリースの締め切りに間 に合いませんでした。筆者は無償でこの作業を行っているので、すみませんが 時にはこういうことになります…。 X11R6.3 を構築するには、DG/ux 用のツールも必要です(後で説明します)。必 要なツールは anonymous ftp で dpmms.cam.ac.uk (University of Cambridge,Department of Pure Mathematics) の /pub/takis/DGUX- Tools/BuildXtools.tar.gz, あるいは ftp.xfree86.org の pub/XFree86/3.3.5/binaries/DGUX-ix86/SOURCE/BUILD- TOOLS/BuildXtools.tar.gz を入手してください。 big ファイルシステムを使って(筆者は、ブロックサイズが 1400000 である仮 想ディスク "xf86work" を/xf86work にマウントして使っています)ソースを 以下のようにコピーします: cp X335src-1.tgz /xf86work/X335src-1.tar.gz cp X335src-2.tgz /xf86work/X335src-2.tar.gz cp X335src-3.tgz /xf86work/X335src-3.tar.gz (あるいは、上記の X333src-1,2,3.tar.gz に加えて 3.3.5 への DG/ux 用 パッチ、すなわち 3.3.3-3.3.5-DGUX.diff.gz もコピーします。 ) たぶん contrib ソフトウェアもコピーするでしょう: cp X335contrib.tgz /xf86work (cp X335contrib-DGUX.diff.gz /xf86work) DGUX-ix86 からパッチを入手した場合には、ソースから 3.3.3 を構築する際 の最初の問題は、ソースパッチを適用するためには、非常に一般的な GNU プ ログラムなのに DG/ux には入っていない(!?) "patch" が必要なことです。こ のプログラムは BuildXtools.tar.gz に入っています(または ftp prep.ai.mit.edu, cd /pub/gnu, get patch-2.5.tar.gz してください)。です から、他のことの前にこれらのツールのことを説明しておきましょう: "sysadm" を使ってファイルシステム usr_local を /usr/local にマウントし てください。ブロックサイズは 200000 です。それから BuildXtools ファイ ルを /usr にコピーし、以下のコマンドを実行します: gzip -d < BuildXtools.tar.gz | tar xvf - これは新しいファイルシステム /usr/local に展開されます。それから自分の ".profile" (自分のホームディレクトリにあります。筆者の例では /admin に あります)を編集して、/usr/local/bin をパスに加え、 /usr/local/lib をラ イブラリパスに加えます。 以下のような設定が必要です(vi .profile): PATH=/usr/local/bin:/sbin:/usr/sbin:/usr/bin if [ -d /usr/opt/X11/bin ] then PATH=$PATH:/usr/opt/X11/bin fi export PATH (/usr/local/bin は他のどのパスよりも前です!) LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/ccs/lib export LD_LIBRARY_PATH 編集が終わったらログインし直して、修正済みの .profile を有効にします。 それから以下の手順を行います: cd /usr/sbin cp install install_dg rm install cp /usr/local/bin cp install /usr/bin *(GNU installをデフォルトの install コマンドにします)* (DG/ux の install コマンドは役立たずです) (後述の xc/config/cf/DGUX.cf ファイルも見てください) (あるいは GNU make-3.77 を入手し、install.sh (または -sh) を /usr/bin/install にコピーします) cd /usr/bin cp true /usr/local/bin cd /usr/local/bin ln -s true ranlib (DG/ux システムでは、true コマンドを ranlib としてインストールします) 全ての /usr/local/bin のツールは通常、-v, -V, --version を与えるとバー ジョン情報を返します。 **構築を行う前には、gcc に関する説明(後述)を見てください。** ここで、ソースツリーの tar アーカイブを展開します。 /xf86work (または 構築のために用意した big ファイルシステムの名前) で以下のコマンドを実 行してください: gzip -d < X335src-1.tar.gz | tar xvf - gzip -d < X335src-2.tar.gz | tar xvf - gzip -d < X335src-3.tar.gz | tar xvf - (X-3.3.3 を持っていれば、3.3.3 のソースを同じように展開し、以下のコマ ンドで 3.3.5-DGUX のソースパッチを適用します: gzip -d < 3.3.3-3.3.5-DGUX.diff.gz | patch -p0 -E) これで、構築用のファイルシステムに xc ディレクトリができました。 3. 構築のための設定: 必要な設定はほとんど全て xc/config/cf にある "DGUX.cf" ファイルにあり ます。DGUX.cf ファイルと site.def ファイルを編集し、必要な設定を全て行 います。DGUX.cf は site.def の設定を上書きすることを覚えておいてくださ い。XFree86-3.3.5 からは ProjectRoot のデフォルト値が /usr/X11R6 にな りました(site.def で設定されています)。この値を好きなように変更したけ れば(筆者は /usr/X11R6.3 が好きで、/usr/X11R6->X11R6.3 というリンクを 作っています)、DGUX.cf を編集して以下のような項目を見つけてください: #if 0 #define ProjectRoot /usr/X11R6.3 #endif #if 0, #endif を削除します。それからこの値を好きなように変更します(筆 者はコンパイル済みのバイナリが使えるように上記の設定を使うようにしてい ます)。 DG/ux の malloc はゴミ同然で、一部の X ソフトウェアで問題ばかり起こす ので、筆者は使っていません。その代わりに GNU malloc を移植したものを /usr/local に置いています(これは BuildXtools file に入っています)。 DG/ux の /lib/libmalloc.a を使って構築しようとしてはいけませんし、これ を使ったために一部のプログラムが正しく動作しなくても筆者にメールを送ら ないでください。筆者が構築した時には tcl8.0 と tk8.0 を使っています。 というのも、R4.20MU03 の xconfig はモニタについて誤った値を返すので、 ディスプレイの調整を行うために XF86SEtup を構築する必要があるからで す。これを使わない(あるいは欲しくない)のであれば、(DGUX.cf の)tck, tk に関する行をコメントアウトしてください: /*******TCL TK DEFINITIONS ***********/ #define HasTk YES-->NO ... #define HasTcl YES-->NO また、X11R6.3 を正しく構築するためには 'GNU make' も必要です(これは Buildxtools ファイルに入っています)。tcl, tk を使う設定にした場合には tcl8.0.3.tar.gz tk8.0.3.tar.gz (どこかの FTP サイトから) を入手し、X11R6.3 を構築する前にこれらをコンパイルしてください(まず tck8.0.3 を構築し、それから tk8.0.3 を構築します)。 4. GCC に関する説明 DG/ux のシステム付属の gcc については、言わなければならないことが多す ぎます。このコンパイラを使うと問題が起きるプログラムを全部押えようとす ると、きっと本が一冊できてしまいます(もちろん DG にとっては役立つで しょうが)。しかし筆者のすべきことは DG/ux のコンパイラのバグを直す類の ことではないし、DG の賢い人のために報告を集めることでは特にありませ ん。 (DG へ: 仕事でやっている人には申し訳ないですが、筆者は純粋な数学 者であり、全ての作業は楽しむためにやっており、DG やその他から金をもら いたいわけでもなく、DG の就職しようと思っているわけでもありません。し たがって、筆者は基本的には DG/ux のトラブルシューターではありません。 しかし、たぶん場合によっては、DG が手助けをしてくれるなら、筆者もお手 伝いできることがあるかもしれません。) 筆者が行いたいのは X11 の構築です。以上が、BuildXtools に新しい gcc が 入っている理由です。この gcc は DG/ux R4.20MU02 用に作られています。で すから、このバージョンまで DG/ux の OS のバージョンを上げる必要があり ます。しかし、この gcc は信頼できるので、X11 だけでなく他に欲しいもの 全てを構築する際にも使えます。DG/ux の gcc を使ってはいけません。これ を使ったら、どんな問題に出会おうが筆者の知るところではありません。この 新しい gcc のインストールは以下の手順で行います: cp -r /usr/local/gcc-dgux /usr/opt/sdk/sde/ix86dgux/usr/lib cd /usr/opt/sdk/sde/ix86dgux/usr/lib rm gcc ln -s gcc-dgux gcc (gcc--->gcc-dgux のリンクを設定します) cd /usr/local cp -r /usr/local/gcc-dgux /usr/sde/ix86dgux/usr/lib cd /usr/sde/ix86dgux/usr/lib rm gcc ln -s gcc-dgux gcc (gcc-->gcc-dgux のリンクを設定します) DG/ux の古い gcc も使えるように、上の 2 つのリンクを gcc--gcc-2 に変更します。これは以下のコマンドで行います(上の 2 つ のディレクトリで実行します): rm gcc ln -s gcc-2 gcc /usr/bin/gcc -v を実行すると使える gcc のバージョンが表示されます。こ のバージョンの X11 を正しく作るには、gcc は *必須* です。 動的ローディングサーバ: xc/config/cf/DGUX.cf を編集し、以下の項目を変 更します: #ifndef BuildDynamicLoading #define BuildDynamicLoading NO --- Build-dg.log これにより、画面上の全てのエラーメッセージを保存することができます。 -znodefs に関するメッセージは気にしなくても構いません。 注意: 古いコマンドである make World BOOTSTRAPCFLAGS="-DDGUX" > Build-dg.log は現在は必要ありません。というのも、(XFree86-3.3.3.1 以降では)imake が DGUX OS を自動的に検出し、設定を全て行うからです。しかし、このコマンド も使えます。 別の xterm 上で 'cd xc', 'tail -f Build-dg.log' を実行し、構築の進行状 況を見張ります。 X11R6.3 ベースである XFree86 バージョン 3.3.5 を構築した後にインストー ルを行うには、usr_X11R6.3 といったファイルシステムがあり、 /usr/X11R6 にマウントされていなければなりません。ブロックサイズは 350000 で す。(DGUX.cf を編集して ProjectRoot の値を site.def のデフォルト値であ る /usr/X11R6 以外に変えた場合には、そこで設定した ProjectRoot を指定 してください。) 次に以下のコマンドを実行します: make install make install.man (オンラインマニュアルをインストールします) このインストールでは XF86Config が /usr/X11R6.3/lib/X11/ にインストー ルされないので、startx を実行しても新しい X11 は起動しないでしょう。こ の ftp サイトにある README-X3331.DGUX (バイナリのディレクトリにありま す)を読んで、X11R6.3 全体のインストール手順を調べてください。簡単に済 ませるなら以下の手順を行ってください: (DG/ux のマウスデバイスは "/dev/mouse" とします) cd /usr/X11R6.3/bin ln -s XF86_VGA16 X 次にパス /usr/X11R6.3/bin を .profile に設定し、XF86Setup を実行します。マウス デバイスを設定し、それから他の調整を全て行います。 (本当は README- DGUX.INSTALL ファイルを読む必要があります。このファイルの最後を見てく ださい。) XFree86-3.3.5 付属の contib ソフトウェアを構築するには、 X335contrib.tgz を入手し、以下のコマンドを実行します: gzip -d < X335contrib.tgz | tar xvf - (3.3.3 のソースがある場合には、X333contrib.tgz を展開し、DGUX 用のパッ チを以下のようにして当てます): gzip -d < X335contrib-DGUX.diff.gz | patch -p0 -E ). 注意してください: お使いのシステムで imake が正しく動作するためには、 構築した X11R6.3 が既にインストール・動作していなければなりません。こ の X ウィンドウシステムをインストールする方法は後述します。その後に以 下のコマンドを実行してください: cd contrib xmkmf -a make make install make install.man (オンラインマニュアルのインストール) 6. バイナリのインストール: 注意: この実行ファイルはマクロ -DPENTIUM_CHANGE 付きで構築されています (これは新しい Aviion マシンを全てサポートするためのものです)。古い i486 をお使いであれば(あまりないでしょうが)、実行ファイルは正しく動作 しません。しかし、-mcpu=pentiumpro は使っていないので、全ての Pentium マシンで動作します。 o ProjectRoot の設定: 筆者は ix86 DG/ux 用の ProjectRoot の位置を /usr/X11R6.3 にしています。(3.3.5 のソースの)デフォルト値は /usr/X11R6 です。これに対応するため、/usr ディレクトリに X11R6-& info1 、あるいはもっと詳しいメッセージが見たければ X -verbose -verbose >& info2 を使います。 それから、X サーバが起動した後で CONTROL+ALT+BACKSPACE を押してサーバ をシャットダウンさせます。ファイル info1 (または info2) にはグラフィッ クスカード、ディスプレイのメモリ容量などに関する関連情報が記録されてい ます。筆者としては、新しい X11R6.3 を使い始める前に最低一度はこれを行 うことをお勧めします。このファイルを見て、全て正しいかどうかを確認しま す。そうでなければ、XF86Config の設定を変更し、それで正しくなるか試し てみましょう。 ATI RageII (または RageII+)をお使いであれば、XF86_Mach64 を使ってくだ さい(X-#045;#045; )。問題点の指摘 やご意見は藤原まで御連絡ください。原文の著作権は XFree86 プロジェクト 社にあり、日本語訳に伴う権利は X Japanese Documentation Project にあり ます。