グラボのパススルー
自作PCにグラフィックボードを取り付けて、仮想マシンから使ってみよう。
概要
ESXiには「デバイスのパススルー」という機能があり、PCIバスに取り付けたグラボなどのデバイスを仮想マシンの仮想PCIデバイスに紐付けて、仮想マシンのOSからPCIデバイスを使える ようにする機能。
仮想マシンのOSからPCIデバイスへのアクセスを、ESXiが横取りして、物理マシンのPCIデバイスに中継してやるというもの。メモリやHDDのように、複数の仮想マシンからの同時アクセスはできないが、 ESXiにデバイスドライバがなくても仮想マシンのOSにデバイスドライバがあればOKというすごく便利な機能である。
ただ、グラボのパススルーはESXiにとっては結構鬼門らしく、うまくいかないことも多いらしい。
これまでいろんな人が調べてくれたことを利用させてもらって、うまくグラボを動かせたので、その記録を書いておく。
グラボをパススルーために必要な条件
いろいろ先人が試してくれたおかげで、以下のようなケースでグラボのパススルーがうまくいくらしい。
- グラボはAMDのRadeon搭載のものならOK
- CPU内蔵のGPUを無効化できる機能がM/Bに必要
グラボをパススルーするための手順
UEFIの設定でCPU内蔵のGPUを無効化
グラボを装着した後、M/BのUEFI(新しいBIOS?)の設定を変更し、CPU内蔵のGPUを無効化する。
今回自分が使ったASROCKのM/Bの場合、以下の設定を変える。
つなぐディスプレイの変更
ディスプレイをグラボのディスプレイに変更する。
このときの注意点として、ESXiを起動すると、UEFIとESXiの起動画面もグラボのポートから出力されるようになる。 オンボードのディスプレイポートにつないだままだと、何も表示されないので、ちょっとあせることになる。
ESXiのパススルー設定
ESXiを起動し、vSphere Clientでつなぐ。
- サーバを選択→構成タブ→ハードの詳細設定でパススルー設定の画面を開く。
- 右上の[編集]をクリックして、設定画面を開く
- ここでグラボを選んでパススルー対象に指定。Audio関係もパススルーにするのを忘れずに
これで再起動すると、パススルー設定が有効になる。
ここでも注意点が。
グラボをパススルー設定すると、ESXiの起動中にグラボの出力がパススルーデバイスに横取りされるため、ESXiの起動画面が途中でフリーズしているように見える。 「パスルー設定したせいでESXiがフリーズした!」と早合点しそうだが、画面出力がとまっただけで、ESXiはちゃんと起動している。
しばらく待てば(起動画面がフリーズしてから2~3分)、vSphere Clientからはちゃんと接続できるので、うまく起動しているかどうかは確認できる。
仮想マシンにパススルーしたグラボを接続
- Windowsが動作する仮想マシンを用意する。
- 仮想マシン設定を開き、PCIデバイスを追加
- 先ほどパススルー設定したデバイスが見えるので、それらを選択
- ビデオとオーディオの両方のPCIデバイスを仮想マシンに追加しておく
- 仮想マシンのWindowsを起動して、グラボのデバイスドライバをインストール
これで3D Mark 11などのグラボのベンチマークをインストールすればちゃんと動作するのを確認できる。
仮想マシンでゲームはできるのか
せっかくグラボが動作するようになったので、何かゲームをやってみることにした。
無料で楽しめるということで、HAWKENを試してみることにした。 インストールは普通にできて、ゲームも起動したのだが、いろいろ面倒なことがあった。
グラボを有効化すると、Windowsの場合、2画面構成になるようだ。
メインのWindows画面+グラボ用画面、みたいな。
ノートPCなどを使っていると、結構普通の2画面構成だが、なんかちょっと変。
メイン画面でマウスを右側に動かしていくと、画面の途中で拡張ディスプレイにマウスポインタが移ってしまう。設定画面では画面同士は重なっていないのだが。
グラボを使ったゲームでは、マウスで照準を合わせるタイプがあるが、ぐりぐり動かしていると、どこかで画面の外に出てしまうのか、操作できなくなる領域がある。
マウス操作はvSphere Client側で行っているせいだと思う。
マウスをESXi-PC本体につないで仮想マシンに紐付けできればいいんじゃないかと思うのだが、ESXiはマウスやキーボードタイプのデバイスをパススルーできない仕様だそうだ。
USBコントローラごとパススルーする
マウスやキーボードをパススルーしたいときは、USBコントローラごとパススルー設定するといいらしい。
M/B組み込みのUSBコントローラはパススルー設定してもうまくマウスが操作できなかったので、PCIバス接続のUSB拡張ボードを買ってきた。
今回買ってきたのは玄人志向のUSB3.0 RD-PCIEというボード。一番安いのを選んでみた。
これを装着したところ、ESXiのパススルー設定に以下のようにUSBボードが現れるので、これをパススルー対象に加えておく。
次に仮想マシンにパススルーしたPCIデバイスを追加する。
これで仮想マシンに拡張USBボードが取り付けられたのと同じ状況になる。
仮想マシンを起動すると、ちゃんとUSB拡張ボードが認識されている。
拡張ボードにUSBマウスやキーボードを挿せば、仮想マシンから直接認識される。
このマウスはvSphere Clientのコンソールからのマウスと違うようで、ゲームのコントローラとして普通に使用できた。
これでようやくパススルー機能を使って、仮想マシン上でGPUを使ったゲームを楽しめるようになった。