はじめに
今のPCは、UbuntuとWindows10をデュアルブートしています。
これまでは、HD7750という古いものを使ってきましたが、この度Radeon Rx480を購入しました。
Windows側ではRadeonのドライバを適用すればいいんだろうけど、Ubuntu(Linux)ではどうなるんだろう?
その疑問を解決するべく調査し、その課程もまとめました。
バックアップなどを行い、自己責任で実行してください。
環境・パッケージのバージョンなど
OS:Ubuntu 16.04.2 Desktop (64bit)
Rx480を購入。Ubuntuでの対応は?
Windowsでは対応したドライバが入っていれば、カードを差し替えるだけで済みます。
OSや32bit、64bitなどが変わらないなら、一つのドライバで複数のカードに対応できるから。
しかし、Ubuntuではどうでしょう。
調べてみると、2016年の6月末のRx480の発表を受けて、Linuxカーネルは1ヶ月後にバージョン4.7で対応したようです。
【参考】
2016年7月26日 Radeon RX 480を早くもサポート ―Linux 4.7がリリース:Linux Daily Topics|gihyo.jp … 技術評論社
Ubuntu 16.04を利用していて、提供されているカーネルはバージョン4.4でした。
16.04がRx480の発表よりも前に公開されていたから、未対応なのは当然。
「カーネルのアップデートは不安定になると聞くし、何かいい方法はないだろうか」
16.04でありながら、16.10のカーネルを利用できる仕組みとは
実は、Rx480を利用する方法はもうひとつあります。
それは、AMDの提供するLinux向けのドライバを使うこと。
Ubuntu16.04には間に合わなかったニュースを見た覚えがありました。
【参考】
2016年3月18日号 16.04でのfglrxの提供終了・UWN#458:Ubuntu Weekly Topics|gihyo.jp … 技術評論社
新たなドライバ”AMDGPU-PRO Driver”はベータ版がリリースされているらしいですが、現在はどこまで進んでいるのか、把握できていません。
日本語の資料があまりにも少ないですから。
閑話休題。
そうして調べていると、ぴったりの仕組みを見つけることができました。
HWEというカーネルを適用すれば、16.04のリリース以降に登場したハードウェアに対応できるというもの。
(以下のサイトが、とてもわかりやすく解説してくれています)
【参考】
Ubuntu 16.04 その113 – ローリングLTS Enablement Stackモデルの採用へ – kledgeb
第278回 Ubuntuカーネルとの付き合い方:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社
そして、HWEカーネルを適用したブログを見つけました。
【参考】
Ubuntuのベースバージョンを変えずにLinuxカーネルをアップグレードする方法 – iberianpigsty
これだ!
これでカーネルのバージョンが4.8になれば、Rx480に対応できそうです。
HWEカーネルを適用するには、Ubuntuのバージョンが16.04.2である必要があるとのこと。
「16.04.2……? そんなアップデートあったかな。いろいろ調べないと」
HWEカーネルを適用する方法
バージョン番号の小数点以下が変わるようなマイナーアップデートは、それほど重要ではないと思っていました。
そう思いUbuntuのバージョンを確認してみると、いつの間にか16.04.2になっていました(Fig1)。
アップデートしていたら、いつの間にか適用されていた模様。
【OSのバージョンを確認するコマンド】
$lsb_release -d
「Ubuntu 16.04.2」はポイントリリースと呼ばれ、Windowsのサービスパックみたいなものです。
ポイントリリースは、LTSリリースの「Ubuntu」にのみ設定されるリリースです。
新規で16.04.2をインストールした場合は、HWEカーネルを受け取る準備ができているということ。
このPCは2016年の5月に16.04を導入したため、手動でインストールする作業が必要になります。
インストールの手順は以下のページを参考にしました。
【参考】
Ubuntu 16.04 その131 – Ubuntu 16.04.2へアップデートするには・Ubuntu 16.04にUbuntu 16.10のLinux KernelとXスタックをインストールするには – kledgeb
手順1)アップデートの確認
まずは、他のアップデートがないことを確認します(Fig2)。
手順2)現在のカーネルのバージョンを確認
この時点でのカーネルのバージョンは「4.4.0-66-generic」でした(Fig3)。
Ubuntuのアップデートを受け取っているだけなら、カーネルのバージョンは4.4でとどまっているハズ。
【カーネルのバージョンを確認するコマンド】
$uname -r
手順3)HWEカーネルをインストールする
コマンドを入力し、パスワードを認証する(Fig4)。
【HWEカーネルをインストールするコマンド】
$sudo apt-get install --install-recommends xserver-xorg-hwe-16.04
インストールを認証し、処理が進みます。
さて、ここでちょっとつまづきました。
UbuntuをUEFIでインストールしている場合、追加のインストールが必要になるとのこと。
「……UEFI BIOSだけど、それとは違うのか? UEFIでインストールするってなんだ?」
【寄り道】OSがUEFIでインストールされているかどうかを確認する
完璧主義な私は、失敗しないために安全を確保したい性格です。
必要な追加インストールをしなかったら、どうなってしまうのか?
また、必要ないのに追加のインストールをしてしまったら、どうなるのか?
それが、とても気になります。
先に進むためには、このPCのUbuntuがUEFIでインストールされているかどうかを確かめなくてはなりません。
私の中では、UEFIとは「きれいなBIOS」というイメージです。
カラフルで見やすく、マウスが使えて、絵が動くグラフィカルなBIOSだと思っています。
ググってみて、「セキュアブート」とか「Linuxが起動できない場合がある」とか、なんとなくわかった。
よくわかったのは、Windowsに関する記事ばかりということ。
それに、UbuntuがUEFIでインストールされているがどうかを確認する需要は、ほとんどないということです。
(理解してインストールする方が一般的だろうし)
UEFIはGPT形式、BIOSはMBR形式らしい。
MBRについては調べたことがあるから、ここで少し理解が深まった。
【参考】
BIOS _ UEFI の違い及び MBR _ GPTの違い
ようやくたどり着いた解法は、「特定のディレクトリが存在しているかどうか」ということ。
efiディレクトリが存在すれば、UEFIでインストールされている証明になります(Fig5)。
場所は「/sys/firmware/」。
【firmwateディレクトリの中身をリスト表示するコマンド】
$ls -al /sys/firmware/efi/
確かにefiディレクトリは存在しなかった。
これなら、MBR形式でインストールされたと見ていいだろう。
まぁ、失敗しても起動時に過去のカーネルを選択できるらしいし、問題があればそれを使おうと思っていました。
【参考】
UbuntuTips_Others_BootOptions – Ubuntu Japanese Wiki
本の虫_ Ubuntuのカーネルをアップデートしたらカーネルパニックが起きた時の解決方法
「インストールは決行する。とりあえずやってみよう」
【寄り道】WindowsがUEFIでインストールされているか確認する方法
私には、ずっと引っかかっていたことがありました。
LinuxとWindowsをデュアルブートすれば、通常はGRUBメニューから起動するOSが選べます。
だけど、このPCでは、Windows10が入ったSSDのドライブを指定しても起動に失敗します。
代わりに、UEFI BIOSのブートメニューから指定する必要がありました。
もっと正確にいえば、Windowsの入ったドライブではなく、いつの間にか追加されていた「Windows Boot Manager」を選択しないと起動してくれません。
このいつもと違う挙動がUEFIでインストールされたものではないかと考えました。
そして、確認する方法を試すと、案の定UEFIでインストールされていました(Fig6)。
【参考】
Windowsシステムの GPTとMBRの見分け方 (UEFIと旧BIOSの見分け方) – ぼくんちのTV 別館
カーネルをアップデートし、Rx480を使ってみた結果
UbuntuがUEFIでインストールされていないことを確認したので、追加のインストールをせずに再起動しました。
結果、カーネルのバージョンは無事に4.8になっていました(Fig7)。
ついでにXserverのバージョンも確認してみます(Fig8)。
バージョン1.18になっているので、問題ないと思う。
【Xserverのバージョンを表示するコマンド】
$Xorg -version
そして、肝心のRx480について。
対応できていると信じて、換装して起動してみた。
画面は正常に表示されていました。
Ubuntu側ではゲームをしないので確認が不十分かもしれない。
ですが、普段使っているドローソフトのKritaが問題なく動いているので、OpenGLが正常に動いていると見ていいだろう。
システム情報ではRx480ではなく、型番が表示されているところがちょっと物足りないかな(Fig9)(Fig10)。
「Device67 df」はRx480を指しています。
発売前のベンチマーク情報などを見ていた人なら、見たことのある文字列のハズ。
結果として、不具合なくRx480に対応できてよかった。
不具合があれば、追記します。
UEFIに関しては、今度Ubuntuをインストールし直す機会にでも注意することにします。