前言废话
为了组一台趁手好使、功耗噪音都能接受的服务器,动手玩了一下KVM,遇到一些百度不到的问题,摸索解决后总结一下,希望能帮到更多人。
Intel GVT-g是显卡虚拟化技术,有别于PCI-E设备直通,GVT-g可以虚拟出多个虚拟机的GPU,从而有效地在虚拟机中提供接近宿主机的图形性能,并且仍然让主机正常使用虚拟化的GPU。
简单的说就是把一个显卡拆成好多个分别给不同虚拟机使用。
测试平台:ASUS B250M-A + i7 7700
虚拟化平台:Proxmox-VE 6.2.3-2 (Debian 10)
为了实现更多vGPU,需要给核显分配更多的显存。但是ASUS并没有在BIOS中给调节显存的选项,只给了DVMT (Dynamic Video Memory Technology 动态分配共享显存技术)最大显存的选项,最大是1024MB,当我把DVMT改成1024MB之后,并没有什么用。
Menmory Size 还是 256M
去Intel官网翻了一下,发现Intel NUC上的BIOS有个Intel aperture size
的选项,用于调节最小显存大小。于是只要想办法修改自己主板BIOS里面的这个设置值即可。但是ASUS并没有提供这个选项。
开始动手
有能力的先提取一下当前版本的BIOS,没能力的去官网找到和本机BIOS相同的更新文件。我直接去官网下载了最新版的BIOS更新文件并更新了BIOS。
1.使用UEFI Tool找到设置对应的模块
打开BIOS更新文件,然后按Ctrl+F
打开搜索页面,切换到text
选项卡,搜索aperture size
点击OK,进行搜索,下方将展示搜索结果。
将导出的efi文件另存为一下。
2.找到设置的偏移地址
使用IRFExtractor
打开上一步另存的*.efi
文件
使用文本编辑器打开这个txt
文件,搜索aperture
上图中红框的0x736
就是这个设置的偏移值,下面就是可供调节的几个选项。建议这一步拍个照。比如这边的默认值就是256M,选项值为0x1
3. 制作引导盘修改BIOS隐藏设置
找一个空U盘,格式化成FAT32格式,放入uefi引导文件
重启电脑,进入U盘引导。此时应该进入grub命令行模式。
第一步,验证一下偏移地址是否正确
输入setup_var_3 0x736
,默认情况下返回的是0x1
即256M
那就说明这个地方就是修改aperture size
的地方。
第二部,修改aperture size
假如我要修改为512MB,通过上面txt文档可知修改为0x3
即可将aperture size
修改为512MB
输入setup_var_3 0x736
,默认情况下返回的是0x1
即256M(上图中我已经改过了)
输入setup_var 0x736 0x3
,将aperture size
修改为512M。然后reboot
重启
4.验证结果
修改成功,vGPU个数变多了。
修改为1024M后可分配的vGPU。
注意:这块主板分配显存大小超过1024M后会无法进入BIOS,grub引导界面提示 No suitable mode found
,但是功能一切正常。
如果出现问题,请给主机断电后扣下CMOS电池几秒后在安回去,以便恢复主板的默认设置。
进入虚拟机看看:
Windows 虚拟机
Linux
可以看到,Intel 核芯显卡已经被Windows和Linux虚拟机正确识别并驱动了。