Millennium G550でXFree86 4.1.0

1. Millennium G550

Millennium G550はMATROXの最新(2001年9月現在)のグラフィックカードです。接続はAGPで1x,2x,4xモードをサポートしてます。主な特徴は といったところです。G-Forceとかと比べると3D Gameとかはちょっと弱いらしいですが、私はBSDでテキストな生活をしてるので、どうでもいいです。詳細はhttp://www.matrox.com/mga/products/mill_g550/home.cfmを参照して下さい。
それまでは、Millennium II(8MB PCI)を使っていて、それでも満足だったんですが、PCIバスに空きがなくなったので、AGPなグラフィックカードにすることにしました。AGPなカードにするだけだったら別にG400とかG450でもよかったんですが、なんでG550にしたかというと、Matroxのグラフィックカードとしては初めてDVI端子が標準でついてるからです(実際にはG450にDVI端子モデルというのがあるらしいですが、入手困難らしいです。私も1度も見たことがありません。)。
今年の7月にそれまで5年ほど使ってきたCRTが壊れてしまい、新しくSHARPのLL-T1610WというLCDを購入しました。このLCDにはDsub 15pinのアナログ入力の他に、24pin DVI入力があり、前面のボタンで切り換えて使えます。で、「DVIなグラフィックカード使えば、もう1台でDsub15pin使えて2台でLCD共有できるねぇ」ということで、わざわざDVI端子のあるG550にすることにしました。ちなみに、G550には普通のDsub15pinの端子もあるので、DVIじゃないディスプレイでも使えます。
私は秋葉原のOVER TOPというお店でバルクのG550を13.8k円で入手しました。

2. Linux用ドライバ

さて、最新グラフィックカードでXを使う時に心配なことは、「ちゃんとX動くのか?」ということです。XFree86はベンダーが開発してる訳ではないので、Windowsのようにドライバが製品についているわけではありません。出たばかりのグラフィックカードではまだドライバがないので、Xが動かない、という可能性は高いです。
しかし、最近はちょっと事情が変ってきました。Linuxの普及の影響からか、いくつかのベンダーがWeb上などでLinux用と称してXFree86のドライバモジュールを公開するようになりました。
XFree86は4.xになってから、OSに依存しないドライバモジュールという仕組みができました。これにより、Linux用ということで公開されているドライバをFreeBSDやNetBSDのXFree86でも使えるということになってます。
さらに、Millennium G550に至っては、なんと製品に添付されているCD-ROMにLinux用ということで、XFree86のドライバが入っています!なので、新しいカードを買ってきて、CD-ROMからドライバをコピーして、XF86Configを書けば、Xが動きます!!

3. ドライバのインストール

ドライバのインストールの前に、XFree86 4.1.0オリジナルのMatrox MGA系カードのドライバをバックアップしておきます。万一、Matroxから提供されたドライバに何らかのトラブルがあった時のためです。ドライバは/usr/X11/lib/modules/dri/mga_dri.soというファイルと、/usr/X11/lib/modules/drivers/mga_drv.oというファイルです。
# cp /usr/X11/lib/modules/dri/mga_dri.so /usr/X11/lib/modules/dri/mga_dri.so.old
# cp /usr/X11/lib/modules/drivers/mga_drv.o /usr/X11/lib/modules/drivers/mga_drv.o.old
みたいにすればよいでしょう。
ではドライバをインストールします。以下の例ではCD-ROMを/cdromにマウントしているとします。G550のドライバは/cdrom/Linux/drivers/xfree86/4.1.0にあります(4.0.3用は/cdrom/Linux/drivers/xfree86/4.0.3)。driディレクトリとdriversディレクトリの下にあるファイルをそれぞれ/usr/X11/lib/modules/driと/usr/X11/lib/modules/driversにコピーします。とりあえず以下のようにすればいいはずです。
# cp /cdrom/Linux/drivers/xfree86/4.1.0/dri/* /usr/X11/lib/modules/dri/
# cp /cdrom/Linux/drivers/xfree86/4.1.0/drivers/* /usr/X11/lib/modules/drivers/
これで、driディレクトリにはmga_dri.soが、driversディレクトリにはmga_drv.oとmga_hal_drv.oがそれぞれコピーされます。

実は/cdrom/Linux/driversにはinstall.shというインストールスクプトがあります。これを使いたいところですが、*BSDなOSでは使えません。というのも、実行者がRootかどうか判別するのに、Linux特有のしくみを利用しているためです。

4. XF86Config

とりあえず以下のようなXF86Configで動いてます。今のこのHTMLもG550とSHARP LL-1610W上のXでktermを起動し、その中のjvimで書いてます。
動作環境は以下の通り。
Section "ServerLayout"
	Identifier     "XFree86 Configured"
	Screen      0  "Screen0" 0 0
	InputDevice    "Mouse0" "CorePointer"
	InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Files"
	RgbPath      "/usr/X11R6/lib/X11/rgb"
	ModulePath   "/usr/X11R6/lib/modules"
	FontPath     "/usr/X11R6/lib/X11/fonts/misc/"
#	FontPath     "/usr/X11R6/lib/X11/fonts/Speedo/"
	FontPath     "/usr/X11R6/lib/X11/fonts/Type1/"
	FontPath     "/usr/X11R6/lib/X11/fonts/CID/"
	FontPath     "/usr/X11R6/lib/X11/fonts/75dpi/"
	FontPath     "/usr/X11R6/lib/X11/fonts/100dpi/"
	FontPath     "/usr/X11R6/lib/X11/fonts/TrueType/"
	FontPath     "tcp/localhost:7100"
EndSection

Section "Module"
	Load  "extmod"
	Load  "xie"
	Load  "pex5"
	Load  "glx"
	Load  "dbe"
	Load  "record"
	Load	"type1"
#	Load	"freetype"
	Load	"xtt"
	Load	"ramdac"
EndSection

Section "InputDevice"
	Identifier  "Keyboard0"
	Driver      "keyboard"
EndSection

Section "InputDevice"
	Identifier  "Mouse0"
	Driver      "mouse"
	Option      "Protocol" "auto"
	Option      "Device" "/dev/sysmouse"
EndSection

Section "Monitor"
   Identifier      "Primary Monitor"
   VendorName      "Unknown"
   ModelName       "Unknown"
#   HorizSync       81.1
#   VertRefresh     76.2
  HorizSync       31.5-120
  VertRefresh     40-120
   #Modeline  "1280x1024" 108.00 1280 1328 1440 1688 1024 1025 1028 1066
   Modeline  "1280x1024" 108.00 1280 1312 1416 1664 1024 1027 1030 1064 +hsync +vsync
EndSection

Section "Device"
    Identifier  "Matrox Millennium G550"
    Driver      "mga"
    BoardName   "MGAG550 AGP"
    VideoRam    32768
    BusID	"PCI:1:0:0"
EndSection

Section "Screen"
    Identifier  "Screen 0"
    Device      "Matrox Millennium G550"
    Monitor     "Primary Monitor"
    DefaultDepth 24

    Subsection "Display"
        Depth       8
        Modes       "640x480" "800x600" "1024x768" "1280x1024"
        ViewPort    0 0
    EndSubsection
    Subsection "Display"
        Depth       16
        Modes       "640x480" "800x600" "1024x768" "1280x1024"
        ViewPort    0 0
    EndSubsection
    Subsection "Display"
        Depth       24
        Modes       "1280x1024"
        ViewPort    0 0
    EndSubsection
EndSection

5. DVIでXは使えるか?

結論から言うと、使えませんでした。DVI接続にしてマシンを再起動すると、BIOSや起動メッセージ、コンソールまでは出ますが、Xを起動すると、途中でLCDにNO SIGNALとメッセージが出てしまいます。他のマシンからsshでログインして調べると、XがCPUを100%使ってしまっていて、どう見ても正常に動いてないです。
さらに、Xを終了させても、DVIにはシグナルが出てきません。もちろんアナログ側にも…。もう再起動するしかありませんでした。
現状ではG550ではDVI接続でXを使うことは難しそうです。もっとも、私のXF86Configが悪いだけかも(このページに掲載してあるのはアナログ用のです)しれませんが…

BSDのページに戻る
$Id: g550.html,v 1.1.1.1 2002/01/13 08:40:33 mira Exp $