前言废话

为了组一台趁手好使、功耗噪音都能接受的服务器,动手玩了一下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找到设置对应的模块

使用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修改aperture size
输入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 虚拟机
虚拟机中能够使用Intel HD 630了
Linux
也有核显
可以看到,Intel 核芯显卡已经被Windows和Linux虚拟机正确识别并驱动了。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐