2007年3月現在でXFree86の最新バージョンは4.6.0です。
FreeBSD 4.11-RELEASEの/stand/sysinstallの配布ファイルからインストールすると4.4.0がインストールされます。
しかし4.4.0、4.5.0ともに、PC-9821Ra40で正常に使用することが出来ないので、XFree86 4.6.0(もしくは4.3.0)を使いましょう。
参考1: [XFree86] Report of XFree86 4.4.0 on NEC PC98 (1) (The Mail Archive)
(意訳:一部のキー入力が正常に出来ない)
参考2: [XFree86] Report of XFree86 4.5.0 on NEC PC98 (The Mail Archive)
(意訳:PC-98だとTridentドライバでは無限ループになる)
現在、FreeBSDのX環境はX.Orgが標準となっています。
しかしPC-98でX環境を使いたい場合は、X.OrgよりもXFree86の方が良いようです。XFree86の方がお勧めとは一概に言い切れないようです。
FreeBSD 4系は XFree86 が標準なのでそんなに問題ありませんが、FreeBSD 5系以降はX.Orgが標準となっているので注意が必要です。
→FreeBSD 5系以降での使用
FreeBSD 4.x用のXFree86 4.6.0のバイナリを、適当なftpサイトからダウンロードしてきます。
(例えば、ftp://ftp.iij.ad.jp/pub/X/XFree86/4.6.0/binaries/FreeBSD-4.x/ から落とせます)
# もちろん、自分でソースからコンパイルしても構いません。
一緒にあるファイル Install を読めば、何をすれば良いか大体分かるでしょう。
(途中に書いてある、13個くらいのファイルをダウンロードして、"sh Xinstall.sh"と打てばOK)
無事にインストールできたら、設定に移ります。
PC-98 用の XF86Config の雛形として、/usr/X11R6/lib/X11/XF86Config.98 があります。
これを /etc/X11/XF86Config にコピーし、適宜編集して使うことにしましょう。
グラフィカルな画面で編集したいという人は xf86cfg -textmode というものがあります。
/stand/sysinstall から「設定」→「XFree86」と進んで、「xf86cfg -textmode」を選びます。(もしくはコマンドを直接入力)
ここで、自分の環境に合わせて設定をします。
# PC-9821Ra40に搭載されているグラフィックカードは TGUI9682XGi (ProVidia9682) ですがXFree86では tgui9660 で認識するようです。
基本的な設定が終わったら、次に細かいところをエディタを使って直接編集していきましょう。
Xの設定ファイルは /etc/X11/XF86Config です。これを編集していきます。
色々手順を書いていっても良いのですが、めんどくさいので結果だけ。
(日本語のコメントはこのページ用に書き加えたものです。)
MonitorセクションでModelineをうまく設定してやれば、任意の解像度を使うことが出来ます。
Modelineの計算は XF86Config の Modeline の代書屋 を利用すると便利です。
960x720ドットの例を次の設定例で示しています。
# /etc/X11/XFree86Config の設定例 # for PC-9821Ra40 Section "ServerLayout" Identifier "Layout0" Screen 0 "Screen0" 0 0 InputDevice "Keyboard0" "CoreKeyboard" InputDevice "BusMouse" "CorePointer" EndSection Section "Files" # フォントのパス指定など(順番が大事?) RgbPath "/usr/X11R6/lib/X11/rgb" FontPath "/usr/X11R6/lib/X11/fonts/100dpi" FontPath "/usr/X11R6/lib/X11/fonts/100dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/75dpi" FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/misc" FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/CID" FontPath "/usr/X11R6/lib/X11/fonts/PEX" FontPath "/usr/X11R6/lib/X11/fonts/Speedo" FontPath "/usr/X11R6/lib/X11/fonts/TTF" FontPath "/usr/X11R6/lib/X11/fonts/Type1" FontPath "/usr/X11R6/lib/X11/fonts/cyrillic" FontPath "/usr/X11R6/lib/X11/fonts/encodings" #FontPath "/usr/X11R6/lib/X11/fonts/latin2" FontPath "/usr/X11R6/lib/X11/fonts/local" FontPath "/usr/X11R6/lib/X11/fonts/util" EndSection Section "Module" Load "freetype" # Load "xtt" Load "extmod" Load "glx" Load "dri" Load "dbe" Load "record" Load "xtrap" Load "type1" Load "speedo" EndSection Section "ServerFlags" Option "PC98" # なくてもいいけど念のため追加 EndSection Section "InputDevice" Identifier "BusMouse" Driver "mouse" Option "Protocol" "Auto" Option "Emulate3Buttons" Option "Device" "/dev/sysmouse" EndSection Section "InputDevice" Identifier "Keyboard0" Driver "keyboard" Option "XkbModel" "pc98" Option "XkbLayout" "nec/jp" EndSection Section "Monitor" Identifier "DV17C4" HorizSync 31.0 - 69.0 VertRefresh 59.0 - 84.0 Modeline "960x720" 73 960 1000 1176 1288 720 720 738 757 EndSection Section "Device" Identifier "NECTrident" Driver "trident" ChipSet "tgui9660" # tgui9660で認識、なくても良い Card "trident tgui9680" # Option "NoAccel" # Option "SWCursor" Option "NoPciBurst" # ゴミの軽減 Option "SetMClk" "80.00 MHz" # 重要!? # Option "XaaNoCPUToScreenColorExpandFill" # Option "XaaNoScanlineCPUToScreenColorExpandFill" # Option "XaaNoScreenToScreenColorExpandFill" VideoRAM 2048 BusID "0:8:0" EndSection Section "Screen" Identifier "Screen0" Device "NECTrident" Monitor "DV17C4" DefaultDepth 16 SubSection "Display" Depth 8 Modes "960x720" "800x600" "640x480" EndSubSection SubSection "Display" Depth 16 Modes "960x720" "800x600" "640x480" EndSubSection EndSection |
このようなファイルが出来たら、プロンプトで"startx"と打つことによりX Window Systemが起動します。
あとは適当なウィンドウマネージャを入れたり、~/.xinitrc を編集したりして自分の好みのGUI環境を構成して下さい。
ウィンドウマネージャによっては Windows95 や MacOS ライクのものもあります。
僕はウィンドウマネージャには fvwm2 を使っています。
うちのPC-9821Ra40では画面をスクロールしたりすると、ゴミが出てしまいます。
Deviceセクションのオプションで"NoPciBurst"を指定すると、結構改善しますがはあまり実用的ではないかもしれません。
まぁ、XFree86 3.3.6 の頃よりはかなり改善していますが。
"SetMClk"オプションでメモリクロックを指定してあげると、画面の乱れがかなり改善できるようです。
これなら実用的に使えると思います。(完全ではないですが)
ただし、かなり危険な感じがします。
0.1MHz違う値を指定するだけで、画面がハングアップしてしまいます。(CTRL + GRPH + BS の強制終了も無理)
このオプションを試すときは十分注意して実行しましょう。
(例えば、予め "shutdown -r +1" 等として1分後に再起動するようにしておくとか)
ちなみに僕は50.00MHzから100.00MHzまで1MHz単位で試してみた結果、(僕の環境では)80.00MHzが一番良い状態になりました。
どなたか1MHz以下の単位で試してみて、もっと良い状態が得られたらぜひ教えて下さい。
(--) TRIDENT(0): Memory Clock is 46.14 MHz (**) TRIDENT(0): Setting new Memory Clock to 80.00 MHzというログがあり、デフォルトは46.14MHzのようです。つまり、かなり高クロックに設定し直しているので、自己責任で設定しましょう。
以下、/usr/X11R6/lib/X11/doc/Japanese/README98のtrident部分がとても参考になるので、引用します(一部修正)。
# 現在のXFree86は、/usr/X11R6/lib/X11/doc/Japaneseディレクトリが存在しません。下の「その他」参照。
4.4. trident ドライバ NEC の内蔵アクセラレータ (Trident TGUI9680/9682) で動作するドライバで す。Accel でお使い下さい。 4.4.1. XF86Config の設定 VideoRam 2048(または 1024) VideoRam が正しく検出できない場合に設定して下さい。 以下の Option(XaaNoScreenToScreenCopy を除く) は TGUI9680 では設定しな くても動作することが確認されていますが、TGUI9682 では不可欠です。設定 しない場合の症例も含めて解説しますが、これらの問題が生じず、ログに Trident : BitBLT engine time-out. が現れないのであれば設定不要です。(これらは設定しない方が動作が速いこ とを念頭において下さい。) Option "NoPciBurst" マウス・カーソルがマウスの動きに追従せず、またマウス・カーソルの 動いた跡にその「足跡」が残る場合や描画される文字のドット落ちが甚 だしい場合に要設定です。 Option "XaaNoScreenToScreenCopy" 解像度が 1024x768 以下では設定不要です。それを越える解像度におい てマウス・カーソルがマウスの動きに極端に追従しない場合に要設定で す。 Option "XaaNoCPUToScreenColorExpandFill" 文字の描画が極端に遅いかまたは描画しない場合に要設定です。 Option "XaaNoScanlineCPUToScreenColorExpandFill" 文字の描画が極端に遅いかまたは描画しない場合に要設定です。 Option "XaaNoScreenToScreenColorExpandFill" 文字の描画が極端に遅いかまたは描画しない場合に要設定です。 4.4.2. 報告されている問題 いずれも TGUI9682 特有の表示上の問題点です。 o マウスを動かすと、カーソルの軌跡が少し汚れます。 o kterm 上でマウスの左ボタンを押しながらドラッグすると、文字が反転す るところに横線状のノイズが出ます。 o kterm に表示される文字のドットが少し落ちます。 4.4.3. その他 o まだ十分なテストが行われていないので動作レポートをお願いします。 4.4.4. 関連 XFree86 man page, trident man page
Option "XaaNoCPUToScreenColorExpandFill" Option "XaaNoScanlineCPUToScreenColorExpandFill" Option "XaaNoScreenToScreenColorExpandFill"
FreeBSD 5系やFreeBSD 6系では、X.Orgが標準となっています。
したがってXFree86を使いたい場合は、ちょっとした注意が必要です。
portsをmakeする際に、XFree86を使っていることを知らせてあげる必要があります。
/etc/make.conf に、
X_WINDOW_SYSTEM=xfree86-4
の1行を書き加えておきましょう。
X.Orgを使う場合は、修正して使う必要があります。
FreeBSDも独自のパッチを用意しています。それらは /usr/ports/x11*/*/files/ にあります。
X.Orgが対応してくれなくて、かつ、PC-98に共通して致命的なものは、ここに反映していただいているようです。したがって、これらのパッチも利用した方がよいでしょう。
(TGUIのパッチはコミットされた感じです‥‥?(よく分かっていません))
X.Orgのmakeには、私の環境(Celeron 400MHz、Memory 96MB)で2時間くらい(らしい)です。
現在の FreeBSD の packages/ports では、/usr/X11R6/lib/X11/doc/Japanese/README98 がインストールされません。
このファイルに PC-98 に関する情報が書かれています。
ftpサイトで過去のXFree86の配布ファイルを探したところ、4.4.0には、Xjdoc.tgz というファイルが存在し、README98 がありました。
こちらをダウンロードして、手動で解凍し、読んでおくと良いでしょう。(4.3.0のXjdoc.tgzの方がファイルが沢山入っていましたが、どれも古い内容の物っぽいので、4.4.0の物で良いでしょう)
また、ソース(X4?0src-?.tgz)にはREADME98が入っているので、ソースからmakeする場合は別途探す必要はありません。
ソースからmakeする場合は、xc/config/cf/host.def (ファイルが存在しなかったら新規作成)に、
#define InstallJapaneseDocs YES
と書いておけば、インストール時に適切な場所においてくれます。
すでにmakeしてある場合は、展開されたソースの xc/programs/Xserver/hw/xfree86/doc/Japanese/ に存在しているので、再度makeする必要はありません。
PC-98移植チームが、現在でももうほとんど活動していないようですので、今後新たなグラフィックボードがPC-98対応になる見込みはほぼありません。
PC-98でX環境をきれいに使いたい場合は、MGA Milleniumが安定してお勧めのようです。
PC-98でFreeBSDのX環境をメインで使いたい方は、VGAがdisableできる(もしくはPC-98に挿されていた)、Milleniumを搭載したグラフィックボードを探しましょう。(現在では入手困難ですが)
# Savage 2000を搭載した、I-OデータのGA-S2K32/PCIでXを動かそうと試みていますが、(自分でソースを修正しない限り)ほとんど見込みがなさそうです。
# とりあえず、参考までに GA-S2K32/PCIでXFree86を起動したときのログ。