• 対象とするUbuntuのバージョン

    • 11.04 Natty Narwhale
    • 10.10 Maverick Meerkat
    • 10.04 Lucid Lynx

本文書は、この文書を元に和訳、追記したものです。原文も併せて参照下さい。

この文書は、"radeon"、"ati"として知られるATIグラフィックカード用のフリーのオープンソースドライバの使用方法について説明します。このドライバは2D、もしくは、3Dのアクセラレーションを提供します。一部のカードに対しては、このドライバはAMD/ATI Inc.から提供されるクローズドソースのプロプライエタリドライバ、"fglrx"ドライバほど速くはありません。しかし、デュアルヘッドサポートに関しては優位にありますし、fglrxドライバがサポートしていない、より古いチップもサポートしています。

サポート範囲について

デバイスの確認

最初にグラフィックカードの名前とチップセットを確認して下さい。 lspci -nn | grep VGA を実行すると、下記のようなグラフィックカードについての情報が出力されます。

例1:

01:00.0 VGA compatible controller: ATI Technologies Inc RV350 AS [Radeon 9550] 

例2:

01:05.0 VGA compatible controller [0300]: ATI Technologies Inc RS880 [Radeon HD 4200] [1002:9710] 

サポートされないデバイス

現在、下記のデバイスでは、"radeon"ドライバを使用することはできません。

CAYMAN      RadeonHD 69x0 series - kernel 2.6.39で基本的なモードセッティングはサポートされるでしょう。

これらのカードを使用する場合は、"fglrx"ドライバを使用して下さい。

要 Natty/11.04 および モードセット

下記のデバイスは Ubuntu Natty/11.04 で動作するはずです。しかしながら、3Dアクセラレーションを得るには、標準のものより新しいバージョンの Mesa (7.11.x) が必要になります (Nattyのデフォルトは 7.10.xです) 。

PALM        RadeonHD 6310/6250
TURKS       RadeonHD 6570/6670
CAICOS      RadeonHD 6450

3Dを含むサポート

下記のデバイスでは、3Dアクセラレーションもサポートされています。

R100                        Radeon 7200
RV100                       Radeon 7000(VE), M6, RN50/ES1000
RS100                       Radeon IGP320(M)
RV200                       Radeon 7500, M7, FireGL 7800
RS200                       Radeon IGP330(M)/IGP340(M)
RS250                       Radeon Mobility 7000 IGP
R200                        Radeon 8500, 9100, FireGL 8800/8700
RV250                       Radeon 9000PRO/9000, M9
RV280                       Radeon 9200PRO/9200/9200SE/9250, M9+
RS300                       Radeon 9100 IGP
RS350                       Radeon 9200 IGP
RS400/RS480                 Radeon XPRESS 200(M)/1100 IGP
R300                        Radeon 9700PRO/9700/9500PRO/9500/9600TX, FireGL X1/Z1
R350                        Radeon 9800PRO/9800SE/9800, FireGL X2
R360                        Radeon 9800XT
RV350                       Radeon 9600PRO/9600SE/9600/9550, M10/M11, FireGL T2
RV360                       Radeon 9600XT
RV370                       Radeon X300, M22
RV380                       Radeon X600, M24
RV410                       Radeon X700, M26 PCIE
R420                        Radeon X800 AGP
R423/R430                   Radeon X800, M28 PCIE
R480/R481                   Radeon X850 PCIE/AGP
RV505/RV515/RV516/RV550     Radeon X1300/X1400/X1500/X2300
R520                        Radeon X1800
RV530/RV560                 Radeon X1600/X1650/X1700
RV570/R580                  Radeon X1900/X1950
RS600/RS690/RS740           Radeon X1200/X1250/X2100
R600                        RadeonHD 2900
RV610/RV630                 RadeonHD 2400/2600
RV620/RV635                 RadeonHD 3450/3470
RV670                       RadeonHD 3850/3870
RS780                       RadeonHD 3100/3200/3300
RS880                       RadeonHD 4100/4200/4290
RV710                       RadeonHD 4350/4550
RV730                       RadeonHD 4650/4670
RV770                       RadeonHD 4850/4870
REDWOOD                     RadeonHD 5550/5570/5670
JUNIPER                     RadeonHD 5750/5770
CYPRESS                     RadeonHD 5850/5870
HEMLOCK                     RadeonHD 5970

プロプライエタリドライバ、fglrxの削除

fglrxはAMD/ATIより提供される、クローズドソースのプロプライエタリドライバの名称です。これはオープンソースの"radeon"ドライバと共存することができません。もし、"fglrx"カーネルモジュールが起動時にロードされると、"radeon"ドライバでXを起動することはできるのですが、"Direct Rendering(ダイレクトレンダリング)"(DRI)が無効化されます。結果として、大幅な性能低下を起こしてしまいます。システム -> 設定 -> ハードウェアドライバ から、"ATI accelerated graphics driver"を使用しないように設定して下さい。

もし、"fglrx"ドライバが不要になった場合は、以下の手順で削除した方がよいでしょう。

$ sudo apt-get remove --purge xorg-driver-fglrx

その後、再起動して下さい。

/usr/lib内のlibGL.soがxorg-driver-fglrxがインストールしたもののままになっているかも知れません。下記を実行することにより、簡単に確認できます。

$ glxinfo |grep vendor

もし、 client glx vendor string: ATI のような表示がでれば、libGL.soはATIのものになっています。

libgl1-mesa-glx、および、libgl1-mesa-driが正常にインストールされているかを確認して下さい。

$ sudo apt-get install --reinstall libgl1-mesa-glx libgl1-mesa-dri

また、"fglrx"が/etc/modulesに記載されていないことを確認して下さい。 もちろん、xorg.confにも"fglrx"の項目が無いことも確認して下さい。

また、X/Troubleshooting/FglrxInteferesWithRadeonDriverも参照下さい。

X.orgの推奨設定

最近のバージョンのUbuntuでは、ATIドライバに対して特別な設定はいりません。xorg.confを消してしまった方が、問題無くシステムが稼働するでしょう。

新しい方法でのX.orgのカスタマイズ

Ubuntu Karmic Koala 9.10以降では、ATIドライバのカーネルモード設定(Kernel Mode Settings, KMS)をサポートしています。このモードではハードウェアに対し、必要な設定情報を自動検出し、適切な設定で動作させることができます。注目すべき点は、KMSは例えばゲームのような3DウィンドウやFlashの再生から乱れ、ちらつきを取り除くという点です。KMSの使用においては、xorg.conf設定ファイルは必要ありません。

KMSを有効化するためには、KernelModeSetting pageの、"KMS with a Radeon card"節を参照下さい。

従来の方法でのX.orgのカスタマイズ

下記の説明は主に/etc/X11/xorg.conf設定ファイルの編集についてです。前述のように、xorg.confファイルの設定は不要ですが、問題が起きた際にはxorg.confで特別な指定をすることで問題を回避できるかも知れません。編集には管理者権限(sudoコマンドを使って下さい)が必要になります。Ubuntu(Gnome)環境ではgedit、Kubuntu(KDE)環境ではkateを使うのもよいでしょう。端末から実行するなら、vimやnanoが使えます。

sudo vim /etc/X11/xorg.conf

もしくは

sudo nano /etc/X11/xorg.conf

グラフィックカードの"Device"節の編集

最初に、あなたのグラフィックカードの関連する"Device"節を見つけて下さい。名前はどんなものが付いているか判りませんし、存在していないかも知れません。

下記に一例を示します。

Section "Device"
        Identifier      "Radeon 9600"
        Driver          "ati"
        BusID           "PCI:1:0:0"
        Option          "XAANoOffscreenPixmaps"
EndSection

Identifierはグラフィックカードの名前です。短い方が便利ですが、どんな名前でも構いません(英数文字だけにしておいた方が無難ではあります)。 Driverは、どのドライバを使うかを指定します。ここはatiであるべきで、radeon、あるいは、fglrxであるべきではありません。"ati"ドライバは、"radeon"ドライバがロード可能であればそれをロードするラッパーです。 BusIDにはグラフィックカードのハードウェアアドレスを与えます。これは例えAGPバス接続カードであったとしても、常にPCIと書きます。BusIDはlspciコマンドで調べることができるでしょう。 lspciで01:00.0と表示されたとすると、xorg.confの中に書くべきBusIDは"PCI:1:0:0"となります(注意: lspciが表示する数値は16進数で、xorg.confに記述するべき数値は10進数であることに注意して下さい)。 "XAANoOffscreenPixmaps"オプションは、AIGLXデスクトップアクセラレーションで必要になるかも知れません。最新のバージョンのUbuntuでは、これを無効化して問題無く動くか試してみて下さい(恐らく速くなります)。

もし、OpenGLなアプリケーション(glxgearsなど)を実行した際に、コンピュータがフリーズするようなことがあれば、下記のオプションを追加してみて下さい。

        Option        "BusType" "PCI"
        Option        "AGPMode" "1"

"Monitor"節

"Monitor"節は下記のようであるべきです。

注意: HorizSync/VertRefresh設定はモニタの信号周波数に影響します。下記はただの例です。正しくなかったり、限界を越えた周波数でモニタを駆動しようとすると、保護機能が働いて出力を止めてしまったり、古いモニタの場合は破壊に至ることもありす。モニタベンダの情報やマニュアルを参照し、あなたのモニタのモデルの正しい周波数を確認して下さい。もしくは、値を設定せずに、XサーバにDDCによる自動周波数検知機能を試行させて下さい。

Section "Monitor"
        Identifier      "Generic Monitor"
        Option          "DPMS"
        HorizSync       28-72
        VertRefresh     43-60
EndSection

Identifierはモニタの名前です。

DPMSオプションは、X.orgにモニタの電源管理をすることを指示します。必要というわけではありません。

HorizSyncVertRefreshオプションは、DDCによる自動検出が失敗するか、周波数を特別に指定したい場合を除き、必要なものではありません。モニタの付属文書、モニタベンダのサイト、もしくは、モニタの背面のラベルなどを参照し、あなたのモニタモデルの正しい周波数情報を入手して下さい。

正しくないHorizSync/VertRefreshは危険です。指定しない場合、X.orgはモニタのDDCより値を読み出します。モニタ、グラフィックカード、および、データケーブルはそれをサポートしているものである必要があります(そして99.9%の場合サポートしています)。sRGBのVGAケーブルだけはDDCデータを転送できません。

"Screen"節

基本的には下記のようになるでしょう。

Section "Screen"
        Identifier      "Default Screen"
        Device          "Radeon 9600"
        Monitor         "Generic Monitor"
        DefaultDepth    24
        SubSection "Display"
                   Depth           24
                   Modes           "1440x900" "1024x768"
        EndSubSection
EndSection

Identifierはスクリーンの名前です。実のところ名前はなんでも構わないのですが、短いものにしておけばよいでしょう。

Deviceはグラフィックカードに与えた名前です。

Monitorはモニタに与えた名前です。

DefaultDepthは色深度です。X.orgに色深度を強制したい場合に指定します。大抵の場合は24にしたいと思うでしょう。指定しない場合は、X.orgは全ての使用可能な範囲を使用します(デバイスのサポート状況により8、16、24、または、32となります)。

"Display"サブセクションのModes行はX.orgに明示的に特定のモードだけを使うように指示しますが、これはモニタがサポートするものでなければなりません。これは、X.orgに利用可能な最大解像度をログイン画面に使わせたくない場合や、サポートされる(あるいはサポートされているとDDCで報告されても実際には機能しない)モードの特定のものを除外する場合に便利です。もし、判らない場合は、1024x768を指定して下さい。大抵の場合は問題とはならないでしょう。もし、判る場合は、好みの解像度を最初に書いて下さい。そして他の利用可能な解像度をその後ろに列記して下さい。

VRAMの少ないグラフィックカードでは、デフォルト値(/var/log/Xorg.0.logを参照下さい)が少しメモリを食い過ぎになっていて、"Screen"セクションの"Display"サブセクションに"Virtual"行を追加しなければならないかも知れません。

                Virtual         1024 768

x(この例では1024)とy(この例では768)の値は、希望する仮想デスクトップのサイズに合わせて指定して下さい。

仕上げ

下記のセクションが設定ファイルに存在しないのであれば、一番最後の部分に追加しておいて下さい。

Section "DRI"
        Mode 0666
EndSection

Section "Extensions"
        Option "Composite" "Enable"
EndSection

その後、"ServerLayout"セクションの内容を確認して下さい。

Section "ServerLayout"
        Identifier      "Default Layout"
        Screen          "Default Screen"
EndSection

Identifierは変更しないで下さい。 Screenには"Screen"セクションで付けた名前を書いて下さい。

再起動

例えばテキストコンソールに移動(ctrl-alt-F1)して、ログインし、下記を実行するなどしてXサーバを再起動して下さい。

sudo /etc/init.d/gdm restart 

あるいはPCを再起動して下さい。

ドライバの試走

  • ドライバがKMS(カーネルモード設定、Kernel Mode Setting)で動いているかどうかは、下記を実行して確認できます。

dmesg | grep drm

これにより、drmが初期化され使用可能になったかが表示されます。フレームバッファやモードセットについての情報も出力されるでしょう。下記に一例を示します。

[    2.699321] [drm] Initialized drm 1.1.0 20060810
[    2.819877] [drm] set up 7M of stolen space
[    3.334947] [drm] TV-14: set mode NTSC 480i 0
[    3.493351] fb0: inteldrmfb frame buffer device
[    3.513539] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0
[    3.627621] [drm] LVDS-8: set mode 1280x800 1d
[    4.227945] [drm] TV-14: set mode NTSC 480i 0
  • 3D支援が有効になっているかは、下記を実行してOpenGLアクセラレーションが有効になっているかを調べることで確認できす。

$ glxinfo | grep vendor

これはSGIになっているべきです。もし、それ以外が表示されれば、ドライバが正常にインストールされていません。Xサーバが再起動されているか確認して、確実に再起動されていてもこの状態になっているのであれば、"プロプライエタリなfglrxドライバの削除"の項を参照下さい。また、

$ glxinfo | grep "direct rendering"

を実行して、direct renderingがNoとなった場合、あなたのカードはオープンソースドライバでサポートされていないものであると思われます。諦めてfglrxドライバを使用して下さい。

トラブルシューティングのために、

$ LIBGL_DEBUG=verbose glxinfo

の出力を見るのもよいでしょう。

関連情報

UbuntuJapaneseWiki: UbuntuTips/Hardware/RadeonDriver (最終更新日時 2012-01-10 11:49:13 更新者 匿名)