グラボのパススルー

自作PCにグラフィックボードを取り付けて、仮想マシンから使ってみよう。

概要

ESXiには「デバイスのパススルー」という機能があり、PCIバスに取り付けたグラボなどのデバイスを仮想マシンの仮想PCIデバイスに紐付けて、仮想マシンのOSからPCIデバイスを使える ようにする機能。

仮想マシンのOSからPCIデバイスへのアクセスを、ESXiが横取りして、物理マシンのPCIデバイスに中継してやるというもの。メモリやHDDのように、複数の仮想マシンからの同時アクセスはできないが、 ESXiにデバイスドライバがなくても仮想マシンのOSにデバイスドライバがあればOKというすごく便利な機能である。

ただ、グラボのパススルーはESXiにとっては結構鬼門らしく、うまくいかないことも多いらしい。

これまでいろんな人が調べてくれたことを利用させてもらって、うまくグラボを動かせたので、その記録を書いておく。

グラボをパススルーために必要な条件

いろいろ先人が試してくれたおかげで、以下のようなケースでグラボのパススルーがうまくいくらしい。

グラボをパススルーするための手順

UEFIの設定でCPU内蔵のGPUを無効化

グラボを装着した後、M/BのUEFI(新しいBIOS?)の設定を変更し、CPU内蔵のGPUを無効化する。

今回自分が使ったASROCKのM/Bの場合、以下の設定を変える。 UEFIの設定

つなぐディスプレイの変更

ディスプレイをグラボのディスプレイに変更する。

このときの注意点として、ESXiを起動すると、UEFIとESXiの起動画面もグラボのポートから出力されるようになる。 オンボードのディスプレイポートにつないだままだと、何も表示されないので、ちょっとあせることになる。

2つのディスプレイポート

ESXiのパススルー設定

ESXiを起動し、vSphere Clientでつなぐ。

パススルー設定

これで再起動すると、パススルー設定が有効になる。

ここでも注意点が。

グラボをパススルー設定すると、ESXiの起動中にグラボの出力がパススルーデバイスに横取りされるため、ESXiの起動画面が途中でフリーズしているように見える。 「パスルー設定したせいでESXiがフリーズした!」と早合点しそうだが、画面出力がとまっただけで、ESXiはちゃんと起動している。

しばらく待てば(起動画面がフリーズしてから2~3分)、vSphere Clientからはちゃんと接続できるので、うまく起動しているかどうかは確認できる。

仮想マシンにパススルーしたグラボを接続

パススルー用PCI

これで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ボードが現れるので、これをパススルー対象に加えておく。 USBボードのパススルー

次に仮想マシンにパススルーしたPCIデバイスを追加する。

USBボードの追加

これで仮想マシンに拡張USBボードが取り付けられたのと同じ状況になる。 仮想マシンを起動すると、ちゃんとUSB拡張ボードが認識されている。 USBコントローラの認識

拡張ボードにUSBマウスやキーボードを挿せば、仮想マシンから直接認識される。

このマウスはvSphere Clientのコンソールからのマウスと違うようで、ゲームのコントローラとして普通に使用できた。

これでようやくパススルー機能を使って、仮想マシン上でGPUを使ったゲームを楽しめるようになった。