为内核添加参数
比如grub在/etc/default/grub的GRUB_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 条评论