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のサイトから純正ドライバのソースコードを取得します。
$ 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」の構築に入ります。
下記のようにして「configure」の後、「make」を行ってください。
$ cd 7.3.0/src/mga $ ./configure $ make
上記の手順で構築したドライバは、HALが有効になります。
構築されたドライバは、「src/.libs/」下に「mga_drv.so」の名前で格納されますが、HALが有効になっているため、このドライバ単体では動作しません。
引き続きmgaのHALドライバである「mga_hal_drv.so」を構築します。
続いて、HALドライバ「mga_hal_drv.so」の構築に入ります。
困ったことにMatroxから配布されている純正ドライバには、HALドライバ構築用のMakefileは用意されていませんので、下記のようにmakeではなく、直接「gcc」を利用して構築します。
$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環境でもうまくいくんじゃないかと思います。
お試しあれ。
・Linux環境(Debian 5.03およびUbuntu 8.04)での動作報告を追記。
・X.org 7.4においては、PciReworkの影響でドライバモデルが変更され、このパッチでは動作しない旨を追記。
・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。
まだ評価がありません |
表示できるメッセージはありません。