2018年2月8日木曜日

gpuパススルー

ゲストにWindows10を導入し、ホストにPCI-Eで接続しているグラボ(nVidia GeForce GTX 1060)をPCIブリッジでゲストに渡し、ゲストのWindows10で3Dゲームとか楽しもうと思ってる。
で、色々試してたんだけど、結局NGだった。

とりあえず、
https://uramocha02.blogspot.jp/2017/01/pciiommu.html
https://uramocha02.blogspot.jp/2017/01/pcigpu.html
https://uramocha02.blogspot.jp/2017/01/pci.html
この辺りの作業の後、以下の作業を実施。
---------------------------------------
/etc/modules に以下の行を追加
--内容
#PCI pass through
pci_stub
vfio-pci
--ココまで

/etc/modprobe.d/vfio.conf を新規作成
--内容
options vfio-pci ids=10de:1c03,10de:10f1,1912:0014
--ココまで

lsmod | grep -i vfio
dmesg | grep -i vfio
lspci -nnk -d 10de:1c03
lspci -nnk -d 10de:10f1

vi /etc/initramfs-tools/modules
--
pci_stub ids=10de:1c03,10de:10f1,1912:0014
--
lspci -nnk -d 1912:0014
---------------------------------------
それでも、上手くゲストにブリッジ出来ずに悩んでた。

で、どうやら、nVidiaのグラボをPCIパススルーするためには、libvirtのバージョンが1.3.3以上でないとダメのようだ。(AMDのグラボなら可能っぽい)
Ubuntu 16.04 の libvirt は 1.3.1 のようなので、微妙に機能が足りない。

新しい libvirt をビルドするという手もあるし、Ubuntu 18.04 を待たずに、17.10 にアップグレードするという手もあるにはあるけど、18.04 はあと3ヶ月弱でリリースなので、それまで待つことにしよう…。

ちなみに、参考にしてた URL は以下。
Re: [vfio-users] No Signal: GTX 680 or GTS 450 on passthrough
Re: [vfio-users] No Signal: GTX 680 or GTS 450 on passthrough
ハイパーバイザの作り方~ちゃんと理解する仮想化技術~ 第15回 PCIパススルーその1「PCIパススルーとIOMMU」
Libvirt: Domain XML format
QEMU-KVMでGPUと光学ドライブをパススルーしてWindowsゲストを快適に走らせる
GPU passthrough: gaming on Windows on Linux
HOW-TO make dual-boot obsolete using kvm VGA passthrough
Linux and Windows running simultaneously with GPU passthrough
PCI passthrough via OVMF
Ubuntu日本語フォーラム / ubuntu14.04上にlibvirt1.3.3 以上をインストールしたい。

Ubuntu 18.04 がリリースされたら、もう一度見直して挑戦しよう。