背景
昨今の在宅の流れにより家のメインPCが夫婦で取り合いになる状況が多くなってきた。
それを受けて,新しくPCを新調することにした。
せっかくなのでゲームもできるPCにしようと小型ながらもゲームに耐えうるものを自作した。
そしてMHWがセールで安く売っていたので購入。
当然ながら奥様も「私もやる!」となる。しかしもう1台調達する資金は無い。最低限のパーツでもう1台準備するとなると・・・。
ということを考えた結果,ESXiのリソースが余っていたのでこれにGPUを積んでVMにパススルーさせればいけるだろうと思ったのが発端。
要件
- 新しいPCはコスト的に手配は無理(調達するものは最低限に抑えたい)
- 今のESXiのリソースを活用して仮想マシンで構築したい
- ESXiがおいてある部屋とMHWをやる部屋は別なので,リモートアクセスしたい
- タイムラグが無い操作感
<描いた構想>
<実際にできた構成>
結論から言うと,ESXi上のWin10へリモートアクセスしてやることかなわず, MHWをやるときにはESXiがある部屋に行ってやることになった。
できなかった理由は以下の通り。
- コストを安く上げようと調達したOSがWinHomeであったためリモートデスクトップアクセスができなかった
- TeamViewerやAnyDeskなどのリモートアクセスツールを試したが,USBのコントローラが利用できなかった
- ESXiのリモートコンソールならUSB転送ができたが,反応がひどくて使い物にならない(そもそもグラフィックカード出力じゃないからダメ?)
となかなかの出費になった。PS4買えるじゃんとも思ったが,Steam版との共闘ができないのでその線はなかった。
構築
いざ構築。手順は次の通り。
手順
- ESXiにグラボを搭載する
- 仮想マシン作成
- 仮想マシンオプション設定
- passthru.mapの編集
- OSインストール
- ESXi再起動
- 仮想マシン起動
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デバイスの接続
7. 仮想マシン起動
無事にグラフィックボードを認識してくれた。(ここまで本当に長かった・・・)
なお,公式サイトから最新のドライバをDLしてインストールするとまた認識してくれなくなった。
ドライバは自動でインストールされる |
ちゃんと認識されている |
参考にしたサイトではコンソール画面を無効化したりするなどしていたが,私はマルチディスプレイ設定でGeforceのみに出力する設定とした。
2だけを使う設定にしてコンソールは無効化 |
しかし問題も・・・
無事にうまくいったと思ったのもつかの間。
暫く放置する等でスリープ状態になったり,仮想マシンを再起動するとまたドライバがCode34エラーに陥ってしまう。こうなると再びVMをシャットダウンして,「VMの編集→PCIデバイスを外す→ESXiを再起動→VMへPCIデバイス取り付け」という手順を踏まなくてはならない。
これがまだ解決できていない。
なので当面はVMは絶対に落とさないという運用をすることになった・・・。
もう1つの問題はリモートの線がなくなったので,わざわざ部屋を移動してモンハンしなくてはならないという点か・・・。
とりあえずはサクサクMHWが動いたのでヨシとした。