【娯楽】ESXiにWIn10をたててゲーミングPCとして利用する

投稿者: | 2020-03-13

背景

昨今の在宅の流れにより家のメインPCが夫婦で取り合いになる状況が多くなってきた。
それを受けて,新しくPCを新調することにした。
せっかくなのでゲームもできるPCにしようと小型ながらもゲームに耐えうるものを自作した。

そしてMHWがセールで安く売っていたので購入。
当然ながら奥様も「私もやる!」となる。しかしもう1台調達する資金は無い。最低限のパーツでもう1台準備するとなると・・・。

ということを考えた結果,ESXiのリソースが余っていたのでこれにGPUを積んでVMにパススルーさせればいけるだろうと思ったのが発端。

要件

  • 新しいPCはコスト的に手配は無理(調達するものは最低限に抑えたい)
  • 今のESXiのリソースを活用して仮想マシンで構築したい
  • ESXiがおいてある部屋とMHWをやる部屋は別なので,リモートアクセスしたい
  • タイムラグが無い操作感

<描いた構想>

<実際にできた構成>

結論から言うと,ESXi上のWin10へリモートアクセスしてやることかなわず, MHWをやるときにはESXiがある部屋に行ってやることになった。
できなかった理由は以下の通り。

  • コストを安く上げようと調達したOSがWinHomeであったためリモートデスクトップアクセスができなかった
  • TeamViewerやAnyDeskなどのリモートアクセスツールを試したが,USBのコントローラが利用できなかった
  • ESXiのリモートコンソールならUSB転送ができたが,反応がひどくて使い物にならない(そもそもグラフィックカード出力じゃないからダメ?)
最初からProを買っておけばもしかしたらいけたのかもしれないけど,買いなおすことは無駄なのでやめた。
ということで,結果的に必要となったものは
項 品名 参考価格
仮想マシン用OS Windows10 Home 64bit 15k
グラフィックカード 玄人志向 NVIDIA GeForce GTX 1650 15k
USBボード オウルテック USB3.0増設ボード 3k
ディスプレイ EVICIV 12.5インチ モバイルディスプレイ 28k
ゲームコントローラ PS4 コントローラー 2.5k
合計 63.5k

となかなかの出費になった。PS4買えるじゃんとも思ったが,Steam版との共闘ができないのでその線はなかった。

構築

いざ構築。手順は次の通り。

手順

  1. ESXiにグラボを搭載する
  2. 仮想マシン作成
  3. 仮想マシンオプション設定
  4. passthru.mapの編集
  5. OSインストール
  6. ESXi再起動
  7. 仮想マシン起動
<参考にしたサイト>
https://qiita.com/maeda_mikio/items/af538169d57bc89f6ca7
https://www.next-hop.net/~hiraga/VMware/esxi-gpupassthrough.shtml
https://qiita.com/strat/items/f741774d129206002cfc
https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/vsp-4-vmdirectpath-host-technical-note.pdf

1. グラボ搭載

物理作業のため省略

2. 仮想マシン作成

Win10 Home64bitなのでWindowsのOSバージョンを選択する。

Windows 64ビットを選択

 Windows10 Homeは1ソケットしか対応していないのでコアは全部1つのソケットへ。

今回は4コアにした

仮想マシンオプションの詳細から「構成パラメータ」を設定する。

 「hypervisor.cpuid.v0」を「FALSE」で設定する。
このオプションにより仮想マシンに仮想CPUであることを隠せるらしい。それにより,OSにパススルーするグラフィックボードの(ドライバの)仮想環境チェックに引っかからず,エラーコード34回避に至る(と理解した)。

/etc/vmware/passthru.map を編集するため,ESX ShellとSSHサービスを有効化する。

3. OSインストール

WindowsのインストーラisoをCDドライブにマウントさせてインストールする。
※ vmware toolsもインストールしておいても良い

4. passthru.mapの編集

/etc/vmware/passthru.mapを以下のように編集する。
最後の行に

## NVIDIA
#10de ffff bridge false #コメントアウト
10de ffff d3d0 default #追記

以下のように個別に指定してもよい。

# Graphic
10de 1f82 d3d0 default #追記
# Audio
10de 10fa d3d0 default #追記

PCIデバイスリセット時の挙動を指定するオプションらしい。正直なところ分からなかったが,とりあえずここを設定しないとちゃんとグラフィックボードが機能しなかった。
ちなみにここで入力するデバイスIDとプロダクトIDは esxcfg-infoコマンドで確認できる。

5. ESXi 再起動

まさかこれが必要だとは思わず,3日くらい躓いていた。

6. PCIデバイスの接続

ESXi再起動後に仮想マシンへPCIデバイス(グラボとUSB)を付ける。

7. 仮想マシン起動

無事にグラフィックボードを認識してくれた。(ここまで本当に長かった・・・)
なお,公式サイトから最新のドライバをDLしてインストールするとまた認識してくれなくなった。

ドライバは自動でインストールされる
ちゃんと認識されている

参考にしたサイトではコンソール画面を無効化したりするなどしていたが,私はマルチディスプレイ設定でGeforceのみに出力する設定とした。

2だけを使う設定にしてコンソールは無効化

しかし問題も・・・

無事にうまくいったと思ったのもつかの間。
暫く放置する等でスリープ状態になったり,仮想マシンを再起動するとまたドライバがCode34エラーに陥ってしまう。こうなると再びVMをシャットダウンして,「VMの編集→PCIデバイスを外す→ESXiを再起動→VMへPCIデバイス取り付け」という手順を踏まなくてはならない。
これがまだ解決できていない。
なので当面はVMは絶対に落とさないという運用をすることになった・・・。

もう1つの問題はリモートの線がなくなったので,わざわざ部屋を移動してモンハンしなくてはならないという点か・・・。

とりあえずはサクサクMHWが動いたのでヨシとした。

無事MHWも起動。コントローラもサクサク動いた