Ubuntu19.10でAMDGPUドライバーを有効にする

予備機としてUbuntuをインストールして使っている予備機はグラボにAMD Radeon HD 7750が刺さっている。先日、このグラボが認識されなくなるトラブルが起き、原因はマザーボードの電池切れだったことが分かって電池を交換して組み立てなおしたのだが、そのついでにUbuntu19.10を入れたついでにAMD提供のLinux用ドライバーを入れようと思ったら、LTSバージョンのUbuntuにしか対応していない。どうすんの?と思ったら、どうやらこのドライバーのオープンソースバージョンはすでにLinux Kernel 5系列に取り込まれていて、それが単に有効化されていないだけだということが判明したので、有効化する方法を記録しておく。

HD 7750は命令セットがSouthern Islandsと呼ばれる世代である。通常のUbuntu19.10のKernelはradeonドライバーが有効になっているので、これを無効にして代わりにamdgpuドライバーをSouthern Islandsのグラボであることを明示して有効化する。有効化に必要な場所は二か所。一つはGRUB2の設定。これを有効にしておかないとブートが途中で止まってしまう。もう一つはKernelのmoduleの設定を変更する。

まずはGRUB2の設定。/etc/default/grubにパラメーターを追加する。追加するのはGRUB_CMDLINE_LINUX_DEFAULTの項目。すでに書いてあるであろうパラメーターの前に以下のパラメーターを追加する。

radeon.si_support=0 radeon.cik_support=0 amdgpu.si_support=1 amdgpu.cik_support=0

これでradeonドライバーが起動時に無効になり、amdgpuドライバーのSouthern Islands用が有効になる。

次はKernelモジュールの設定。/etc/modprobe.d/に二つファイルを追加する。

一つはradeonドライバーの無効化。/etc/modprobe.d/radeon.confというファイルを以下の内容で作成する。要root権限。

options radeon si_support=0
options radeon cik_support=0

もう一つはamdgpuドライバーのSouthern Islands用の有効化。/etc/modprobe.d/amdgpu.confというファイルを以下の内容で作成する。もちろんこちらも要root権限。

options amdgpu si_support=1
options amdgpu cik_support=0

GURB2の設定のアップデートとinitramfsのアップデートが必要。要root権限。

update-grub2
update-initramfs

これで再起動すれば読み込まれるディスプレイドライバーがradeonドライバーからamdgpuドライバーに切り替わる。