コンテンツへスキップ

Hyper-V で仮想グラフィクスカードを使用する。GPU パーティションの作成。

Hyper-V を使う理由は、完全なベアメタルではないにしても、ややベアメタル的なところでしょう。
当然、グラフィックカードのリソースも反映させたいわけです。
Hyper-V でWindows 端末を作成して、グラフィックカードも仮想で反映させたときのメモです。

ちょっとコツというか、癖があったけど、GPU パーティションという方式のやつで追加投資もなくできました。(グラフィックカードがNvidia とか、とにかく対応していることが前提です。)
Ncdivia のグラフィックスカードがは必須みたいなんですけど、VM のデバイスマネージャーを見ていると「インテルグラフィックステクノロジー」が出てくるときがあるので、内蔵のグラフィックスカードも使えるかも。
(検証していないので、ご参考まで。)

Hyper-V Windows OS を仮想グラフィックカード環境で使用する

仮想マシン上で3DCAD だって動くし、FF14 のベンチマークスコアも快適レベルです。
(ちなみに、HyperーV のVM 上でゲームのコントローラーを使用したい場合は、拡張セッションの設定でローカルリソースをリダイレクトすればできると思います(他のデバイスはこれでリダイレクトできた)。

GPU パーティション を使用する場合、拡張セッションは使用できないという情報もありましたが、
私のメインPC(Dell Precision7770)では、拡張セッションでの接続が出来てます。
多分、最近のWindows(10pro 22H2) はできる子なのか、新しいグラフィックボードのドライバができる子である可能性。(K2200 では拡張セッションできんかったから。)

拡張セッションが使える場合、接続がRDP みたいなので、ローカルリソースの転送もできるし、グループポリシーの設定でリモートFX USBデバイス(ゲームのコントローラーとか)も使用できて快適な検証環境です。

チェックポイントも併用できないとありますが、チェックポイントの作成はできました。
ただし、他のチェックポイントを適用するのはエラーになるので、

で、対応してます。
ちょっと面倒だけど、チェックポイントが全く使えないわけではないので、検証環境としてもOK です。

Hyper-V でVM を作成して、グラフィックスボードを有効化するまでの流れ

Hyper-V を使ったことない方向けに、Hyper-V で新規のVM を作る手順の説明です。
Hyper-V に慣れ親しんだ方はとGPU の有効化まで飛ばしてOKです。

VM(Virtual Machine)の作成

Hyper-V の有効化

Hyper-V 機能の追加

Hyper-V はWindows Pro 以上で使えますが、普段は起動アイコンがありません。
Hyper-V を使用するには、Hyper-V の機能を有効化する手順が必要です。

Hyper-V を有効化します。
一応、その他のVM ハイパーバイザーも一緒に使用できる様になっていますが、個人的には怪奇現象がおきまくったので、Hyper-V は単独で使用する事にしています。

コントロールパネル >プログラムと機能 >「Windows の機能の有効化または無効化」

図1: コントロールパネルの「プログラムと機能」画面。ここから「Windowsの機能の有効化または無効化」に進む。
図1: コントロールパネルの「プログラムと機能」画面。ここから「Windowsの機能の有効化または無効化」に進む。

Hyper-V にチェックを入れる。
他のVM も同じ端末で使用している場合は、Windows ハイパーバイザープラットフォーム(※1)にもチェックを入れる。
(※1:ハイパーバイザープラットフォームを有効化すると、Hyper-Vと、そのほかVMソフトの両方が使えるようになるのですが、個人的にはあんまりかなーって感じです。もちろん、私の環境だけかもしれないので。)

※必須

図3: Hyper-Vにチェックを入れた状態。配下のHyper-V プラットフォームやHyper-V 管理ツールもまとめてチェックが入る。
図3: Hyper-Vにチェックを入れた状態。配下のHyper-V プラットフォームやHyper-V 管理ツールもまとめてチェックが入る。

どちらでも。

図4: 「Windows ハイパーバイザー プラットフォーム」にもチェックを入れる。
図4: 「Windows ハイパーバイザー プラットフォーム」にもチェックを入れる。

PC を再起動すると、Hyper-V の機能が有効になります。

図5: 必要な変更が完了し、再起動を求められる画面。
図5: 必要な変更が完了し、再起動を求められる画面。

Hyper-V マネージャー

Windows を再起動後、Windows 管理ツールからHyper-V マネージャーを起動。

図6: 再起動後、スタートメニューの「Windows 管理ツール」にHyper-Vマネージャーが追加されている。
図6: 再起動後、スタートメニューの「Windows 管理ツール」にHyper-Vマネージャーが追加されている。

なんとなく癖がある設定画面ですが、慣れると普通です。

Hyper-V マネージャーにHyper-V を管理する単位のサーバーがあって、その下に子の仮想マシン(VM)を設定する感じです。特になにか意識することはないと思います。
「仮想マシン(I)」の欄にサーバー内に定義された仮想マシン がリストされます。
「チェックポイント(C)」の欄にはいわゆる「スナップショット」のツリーが表示されます。

図7: Hyper-Vマネージャーを起動したところ。まだ仮想マシンは何もない状態。
図7: Hyper-Vマネージャーを起動したところ。まだ仮想マシンは何もない状態。
右側パネル「操作」のメニューについて

全部はあれなので、めぼしいとこだけ。

  • 新規
    新規で仮想マシンを作成。
  • 仮想マシンのインポート
    既存の仮想マシンフォルダから、仮想マシンをサーバーに再登録する。
  • Hyper-V の設定
    Hyper-V サーバー全体の設定。
    サーバー全体の設定と、VM 個別の設定で分かれています。
  • 仮想スイッチマネージャー
    ネットワークカードの構築をします。デフォルトのネットワークカード(NAT)でもネット環境とかは特に困らないですが、IP のセグメントが異なるので、ホスト以外の端末からもVM を参照したいときは既存のネットワークにブリッジしたスイッチを設定します。(と、思ってしてます。)
  • サービスの停止
    Hyper-V の停止
  • サーバーの削除
    サーバーを削除します。

新規・仮想マシンの作成

仮想マシンの新規作成

図8: 仮想マシンの新規作成ウィザードの「開始する前に」画面。
図8: 仮想マシンの新規作成ウィザードの「開始する前に」画面。

VM の名前を決めます。そのままVM の構成ファイルを保存する、フォルダ名にもなります。
VM の構成ファイルの保存場所を任意に設定したい場合は、「仮想マシンを別の場所に格納する」にチェックを入れて、場所を指定します。

図9: 仮想マシンの名前と保存場所を指定する画面。
図9: 仮想マシンの名前と保存場所を指定する画面。

第2世代にします。

図10: 仮想マシンの世代を選択する画面。第2世代を選択している。
図10: 仮想マシンの世代を選択する画面。第2世代を選択している。
項目Gen1Gen2
ファームウェアBIOSUEFI
起動方式MBR中心GPT対応
Secure Boot×○
仮想デバイスレガシーデバイス多数シンプル化
PXEブートLegacy NICSynthetic NIC
性能古い互換性重視より効率的

ホストの端末と相談して、VM で使用するメモリの上限を決めます。
VM の起動時に割り当て分を確保されます。

図11: 起動メモリを割り当てる画面。
図11: 起動メモリを割り当てる画面。

ネットワークカードを指定します。
とりあえず、「Default Switch」でOK です。

図12: ネットワークアダプターの接続先を選択する画面。ひとまずDefault Switchを選択。
図12: ネットワークアダプターの接続先を選択する画面。ひとまずDefault Switchを選択。

ハードディスクの設定です。新規作成するときのサイズを決めます。

図13: 仮想ハードディスクを新規作成する設定画面。
図13: 仮想ハードディスクを新規作成する設定画面。

OS のオプションを指定します。基本的には、後で、、、でいいと思います。

図14: インストールオプションの画面。ここでは後からOSをインストールする設定にしている。
図14: インストールオプションの画面。ここでは後からOSをインストールする設定にしている。

確認して、完了をクリックします。

図15: 仮想マシンの新規作成ウィザードの完了画面。設定内容を確認して「完了」をクリックする。
図15: 仮想マシンの新規作成ウィザードの完了画面。設定内容を確認して「完了」をクリックする。

完了をクリックするとVM(Virtual Machine) が作成されます。

仮想マシンの設定

仮想マシンの設定

まだOS がインストールされていないので、このまま起動しても使えません。
初めにOS をインストールしますが、インストールメディアの準備が必要です。

OS を評価版、正規版などで用意します。ISO の方がVM の場合は扱いやすいです。
(※下記は正規版。)

Windows 11 をダウンロードする

仮想マシン欄でVM を選択した状態にして、画面右下の「設定」をクリックし、VM の詳細設定を呼びだします。

図16: 作成した仮想マシンが一覧に表示された状態。続けて「設定」を開く。
図16: 作成した仮想マシンが一覧に表示された状態。続けて「設定」を開く。

図17: 仮想マシンの設定画面。SCSIコントローラーやネットワークアダプターなどのハードウェア構成が確認できる。
図17: 仮想マシンの設定画面。SCSIコントローラーやネットワークアダプターなどのハードウェア構成が確認できる。

インストールメディアの設定

SCSI コントローラー で「DVD ドライブ」を追加してインストールメディア(ISO 形式)を設定します。

SCSI コントローラーで、DVD ドライブを追加。

図18: SCSIコントローラーにDVDドライブを追加する操作。
図18: SCSIコントローラーにDVDドライブを追加する操作。

「イメージファイル」にOS インストールメディアのISO ファイルを指定する。

図19: 追加したDVDドライブにOSのインストールメディア(ISOファイル)を指定する。
図19: 追加したDVDドライブにOSのインストールメディア(ISOファイル)を指定する。

VM 起動時、最初にDVD が読み込まれるようにファームウェアの項目を調整します。
ブート順 で「DVD ドライブ」が一番上に来るようにする。

図20: ファームウェアの設定でブート順を変更し、DVDドライブを一番上にする。
図20: ファームウェアの設定でブート順を変更し、DVDドライブを一番上にする。
CPU コア数設定

お好みで。

図21: プロセッサ数を設定する画面。仮想プロセッサの数を増やしている。
図21: プロセッサ数を設定する画面。仮想プロセッサの数を増やしている。
ネットワークアダプターを設定

特に理由がなければ、Default Switch でよいと思います。その場合、個々の操作は割愛でOK です。

余談ですが、以前のバージョンではWifi 環境で仮想スイッチをバインドするにはコツがありましたが、最近のバージョンでは普通に作成できました。ちゃんと開発、改善されている感があります。

他のネットワーク内の端末からVM にアクセスしたい場合は、生のNIC をブリッジしたアダブタを作成して、指定する必要があると思います。(ホストがサーバーOS の場合、NIC をブリッジすると、なんか専有状態?みたいになるので注意。プロパティが変化します。)

ローカルなネットワークに参加(ホスト以外の端末からも参照できる状態にする)する場合。

サーバーの操作画面がら、仮想スイッチマネージャーを起動。

図22: Hyper-Vマネージャーの操作メニューから「仮想スイッチ マネージャー」を開く。
図22: Hyper-Vマネージャーの操作メニューから「仮想スイッチ マネージャー」を開く。

ネットワークアダプターでブリッジを新規で作成。

図23: 仮想スイッチマネージャーで外部ネットワークに接続するスイッチ(Bridge)を作成する。
図23: 仮想スイッチマネージャーで外部ネットワークに接続するスイッチ(Bridge)を作成する。

VM で作成したネットワークアダプターを選択する。

図24: 仮想マシンのネットワークアダプターに、作成したBridgeスイッチを割り当てる。
図24: 仮想マシンのネットワークアダプターに、作成したBridgeスイッチを割り当てる。
TPM も有効化

Windows 11 をインストールする場合は、まずホスト側でTPM 2.0 でかつ有効化されている状態にしておき、さらにVM 設定でTPM を有効にチェックを入れておきます。

図25: セキュリティの設定画面。セキュアブートとトラステッド プラットフォーム モジュール(TPM)を有効にする。
図25: セキュリティの設定画面。セキュアブートとトラステッド プラットフォーム モジュール(TPM)を有効にする。

ホストのTPM も有効になっている状態が前提です。

図26: セキュリティ プロセッサ(TPM)の詳細情報。バージョン2.0で準備完了になっている。
図26: セキュリティ プロセッサ(TPM)の詳細情報。バージョン2.0で準備完了になっている。

最後に「設定」をクリック して閉じます。

VM の起動と Windows 11 のインストール

仮想マシンにOSをインストールする

Hyper-V マネージャーの画面右側ペイン下にある、
作成したPC 名の欄の「接続」をクリックして画面を表示します。

図27: 仮想マシンの操作メニュー。「接続」をクリックして画面を表示する。
図27: 仮想マシンの操作メニュー。「接続」をクリックして画面を表示する。

Hyper-V はVM の起動と接続が別になります。
接続はPC にリモートをかけているイメージで「セッション」になります。
OS の種類によって、「拡張セッション」が使用できます。
拡張セッションでは、リモートデスクトップ接続みたいにローカルリソースを割り当てしたり、
ホスト↔クライアント間でコピペができたりします。

図28: 仮想マシン接続の画面。まだ電源が入っていないオフの状態。
図28: 仮想マシン接続の画面。まだ電源が入っていないオフの状態。

起動(電源ボタンマーク)をクリックして電源投入(するイメージです)。

図29: 電源ボタンをクリックして仮想マシンを起動する操作。
図29: 電源ボタンをクリックして仮想マシンを起動する操作。

黒い画面で「Press hit any key ~」が出てきて、DVD を読み込みそうな画面になったらエンターキーを押して読み込み。

図30: DVDから起動してWindowsセットアップの言語選択画面が表示された。
図30: DVDから起動してWindowsセットアップの言語選択画面が表示された。

画面の指示に従って進めます。

図33: Windowsセットアップの「今すぐインストール」画面。
図33: Windowsセットアップの「今すぐインストール」画面。
図34: インストールするエディションを選択する画面。Windows 11 Proを選択。
図34: インストールするエディションを選択する画面。Windows 11 Proを選択。

正規版だと、ここでプロダクトキーを聞かれます。

図35: ライセンス条項に同意する画面。
図35: ライセンス条項に同意する画面。
図36: インストールの種類を選ぶ画面。カスタムインストールを選択する。
図36: インストールの種類を選ぶ画面。カスタムインストールを選択する。
図37: Windowsのインストール先ドライブを選択する画面。
図37: Windowsのインストール先ドライブを選択する画面。
図38: Windowsのインストールが進行中の画面。
図38: Windowsのインストールが進行中の画面。

初期設定

マイクロソフトアカウントで設定したくない場合は、この段階でネットワーク接続を外しておきます。
いったん電源を落としてから、ネットワークアダプターの設定を「接続されていません」に変更して何もない状態にして再起動します。

別にMS アカウントでも便利なんでいいんですけど、ユーザーフォルダ名にアカウント名が使われるので日本語になったり、途中で切れてたりするのが、、、ちょっとね。

図39: 初期セットアップの国または地域を選択する画面。「日本」を選択。
図39: 初期セットアップの国または地域を選択する画面。「日本」を選択。

図40: キーボードレイアウトを確認する画面。Microsoft IMEのまま「はい」を選択。
図40: キーボードレイアウトを確認する画面。Microsoft IMEのまま「はい」を選択。

スキップします。

図41: 2つ目のキーボードレイアウトを追加するか聞かれる画面。ここは「スキップ」する。
図41: 2つ目のキーボードレイアウトを追加するか聞かれる画面。ここは「スキップ」する。

ネットワーク接続がある場合は、いったん最新のバージョンを確認して再起動します。

図42: セットアップ中の「ネットワークに接続しましょう」画面。ここでネットワークをいったん外しておくとMicrosoftアカウントの設定を回避できる。
図42: セットアップ中の「ネットワークに接続しましょう」画面。ここでネットワークをいったん外しておくとMicrosoftアカウントの設定を回避できる。
図43: デバイスに名前を付ける画面。ここは「今はスキップ」でも進められる。
図43: デバイスに名前を付ける画面。ここは「今はスキップ」でも進められる。

もう一度再起動した後にMS アカウントへの勧誘が始まります。(HOME エディションは詰みです。)

オフラインだと下記の画面に進みます。23H2 以降(多分)はネットワーク接続必須的な画面になっていますが、以下の手順でオフラインのまま進めることができるようになります。

図44: 再起動後に表示される「ネットワークに接続しましょう」画面。オフラインのまま進める場合はここでBypassNROを使う。
図44: 再起動後に表示される「ネットワークに接続しましょう」画面。オフラインのまま進める場合はここでBypassNROを使う。
  1. Shift +F10 キーを押してコマンドプロンプトを呼び出し。
  2. cd oobe
  3. BypassNRO.cmd
  4. 上記を実行後、再度セットアップ画面に戻るので、もう一度同様に進める。
図45: オフラインのままセットアップを進めるための「ネットワークに接続しましょう」画面。ここでShift+F10からコマンドプロンプトを呼び出し、BypassNRO.cmdを実行する。
図45: オフラインのままセットアップを進めるための「ネットワークに接続しましょう」画面。ここでShift+F10からコマンドプロンプトを呼び出し、BypassNRO.cmdを実行する。

制限された状態で続行します。(「機能が制限される」という意味合いではないです。)

図46: オンラインサインインを促す画面。「制限された設定で続行」を選ぶとローカルアカウントのまま進められる。
図46: オンラインサインインを促す画面。「制限された設定で続行」を選ぶとローカルアカウントのまま進められる。

図47: ローカルアカウントのユーザー名を入力する画面。
図47: ローカルアカウントのユーザー名を入力する画面。

パスワード入力は確認を含めて2回。

図48: ローカルアカウントのパスワードを設定する画面。
図48: ローカルアカウントのパスワードを設定する画面。

秘密の質問でボケてもいいですし、マジレスでも素敵です。
3回繰り返します。

図49: パスワードを忘れたときのためのセキュリティ質問を設定する画面。
図49: パスワードを忘れたときのためのセキュリティ質問を設定する画面。

全部のチェックを外しておくか、オンにしておきます。お好みです。

図50: デバイスのプライバシー設定を選択する画面。位置情報などをオフにして進めている。
図50: デバイスのプライバシー設定を選択する画面。位置情報などをオフにして進めている。

図51: セットアップの最終段階、「準備しています」の画面。
図51: セットアップの最終段階、「準備しています」の画面。

あとは待つだけです。
起動してきたら、いったんシャットダウンしてネットワーク接続をもとに戻し、再起動してください。

接続が「拡張セッション」の場合は、下記の画面が出て、接続のオプションを設定できます。
(リモートデスクトップ接続みたいな感じです。)

図52: 仮想マシンへの接続時に表示される画面設定ダイアログ。拡張セッションの解像度などを設定できる。
図52: 仮想マシンへの接続時に表示される画面設定ダイアログ。拡張セッションの解像度などを設定できる。

設定画面内の「セッション設定の編集」から変更できます。(いったん接続をきってから。)

図53: 仮想マシンの操作メニューから「セッション設定の編集」を開く。
図53: 仮想マシンの操作メニューから「セッション設定の編集」を開く。

GPU の有効化

仮想環境内で、グラフィックボードを有効化する、ざっくりな手順。

これだけです。めっちゃ簡単です^^。

GPU パーティションの作成

PowerShell でコマンドを流せば作成できます。ただし、グラフィックカードが対応していれば、、、です。
Nvidia ならできるバズと思ってやりましょう。GForce でもできました。

パーティション名の確認

Get-VMPartitionableGpu | Format-Table Name

Windows 10の場合はエラーが出てダメ見たいですが、Windows 11だと「InstancePath」を使って分割するGPU を指定できるみたいです。

Windows11上でGPU有効な仮想Windows11を動かす

コマンドの確認

参考記事と同じコマンドを実行してもエラーになる場合は、コマンドが少し違うかもです。(バージョンとか?)
下記のコマンドをPowerShell で実行すると、登録されているコマンドを確認できると思います。

Get-Command -module Hyper-V | find '"Gpu"'

かえってきたコマンドで代替するモジュールがわかる。。。かも^^

PS C:\Windows\system32> Get-Command -module Hyper-V | find '"Gpu"'
Cmdlet          Add-VMGpuPartitionAdapter                          2.0.0.0    Hyper-V
Cmdlet          Get-VMGpuPartitionAdapter                          2.0.0.0    Hyper-V
Cmdlet          Get-VMPartitionableGpu                             2.0.0.0    Hyper-V
Cmdlet          Remove-VMGpuPartitionAdapter                       2.0.0.0    Hyper-V
Cmdlet          Set-VMGpuPartitionAdapter                          2.0.0.0    Hyper-V
Cmdlet          Set-VMPartitionableGpu                             2.0.0.0    Hyper-V
PS C:\Windows\system32>

GPU パーティションを作成

Powershell でコマンドを入力してGPU パーティションを作成しますが、この段階でHyper-V マネージャーを起動しておきましょう。(ただし、VM はシャットダウンされた状態にしておきます。)

※コマンドでGPU パーティションを有効にするVM 名を入力するのですが、Hyper-V マネージャーを起動していないと、VMName が認識されないかも。とりあえず起動しておきましょう。

ターゲットのVM は、シャットダウンの状態で以下を実行します。”vm_Name”には、ターゲットのVM 名が入ります。

Add-VMGpuPartitionAdapter -VMName "vm_Name"

パーティションの細かい設定。
いずれかで実行します。

そのままスペックを渡してしまう場合の例。基本はこっちで問題ないと思います。

Set-VMGpuPartitionAdapter -VMName "vm_Name" -Passthru

さらに下記のコマンド3つを実行したら完了です。

Set-VM -GuestControlledCacheTypes $true -VMName "vm_Name"
Set-VM -LowMemoryMappedIoSpace 1GB -VMName "vm_Name"
Set-VM –HighMemoryMappedIoSpace 5GB –VMName "vm_Name"

この時点でVM を起動して「デバイスマネージャー」で確認すると、
グラフィックカードが認識されています。
(※コマンドで指定したVM に限ります。)

図54: GPUパーティションをコマンドで設定したVMのデバイスマネージャー。ディスプレイ アダプターにNVIDIA RTX A3000が認識されている。
図54: GPUパーティションをコマンドで設定したVMのデバイスマネージャー。ディスプレイ アダプターにNVIDIA RTX A3000が認識されている。

最終的には以下のようなファンクションにして使ってます。
設定用と、削除用です。使い終わったら削除しましょう。多分した方がいい。
(この設定はVM 自体で保持しているようなので、そのままでも問題はないと思われます。
チェックポイントは作れなくなるので、チェックポイント作るときは消しましょう。)

function Set-Gpu-Partition {
	$vm_Name =(Read-Host VM-Name)
	Add-VMGpuPartitionAdapter -VMName "$vm_Name"
	Set-VMGpuPartitionAdapter -VMName "$vm_Name" -Passthru
	Set-VM -GuestControlledCacheTypes $true -VMName "$vm_Name"
	Set-VM -LowMemoryMappedIoSpace 1GB -VMName "$vm_Name"
	Set-VM -HighMemoryMappedIoSpace 16GB -VMName "$vm_Name"
}

function Del-Gpu-Partition {
	$vm_Name =(Read-Host VM-Name)
	Remove-VMGpuPartitionAdapter -VMName "$vm_Name"
}

(VM 内にて、)グラフィックカード・ドライバ の配置。

仮想マシンのグラボにドライバーをあてる。

普通にグラフィックボードのドライバをインストールしても、うまくいきません。
ホストにインストールされているドライバを使用します。
具体的には、ホストにある、ドライバーのフォルダをVM のちょっと違う場所にコピーします。

図55: デバイスマネージャーのディスプレイ アダプターにNVIDIA RTX A3000が表示され、GPUがVM側で認識できていることが確認できる。
図55: デバイスマネージャーのディスプレイ アダプターにNVIDIA RTX A3000が表示され、GPUがVM側で認識できていることが確認できる。
  • ホストのドライバ
    • C:\Windows\System32\DriverStore\FileRepository\nvdm.inf_amd64_<英数列>
  • VM へコピー
    • C:\Windows\System32\HostDriverStore\FileRepository\nvdm.inf_amd64_<英数列>

フォルダをコピー後、再起動が必要です。

まず、現在ホストが使用しているドライバーの位置を確認します。

Get-CimInstance -ClassName Win32_VideoController -Property * `
| Format-Table InstalledDisplayDrivers
PS C:\Windows\system32> Get-CimInstance -ClassName Win32_VideoController -Property * | Format-Table InstalledDisplayDrivers
InstalledDisplayDrivers
-----------------------
<>,C:\Windows\System32\DriverStore\FileRepository\iigd_dch.inf_amd64_5477b803afa89799\igd10ium...
C:\Windows\System32\DriverStore\FileRepository\nvdm.inf_amd64_a3b5ef7aa349ba23\nvldumdx.dll,C:...

なんかたくさん出ているようで、実はダブり。カンマのところで改行するとわかります。

C:\Windows\System32\DriverStore\FileRepository\iigd_dch.inf_amd64_5477b803afa89799\igd10iumd64.dll,
C:\Windows\System32\DriverStore\FileRepository\iigd_dch.inf_amd64_5477b803afa89799\igd10iumd64.d...
C:\Windows\System32\DriverStore\FileRepository\nvdm.inf_amd64_a3b5ef7aa349ba23\nvldumdx.dll,
C:\Windows\System32\DriverStore\FileRepository\nvdm.inf_amd64_a3b5ef7aa349ba23\nvldumdx.dll,
C:\Windows\Sys..

notepad++ で「カンマ」を「カンマ+改行」に置換してみる。

図56: ドライバーファイルのパス一覧をテキストエディタで開き、カンマ区切りを改行に置換しているところ。
図56: ドライバーファイルのパス一覧をテキストエディタで開き、カンマ区切りを改行に置換しているところ。

たぶんNvidia のドライバはこっちのフォルダ。
(Nvidia は、msinfo でも表示されてました。)

図57: ホスト側のNvidiaドライバーが格納されているフォルダの中身。この一式をVM側にコピーする。
図57: ホスト側のNvidiaドライバーが格納されているフォルダの中身。この一式をVM側にコピーする。

ここで調べたフォルダをVM 上の下記のフォルダに配置。
フォルダが無い場合は、(たぶん、無いはず)作成します。

C:\Windows\System32\HostDriverStore\FileRepository\

コマンドプロンプトを使用してフォルダを作成。(普通にエクスプローラーで作っていもいいと思います^^)
場所が場所なので、管理者権限で実行してます。

図58: 管理者権限のPowerShellでHostDriverStore¥FileRepositoryフォルダを作成しているところ。
図58: 管理者権限のPowerShellでHostDriverStore¥FileRepositoryフォルダを作成しているところ。

ホストから、ドライバーファイル一式を移植。する感じ。
たぶん、ホストのドライバーを使用してデバイスに反映させるための設定方法なんだと思う。

図59: 作成したHostDriverStore¥FileRepositoryフォルダに、コピーしたドライバーフォルダが配置された状態。
図59: 作成したHostDriverStore¥FileRepositoryフォルダに、コピーしたドライバーフォルダが配置された状態。

Windows11 Home エディションは拡張セッションが使用できないので、
ローカルのリソースをコピペや接続オプション経由でコピーできません。

なので、ホストに共有フォルダを設定してネットワーク経由でフォルダをコピーしました。
Windows11 Pro エディションなら拡張セッションでリモートデスクトップ接続みたいにローカルのリソースを設定したり、コピペでホストからゲストへコピーしたりできます。

(コピー先でアクセス権の問題があるので、いったん他の場所にコピーしてローカルに落としてからターゲットのフォルダへコピーした。)

図60: ホストの共有フォルダ経由でネットワーク越しにドライバーファイルをコピーしているところ。
図60: ホストの共有フォルダ経由でネットワーク越しにドライバーファイルをコピーしているところ。

再起動後に確認。ホストのドライバーWindows10 用ですが、Windows11 でもイケてますね。両方対応のドライバーだったのかも。
ドライバの更新をしたときは、このフォルダもコピーし直します。

図61: 再起動後、デバイスマネージャーでホストのドライバーが反映されていることを確認している画面。
図61: 再起動後、デバイスマネージャーでホストのドライバーが反映されていることを確認している画面。

手順は以上です。
VM でもグラフィックカードついてると快適ですね。

余談ですが、このWindows11 Home のライセンスはWindows7 から使っているものです。
今回、ホストを変更したタイミングでライセンス認証ができなくなってしまいました。
愛着があったんですが、そろそろ諦め時期か。

以下、手持ちのグラボ(端末)毎にベンチマークしてみました。

Ouqadro K2200(Precision Tower 5810)

Get-CimInstance -ClassName Win32_VideoController -Property * | Format-Table InstalledDisplayDrivers
Add-VMGpuPartitionAdapter -VMName "test03"
Set-VMGpuPartitionAdapter -VMName "test03" -Passthru
Set-VM -GuestControlledCacheTypes $true -VMName "test03"
Set-VM -LowMemoryMappedIoSpace 1GB -VMName "test03"
Set-VM -HighMemoryMappedIoSpace 32GB -VMName "test03"
PS C:\Windows\system32> Add-VMGpuPartitionAdapter -VMName "test03"
PS C:\Windows\system32> Set-VMGpuPartitionAdapter -VMName "test03" -Passthru
MinPartitionVRAM        :
MaxPartitionVRAM        :
OptimalPartitionVRAM    :
MinPartitionEncode      :
MaxPartitionEncode      :
OptimalPartitionEncode  :
MinPartitionDecode      :
MaxPartitionDecode      :
OptimalPartitionDecode  :
MinPartitionCompute     :
MaxPartitionCompute     :
OptimalPartitionCompute :
Name                    : GPU パーティションの設定
Id                      : Microsoft:C9326309-F687-4176-A3D7-D540C5ABB5D1\7DC27
                          FA7-B47B-4A5B-AF00-1A9D2BD1F50E
VMId                    : c9326309-f687-4176-a3d7-d540c5abb5d1
VMName                  : test03
VMSnapshotId            : 00000000-0000-0000-0000-000000000000
VMSnapshotName          :
CimSession              : CimSession: .
ComputerName            : DESKTOP-V66DLU2
IsDeleted               : False
VMCheckpointId          : 00000000-0000-0000-0000-000000000000
VMCheckpointName        :
PS C:\Windows\system32> Set-VM -GuestControlledCacheTypes $true -VMName "test03"
PS C:\Windows\system32> Set-VM -LowMemoryMappedIoSpace 1GB -VMName "test03"
PS C:\Windows\system32> Set-VM -HighMemoryMappedIoSpace 32GB -VMName "test03"

確かにデバイスマネージャー上では動作しているっぽい。
でも、なんかグラボが効いている実感がない。

拡張セッションモードも無効化する必要があるのかも。ってことで基本セッションにしてみる。

この時は、チェックポイント機能も無効化しました。

その甲斐あってか、ちゃんと認識できた感じ。

図62: DirectX診断ツールのレンダータブ。NVIDIA Quadro K2200が認識され、問題は見つかっていない。
図62: DirectX診断ツールのレンダータブ。NVIDIA Quadro K2200が認識され、問題は見つかっていない。

FF14のベンチマークを実行すると、VM からは見えないけどホストの方のタスクマネージャーでGPU が仕事していることがわかる。

図63: タスクマネージャーのGPUタブ。NVIDIA Quadro K2200が88%まで動いている。
図63: タスクマネージャーのGPUタブ。NVIDIA Quadro K2200が88%まで動いている。

普通きた。

図64: FF14ベンチマークの結果画面。NVIDIA Quadro K2200でスコア4073、評価は「普通」。
図64: FF14ベンチマークの結果画面。NVIDIA Quadro K2200でスコア4073、評価は「普通」。

とりあえず、K2200 でもGPU パーティションイケるってことで。

NVIDIA RTX A3000 12GB Laptop GPU(Precision 7770)

最初、Windows 11 をインストールしたHyper-V では1000 程度しか出なかった。
Windows 10 でも変わらない。
設定をPassthru にしても変わらない。

結局マザーボードの調子が悪かった模様。

修理工場に出して、いろいろ交換して、OS も再インストールしたところいい感じになりました。
そんなこともあるのね。

ちょっとパラメータをスペックの半分を狙って指定してみた。

Add-VMGpuPartitionAdapter -VMName "test52"
Set-VMGpuPartitionAdapter -VMName "test52" `
-MaxPartitionVRAM 500000000 `
-OptimalPartitionVRAM 500000000 `
-MaxPartitionEncode 9223372036854750000 `
-OptimalPartitionEncode 9223372036854750000 `
-MaxPartitionDecode 500000000 `
-OptimalPartitionDecode 500000000 `
-MaxPartitionCompute 500000000 `
-OptimalPartitionCompute 500000000
Set-VM -GuestControlledCacheTypes $true -VMName "test52"
Set-VM -LowMemoryMappedIoSpace 1GB -VMName "test52"
Set-VM -HighMemoryMappedIoSpace 32GB -VMName "test52"
Remove-VMGpuPartitionAdapter -VMName "test52"

ベンチマーク動作中。
半分っぽい。

図65: タスクマネージャーのGPUタブ。NVIDIA RTX A3000が動作しているのが確認できる(使用率35%)。
図65: タスクマネージャーのGPUタブ。NVIDIA RTX A3000が動作しているのが確認できる(使用率35%)。

、、、半分超えた。

図66: ベンチマーク実行中のタスクマネージャー。GPU使用率が99%まで上がっている。
図66: ベンチマーク実行中のタスクマネージャー。GPU使用率が99%まで上がっている。

非常に快適キタ!
VM ではFF やらんけど。

図67: FF14ベンチマークの結果。NVIDIA RTX A3000でスコア17891、評価は「非常に快適」。
図67: FF14ベンチマークの結果。NVIDIA RTX A3000でスコア17891、評価は「非常に快適」。

チェックポイントを有効にしてみる。

図68: チェックポイントを有効にした状態のHyper-Vマネージャー。test52が実行中で、チェックポイントも作成されている。
図68: チェックポイントを有効にした状態のHyper-Vマネージャー。test52が実行中で、チェックポイントも作成されている。
図69: チェックポイント有効時のタスクマネージャー。GPU使用率87%で問題なく動作している。
図69: チェックポイント有効時のタスクマネージャー。GPU使用率87%で問題なく動作している。
図70: タスクマネージャーのCPUタブ。ベンチマーク実行中のCPU使用率を確認しているところ。
図70: タスクマネージャーのCPUタブ。ベンチマーク実行中のCPU使用率を確認しているところ。

チェックポイント有効でも、問題なく動作している。

GPU パーティションが設定されていると、チェックポイントを作成したり、戻ったりする操作でエラーが出ますが、それだけみたいですね。
GPU パーティションをいったん消せばエラーは解消します。

たまにインテルグラフィックスが認識されている可能性

たまに2つ切れる。使い終わってから消さないと、ずっと残ってたりするので、きっとそういうときに忘れて追加でGPU パーティションを作成するとこうなるんだろう。
一つは、インテルグラフィックス?

図72: PowerShellでGPUパーティションの設定を確認したところ、GPUパーティションが2つ重複して存在している状態。
図72: PowerShellでGPUパーティションの設定を確認したところ、GPUパーティションが2つ重複して存在している状態。

その場合は、ちゃんとインテルのGPU として認識される。

ドライバを設定していないから、不完全な状態。

図73: デバイスマネージャーのディスプレイ アダプター一覧。Intel UHD GraphicsとNVIDIA RTX A3000が両方表示されている。
図73: デバイスマネージャーのディスプレイ アダプター一覧。Intel UHD GraphicsとNVIDIA RTX A3000が両方表示されている。

以上です。

(Visited 1,859 times, 1 visits today)

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です