前言
Intel GVT-g是显卡虚拟化技术,不同于PCI-E设备直通,GVT-g可以虚拟出多个虚拟机的GPU,从而有效地在虚拟机中提供接近宿主机的图形性能,并且仍然让主机正常使用虚拟化的GPU。
简单的说就是把一个显卡拆成好多个分别给不同虚拟机使用。
实验环境:
类型 |
详细信息 |
CPU |
I5 8400 |
主板 |
华擎 Z370M Pro4 |
内存 |
64G |
板载M.2 |
西数 SN770、512G |
PVE版本 |
7.4 |
为了实现更多vGPU,需要给核显分配更多的显存。虽然主板给出了显存的设置选项,最大是1024MB。但即使设置了1024MB,在pve下还是Menmory Size 还是 256M。也就是在PVE下可用的GVTg数量少的可怜。
插曲:在PVE开启显卡虚拟化intel GVT-g
注意,intel gvt-g技术,只支持5代以上桌面CPU或者4代以上服务器CPU。
不支持11代以上CPU。J3XXX似乎支持,请自测。
脚本对zfs和btrfs启动的支持有问题,请勿用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| #!/bin/bash
grub_check(){ if [ -e /etc/kernel/proxmox-boot-uuids ] then echo "引导为Systemd-boot" echo "正在修改cmdline" edit_cmdline else echo "引导为grub" echo "正在修改grub" edit_grub fi }
modiy_modules(){ echo "正在修改内核参数" cp /etc/modules /opt/backup/modules_$(date +%s) sed -i '/kvmgt/d' /etc/modules echo kvmgt >> /etc/modules sed -i '/915/d' /etc/modprobe.d/* sed -i '/8086/d' /etc/modprobe.d/* update-initramfs -u > /dev/null 2>&1 echo "内核参数修改完成" }
edit_cmdline(){ cp /etc/kernel/cmdline /opt/backup/cmdline_$(date +%s) echo `cat /etc/kernel/cmdline` 'quiet intel_iommu=on i915.enable_gvt=1' > /etc/kernel/cmdline proxmox-boot-tool refresh > /dev/null 2>&1 echo "cmdline修改完成" } edit_grub(){ cp /etc/default/grub /opt/backup/grub_$(date +%s) sed -i '/GRUB_CMDLINE_LINUX_DEFAULT/d' /etc/default/grub sed -i '/GRUB_CMDLINE_LINUX/i GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on i915.enable_gvt=1"' /etc/default/grub update-grub > /dev/null 2>&1 echo "grub修改完成" }
echo "这是一个自动配置gvt-g的脚本" echo "本脚本不检测硬件类型,请自己确保符合条件"
read -p "请按y/Y继续" configure if [ $configure = "y" ] || [ $configure = "Y" ] then echo "开始检测引导类型" mkdir /opt/backup > /dev/null 2>&1 grub_check else echo "输入错误,脚本退出" exit 0 fi modiy_modules echo "脚本执行完成,请重启" echo "其中grub和modules文件已经备份到/opt/backup目录下" echo "重启之后,请运行命令 lsmod|grep kvmgt 有输出即代表成功"
|
准备工作
有能力的先提取一下当前版本的BIOS,没能力的去官网找到和本机BIOS相同的更新文件。或者直接去官网下载了最新版的BIOS更新文件并更新BIOS。
打开BIOS更新文件,然后按Ctrl+F
打开搜索页面,切换到text
选项卡,搜索aperture size
点击OK,进行搜索,下方将展示搜索结果。
双击搜索结果,自动跳转到对应模块。
右键,选择 Extract body,将导出的efi文件保存一下。
使用IRFExtractor
打开上一步另存的*.efi
文件
使用文本编辑器打开这个txt
文件,搜索aperture
上图中的0x88A
就是这个设置的偏移值,下面就是可供调节的几个选项。建议这一步拍个照。比如这边的默认值就是256M,选项值为0x1
开始修改
可以使用ventoy做启动引导,需要放入uefi引导文件下载链接
重启电脑,选择U盘引导,选择uefi引导文件,进入grub命令行模式
1.验证偏移地址是否正确
输入setup_var_3 0x88A
,默认情况下返回的是0x1
即256M
那就说明这个地方就是修改aperture size
的地方。
2.修改aperture size
输入setup_var 0x88a 0x7
,将aperture size
修改为1024M。验证后reboot重启
验证结果