Asutorufaのブログ

こんにちは

使用GVT-g显卡虚拟化

发布于 2021-01-17|更新于: 2021-01-17|分类 Linux

为内核添加参数

比如grub/etc/default/grubGRUB_CMDLINE_LINUX_DEFAULT=中添加

intel_iommu=on i915.enable_gvt=1 i915.enable_guc=0

启用modules

/etc/mkinitcpio.conf的MODULES=()`中添加:

# linux 5.14后,arch的linux内核模块已经不会勾选vfio-mdev,自测不影响gvt-gkvmgt vfio vfio-iommu-type1s

然后运行,我用的zen内核所以是linux-zen,默认内核是linux

sudo mkinitcpio -p linux-zen

重启计算机

查看/sys/devices/pci0000:00/0000:00:02.0/mdev_supported_types可以看见类似如下的目录

# ls /sys/devices/pci${GVT_DOM}/$GVT_PCI/mdev_supported_typesi915-GVTg_V5_1  # Video memory: <512MB, 2048MB>, resolution: up to 1920x1200i915-GVTg_V5_2  # Video memory: <256MB, 1024MB>, resolution: up to 1920x1200i915-GVTg_V5_4  # Video memory: <128MB, 512MB>, resolution: up to 1920x1200i915-GVTg_V5_8  # Video memory: <64MB, 384MB>, resolution: up to 1024x768

向create文件中写入uuid(自己生成)就会创建相应的虚拟显卡

echo "$GVT_GUID" > "/sys/devices/pci${GVT_DOM}/$GVT_PCI/mdev_supported_types/$GVT_TYPE/create"

移除

echo 1 > /sys/bus/pci/devices/$GVT_PCI/$GVT_GUID/remove

qemu添加钩子, 启动虚拟机时自动创建虚拟显卡

/etc/libvirt/hooks/qemu中, 沒有则自己创建

#!/bin/bashGVT_PCI=<GVT_PCI> # 这里为显卡的地址, 比如 0000:00:02.0GVT_GUID=<GVT_GUID> # 这里为自己生成的uuidMDEV_TYPE=<GVT_TYPE> # 这里为要使用的虚拟的类型, 比如 i915-GVTg_V5_8DOMAIN=<DOMAIN name> # qemu虚拟机的名字if [ $# -ge 3 ]; then    if [ $1 = "$DOMAIN" -a $2 = "prepare" -a $3 = "begin" ]; then        echo "$GVT_GUID" > "/sys/bus/pci/devices/$GVT_PCI/mdev_supported_types/$MDEV_TYPE/create"    elif [ $1 = "$DOMAIN" -a $2 = "release" -a $3 = "end" ]; then        echo 1 > /sys/bus/pci/devices/$GVT_PCI/$GVT_GUID/remove    fifi

这样启动虚拟机时会自动创建, 停止后会自动删除

生成虚拟机配置

可以使用virt-manager先生成一个虚拟机, 再修改相应的配置, 默认配置文件在/etc/libvirt/qemu/
需要添加/修改的配置:

  <qemu:commandline>    <qemu:arg value='-set'/>    <qemu:arg value='device.hostdev0.x-igd-opregion=on'/>    <qemu:arg value='-set'/>    <qemu:arg value='device.hostdev0.ramfb=on'/>    <qemu:arg value='-set'/>    <qemu:arg value='device.hostdev0.driver=vfio-pci-nohotplug'/>    <qemu:env name='MESA_LOADER_DRIVER_OVERRIDE' value='i965'/> <!--intel启用OpenGL可能会花屏, 不会就不要加这一条-->  </qemu:commandline>

hostdev配置可以在添加硬件(PCI HOST Devices)的界面直接修改xml, 更方便一点

    <hostdev mode='subsystem' type='mdev' managed='no' model='vfio-pci' display='on'>      <source>        <address uuid='93397e71-15bf-4889-98b7-aa2d735e6260'/>      </source>      <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>    </hostdev>
    <video>      <model type='none'/>    </video>
    <graphics type='spice'>            <listen type='none'/>            <image compression='off'/>            <jpeg compression='never'/>            <zlib compression='never'/>            <playback compression='off'/>            <streaming mode='off'/>      <gl enable='yes' rendernode='/dev/dri/by-path/pci-0000:00:02.0-render'/>    </graphics>
  <vcpu placement='static'>2</vcpu>  <cputune>    <vcpupin vcpu='0' cpuset='1'/>    <vcpupin vcpu='1' cpuset='2'/>  </cputune>

结尾

启动虚拟机后, 进入虚拟机安装相应的显卡驱动就行了.
这样就快很多了, 比软件渲染快多了, 这样用linux也能愉快的使用其他系统了.


Intel_GVT-g
让 KVM 上的 Windows 虚拟机插上GVT-g 的翅膀
libvirt hooks
Intel Gvt

0 条评论

©2026Asutorufa