CentOS を 6.4 にバージョンアップしたところ、AMD Graphics Driver が動作しなくなってしまいました。

当初は古いバージョン (12.4) が原因かと思いましたが、最新バージョンでも HD4200 用 の Legacy Driver 13.1 が動作しません。
(*) HD6450 用は 13.1 / 13.3 Beta どちらも正常に動作しました。

調べてみると、CentOS 6.4 の X.Org (Xserver) は 1.13 であるのに対し、Legacy Driver は 1.12 までしか対応していないことが原因のようです。(CentOS 6.3 の X.Org は 1.10)

現時点で patch 等はなさそうなので、回避策は以下の2つです。
  1. X.Org を 1.12 以前にダウングレード
  2. CentOS を 6.3 にダウングレード
悩んだ結果、より確実そうな「2. CentOS を 6.3 にダウングレード」を選択することにしました。

1. バックアップ

最悪、ダウングレードに失敗してクリーンインストールすることになっても良いように、必要なデータをバックアップします。

赤び~の環境では KVM のゲストマシンをバックアップすればどうとでもなるのですが、念のため home と etc の一部もバックアップしました。

2. リポジトリの変更

2.1. yum リポジトリを 6.4 から 6.3 に切り替え

yum のリポジトリを 6.3 に変更します。
編集するファイルは /etc/yum.repo.d/CentOS-Base.repo です。

CentOS-Base.repo のバックアップ
# cd /etc/yum.repos.d/
# cp CentOS-Base.repo CentOS-Base.repo.ORG

/etc/yum.repo.d/CentOS-Base.repo の「$releasever」を「6.3」に一括置換します。
vi 上で
:%s/$releasever/6.3/g
とするのが簡単です。

2.2. yum 情報の初期化

すでにダウンロード済のパッケージ情報を初期化 (削除) します。

# yum clean all
Loaded plugins: fastestmirror, refresh-packagekit
Cleaning repos: adobe-linux-x86_64 base extras updates
Cleaning up Everything
Cleaning up list of fastest mirrors

3. リポジトリと同期 (ダウングレード)

3.1. yum distribution-synchronization を実行

yum コマンドで distribution-synchronization オプションを指定して、システムのパッケージをリポジトリと同期化 (リポジトリに一致) させます。
前項で CentOS-Base.repo を変更して接続先リポジトリを 6.3 としているので、結果として 6.4 から 6.3 にダウングレードすることになります。

# yum distribution-synchronization
Loaded plugins: fastestmirror, refresh-packagekit

~ 略 ~

--> Finished Dependency Resolution
Error: Package: pytalloc-2.0.7-2.el6.x86_64 (@base)
           Requires: libtalloc.so.2(TALLOC_2.0.2)(64bit)
           Removing: libtalloc-2.0.7-2.el6.x86_64 (@base)
               libtalloc.so.2(TALLOC_2.0.2)(64bit)
           Downgraded By: libtalloc-2.0.1-1.1.el6.x86_64 (base)
               Not found
Error: Package: xorg-x11-drv-modesetting-0.5.0-1.el6.x86_64 (@base)
           Requires: xserver-abi(videodrv-13) >= 1
           Removing: xorg-x11-server-Xorg-1.13.0-11.el6.centos.x86_64 (@base)
               xserver-abi(videodrv-13) = 1
           Downgraded By: xorg-x11-server-Xorg-1.10.6-1.0.1.el6.centos.x86_64 (updates)
               Not found
Error: Package: redhat-lsb-compat-4.0-7.el6.centos.x86_64 (@base)
           Requires: redhat-lsb(x86-64) = 4.0-7.el6.centos
           Removing: redhat-lsb-4.0-7.el6.centos.x86_64 (@base)
               redhat-lsb(x86-64) = 4.0-7.el6.centos
           Downgraded By: redhat-lsb-4.0-3.el6.centos.x86_64 (base)
               redhat-lsb(x86-64) = 4.0-3.el6.centos
Error: Package: libreport-compat-2.0.9-15.el6.centos.x86_64 (@base)
           Requires: libreport-plugin-rhtsupport = 2.0.9-15.el6.centos
           Removing: libreport-plugin-rhtsupport-2.0.9-15.el6.centos.x86_64 (@base)
               libreport-plugin-rhtsupport = 2.0.9-15.el6.centos
           Downgraded By: libreport-plugin-rhtsupport-2.0.9-5.el6.centos.2.x86_64 (updates)
               libreport-plugin-rhtsupport = 2.0.9-5.el6.centos.2
           Available: libreport-plugin-rhtsupport-2.0.9-5.el6.centos.x86_64 (base)
               libreport-plugin-rhtsupport = 2.0.9-5.el6.centos
Error: Package: pytalloc-2.0.7-2.el6.x86_64 (@base)
           Requires: libtalloc = 2.0.7-2.el6
           Removing: libtalloc-2.0.7-2.el6.i686 (@base)
               libtalloc = 2.0.7-2.el6
           Downgraded By: libtalloc-2.0.1-1.1.el6.i686 (base)
               libtalloc = 2.0.1-1.1.el6
Error: Package: libreport-compat-2.0.9-15.el6.centos.x86_64 (@base)
           Requires: libreport = 2.0.9-15.el6.centos
           Removing: libreport-2.0.9-15.el6.centos.x86_64 (@base)
               libreport = 2.0.9-15.el6.centos
           Downgraded By: libreport-2.0.9-5.el6.centos.2.x86_64 (updates)
               libreport = 2.0.9-5.el6.centos.2
           Available: libreport-2.0.9-5.el6.centos.i686 (base)
               libreport = 2.0.9-5.el6.centos
Error: kernel conflicts with bfa-firmware-3.0.0.0-1.el6.noarch
 You could try using --skip-broken to work around the problem root

エラーが7つ発生しています。
pytalloc、xorg-x11-drv-modesetting、redhat-lsb-compat、libreport-compat が依存性を解決できなくなっているようです。
bfa-firmware も kernel conflicts を起こしていました。

--skip-broken オプションを使えと出ていますが、エラーの数は変わらず今度は rpm コマンドですべてのパッケージを検査しろ (Va オプション) と出てきました。

# yum distribution-synchronization --skip-broken

~ 略 ~

 You could try running: rpm -Va --nofiles --nodigest

しかし問題は検出されません。

# rpm -Va --nofiles --nodigest

3.2. 依存性を解決できないパッケージの削除

問題となっているパッケージの内、依存性を解決できていない pytalloc、xorg-x11-drv-modesetting、redhat-lsb-compat、libreport-compat の4パッケージを手動で削除することにしました。

# yum remove pytalloc xorg-x11-drv-modesetting redhat-lsb-compat libreport-compat

~ 略 ~

Removed:
  libreport-compat.x86_64 0:2.0.9-15.el6.centos
  pytalloc.x86_64 0:2.0.7-2.el6
  redhat-lsb-compat.x86_64 0:4.0-7.el6.centos
  xorg-x11-drv-modesetting.x86_64 0:0.5.0-1.el6

Dependency Removed:
  abrt.x86_64 0:2.0.8-15.el6.centos
  abrt-addon-ccpp.x86_64 0:2.0.8-15.el6.centos
  abrt-addon-kerneloops.x86_64 0:2.0.8-15.el6.centos
  abrt-addon-python.x86_64 0:2.0.8-15.el6.centos
  abrt-cli.x86_64 0:2.0.8-15.el6.centos
  abrt-desktop.x86_64 0:2.0.8-15.el6.centos
  abrt-gui.x86_64 0:2.0.8-15.el6.centos
  abrt-libs.x86_64 0:2.0.8-15.el6.centos
  abrt-tui.x86_64 0:2.0.8-15.el6.centos
  firstboot.x86_64 0:1.110.14-1.el6
  ipa-client.x86_64 0:3.0.0-26.el6_4.2
  libreport.x86_64 0:2.0.9-15.el6.centos
  libreport-cli.x86_64 0:2.0.9-15.el6.centos
  libreport-gtk.x86_64 0:2.0.9-15.el6.centos
  libreport-newt.x86_64 0:2.0.9-15.el6.centos
  libreport-plugin-kerneloops.x86_64 0:2.0.9-15.el6.centos
  libreport-plugin-logger.x86_64 0:2.0.9-15.el6.centos
  libreport-plugin-mailx.x86_64 0:2.0.9-15.el6.centos
  libreport-plugin-reportuploader.x86_64 0:2.0.9-15.el6.centos
  libreport-plugin-rhtsupport.x86_64 0:2.0.9-15.el6.centos
  libreport-python.x86_64 0:2.0.9-15.el6.centos
  python-meh.noarch 0:0.12.1-3.el6
  redhat-lsb.x86_64 0:4.0-7.el6.centos
  samba4-libs.x86_64 0:4.0.0-55.el6.rc4
  sssd.x86_64 0:1.9.2-82.4.el6_4
  system-config-keyboard.x86_64 0:1.3.1-4.el6
  xorg-x11-drivers.x86_64 0:7.3-13.4.el6

Complete!

削除する4パッケージ (赤字部分) と依存関係のある27個のパッケージ (青字部分) も削除されたので、最後に別途インストールすることにします。

3.3. yum distribution-synchronization の再実行

依存関係を解決できなかったパッケージを削除後、yum distribution-synchronization をリトライします。

# yum distribution-synchronization --skip-broken

~ 略 ~

Packages skipped because of dependency problems:
    bfa-firmware-3.0.0.0-1.el6.noarch from base

~ 略 ~

Transaction Summary
================================================================================
Install       2 Package(s)
Remove        1 Package(s)
Downgrade   493 Package(s)

Total download size: 550 M

~ 略 ~

Running rpm_check_debug
Running Transaction Test

Transaction Check Error:
  file /usr/lib64/dri/mga_dri.so from install of mesa-dri-drivers-7.11-5.el6.x86_64 conflicts with file from package mesa-dri1-drivers-7.11-8.el6.x86_64
  file /usr/lib64/dri/r128_dri.so from install of mesa-dri-drivers-7.11-5.el6.x86_64 conflicts with file from package mesa-dri1-drivers-7.11-8.el6.x86_64
  file /usr/lib64/dri/savage_dri.so from install of mesa-dri-drivers-7.11-5.el6.x86_64 conflicts with file from package mesa-dri1-drivers-7.11-8.el6.x86_64
  file /usr/lib64/dri/unichrome_dri.so from install of mesa-dri-drivers-7.11-5.el6.x86_64 conflicts with file from package mesa-dri1-drivers-7.11-8.el6.x86_64

Error Summary
-------------

bfa-firmware パッケージのエラーはスキップされて、やっとパッケージのダウンロードまで進んだと思いきや、今度は mesa-dri-drivers でTransaction Check Error が発生してしまいました。

3.4. Transaction Check Error となったパッケージを削除

パッケージの衝突 (conflicts) が原因のようなので、今回も対象のパッケージ mesa-dri-drivers を手動で削除します。

# yum remove mesa-dri-drivers

~ 略 ~

Removed:
  mesa-dri-drivers.i686 0:9.0-0.7.el6   mesa-dri-drivers.x86_64 0:9.0-0.7.el6

Dependency Removed:
  glx-utils.x86_64 0:9.0-0.7.el6
  ibus-qt.x86_64 0:1.3.0-2.el6
  kcoloredit.x86_64 0:4.3.3-2.el6
  kdeaccessibility.x86_64 1:4.3.4-5.el6
  kdeaccessibility-libs.x86_64 1:4.3.4-5.el6
  kdeadmin.x86_64 7:4.3.4-5.el6
  kdeartwork-screensavers.x86_64 0:4.3.4-7.el6
  kdebase.x86_64 6:4.3.4-6.el6
  kdebase-libs.x86_64 6:4.3.4-6.el6
  kdebase-runtime.x86_64 0:4.3.4-9.el6
  kdebase-runtime-libs.x86_64 0:4.3.4-9.el6
  kdebase-workspace.x86_64 0:4.3.4-24.el6
  kdebase-workspace-libs.x86_64 0:4.3.4-24.el6
  kdegames.x86_64 6:4.3.4-5.el6
  kdegames-libs.x86_64 6:4.3.4-5.el6
  kdegraphics.x86_64 7:4.3.4-6.el6
  kdegraphics-libs.x86_64 7:4.3.4-6.el6
  kdelibs.x86_64 6:4.3.4-19.el6
  kdelibs-experimental.x86_64 0:4.3.4-3.el6
  kdemultimedia.x86_64 6:4.3.4-3.el6
  kdemultimedia-libs.x86_64 6:4.3.4-3.el6
  kdenetwork.x86_64 7:4.3.4-11.el6_0.1
  kdenetwork-libs.x86_64 7:4.3.4-11.el6_0.1
  kdepim.x86_64 6:4.3.4-6.el6
  kdepim-libs.x86_64 6:4.3.4-6.el6
  kdepim-runtime.x86_64 0:4.3.4-5.el6
  kdepim-runtime-libs.x86_64 0:4.3.4-5.el6
  kdepimlibs.x86_64 0:4.3.4-4.el6
  kdepimlibs-akonadi.x86_64 0:4.3.4-4.el6
  kdeplasma-addons.x86_64 0:4.3.4-5.el6
  kdeplasma-addons-libs.x86_64 0:4.3.4-5.el6
  kdeutils.x86_64 6:4.3.4-7.el6
  kdeutils-libs.x86_64 6:4.3.4-7.el6
  kdm.x86_64 0:4.3.4-24.el6
  kiconedit.x86_64 0:4.3.3-1.el6
  kio_sysinfo.x86_64 0:20090930-1.el6
  kipi-plugins.x86_64 0:0.8.0-5.el6
  kipi-plugins-libs.x86_64 0:0.8.0-5.el6
  kmid.x86_64 0:2.0-0.14.20080213svn.el6
  konq-plugins.x86_64 0:4.3.3-5.el6
  ksig.x86_64 0:1.1-0.10.20080213.el6
  ksshaskpass.x86_64 0:0.5.1-4.1.el6
  mesa-dri1-drivers.x86_64 0:7.11-8.el6
  mesa-libGL.i686 0:9.0-0.7.el6
  mesa-libGL.x86_64 0:9.0-0.7.el6
  mesa-libGL-devel.i686 0:9.0-0.7.el6
  mesa-libGL-devel.x86_64 0:9.0-0.7.el6
  mesa-libGLU.i686 0:9.0-0.7.el6
  mesa-libGLU.x86_64 0:9.0-0.7.el6
  mesa-libGLU-devel.i686 0:9.0-0.7.el6
  mesa-libGLU-devel.x86_64 0:9.0-0.7.el6
  mesa-libOSMesa.i686 0:9.0-0.7.el6
  mesa-libOSMesa.x86_64 0:9.0-0.7.el6
  mesa-libOSMesa-devel.i686 0:9.0-0.7.el6
  phonon-backend-gstreamer.x86_64 1:4.6.2-26.el6_4
  poppler-qt4.x86_64 0:0.12.4-3.el6_0.1
  qimageblitz.x86_64 0:0.0.4-1.el6
  qt-x11.x86_64 1:4.6.2-26.el6_4
  redhat-lsb-graphics.x86_64 0:4.0-7.el6.centos
  tigervnc-server.x86_64 0:1.1.0-5.el6

Complete!

KDE 関連のパッケージを中心として60パッケージも巻き込まれて削除されてしまいました。。。

3.5. yum distribution-synchronization の再々実行

3度目の正直でやっとダウングレードは成功しました。

# yum distribution-synchronization --skip-broken

~ 略 ~

Complete!

4. 削除したパッケージを再インストール

依存関係のエラーを回避するために一時的に削除したパッケージを再インストールします。

(*) 一部パッケージは 6.3 リポジトリに存在していなかったのでスキップしました。

4.1. Transaction Check Error となったパッケージを再インストール


# yum install glx-utils ibus-qt kcoloredit kdeaccessibility kdeadmin kdeartwork-screensavers kdebase kdegames kdegraphics kdemultimedia kdenetwork kdepim kdepim-runtime kdeplasma-addons kdeutils kdm kiconedit kipi-plugins kmid konq-plugins ksig ksshaskpass mesa-libGL-devel mesa-libOSMesa mesa-libOSMesa-devel redhat-lsb-graphics tigervnc-server

~ 略 ~

Transaction Summary
================================================================================
Install      54 Package(s)

Total size: 158 M
Total download size: 86 M
Installed size: 395 M

~ 略 ~

Complete!

4.2. 次項の再インストールで conflicts が発生したパッケージを削除


# yum remove redhat-lsb-core

~ 略 ~

Removed:
  redhat-lsb-core.x86_64 0:4.0-7.el6.centos

Complete!

4.3. 依存性を解決できなかったパッケージを再インストール


# yum install abrt abrt-addon-ccpp abrt-addon-kerneloops abrt-addon-python abrt-cli abrt-desktop firstboot ipa-client redhat-lsb samba4-libs xorg-x11-drivers

~ 略 ~

Transaction Summary
================================================================================
Install      27 Package(s)

Total download size: 8.6 M
Installed size: 29 M

~ 略 ~

Complete!

5. 再起動と動作確認

再起動後、起動している kernel と CentOS のバージョンを確認します。

$ uname -a
Linux [ホスト名].[ドメイン名] 2.6.32-279.22.1.el6.x86_64 #1 SMP Wed Feb 6 03:10:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

$ cat /etc/redhat-release
CentOS release 6.3 (Final)

X.Org のバージョンも 1.10 となっています。
AMD Graphics Driver (12.4) も問題なくインストールできました。

# yum list | grep xorg-x11-server
xorg-x11-server-Xorg.x86_64            1.10.6-1.0.1.el6.centos          @updates
xorg-x11-server-common.x86_64          1.10.6-1.0.1.el6.centos          @updates
xorg-x11-server-utils.x86_64           7.5-5.2.el6                      @base
xorg-x11-server-Xdmx.x86_64            1.10.6-1.0.1.el6.centos          updates
xorg-x11-server-Xephyr.x86_64          1.10.6-1.0.1.el6.centos          updates
xorg-x11-server-Xnest.x86_64           1.10.6-1.0.1.el6.centos          updates
xorg-x11-server-Xvfb.x86_64            1.10.6-1.0.1.el6.centos          updates
xorg-x11-server-devel.i686             1.10.6-1.0.1.el6.centos          updates
xorg-x11-server-devel.x86_64           1.10.6-1.0.1.el6.centos          updates
xorg-x11-server-source.noarch          1.10.6-1.0.1.el6.centos          updates


# X.Org のみをダウングレードした方が楽だったかもしれません。。。

[ END ]