人生セルフ人体実験

何をするにしても自分で試すのが一番

ASRock Deskmini A300 + Ryzen 5 3400GでDocker Desktop for Windowsを動かそうとして苦戦した話

タイトル通りです。
結果的にはDeskminiに限らないRadeonGPUを積んだマシンに共通する問題だったっぽいですが。

【環境】
Windows 10 Pro (1909)
・ASRock Deskmini A300
AMD Ryzen 5 3400G
他は関係ないので割愛。

悪戦苦闘記

まず、そもそもWindowsの設定からHyper-Vを有効化できないところから始まりました。
調べてみると、Deskmini A300のUEFIレベルでHyper-Vが無効化されていることが判明。
なので、UEFIからAMD SVMを無効化したところ。Hyper-Vの有効化に成功。
ですが、今後はDockerが動きません。
(「Cannot enable hyper-v service」とのエラーメッセージ)
もう一回Windows側のHyper-V設定を見直してみると、Hyper-V Hypervisorの項目がグレーアウトしてチェックできなくなっています。
で、とりあえずUEFIが最新版じゃなかった(3.50)ので、最新安定板(3.60)にアップデートしてみることに。
結果は…変わらず。
更にUEFIHyper-V周りのメモリがどうのこうのと書いてあるベータ版の3.60Kにアップデートしてみます。
でもやっぱりだめ。

そこで、やけくそでAMD SVMを再度有効化してみることに。
Hyper-V Hypervisorは当然ながら有効化できるようになります。
が、Docker側でHyper-Vを有効化できないところに今度は逆戻り。
ここで再度調べてみたところ、どうやらHyper-VRadeonドライバの相性が悪いらしい? となり、
AMD Radeon Software Adrenalinに疑いの目を持ちます。
見てみたら何故か相当古いバージョンのAdrenalinが入っていたので、最新版だった20.8.3を入れてみます。
そしたら途中で落ちました
一応内部で処理は走ってるっぽいのでしばらく放置してみましたが…。
10分経っても画面が真っ暗なままなので泣く泣く強制シャットダウン。
やべーなーOS起動すっかなー、と不安になりながら再起動したところ…

ちょっと待って、普通にDockerが動いたぞ!?
どうやらAdrenalin自体の更新には成功していたらしい。
ただし、Radeonのソフトウェアとグラフィックドライバのバージョンが合わないので、両方とも最新版を入れ直せと怒られました。
いったんAMD Softwareをアンインストールしてから、まるごと再インストール。
すると、どこかでエラーを吐くこともなく、Dockerも無事動くようになりました。
これにて無事解決。長い戦いだった…。

ベストプラクティス

  1. AMD Softwareとグラフィックドライバを最新バージョンに更新する
  2. UEFIAMD SVMがDisableになっている場合はEnableにする
  3. WindowsHyper-Vを有効化する
  4. Docker Desktop For Windowsをインストールする
    これで十分…なはず。
    あとはおま環だと思います。

参考資料

Ryzen 5 3400GマシンにHyper-V入れようとして失敗した話