2007年02月04日

Radeon on Edgy

 DellのOptiplex GX620にUbuntu Linux 6.10 Edgyをインストールしたときの話。GX620はBTOでIntelのグラフィックチップを使うかATI Radeon X600を使うかを選べます。で、研究室のはATI Radeon X600を搭載した奴なんですけど、これがインストールCDではうまくいきません。

自動で認識はされるんですけれど、MachなんとかってエラーがでてXが起動しません。というわけで、こんなエラー画像が出て、コンソール画面で設定をする必要があります。

とりあえず
sudo nano /etc/X11/xorg.conf
と入力し、Section "Device"以下"ATI Technologies"って書いてあるあたりを
#       Driver          "ati"
Driver "vesa"
となるように修正します(atiと書いてある行の先頭に#を追加し、その下にvesaと書いてある行を追加)。vesaとは汎用ドライバの名前。だから大抵のビデオカードはこのvesaドライバを使えばXを動かせるんですけれども、性能は悪いのです。というかブラウザのスクロールがかっくんかっくん。あとBusyBox云々と言われて真っ暗になる人は、(initramfs)の後ろに
chroot /root nano /etc/X11/xorg.conf
と入力してから、上のようにvesaドライバを使う設定にしてみると起動できるかも。

というわけで、Ubuntuのインストールが完了後、前回と同じようにドライバのインストールをします。UbuntuにおけるATIのドライバは二種類あって、ATIが公式に提供しているバイナリドライバ(xorg-driver-fglrx)と、有志が解析したオープンソースのドライバ(xserver-xorg-video-ati)があります。通常はxserver-xorg-video-atiがインストールされていて、そこから自動認識されます。また、3D機能を有効活用したり、Berylのような3Dデスクトップを使いたい場合もオープンソースなドライバ(xserver-xorg-video-ati)が必要なようです。本来、X600もオープンソースのドライバで対応されているはずなのですが、どうもGX620で使っているタイプはちょっと特殊みたいで自動認識はされてもうまく動かないらしいのです。

インストールは簡単。
sudo apt-get install xorg-driver-fglrx
としてから、xorg.confを変更します。
sudo nano /etc/X11/xorg.conf
で、最初に修正した部分を、今度は次のように修正
#       Driver          "ati"
# Driver "vesa"
Driver "fglrx"
vesaの行の先頭に#をつけて、fglrxの行を追加しただけです。これでXを再起動(ctrl+alt+backspace)すれば、表示は快適になります。


 ところがどっこい。たしかに2Dの方は快適に表示されるようになったのですけれども、3Dの方がさっぱり。Stellariumを起動すると2fpsとか出てかなりかっくんかっくんになっちゃいます。/var/log/Xorg.0.logを見てみるとDRIの初期化に失敗したからdirect renderingはできないよーんとみたいなことが書いてあります。

というわけで、fglrxinfoを実行すると
display: :0.0  screen: 0
OpenGL vendor string: Mesa project: www.mesa3d.org
OpenGL renderer string: Mesa GLX Indirect
OpenGL version string: 1.2 (1.5 Mesa 6.4.1)
と表示されています。あれー?glxgearsを実行すると歯車がゆーっくりと回っています。あれれー?念のため再起動しても同じ。あれれれー?

そんなこんなでネットを徘徊していると、本家のHelpに、オープンソースのRadeonドライバのインストール方法ATI提供のRadeonドライバのインストール方法を発見。ざっと読んでみるとオープンソースのドライバの方が3Dにも対応していて良いよん、みたいな記述があったので、まず前者から試してみることにします。様はxorg.confに適切に書き足していって、fglrxモジュールをロードしないようにして、Driverの部分をatiかradeonかにすればいいらしい。

結果、Xすら起動せず。だめじゃん。

というわけで今度はATI提供のバイナリドライバのインストール方法を試してみました。といってもやってることは上とほとんど同じ、でもってxorg.confにExtensionセクションを追加して、Compositeを0にするのがキモらしい。

結果、上と同じで2Dは素早いけどDRIはあいかわらず無効。というか上記HelpにOpenGLのvendorがMesaのときの対処法が載っていますね……一通りやってみたけど、だめでした。Xの再起動やシステムの再起動でも結果は変わらず。こりゃあきらめますか。


 と思っていたらいつのまにかDRIが使えるようになっていました。あれー?最後にあきらめてから、xorg.confはもとより、どこもいじってないはずなんだけどなぁ(fglrxドライバを使用したまま)。fgl_glxgearsを実行すると
Using GLX_SGIX_pbuffer
2403 frames in 5.0 seconds = 480.600 FPS
というハイスコアを叩き出しています。理由がわかんないで今後のために関係ありそうなものの出力だけリストアップ。

xorg.confのModuleはdriとglxをロードしている。Driverはfglrx、Compositeは0。/etc/default/linux-restricted-modules-commonのDISABLED_MODULESは空欄で。

'lsmod | grep fglrx'の結果。
fglrx                 406988  8 
agpgart 34888 2 fglrx,intel_agp


'fglrxinfo'の結果。
display: :0.0  screen: 0
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: RADEON X600 PRO Generic
OpenGL version string: 2.0.6011 (8.28.8)



OpenOffice.orgが起動しない問題
 ATI製のfglrxドライバを使用していて、かつ上記のようにCompositeを"0"にしているとOpenOffice.orgが起動しないそうです。実際起動してみると、スプラッシュスクリーンの途中で以下のエラーを吐いて終了します。困った。
terminate called after throwing an instance of 'std::length_error'
what(): basic_string::_S_create

** (process:10709): WARNING **: Unknown error forking main binary / abnormal early exit ...


とりあえずCompositeを"true"に変更してXを再起動(Ctrl+Alt+BackSpace)すると、OOoを起動できるようにはなります。ただ、その場合DirectRenderingが無効になるので、3Dアクセラレータは使えません。fglrxのバグなのかなぁ。
posted by しぐま at 20:31| Comment(0) | コンピュータ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント