備忘録

備忘録

Intel GVT-gを利用してiGPUを仮想化して使用する方法

Ⅰ. はじめに

タイトルの通り「Intel GVT-gを利用してiGPUを仮想化して使用する方法」です。

Ⅱ. 環境

  • Intel i7 8700
  • Ubuntu 20.04.1 LTS
  • Linux kernel 5.4.0
  • QEMU 4.2.1
  • BIOSの設定でVT-xとVT-dを有効に設定

Ⅲ. やり方

1. OS起動時にロードするカーネルモジュールを設定する
$ vim /etc/modules-load.d/kvm-gvt-g.conf
kvmgt
vfio_iommu_type1
vfio_mdev
2. GRUBの設定する
$ vim /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="i915.enable_gvt=1 kvm.ignore_msrs=1 intel_iommu=on"
3. GRUBの設定を反映する
update-grub
4. 再起動する
reboot
5. IOMMUが有効になったか確認する
$ dmesg | grep -E "IOMMU|enabled"
[    0.082046] DMAR: IOMMU enabled
6. iGPUのPCIアドレスを確認する
$ apt install pciutils
$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 630 (Desktop)
7. サポートされているmdevデバイスを確認する
$ GVT_PCI=0000\:00\:02.0
$ ls /sys/bus/pci/devices/$GVT_PCI/mdev_supported_types/
i915-GVTg_V5_4  i915-GVTg_V5_8

※mdevデバイスの詳細確認方法

$ cat /sys/bus/pci/devices/$GVT_PCI/mdev_supported_types/i915-GVTg_V5_4/description
low_gm_size: 128MB
high_gm_size: 512MB
fence: 4
resolution: 1920x1200
weight: 4
8. vGPUを作成する
GVT_GUID=$(uuidgen)
GVT_PCI=0000\:00\:02.0
GVT_TYPE=i915-GVTg_V5_4
echo "$GVT_GUID" > "/sys/bus/pci/devices/$GVT_PCI/mdev_supported_types/$GVT_TYPE/create"
9. QEMUを起動する
qemu-system-x86_64 \
  -hda /root/ubuntu.qcow2 \
  -enable-kvm \
  -cpu host \
  -smp 4 \
  -m 8192 \
  -boot d \
  -vga std \
  -net nic \
  -k ja \
  -device vfio-pci,sysfsdev=/sys/bus/pci/devices/$GVT_PCI/$GVT_GUID,rombar=0
10. Intel Graphicsドライバをインストールする(オプション)
  • ゲストがWindowsの場合自動的にインストールされる場合があります

実行結果

仮想マシンでiGPUの認識に成功した