はじめに

2007/05末よりportsに含まれるようになったX.org 7.2で、Matrox Millennium G550のDVI経由でモニタ出力を行おうとしたところ、画面が出力されない(モニタ上の表示が「No Signal」になる)不具合に遭遇しました。

そもそもの原因は、X.orgに標準で添付されているMatroxドライバがDVI出力に対応していないためで、DVI出力に対応するためには、mga_halをports経由で導入する必要がありました。

ただしこのportsが曲者で、コンパイル済みのバイナリをただインストールするだけの動作になっていて、なおかつ古いバージョンのドライバをインストールしてしまっていたため、このページではportsのアーカイブからX.org 7.0.0向けのドライバを取り出して無理やり利用する方法について紹介していました。

しかしながら、この度ようやっと純正ドライバをソースからコンパイルする方法を編み出しましたので、以下にご説明させていただきます。

これでお気に入りのMillennium G550も当面使い続けられるんじゃないかと思います。

Matrox純正ドライバのソースコードからの構築

まずはじめに、Matroxのサイトから純正ドライバのソースコードを取得します。

Matrox純正ドライバのソースコードの取得
$ fetch ftp://ftp.matrox.com/pub/mga/archive/linux/2006/matrox_driver-x86_32-src-4.4.0.tar.gz

続いて、ソースコードを展開し、当方にて作成したパッチを適用します。

ソースコードの展開とパッチの適用
$ tar -xvzf matrox_driver-x86_32-src-4.4.0.tar.gz
$ cd matrox_driver-x86_32-src-4.4.0
$ cp -pR 7.0.0 7.3.0

$ fetch https://www.kishiro.com/FreeBSD/patch/matrox_driver-x86_32-src-4.4.0_xorg-7.3.0.patch
$ patch < matrox_driver-x86_32-src-4.4.0_xorg-7.3.0.patch

上記で適用しているパッチは、X.org 7.3の環境でMatrox純正ドライバがコンパイルできるようにするためのものです。
上記のように展開した「7.0.0」の中のオリジナルのソースコードを、「7.3.0」にすべてコピーし、パッチを適用してください。

「mga_drv.so」の構築

続いて、ドライバ「mga_drv.so」の構築に入ります。
下記のようにして「configure」の後、「make」を行ってください。

「mga_drv.so」の構築
$ cd 7.3.0/src/mga
$ ./configure
$ make

上記の手順で構築したドライバは、HALが有効になります。

構築されたドライバは、「src/.libs/」下に「mga_drv.so」の名前で格納されますが、HALが有効になっているため、このドライバ単体では動作しません。
引き続きmgaのHALドライバである「mga_hal_drv.so」を構築します。

「mga_hal_drv.so」の構築

続いて、HALドライバ「mga_hal_drv.so」の構築に入ります。
困ったことにMatroxから配布されている純正ドライバには、HALドライバ構築用のMakefileは用意されていませんので、下記のようにmakeではなく、直接「gcc」を利用して構築します。

「mga_hal_drv.so」の構築
$cd src

$ gcc -m32 -o ./.libs/mga_hal_drv.so -shared -nostdlib ./.libs/mga_halmod.o ./.libs/clientlx.o ./HALlib/mgaHALlib.a -Wl,-Bstatic -lgcc -Wl,-Bdynamic

これで構築は完了です。

ドライバのインストール

構築されたドライバ、およびHALドライバは、いずれも「.libs/」下にそれぞれ「mga_drv.so」「mga_hal_drv.so」の名前で格納されています。
このファイルを「/usr/local/lib/xorg/modules/drivers/」下にコピーしてください。

標準でmgaドライバをインストールしている場合、上記ドライバの格納先には、既に「mga_drv.so」が含まれていますので、既にあるファイルは「mga_drv.so.original」等にリネームして退避しておいてください。

動作確認済みの環境、動きそうな環境

今回、私の方ではFreeBSD 6.3-RELEASE + X.org 7.3の環境で構築から実際の動作までの一連を確認しています。
未確認ですが、FreeBSD 7.0-RELEASE環境やLinux環境、X.org 7.2環境でもうまくいくんじゃないかと思います。

お試しあれ。

Debian 5.03 と、Ubuntu 8.04(いずれも X.org 7.3)環境では、このパッチを適用したドライバでG550のDVI出力が動作する旨ご連絡を頂きました。ご連絡頂いた方、ありがとうございました。
尚、X.org 7.4ではPciRework対応によりドライバモデルが変更されていて、このパッチではG550を動作させることができない(コンパイルすら通らない)ので、ご注意ください。

変更履歴

2009/09/24

・Linux環境(Debian 5.03およびUbuntu 8.04)での動作報告を追記。
・X.org 7.4においては、PciReworkの影響でドライバモデルが変更され、このパッチでは動作しない旨を追記。


あなたの探し物は見つかりましたか?
まさにこれだ
参考になった
ちょっと違う
これじゃない

何かメッセージがあればお願いします

このメッセージを非公開にする

ご注意

・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。


まだ評価がありません

表示できるメッセージはありません。