2007/05末よりportsに含まれるようになったX.org 7.2で、Matrox Millennium G550のDVI経由でモニタ出力を行おうとしたところ、画面が出力されない(モニタ上の表示が「No Signal」になる)不具合に遭遇しました。
この問題の回避方法について、簡単にまとめてみましたので、同様の不具合でお困りの方の参考になれば幸いです。
元々、Millennium G550でDVI出力を利用する場合には、Matroxから提供されている純正のX.org用のドライバを利用する必要があります。
Matrox純正ドライバはmga_halのports(/usr/ports/x11-servers/mga_hal)を構築することにより、システムにインストールされるようになっていますが、2007/08/13現在のportsでは、X.org 7.0.0用のバイナリがあるのにもかかわらず、X.org 6.9.0用のバイナリがインストールされてしまいます。
また、インストール先も微妙に違っていますし(「/usr/local/lib/xorg/modules/drivers/」ではなく「/usr/local/lib/modules/drivers/」にインストールされる)、ただ単にMatroxのサイトからコンパイル済みのバイナリを持ってきてコピーしているだけなので、make installではなくmakeだけして、展開したファイルを個別にインストールすることにします。
$ cd /usr/ports/x11-servers/mga_hal $ make
上記のようにすると、「work」以下にドライバが展開されますので、X.orgインストール時にインストールされているデフォルトのmgaドライバを退避させてから、ドライバがおいてあるディレクトリに遷移して下記の手順でファイルをインストールします。
$ cd /usr/local/lib/xorg/modules/drivers/ $ mv mga_drv.so mga_drv.so.original $ cd /usr/ports/x11-servers/mga_hal/work/matrox_driver-x86_32-4.4.0/xserver/7.0.0/ $ cp -p mga_drv.so /usr/local/lib/xorg/modules/drivers/ $ cp -p mga_hal_drv.so /usr/local/lib/xorg/modules/drivers/
インストールが完了したので、後はX.orgを起動するだけ…といいたいところですが、このままstartx等を行ってX Serverを起動させようとしても、ABIモジュールのエラーで止まってしまいます。
ABI (Applications Binary Interface) は、同一のCPU上で動作するバイナリを異なったシステム間で動作させる(もしくは動作させない)仕組みで、バイナリを動作させる前にELFバイナリに書き込まれた情報をチェックし、そのバイナリを動作させていいのか/だめなのかを判断しています。
今回、ABIモジュールでエラーが出るのは、mga_drv.soのABIバージョンと、X WINDOW SERVERのABIバージョンが異なるためです。
このエラーの回避方法で一番シンプルなのは、ABIモジュール自体を無効化する方法です。
ABIモジュールによるチェックを無効化するために、xorg.confに以下の記述を追記します。
Section "ServerFlags" Option "ignoreABI" "true" EndSection
この対策によって、X WINDOW SERVER起動時にWarningが出るものの、X.org 7.2上のMillennium G550のDVI出力から画面が表示できるようになります。
この問題の根本的な解決策は、Matroxから提供されている純正ドライバのソースコードをFreeBSD上でコンパイルしなおすことです。(「brandelf」も試してみましたが、ABIのメジャーバージョンは変更できないようです…)
この解決方法については、「Matrox Millennium G550をX.org 7.2で利用する(完全版)」で紹介していますので、ご確認ください。
・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。
まだ評価がありません |
表示できるメッセージはありません。