ESXi

ESXi 7.0でNVIDIA RTX2070 Superをパススルーして使う

  

ご注意下さい

この記事は3年以上前に書かれた記事ですので、内容が古い可能性があります。

0
(0)

ESXi7.0でNVIDIA RTX2070 SuperをパススルーしてVM上のWindows10 Proから利用することができましたのでメモっておきます。

まず以前の記事にも書きましたが、ESX67では認識してくれませんでした。/etc/vmware/passthru.mapを編集すれば認識するかもしれませんが、素の状態では無理でした。

ESXi
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」を追加します。

hypervisor.cpuid.v0:FALSEを追加

トラブル解消編(コード43エラー)

これで基本的にはGPUがWindows10に認識されるはずですが、問題が発生するはずです。

それは、仮想マシン(Windows10)を再起動するとGPUを認識しなくなる問題です。具体的にはWindowsのデバイスマネージャーを開くとディスプレイアダプタにコード43のエラー(問題が発生したのでこのデバイスは停止しました)が出力されます。これはESXiホストを再起動するまで解消できません。

コード43エラー画面(デバイスマネージャ)

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にリネームする

とのことです。

filbad6e2cce5ebc45a401e19c613d0a28fというファイルが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が使えなくなることを回避できています)。

記事は以上!

この記事は役に立ちましたか? | Is this article useful for you?

評価をお願いします | Please leave your rating.

平均 | Av.: 0 / 5. 投票数 | Votes: 0

最初の評価を下さい | Please vote for the first rating.

-ESXi
-, , , ,

© 1999 - 2021 蒲田ネット