欢迎光临散文网 会员登陆 & 注册

intel 12-14代12700 N100 N305等pve8核显直通win10教程+kvm去虚拟化核显打游戏

2023-08-29 03:24 作者:bili_29515820169  | 我要投稿

intel 12-14代核显直通win10可以参考这个教程。目前仅支持12-14代(14代是猜测)的intel全系列cpu。


不支持11代全系列比如N5095 N5105等(会花屏,核显出bios和进win系统不花屏还无法解决),11代不要核显bios画面直通请参考下面这个视频。

这个视频的方案不出bios画面,值得遗憾。

后续如果我或者网友支持了11代我会更新本教程。


额外下面发个我的教程当广而告之:amd核显直通教程在这,请大家知晓amd全系列核显都能直通,没啥好问和好折腾的。不玩amd的请忽略以下小广告。


一、核显直通部分

我这里以12700举例,所有无csm兼容选项的12-13代机器都可以,pve采用ovmf+i440fx进行虚拟机核显直通,没有核显的cpu这里不讨论独显直通。

只需要以下步骤:

简单总结就是1、物理机bios用ubu提取2个文件;2、ffs软件对2个文件转ffs;3、mmtool加入3个ffs得到定制ovmf;4、核显直通使用


(一)准备工作

1、pve环境8。请确认你的intel主机bios默认已经开了虚拟化vt-d, iommu等,没开需要自己手动打开一下。并且你已经安装好了pve8环境


2、提取物理机bios

2.1 如果你的机器官网提供bios下载,请直接下载到本地就是(无需提取机器的bios)

2.2 如果你的机器官网不提供bios下载(或者你就是找不到),那就老老实实需提取机器bios了

请用下面这一篇文章中的AFUWIN5.12(win10完美运行)下载后并在win10系统(估计winpe也行)上对主机提取bios,运行软件点下存储就是这么简单。前提是你要在这个机器上安装个win10或者用pe环境下运行提取哈。

在win10上运行这个软件点“储存”就能获取物理机的bios文件

在win10上运行这个软件点“储存”就能获取物理机的bios文件

把存储的bios文件命令为bios.rom


3、提取intel核显相关模块

从物理机bios中提取IntelGopDriver.efi和vbt.bin模块到本地

把存储的bios拷贝进ubu软件目录下就是(直接网站下载的bios不需要命名拉进ubu目录去就是)

UBU 1.79.17下载地址:https://pan.baidu.com/s/1pD7NqJoOThQawJw59NyTHQ 提取码: ivwk 下载并解压

我这里导出的是12700的bios,并放进UBU文件夹内 名为bios.rom
运行UBU.bat后的显示内容(如果显示卡住不动的话多敲两次回车或者空格就是)

如果cmd中没找到或者检测到bios,你文件夹手动选择打开bios文件就是

输入2 选择核显并回车
输入S回车导出vbios

接下来,在ubu的Extracted目录下有个GOP文件夹,里面最终目录分别有IntelGopDriver.efi文件和vbt.bin文件。

gop文件夹路径

分别把这两个文件拷贝到ffs目录下


4、efi文件和bin文件分别转ffs

4.1下载ffs软件

https://github.com/pbatard/ffs/releases 这个软件用于efi文件转ffs,下载这个软件并解压。

IntelGopDriver.efi文件和vbt.bin文件拷贝进ffs的目录下


IntelGopDriver.efi文件和vbt.bin文件拷贝进ffs的目录下

目录中另外两个IgdAssignmentDxe.ffs和PlatformGOPPolicy.ffs下载地址如下,请下载一起放到ffs目录下:

下载地址请见这个qq群的群共享

qq群号
群共享中下载这两个ffs



题外话:(想知道这两个模块来龙去脉怎么来的大神请看>:这两个模块是通过编译得到,然后我这是手动提取出来了。要想知道怎么来的请参考我的下面这篇文章,这篇文章通过对edk2打补丁编译得到ovmf,然后你也可以用mmtool对里面的IgdAssignmentDxe和PlatformGOPPolicy自行提取出来。)


4.2 ffs软件转出来IntelGopDriver.ffs和vbt.ffs

在ffs目录下打开cmd(或者powershell都行)运行下面两个命令就是:

我这里开的powershell运行的命令。

.\GenMod.cmd .\IntelGopDriver.efi

运行.\GenMod.cmd .\IntelGopDriver.efi 后得到IntelGopDriver.ffs文件


.\GenMod.cmd .\vbt.bin

运行.\GenMod.cmd .\vbt.bin后得到vbt.ffs文件

运行之后,ffs目录你会得到IntelGopDriver.ffs和vbt.ffs这两个文件。

确认下你的ffs目录下有这些文件。

确认有这4个ffs都在


5.MMTool定制得到你的OVMFfd

5.1 把pve里面的OVMF_CODE.fd拷贝出来到本地

用winscp软件等,进入/usr/share/pve-edk2-firmware 目录,把里面的1.87M的OVMF_CODE.fd拷贝到本地,如果要用到安全引导,下载带sec...的个就是。4M的两个你可以自己测试。我这里只举例OVMF_CODE.fd

https://winscp.net/ 这个网址下载winscp


用winscp等软件把这个文件拷贝下来

5.2 pve原生OVMF中添加4个ffs得到自己定制的12-13代OVMF.fd 

下载MMTool V5.0.0.7 中文免费版  http://www.downxia.com/downinfo/284655.html 到本地并解压运行  注意:5.2.0.25等64位的高版本不支持请勿使用!

按照图中操作

PlatformGOPPolicy.ffs

IntelGopDriver.ffs

vbt.ffs

把这3个ffs

插入到OVMF中


具体是这3个ffs模块

(IgdAssignmentDxe.ffs这个可以忽略不加入,如果后面核显不能直通你再加入试试)

3个ffs加入OVMF_CODE.fd得到定制的OVMF.fd

最后另存映像为OVMF.fd这个文件核显直通要用!

卷索引需要选择个目前内容最多的比如02:00-00的最后1个(不好定位就选整体倒数第三个位置),比如加入了PlatformGOPPolicy.ffs后会在里面显示有个PlatformGOPPolicy,代表加入成功 ,另外两个ffs同理。

OVMF.fd 请放在pve系统的 root目录下

root目录下的OVMF.fd

6、下载万年不变的老古董vbios_gvt_uefi.rom 并放在/usr/share/kvm/ 目录下

下载地址

从ArchWiki下载vbios_gvt_uefi.rom
https://wiki.archlinux.org/title/Intel_GVT-g#Using_DMA-BUF_with_UEFI/OVMF

如果你不想看这篇文章(有中文翻译)直接下面下载就是

具体地址为:

http://120.25.59.132:3000/vbios_gvt_uefi.rom

并放在/usr/share/kvm/ 目录下



现在所有准备工作就绪!



(二)核显直通  关于nano编辑保存文件怎么操作这个不会请自行百度!


1、执行命令:nano /etc/default/grub

在里面加入以下内容

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on initcall_blacklist=sysfb_init pcie_acs_override=downstream,multifunction"

准备工作:

解释:initcall_blacklist=sysfb_init 屏蔽掉pve7.2以上的一个bug,方便启动时候就屏蔽核显等设备驱动。 pcie_acs_override=downstream,multifunction (强制iommu分组)


2、执行命令:update-grub


3、执行命令:nano /etc/modprobe.d/pve-blacklist.conf

在里面加入

blacklist nvidiafb

blacklist amdgpu

blacklist i915

blacklist snd_hda_intel

options vfio_iommu_type1 allow_unsafe_interrupts=1


解释:屏蔽三大显卡驱动,屏蔽hdmi声音驱动;options vfio_iommu_type1 allow_unsafe_interrupts=1  允许不安全的设备中断


4、执行命令:update-initramfs -u -k all

解释:更新initramfs。


5、执行命令:reboot


接下来你就可以直通核显了。


6、直通虚拟机环境设置

在创建win10虚拟机里面请选择默认 ovmf+i440fx 7.2版本或者最新以上机型(不能选q35!),cpu为host,光驱选择ide,硬盘选择sata硬盘(选择ide和sata是为了核显直通打游戏需要,你也可以坚持选其他),其他保持默认设置

添加核显pcie,显示设置为无 none。

并同时添加负责声音的pcie设备

手动修改虚拟机参数。

执行命令

nano /etc/pve/qemu-server/100.conf

100是你需要直通的windows虚拟机

删除 bios: ovmf 这一列,代表不使用pve自带的bios

增加一行 args: -bios /root/OVMF.fd -set device.hostpci0.addr=02.0 -set device.hostpci0.x-igd-gms=1 -set device.hostpci0.x-igd-opregion=on 

OVMF.fd 需要在前面准备工作中自己弄出来,它可以直通看见bios启动画面

修改这一行为这样

hostpci0: 0000:00:02.0,legacy-igd=1,romfile=vbios_gvt_uefi.rom

vbios_gvt_uefi.rom 是自己下载的老古董文件,用于启动核显使用。


配置参照我这下面关键内容:

重点就是第一行args

hostpci0: 0000:00:02.0这个是intel核显pci

hostpci1: 0000:00:1f.3这个是声卡(包括hdmi声卡)pci

intel核显编号和声卡pci编号都很固定!从6-13代我确认看了都是这两个编号,不像amd核显编号会有变化!


虚拟机参数展示,标红的是需要注意的!

如果核显直通打游戏网卡请选e1000好点(选择virtIO我怕打游戏被检测是虚拟机,装了virtIO驱动全暴露是虚拟机了,我这网卡virtIO不选择纯粹只是担心而已,你可以尝试下)

OVMF.fd 请确认放在root目录下得。

在虚拟机选项里面把OS类型改为linux(这一步非常重要)

题外话:如果os类型选择win,虚拟机启动参数会多一堆hyper-V参数,影响核显直通(会花屏,启动出bios画面和进win正常画面两者水火不容,目前我没其他好的解决办法),所以这里只有选linux

我对比了下选择win会多以下这些参数

查阅文档 https://www.qemu.org/docs/master/system/i386/hyperv.html  Hyper-V Enlightenments 大概意思就是选择win,kvm想用hyper-V库进行加速。

但是这个hyper-V会影响我们核显直通哈(经过测试加了进win系统绝对花屏)。


7、安装win10系统

正常用iso文件安装windows并把amd驱动安装上,不要重启电脑。这个不废话了

也可以你已经安装好win10系统后把参数改成和步骤6一致,这种办法比较稳妥!


至此,12-13代核显直通完毕!


二、kvm反虚拟化检测部分

1、无意间发现一个作者的开源项目 

https://github.com/zhaodice/proxmox-ve-anti-detection

https://github.com/zhaodice/qemu-anti-detection

这两个项目同一作者,作者演示这两项目可以通过下面一堆虚拟机检测,下图为项目作者提供,我这里直接贴图展示(这些检测软件我一个都没有,可以去问作者要)。

截图展示

2、作者编译的包有问题,决定自己编后安装

他这两个项目都是反虚拟化检测的。但是呢我下载他的pve7和pve8编译好的包,安装和运行都有问题(缺无聊的依赖包,老是安装不起,运行不起),看了下作者的源码,他是对kvm做patch,patch的代码也不难。就是让kvm看起来更加是真实机器(改掉一些爱检测的虚拟机关键字)。作者也有自编译详细教程。所以决定自己编译一个。花了两天时间折磨,目前我编译了8.0.2-3和8.0.2-4这两个pve8下的包。


这两个包请到pve群里面去下载。

qq群号
下载这两个标红的包

带anti_detection的是你需要安装的包,不带的是pve原生的包(原生的包你也一起下载免得你安装搞废了kvm方便快速还原使用),下载后放在pve的root目录

运行 dpkg -l|grep kvm 查看你当前安装的qemu版本。

然后决定安装8.0.2-3还是8.0.2-4

我这里是8.0.2-4版本,所以安装8.0.2-4

运行 dpkg -i pve-qemu-kvm_8.0.2-4_amd64_anti_detection.deb 进行强制安装,我这里没报错。

安装完成后可以试试 kvm --version 命令看看kvm运行正常不!


需要再在虚拟机里面加这些参数,原作者还加了以下这些hyper-V的参数(hv_spinlocks=0x1fff,hv_vapic,hv_time,hv_reset,hv_vpindex,hv_runtime,hv_relaxed,hv_vendor_id=intel,hypervisor=off),因为我这里核显直通不能到hyper-v(加了核显直通会花屏),所以我去掉了;还有原作者还加了kvm=off,这个参数除了导致性能下降不说还会导致核显43错误设置不了显示器分辨率,我也去掉了。

另外就是它里面有些smbios的参数我变通改了一下。

解释下里面参数含义:-smbios是模拟bios一些检测参数,比如cpu-z中显示南桥北桥机型内存型号频率等等!

要想要原作者的参数请到他的项目地址上去看就是。


最后我的虚拟机参数完整配置如下:


4、确认安装包成功

前面光驱不是选择了ide嘛,硬盘选择的sata。

进入win10系统后设备管理器只需要看看光驱型号就能确定你安装成功了了反虚拟化检测包。

只需要看一点就是:ide光驱是不是从qemu DVD...变成asus DVD...., 这就代表你安装的包是反虚拟化检测的!


pve自带包效果
安装反虚拟化检测包后效果

最后,祝折腾愉快!如果核显直通中启动蓝屏,你就让他多重启几次就是,蓝屏1-3次不算啥

qm stop 100

qm start 100

多强制开关几次就是而已。

发几张12700核显直通后+反虚拟化检测的效果图如下:

核显正常,hdmi声卡正常,光驱和硬盘显示asus....
主板检测信息 smbios中参数
内存检测信息 smbios中参数,感觉有点太假了
内存条信息:没得!

以下为cpu性能测试结果对比:

12700 全20核在win10下直接跑分结果 结果来自网上
12700 全20核在pve下跑分结果 结果来自于自测

12700 20核我全部直通进去,cpu-z跑分单核757.9->666.6大概能达到87.95%,多核8654.7->8071.7大概能达到93.26%。

核显性能达到多少百分比没测!

cpu的性能还是不错的!


三、已知问题

1、如果正常重启、关开机虚拟机,hdmi声音小图标是不会掉的,如果你强制pkill kvm后开虚拟机声卡必掉,只有重启物理机才能恢复。原因就是声卡没得reset方法得,毕竟是集成在主板上得,不是什么usb或者pcie卡转的。

2、会出现蓝屏多次问题,以及少部分花屏问题,这个时候你多重启下虚拟机就是哈!可能是目前的方案还不足够稳定(我个人觉得已经足够稳定了),手动安装intel核显驱动我没试过,不知是否蓝屏或者重启,我是win10自带驱动,大家可以qq群 @李晓流 直接反馈或者交流!


四、后续

11代核显直通继续折腾中!目前还没有好的方案!如果你知道可加群讨论!@李晓流


以上教程来自于多方网友以及前辈文章,以及各种网友的思路,在此不再一一列举。


最后只想说一句线索IgdAssignmentDxe的源码和vbios_gvt_uefi.rom这两个和intel的大神changbin.du有关。他的邮箱是:changbin.du@intel.com,核显直通搞不定了你们发邮件请教他吧

线索如下:

1、vbios_gvt_uefi.rom中可以看到是changbin的工程文件编译出来的

2、和IgdAssignmentDxe的patch一起打包的另外一个patch:enable gvtg virtual option rom 是changbin提交的。


两个patch地址的如下:

https://bugzilla.tianocore.org/show_bug.cgi?id=935 

这里面还有他们的一堆英文讨论,留给有心人去看和研究吧。


我在这篇文章中详细介绍了编译代码怎么来的,以及对rom提出了探讨




intel 12-14代12700 N100 N305等pve8核显直通win10教程+kvm去虚拟化核显打游戏的评论 (共 条)

分享到微博请遵守国家法律