対象とする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"
EndSectionIdentifierはグラフィックカードの名前です。短い方が便利ですが、どんな名前でも構いません(英数文字だけにしておいた方が無難ではあります)。 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
EndSectionIdentifierはモニタの名前です。
DPMSオプションは、X.orgにモニタの電源管理をすることを指示します。必要というわけではありません。
HorizSyncとVertRefreshオプションは、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
EndSectionIdentifierはスクリーンの名前です。実のところ名前はなんでも構わないのですが、短いものにしておけばよいでしょう。
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"
EndSectionIdentifierは変更しないで下さい。 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
の出力を見るのもよいでしょう。
関連情報
X.org wiki(radeon) - X.orgのradeonのページ
X.org wiki(radeonhd) - X.orgのradeonhdのページ
Bugs in x.org ati driver - "ati"ドライバの既知のバグについて
DRI wiki(ATIRadeon) - ATI向けの3Dアクセラレーションの開発状況など
Thinkpad Wiki Page On Radeon Driver - "radeon"のオプションや設定についての情報があります
Arch Linux ati driver - TV出力に関する情報があります
Xorg 7.1 Manual - X.org 7.1の公式文書