ご注意下さい
この記事は3年以上前に書かれた記事ですので、内容が古い可能性があります。
ESXi7.0でNVIDIA RTX2070 SuperをパススルーしてVM上のWindows10 Proから利用することができましたのでメモっておきます。
まず以前の記事にも書きましたが、ESX67では認識してくれませんでした。/etc/vmware/passthru.mapを編集すれば認識するかもしれませんが、素の状態では無理でした。
-
ESXi 7.0のカスタムインストーラーの作り方
ESXi6.7でのカスタムインストーラーの作成方法は情報が溢れていますが、ESXi7.0の情報はまだあまりありません。 ESXi 7.0でのカス …続きを見る
ですのでESXi 7.0をインストールする必要があります。
この記事のもくじ
仮想マシンの設定
さて、ESXi 7.0のWindows10 仮想マシンの設定をしていきます。
GPUのパススルー設定
まずは管理コンソールの「ホスト」→「管理」より「ハードウェア」タブを選択し、NVIDIA Corporation TU104 [GeForce RTX 2070 SUPER]にチェックを入れ「パススルーの切り替え」を押下しESXiを再起動してパススルーを有効化します。
仮想マシンの設定の編集
メモリのロック
仮想マシンよりGPUをパススルーして利用するためにはメモリのロックが必要です。「すべてのゲストメモリを予約(すべてロック)」にチェックを入れてください。
構成パラメータの編集
仮想マシンオプションに移り、構成パラメータの追加をします。
パラメータ「hypervisor.cpuid.v0:FALSE」を追加します。
トラブル解消編(コード43エラー)
これで基本的にはGPUがWindows10に認識されるはずですが、問題が発生するはずです。
それは、仮想マシン(Windows10)を再起動するとGPUを認識しなくなる問題です。具体的にはWindowsのデバイスマネージャーを開くとディスプレイアダプタにコード43のエラー(問題が発生したのでこのデバイスは停止しました)が出力されます。これはESXiホストを再起動するまで解消できません。
Windowsアップデートやソフトウェアのインストールの度にESXiホストを再起動しなければならないのはいかにも不便です。
回避策
実はこれを回避する策があります。
それは、仮想マシンを再起動する前にデバイスマネージャでNVIDIAのディスプレイアダプタを「無効」にして再起動し、起動後に「有効」にすることで回避することができます。
しかし、これでもまだ不便です。うっかりデバイスマネージャで無効にし忘れて再起動しちゃいそうです。
そこでこの処理を自動化したいと思います。デバイスマネージャを使わずにデバイスの操作をするにはDevcon.exeというコマンドがあればいいのですが、Windows Driver Kit(WDK) for Windows 10というものをインストールしないといけないようです。
devcon.exeのインストール
それは面倒くさい。ということで以下のサイトを参考にしてdevcon.exeをインストールしてください。
devcon.exeインストール方法
- まずは787bee96dbd26371076b37b13c405890.cabをダウンロード
- 当該cabをダブルクリックして解凍
- filbad6e2cce5ebc45a401e19c613d0a28fというファイルがdevcon.exeそのものであるから適当な場所へコピーしてdevcon.exeにリネームする
とのことです。
バッチファイル作成
次にdevcon.exeを使って自動的にデバイスを有効、無効にするスクリプトを作成します。
rem @echo off
rem ----------------------------------------
rem Nvidia ドライバの無効化
rem ----------------------------------------
set local
set HWID="PCI\VEN_10DE&DEV_1E84"
rem "PCI\VEN_10DE&DEV_1E84&SUBSYS_1E8410DE&REV_A1&2B31B8D0&0&00A9"
rem ----------------------------------------
rem ドライバの無効化
devcon disable %HWID%
rem timeout /t 3
rem @echo off
rem ----------------------------------------
rem Nvidia ドライバの有効化
rem ----------------------------------------
set local
set HWID="PCI\VEN_10DE&DEV_1E84"
rem ----------------------------------------
rem ドライバの有効化
devcon enable %HWID%
rem timeout /t 3
デバイス名はデバイスマネージャから調べることができます。
デバイスのインスタンスパスを調べてdevconに渡してみて動作確認をしてみてください。
スタートアップスクリプト、シャットダウンスクリプトとして登録
さてバッチファイルまで作成できたらこれをWindowsのスタートアップスクリプト、シャットダウンスクリプトとして登録することで自動で実行されることになります。
ファイル名を指定して実行から「gpedit.msc」を入力してローカルグループポリシーエディターを起動します。
「コンピュータの構成」→「Windowsの設定」→「スクリプト(スタートアップ/シャットダウン)」から登録します。
まとめ
今回はESXi 7.0でNVIDIA RTX2070 Superをパススルーして使う方法についてご紹介しました。残念ながら仮想マシンを再起動したりログアウトしてしまうとGPUが正常に動作しなくなる不具合があるようですが、devcon.exeを使うことで回避策を自動で実行することができます。
私はこの方法でウィンドウズアップデート時でも問題なく使えています(GPUが使えなくなることを回避できています)。
記事は以上!