AIDEMOIRE

【アイデモワール】

物理PCでのRadeon HD 6450の設定奮闘記

物理PCを使ったAMD RADEON HD 6450の設定に関するメモです。DirectPath I/Oを使った仮想ゲストPCの設定に関しては次のURLを参考にして下さい。

VMware DirectPath I/Oでビデオカードを使ってみました - AIDEMOIRE

なお、以下の表記で“Radeon”はAMD Radeonチップを使ったハードウェアを、“radeon”はオープンソース版のデバイスドライバを指すものとします。

■ 一筋縄ではいかないRadeonビデオカード

仮想環境でDirectPath I/Oを使ったビデオカードの利用は、一応は成功しましたが実用的ではないため仮想環境での構築は一旦中断して、作業を物理マシンでの検証に移しました。しかし、結果言うと、こちらも芳しくない状態です。Radeon HD 6450の問題なのかドライバの問題なのか、それともIntelドライバとの相性の問題なのか。詳細は後回しにして、まずは状況の整理と結果から。

今回、ビデオカードを動かしたいのは2画面を使いたいと言うものではなく、GPGPUとして使いたいというの目的です。とは言ってもドライバで正常に認識、動作しなればいずれにしても使えません。、まずは敷居の高いGPGPUの検証ではなく、デスクトップの出力からトライしています。(Radeon HD 6450はGPGPUでは使い物にならないのは承知していますが、いきなり高価なビデオカードを買って失敗したくはないので基本的なところを確認している次第です。)

また、今のところ利用するOSはLinuxに限定しています。(もし、Linuxで上手く行かなければWindowsも試すつもりですが。)Kali Linux 1.0.4とUbuntu 12.04で試してみました。

LinuxにおいてRadeonチップ向けのドライバには3種類あります。

  • radeonドライバ:オープンソースのドライバでLinuxに標準で入っています。
  • fglrxドライバ:Linuxリポジトリからオプション パッケージの形でインストールできるメーカー提供のドライバです。
  • AMD fglrxドライバ:AMDのホームページからダウンロードするメーカー提供の最新ドライバです。

検証に用いたハードウェア環境は以下のとおりです。

MBO:ASUS H77-M LE
CPU:Core i7 3770
MEM:16GB

つまりグラフィックス チップとしてIntelのHD 4000(H77チップセットに内蔵)を持っています。従ってAMD HD 6450との組み合わせでデスクトップ(もしくはなんらかの映像)を出力する方法としては以下のとおりとなります。

Intelだけと使う
AMDだけを使う
IntelAMDが独立
IntelAMDが連動

ここで“独立”と“連動”の意味ですが、独立はそれぞれ独立した画面として使うケース(以下“+”で表現)、連動は2つの画面がつながっていて画面間でマウスのカーソルが移動するケース(以下、“<->”で表現)です。

さて、結果ですが次のようになりました。

Kali Linux

  radeoドライバ fglrxドライバ AMD fglrxドライバ
Intelだけ OK OK OK
AMDだけ OK NG NG
Intel + AMD OK NG(共倒れ) NG(RadeonのみNG)
Intel<->AMD OK NG(RadeonのみNG) NG(RadeonのみNG)

AMDからダウンロードしたfglrxドライバに関しては“インストールは成功”とは表示されましたが、Xウィンドウが起動しません。Xorg.0.logを見ると起動時にモジュールがないと言って終了しています。こうなると本当にやる気を削がれます。AMD純正のfglrxドライバでもRadeon HD 6450単体で動かないと言うのは如何なものかと思います。また、aticonfigなどのツールも LD_LIBRARY_PATH=/usr/lib64という形で環境変数を設定して起動しないと動きません。インストール時には確かに64bit OSとして認識しているのですが。作りがイマイチの様な気がします。
リポジトリからインストールするfglrxドライバでも上手く動きませんでした。Radeon単体でも動きませんでした。Xorg.0.logを見るとfglrxがロードされ動き出すものの、途中からIntelドライバになり、それがRadeonのボードが挿さっているPCIデバイスをオープンしようとしている感じでした。その時のログです。

[   914.203] (--) Chipset Supported AMD Graphics Processor (0x6779) found
[   914.203] (WW) fglrx: No matching Device section for instance (BusID PCI:0@1:0:1) found
[   914.203] (II) fglrx: intel VGA device detected, load intel driver.
[   914.203] (II) LoadModule: "intel"
[   914.203] (II) Loading /usr/lib/xorg/modules/drivers/intel_drv.so
[   914.204] (II) Module intel: vendor="X.Org Foundation"
[   914.204] 	compiled for 1.12.3.902, module version = 2.19.0
[   914.204] 	Module class: X.Org Video Driver
[   914.204] 	ABI class: X.Org Video Driver, version 12.1
[   914.205] ukiDynamicMajor: found major device number 250
[   914.205] ukiDynamicMajor: found major device number 250
[   914.205] ukiOpenByBusid: Searching for BusID PCI:1:0:0
[   914.205] ukiOpenDevice: node name is /dev/ati/card0
[   914.205] ukiOpenDevice: open result is 8, (OK)
[   914.205] ukiOpenByBusid: ukiOpenMinor returns 8
[   914.205] ukiOpenByBusid: ukiGetBusid reports PCI:1:0:0
[   914.206] (WW) PowerXpress feature is not supported
[   914.206] (EE) No devices detected.

一方でオープンソースradeonドライバではなんとか動きました。ゲームなど高速3D処理を必要するのではなく、デスクワークで2画面欲しいという場合はradeonドライバ十分かと思います。

どうもKali Linuxの構成がよろしくなのかと思い、Ubuntu 12.04でも試してみました。
Ubuntu 12.04

  radeoドライバ fglrxドライバ AMD fglrxドライバ
Intelだけ OK OK OK
AMDだけ OK OK OK
Intel+AMD OK NG(共倒れ) NG(共倒れ)
Intel<->AMD OK NG(共倒れ) NG(共倒れ)

結局、Kali Linuxとの違いはRadon HD 6450を単体で使えるようになったことです。なお、リポジトリのfglrxでは古いバージョンはNGだったのでですが、experiment13という新しいバージョンで動きました。

以上、結果からするとダメダメの状態でした。昔からLinuxはグラフィックスドライバで色々と問題を起こして、その度に対処方法を色々なサイトから集めないとスンナリ動いてくれないのですが、未だに、その癖は直っていないようです。これはLinuxが普及しなかった大きな原因の一つではないかと考えます。

xorg.confの設定

参考までに xorg.confの内容を載せておきます。
ここではradeon版を載せていいますが、fglrxドライバでも全く同じ内容です。ドライバ名を“radeon”から“fglrx”に変更しただけです。

  • Intel HD 4000だけを使う
Section "ServerLayout"
	Identifier	"Layout0"
	Screen		0 "Screen0"
EndSection

Section "Device"
	Identifier	"Device0"
	Driver		"intel"
	BusID		"PCI:0:2:0"
EndSection

Section "Monitor"
	Identifier	"Monitor0"
EndSection

Section "Screen"
	Identifier	"Screen0"
	Device		"Device0"
	Monitor		"Monitor0"
	DefaultDepth	24
	SubSection "Display"
		Depth	24
		Modes	"1920x1080"
	EndSubSection
EndSection
  • AMD HD 6450だけを使う
Section "ServerLayout"
	Identifier	"Layout0"
	Screen		0 "Screen0"
EndSection

Section "Device"
	Identifier	"Device0"
	Driver		"radeon"
	BusID		"PCI:1:0:0"
EndSection

Section "Monitor"
	Identifier	"Monitor0"
EndSection

Section "Screen"
	Identifier	"Screen0"
	Device		"Device0"
	Monitor		"Monitor0"
	DefaultDepth	24
	SubSection "Display"
		Depth	24
		Modes	"1920x1080"
	EndSubSection
EndSection
  • IntelAMDで独立した画面をつかう
Section "ServerLayout"
	Identifier	"Layout0"
	Screen		0 "Screen0"
	Screen		1 "Screen1"
EndSection

Section "Device"
	Identifier	"Device0"
	Driver		"intel"
	BusID		"PCI:0:2:0"
EndSection

Section "Device"
	Identifier	"Device1"
	Driver		"radeon"
	BusID		"PCI:1:0:0"
EndSection

Section "Monitor"
	Identifier	"Monitor0"
EndSection

Section "Monitor"
	Identifier	"Monitor1"
EndSection

Section "Screen"
	Identifier	"Screen0"
	Device		"Device0"
	Monitor		"Monitor0"
	DefaultDepth	24
	SubSection "Display"
		Depth	24
		Modes	"1920x1080"
	EndSubSection
EndSection

Section "Screen"
	Identifier	"Screen1"
	Device		"Device1"
	Monitor		"Monitor1"
	DefaultDepth	24
	SubSection "Display"
		Depth	24
		Modes	"1920x1080"
	EndSubSection
EndSection
  • IntelAMDでつながった画面を使う
Section "ServerLayout"
	Identifier	"Layout0"
	Screen		0 "Screen0"
	Screen		1 "Screen1" RightOf "Screen0"
	Option		"Xinerama" "on"
	Option		"Clone" "off"
EndSection

Section "Device"
	Identifier	"Device0"
	Driver		"intel"
	BusID		"PCI:0:2:0"
EndSection

Section "Device"
	Identifier	"Device1"
	Driver		"radeon"
	BusID		"PCI:1:0:0"
EndSection

Section "Monitor"
	Identifier	"Monitor0"
EndSection

Section "Monitor"
	Identifier	"Monitor1"
EndSection

Section "Screen"
	Identifier	"Screen0"
	Device		"Device0"
	Monitor		"Monitor0"
	DefaultDepth	24
	SubSection "Display"
		Depth	24
		Modes	"1920x1080"
	EndSubSection
EndSection

Section "Screen"
	Identifier	"Screen1"
	Device		"Device1"
	Monitor		"Monitor1"
	DefaultDepth	24
	SubSection "Display"
		Depth	24
		Modes	"1920x1080"
	EndSubSection
EndSection

■ 結果詳細

■ Kali & radeon

1:Intelのみ
特に問題ありませんでした。

2:Radeonのみ
特に問題ありませんでした。(ブート時に nomodeset を指定すると逆にNG。)

3:Intel+Radeon
Radeon側は灰色の画面になりますが、DISPLAYを:0.1と指定することでターミナルなどXクライアントを開くことができました。

4:Intel<->Radeon
Intel側とRadeon側とはつながっていることを確認できました。境界にターミナルを配置するとどちらの画面にも表示されます。ただし、Radeon側にはデスクトップ上部のタスクバーは表示されませんでした。

■ Kali & fglrx

1:Intel Only
特に問題ありませんでした。

2:Radeon Only
Radeon側は信号は出力されているようですが、ディスプレには何も表示されません。Intel側でもデスクトップは表示されませんが、コンソールとしては使えました。Xorg.0.logを調べるとエラーが記録されていて、fglrxモジュールは起動するものの、途中からintelドライバに切り替わり、RadeonがあるPCI:1.0.0をオープンしていました。

3:IntelRadeon
共倒れです。Intel側は信号を出ていて、カーソル(アンダーバー)の点滅がみられましたが、入力は受付ませんでした。Radeonの方は約3秒周期でリセットされている感じでした。。

4:Intel<->Radeon
デスクトップ画像はIntelのみに表示されました。しかしRadeon側も信号は出ていました。fglrxinfoの出力もありますがエラーでした。

root@kali:~# fglrxinfo
X Error of failed request:  BadRequest (invalid request code or no such operation)
  Major opcode of failed request:  136 (GLX)
  Minor opcode of failed request:  19 (X_GLXQueryServerString)
  Serial number of failed request:  12
  Current serial number in output stream:  12

■ Kali & AMD fglrx

1:Intelのみ
特に問題ありませんでした。

2:Radeonのみ
Xの起動途中で fglrxモジュールがオープンできないと言って失敗。Radeon側には信号が出ていませんでした。Intel側はコンソールとして利用可。

3:Intel+Radeon
Intel側はデスクトップを表示。Radeon側はfglrxドライバがオープンできずに、信号も出ていませんでした。なお、fglrxinfoはIntel側の情報を表示して、fgl_glxgearsもIntel側に表示されました。

root@kali:~# env DISPLAY=:0 LD_LIBRARY_PATH=/usr/lib64 fglrxinfo
display: :0  screen: 0
OpenGL vendor string: Tungsten Graphics, Inc
OpenGL renderer string: Mesa DRI Intel(R) Ivybridge Desktop
OpenGL version string: 1.4 (3.0 Mesa 8.0.5)

4:Intel<->Radeon
Intel側はデスクトップを表示。Radeon側はfglrxドライバがオープンできずに、信号も出ていませんでした。

Ubunturadeon

1:Intelのみ
特に問題ありませんでした。

2:Radeonのみ
特に問題ありませんでした。(ブート時に nomodeset を指定すると逆にNG。)

3:Intel+Radeon
Kaliと同じくRadeon側は灰色になりますがDISPLAYを:0.1と指定することでターミナルを開くことができました。

4:Intel<->Radeon
Intel側とRadeon側とはつながっていますが、Radeon側ではウィンドウが見えない状態でした。マウスのカーソルは見ます。またウィンドウがあるハズの場所へマウスのカーソルを移動するとカーソルが変化するので、ウィンドウは見えませんが、存在はしています。実用上はNGですが、2画面連動というのは確認できました。

Ubuntu & fglrx

1:Intelのみ
特に問題ありませんでした。

2:Radeonのみ
特に問題ありませんでした。

root@ubuntu1204-64:~# fglrxinfo
display: :0  screen: 0
OpenGL vendor string: Advanced Micro Devices, Inc.
OpenGL renderer string: AMD Radeon HD 6450
OpenGL version string: 4.2.12337 Compatibility Profile Context 13.101

root@ubuntu1204-64:~# fgl_glxgears
Using GLX_SGIX_pbuffer
5212 frames in 5.0 seconds = 1042.400 FPS
5538 frames in 5.0 seconds = 1107.600 FPS
^C

3:Intel+Radeon
fglrxドライバがセグメンテーションフォルトを起こし、Intel側もfailsafeでlow-graphics modeになるも落ちてしまいコンソールモードに。共倒れでした。。

4:Intel<->Radeon
fglrxドライバがセグメンテーションフォルトを起こし、Intel側もfailsafeでlow-graphics modeになるも落ちてしまいコンソールモードに。共倒れでした。

UbuntuAMD fglrx

1:Intelのみ
特に問題ありませんでした。

2:Radeonのみ
特に問題ありませんでした。

ubuntu@ubuntu1204-64:~$ fglrxinfo
display: :0  screen: 0
OpenGL vendor string: Advanced Micro Devices, Inc.
OpenGL renderer string: AMD Radeon HD 6450
OpenGL version string: 4.2.12217 Compatibility Profile Context 12.104

ubuntu@ubuntu1204-64:~$ fgl_glxgears
Using GLX_SGIX_pbuffer
5475 frames in 5.0 seconds = 1095.000 FPS
5549 frames in 5.0 seconds = 1109.800 FPS
^C

3:Intel+Radeon
fglrxドライバがセグメンテーションフォルトを起こし、Intel側もfailsafeでlow-graphics modeになるも落ちてしまいコンソールモードに。共倒れでした。

4:Intel<->Radeon
fglrxドライバがセグメンテーションフォルトを起こし、Intel側もfailsafeでlow-graphics modeになるも落ちてしまいコンソールモードに。共倒れでした。