2007年3月9日の日記の1番目の記事へのコメント

ThinkPad T60 -Mobility Radeon X1300編-

一段落したので本格的にいじり始めたぞ! mkinitrdをいれたんですが,なんかできたinitrdがまずかったか,起動時にSATA関連のドライバを呼んでくれずpanicのまま.起動しないと何もできないので,ひとまず静的に組み込んで逃げちゃいました./etc/modprobe.confに問題ありな予感ですが,何をどう書けばいいのかよくわからん・・・.そのうち何とかしよう.

で,ちゃんとLinuxが起動するようになったんで,Xの設定を開始.今まで使っていたT42はMobility Radeon 7500なるチップを積んでたんで,ATIの配布してるドライバ(fglrx)が使えず3Dパフォーマンスが本来のチップ性能に比べてかなりしょんぼりな感じだったんですが,今回の2623-M3EはMobility Radeon X1300なんか積んでたりして,普通にfglrxが使える模様.これは入れないわけにはいかんでしょうというわけで,早速ATIのページからドライバをダウンロード.何かXorg-7.1までしか対応していなさそうなことが書いてありましたが,気にしない方向で.

「sh ~/ati-driver-installer-8.34.8-x86.x86_64.run --extract ati-driver-installer-8.34.8」とかやって開いてみると,謎のスクリプトがやたらといっぱい出てきますな.びびりつつもディレクトリの下を漁ってみると,必要そうなものは大体そのまんまの形で置いてある模様(x710,arch/x86,common/usr/X11R6,common/usr/include/GL にあるファイルあたり).ビルドしなきゃならないのはカーネルモジュールくらいですかねー.まずはXOrg-7.2の各種ファイルの配置を参考にファイルをコピー (xorg-serverを「--prefix=/usr/local --with-dri-driver-path=/usr/local/lib/xorg/modules/dri」とかつけてconfigureして入れてるんで,パスは普通とだいぶ違うかも).

# libGL.so.1.2 は上書きしてしまえ
cp arch/x86/usr/X11R6/lib/*.so.* /usr/local/lib
cp arch/x86/usr/X11R6/lib/*.a /usr/local/lib

cp common/usr/X11R6/include/X11/extensions/fglrx_gamma.h \
  /usr/local/include/X11/extensions

cp common/usr/include/GL/*.h \
  /usr/local/include/GL

cp arch/x86/usr/X11R6/lib/modules/dri/fglrx_dri.so \
  /usr/local/lib/xorg/modules/dri

cp x710/usr/X11R6/lib/modules/drivers/fglrx_drv.so \
 /usr/local/lib/xorg/modules/drivers

cp x710/usr/X11R6/lib/modules/linux/libfglrxdrm.so \
 /usr/local/lib/xorg/modules/linux

で,これでxorg.confのドライバを「fglrx」に書き換えてstartxしてやったら無事Xが上がったんですが・・・何か3Dアクセラレーションがまったく効いてません(;´д`).Titanionが激重.Xorg.0.logを見てみると・・・

(EE) AIGLX error: dlopen of /usr/local/lib/xorg/modules/dri/fglrx_dri.so failed
(/usr/local/lib/xorg/modules/dri/fglrx_dri.so: undefined symbol: __glXFindDRIScreen)
(EE) AIGLX: reverting to software rendering

(´・ω・`). 調べたらこの辺にヒントが.あー,libGL.soのリンク張り直し忘れてるだけでした.

ln -fs libGL.so.1.2 /usr/local/lib/libGL.so.1
ln -fs libGL.so.1 /usr/local/lib/libGL.so

再挑戦.まだ重い・・・.今度はこんなメッセージがログに出とります(´・ω・`)

(EE) AIGLX error: dlsym for __driCreateNewScreen_20050727 failed 
(/usr/lib/dri/fglrx_dri.so: undefined symbol: __driCreateNewScreen_20050727)
(EE) AIGLX: reverting to software rendering

なんかATIのドライバはAIGLXなるやつに対応していないらしい? ここを参考に以下のようにxorg.confに書き足してAIGLXを切ってみました.

Section "ServerFlags"
        Option      "AIGLX" "off"
EndSection
Section "Extensions"
        Option      "Composite" "Disable"
EndSection

が,まだだめ.まったく3Dアクセラレーションが効いてない感じです.うーん.試しにドライバについてきたfglrxinfoを実行してみると・・・

% LD_LIBRARY_PATH=/usr/local/lib ./arch/x86/usr/X11R6/bin/fglrxinfo
display: :0.0  screen: 0
OpenGL vendor string: Mesa project: www.mesa3d.org
OpenGL renderer string: Mesa GLX Indirect
OpenGL version string: 1.4 (1.5 Mesa 6.5.2)

どうみてもMesaです.本(ry _|‾|○ でも何が悪いのかさっぱり・・・.ググってたら LIBGL_DEBUG環境変数を「verbose」とかに設定しとくと詳細が出てくるとの情報が.

% LIBGL_DEBUG=verbose LD_LIBRARY_PATH=/usr/local/lib arch/x86/usr/X11R6/bin/fglrxinfo
libGL: XF86DRIGetClientDriverName: 8.34.8 fglrx (screen 0)
libGL: OpenDriver: trying /usr/X11R6/lib/modules/dri/fglrx_dri.so
libGL error: dlopen /usr/X11R6/lib/modules/dri/fglrx_dri.so failed (/usr/X11R6/lib/modules/dri/fglrx_dri.so: cannot open shared object file: No such file or directory)
libGL error: unable to find driver: fglrx_dri.so
libGL: XF86DRIGetClientDriverName: 8.34.8 fglrx (screen 0)
libGL: OpenDriver: trying /usr/X11R6/lib/modules/dri/fglrx_dri.so
libGL error: dlopen /usr/X11R6/lib/modules/dri/fglrx_dri.so failed (/usr/X11R6/lib/modules/dri/fglrx_dri.so: cannot open shared object file: No such file or directory)
libGL error: unable to find driver: fglrx_dri.so
display: :0.0  screen: 0
OpenGL vendor string: Mesa project: www.mesa3d.org
OpenGL renderer string: Mesa GLX Indirect
OpenGL version string: 1.4 (1.5 Mesa 6.5.2)

/usr/X11R6/lib キタ━━━(゜∀゜)━( ゜∀)━(  ゜)━(  )━(  )━(`  )━(A` )━('A`)━━━!! そんなディレクトリありませんから!・・・なんでこんなところ見るんじゃこいつは・・・.もしや・・・libGL.so.1.2をstringしてみると・・・

% strings /usr/local/lib/libGL.so | grep X11R6
/usr/X11R6/lib/modules/dri

どう見ても生パスです. /usr/X11R6/lib/modules/dri を掘って,そこにfglrx_dri.so コピーしたら,fglrxinfo の結果が無事変わってくれました.はぁ.

% LD_LIBRARY_PATH=/usr/local/lib arch/x86/usr/X11R6/bin/fglrxinfo display: :0.0  screen: 0
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: ATI Mobility Radeon X1300
OpenGL version string: 2.0.6334 (8.34.8)

さて,こやつはどうしてくれよう・・・.libGL.so.1.2 をバイナリエディタで直接書き換えて「/usr/X11R6/lib/modules/dri」を「/usr/local/lib/xorg/modules/dri」にすればいいんじゃね?と思ったんですが,後者の方が長いから無理だし.とりあえず後回しでいいや.で,今度こそ!という感じでTitanionを実行してみると・・・こんどは以下のようなメッセージがどばどばと吐き出され,違った重さが(;´д`)

FGLTexMgr: open of shared memory object failed (Function not implemented)
__FGLTexMgrCreateObject: __FGLTexMgrSHMmalloc failed!!!

なんじゃこりゃー! 調べてみたらここに答えがありました./dev/shm を掘って,「mount -t tmpfs tmpfs /dev/shm」とやってマウントしてやったところ,ついに Titanionが滑らかに動くように! うわーい.

[コメントを書く]

nosuke 2007/03/10(土) 16:50:47
Mesaのソース読んだら瞬時に解決
export LIBGL_DRIVERS_DIR=/usr/local/lib/xorg/modules/dri
でいけるっぽいっす.いやっほぅ

お名前:  メールアドレス(省略可):
メールアドレスも表示されます
ここに名前その他を書いてはいけません: ここにメールアドレスその他を書いてはいけません:

2007年3月9日の日記の1番目の記事へのコメント

中の人情報

名前:
nosuke (のすけ)
メール:
sasugaanijaのgmail.com
「の」は「@」みたいな
関連リンク:

カレンダー

2007年3月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

<<先月分

翌月分>>

最新の10件のエントリ

最近の10件のコメント

過去ログ