intel 12-14代12700 N100 N305等pve8核顯直通win10教程+kvm去虛擬化核顯打游戲
intel?12-14代核顯直通win10可以參考這個(gè)教程。目前僅支持12-14代(14代是猜測(cè))的intel全系列cpu。
不支持11代全系列比如N5095 N5105等(會(huì)花屏,核顯出bios和進(jìn)win系統(tǒng)不花屏還無(wú)法解決),11代不要核顯bios畫(huà)面直通請(qǐng)參考下面這個(gè)視頻。

這個(gè)視頻的方案不出bios畫(huà)面,值得遺憾。
后續(xù)如果我或者網(wǎng)友支持了11代我會(huì)更新本教程。
額外下面發(fā)個(gè)我的教程當(dāng)廣而告之:amd核顯直通教程在這,請(qǐng)大家知曉amd全系列核顯都能直通,沒(méi)啥好問(wèn)和好折騰的。不玩amd的請(qǐng)忽略以下小廣告。

一、核顯直通部分
我這里以12700舉例,所有無(wú)csm兼容選項(xiàng)的12-13代機(jī)器都可以,pve采用ovmf+i440fx進(jìn)行虛擬機(jī)核顯直通,沒(méi)有核顯的cpu這里不討論獨(dú)顯直通。
只需要以下步驟:
簡(jiǎn)單總結(jié)就是1、物理機(jī)bios用ubu提取2個(gè)文件;2、ffs軟件對(duì)2個(gè)文件轉(zhuǎn)ffs;3、mmtool加入3個(gè)ffs得到定制ovmf;4、核顯直通使用
(一)準(zhǔn)備工作
1、pve環(huán)境8。請(qǐng)確認(rèn)你的intel主機(jī)bios默認(rèn)已經(jīng)開(kāi)了虛擬化vt-d, iommu等,沒(méi)開(kāi)需要自己手動(dòng)打開(kāi)一下。并且你已經(jīng)安裝好了pve8環(huán)境。
2、提取物理機(jī)bios
2.1 如果你的機(jī)器官網(wǎng)提供bios下載,請(qǐng)直接下載到本地就是(無(wú)需提取機(jī)器的bios)
2.2 如果你的機(jī)器官網(wǎng)不提供bios下載(或者你就是找不到),那就老老實(shí)實(shí)需提取機(jī)器bios了
請(qǐng)用下面這一篇文章中的AFUWIN5.12(win10完美運(yùn)行)下載后并在win10系統(tǒng)(估計(jì)winpe也行)上對(duì)主機(jī)提取bios,運(yùn)行軟件點(diǎn)下存儲(chǔ)就是這么簡(jiǎn)單。前提是你要在這個(gè)機(jī)器上安裝個(gè)win10或者用pe環(huán)境下運(yùn)行提取哈。


在win10上運(yùn)行這個(gè)軟件點(diǎn)“儲(chǔ)存”就能獲取物理機(jī)的bios文件
把存儲(chǔ)的bios文件命令為bios.rom
3、提取intel核顯相關(guān)模塊
從物理機(jī)bios中提取IntelGopDriver.efi和vbt.bin模塊到本地
把存儲(chǔ)的bios拷貝進(jìn)ubu軟件目錄下就是(直接網(wǎng)站下載的bios不需要命名拉進(jìn)ubu目錄去就是)
UBU 1.79.17下載地址:https://pan.baidu.com/s/1pD7NqJoOThQawJw59NyTHQ 提取碼: ivwk 下載并解壓


如果cmd中沒(méi)找到或者檢測(cè)到bios,你文件夾手動(dòng)選擇打開(kāi)bios文件就是


接下來(lái),在ubu的Extracted目錄下有個(gè)GOP文件夾,里面最終目錄分別有IntelGopDriver.efi文件和vbt.bin文件。

分別把這兩個(gè)文件拷貝到ffs目錄下。
4、efi文件和bin文件分別轉(zhuǎn)ffs
4.1下載ffs軟件
https://github.com/pbatard/ffs/releases 這個(gè)軟件用于efi文件轉(zhuǎn)ffs,下載這個(gè)軟件并解壓。
IntelGopDriver.efi文件和vbt.bin文件拷貝進(jìn)ffs的目錄下

目錄中另外兩個(gè)IgdAssignmentDxe.ffs和PlatformGOPPolicy.ffs下載地址如下,請(qǐng)下載一起放到ffs目錄下:
下載地址請(qǐng)見(jiàn)這個(gè)qq群的群共享


題外話:(想知道這兩個(gè)模塊來(lái)龍去脈怎么來(lái)的大神請(qǐng)看>:這兩個(gè)模塊是通過(guò)編譯得到,然后我這是手動(dòng)提取出來(lái)了。要想知道怎么來(lái)的請(qǐng)參考我的下面這篇文章,這篇文章通過(guò)對(duì)edk2打補(bǔ)丁編譯得到ovmf,然后你也可以用mmtool對(duì)里面的IgdAssignmentDxe和PlatformGOPPolicy自行提取出來(lái)。)

4.2 ffs軟件轉(zhuǎn)出來(lái)IntelGopDriver.ffs和vbt.ffs
在ffs目錄下打開(kāi)cmd(或者powershell都行)運(yùn)行下面兩個(gè)命令就是:
我這里開(kāi)的powershell運(yùn)行的命令。
.\GenMod.cmd .\IntelGopDriver.efi

.\GenMod.cmd .\vbt.bin

運(yùn)行之后,ffs目錄你會(huì)得到IntelGopDriver.ffs和vbt.ffs這兩個(gè)文件。
確認(rèn)下你的ffs目錄下有這些文件。

5.MMTool定制得到你的OVMFfd
5.1?把pve里面的OVMF_CODE.fd拷貝出來(lái)到本地
用winscp軟件等,進(jìn)入/usr/share/pve-edk2-firmware?目錄,把里面的1.87M的OVMF_CODE.fd拷貝到本地,如果要用到安全引導(dǎo),下載帶sec...的個(gè)就是。4M的兩個(gè)你可以自己測(cè)試。我這里只舉例OVMF_CODE.fd
https://winscp.net/?這個(gè)網(wǎng)址下載winscp

5.2?pve原生OVMF中添加4個(gè)ffs得到自己定制的12-13代OVMF.fd?
下載MMTool V5.0.0.7 中文免費(fèi)版? http://www.downxia.com/downinfo/284655.html 到本地并解壓運(yùn)行? 注意:5.2.0.25等64位的高版本不支持請(qǐng)勿使用!
按照?qǐng)D中操作
PlatformGOPPolicy.ffs
IntelGopDriver.ffs
vbt.ffs
把這3個(gè)ffs
插入到OVMF中

(IgdAssignmentDxe.ffs這個(gè)可以忽略不加入,如果后面核顯不能直通你再加入試試)

最后另存映像為OVMF.fd,這個(gè)文件核顯直通要用!
卷索引需要選擇個(gè)目前內(nèi)容最多的比如02:00-00的最后1個(gè)(不好定位就選整體倒數(shù)第三個(gè)位置),比如加入了PlatformGOPPolicy.ffs后會(huì)在里面顯示有個(gè)PlatformGOPPolicy,代表加入成功 ,另外兩個(gè)ffs同理。
OVMF.fd 請(qǐng)放在pve系統(tǒng)的 root目錄下

6、下載萬(wàn)年不變的老古董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/ 目錄下

現(xiàn)在所有準(zhǔn)備工作就緒!
(二)核顯直通? 關(guān)于nano編輯保存文件怎么操作這個(gè)不會(huì)請(qǐng)自行百度!
1、執(zhí)行命令:nano /etc/default/grub
在里面加入以下內(nèi)容
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on initcall_blacklist=sysfb_init pcie_acs_override=downstream,multifunction"
準(zhǔn)備工作:
解釋:initcall_blacklist=sysfb_init 屏蔽掉pve7.2以上的一個(gè)bug,方便啟動(dòng)時(shí)候就屏蔽核顯等設(shè)備驅(qū)動(dòng)。 pcie_acs_override=downstream,multifunction (強(qiáng)制iommu分組)
2、執(zhí)行命令:update-grub
3、執(zhí)行命令: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
解釋:屏蔽三大顯卡驅(qū)動(dòng),屏蔽hdmi聲音驅(qū)動(dòng);options vfio_iommu_type1 allow_unsafe_interrupts=1? 允許不安全的設(shè)備中斷
4、執(zhí)行命令:update-initramfs -u -k all
解釋:更新initramfs。
5、執(zhí)行命令:reboot
接下來(lái)你就可以直通核顯了。
6、直通虛擬機(jī)環(huán)境設(shè)置
在創(chuàng)建win10虛擬機(jī)里面請(qǐng)選擇默認(rèn) ovmf+i440fx?7.2版本或者最新以上機(jī)型(不能選q35?。?/strong>,cpu為host,光驅(qū)選擇ide,硬盤(pán)選擇sata硬盤(pán)(選擇ide和sata是為了核顯直通打游戲需要,你也可以堅(jiān)持選其他),其他保持默認(rèn)設(shè)置
添加核顯pcie,顯示設(shè)置為無(wú) none。
并同時(shí)添加負(fù)責(zé)聲音的pcie設(shè)備
手動(dòng)修改虛擬機(jī)參數(shù)。
執(zhí)行命令
nano /etc/pve/qemu-server/100.conf
100是你需要直通的windows虛擬機(jī)
刪除 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 需要在前面準(zhǔn)備工作中自己弄出來(lái),它可以直通看見(jiàn)bios啟動(dòng)畫(huà)面
修改這一行為這樣
hostpci0: 0000:00:02.0,legacy-igd=1,romfile=vbios_gvt_uefi.rom
vbios_gvt_uefi.rom?是自己下載的老古董文件,用于啟動(dòng)核顯使用。
配置參照我這下面關(guān)鍵內(nèi)容:
重點(diǎn)就是第一行args
hostpci0: 0000:00:02.0這個(gè)是intel核顯pci
hostpci1: 0000:00:1f.3這個(gè)是聲卡(包括hdmi聲卡)pci
intel核顯編號(hào)和聲卡pci編號(hào)都很固定!從6-13代我確認(rèn)看了都是這兩個(gè)編號(hào),不像amd核顯編號(hào)會(huì)有變化!

如果核顯直通打游戲網(wǎng)卡請(qǐng)選e1000好點(diǎn)(選擇virtIO我怕打游戲被檢測(cè)是虛擬機(jī),裝了virtIO驅(qū)動(dòng)全暴露是虛擬機(jī)了,我這網(wǎng)卡virtIO不選擇純粹只是擔(dān)心而已,你可以嘗試下)
OVMF.fd 請(qǐng)確認(rèn)放在root目錄下得。

在虛擬機(jī)選項(xiàng)里面把OS類型改為linux(這一步非常重要)

題外話:如果os類型選擇win,虛擬機(jī)啟動(dòng)參數(shù)會(huì)多一堆hyper-V參數(shù),影響核顯直通(會(huì)花屏,啟動(dòng)出bios畫(huà)面和進(jìn)win正常畫(huà)面兩者水火不容,目前我沒(méi)其他好的解決辦法),所以這里只有選linux
我對(duì)比了下選擇win會(huì)多以下這些參數(shù):
查閱文檔?https://www.qemu.org/docs/master/system/i386/hyperv.html??Hyper-V?Enlightenments 大概意思就是選擇win,kvm想用hyper-V庫(kù)進(jìn)行加速。
但是這個(gè)hyper-V會(huì)影響我們核顯直通哈(經(jīng)過(guò)測(cè)試加了進(jìn)win系統(tǒng)絕對(duì)花屏)。
7、安裝win10系統(tǒng)
正常用iso文件安裝windows并把a(bǔ)md驅(qū)動(dòng)安裝上,不要重啟電腦。這個(gè)不廢話了。
也可以你已經(jīng)安裝好win10系統(tǒng)后把參數(shù)改成和步驟6一致,這種辦法比較穩(wěn)妥!
至此,12-13代核顯直通完畢!
二、kvm反虛擬化檢測(cè)部分
1、無(wú)意間發(fā)現(xiàn)一個(gè)作者的開(kāi)源項(xiàng)目?
https://github.com/zhaodice/proxmox-ve-anti-detection
https://github.com/zhaodice/qemu-anti-detection
這兩個(gè)項(xiàng)目同一作者,作者演示這兩項(xiàng)目可以通過(guò)下面一堆虛擬機(jī)檢測(cè),下圖為項(xiàng)目作者提供,我這里直接貼圖展示(這些檢測(cè)軟件我一個(gè)都沒(méi)有,可以去問(wèn)作者要)。

2、作者編譯的包有問(wèn)題,決定自己編后安裝
他這兩個(gè)項(xiàng)目都是反虛擬化檢測(cè)的。但是呢我下載他的pve7和pve8編譯好的包,安裝和運(yùn)行都有問(wèn)題(缺無(wú)聊的依賴包,老是安裝不起,運(yùn)行不起),看了下作者的源碼,他是對(duì)kvm做patch,patch的代碼也不難。就是讓kvm看起來(lái)更加是真實(shí)機(jī)器(改掉一些愛(ài)檢測(cè)的虛擬機(jī)關(guān)鍵字)。作者也有自編譯詳細(xì)教程。所以決定自己編譯一個(gè)?;藘商鞎r(shí)間折磨,目前我編譯了8.0.2-3和8.0.2-4這兩個(gè)pve8下的包。

這兩個(gè)包請(qǐng)到pve群里面去下載。


帶anti_detection的是你需要安裝的包,不帶的是pve原生的包(原生的包你也一起下載免得你安裝搞廢了kvm方便快速還原使用),下載后放在pve的root目錄
運(yùn)行 dpkg -l|grep kvm 查看你當(dāng)前安裝的qemu版本。
然后決定安裝8.0.2-3還是8.0.2-4
我這里是8.0.2-4版本,所以安裝8.0.2-4
運(yùn)行 dpkg -i pve-qemu-kvm_8.0.2-4_amd64_anti_detection.deb 進(jìn)行強(qiáng)制安裝,我這里沒(méi)報(bào)錯(cuò)。
安裝完成后可以試試 kvm --version?命令看看kvm運(yùn)行正常不!
需要再在虛擬機(jī)里面加這些參數(shù),原作者還加了以下這些hyper-V的參數(shù)(hv_spinlocks=0x1fff,hv_vapic,hv_time,hv_reset,hv_vpindex,hv_runtime,hv_relaxed,hv_vendor_id=intel,hypervisor=off
),因?yàn)槲疫@里核顯直通不能到hyper-v(加了核顯直通會(huì)花屏),所以我去掉了;還有原作者還加了kvm=off,這個(gè)參數(shù)除了導(dǎo)致性能下降不說(shuō)還會(huì)導(dǎo)致核顯43錯(cuò)誤設(shè)置不了顯示器分辨率,我也去掉了。
另外就是它里面有些smbios的參數(shù)我變通改了一下。
解釋下里面參數(shù)含義:-smbios是模擬bios一些檢測(cè)參數(shù),比如cpu-z中顯示南橋北橋機(jī)型內(nèi)存型號(hào)頻率等等!
要想要原作者的參數(shù)請(qǐng)到他的項(xiàng)目地址上去看就是。
最后我的虛擬機(jī)參數(shù)完整配置如下:
4、確認(rèn)安裝包成功
前面光驅(qū)不是選擇了ide嘛,硬盤(pán)選擇的sata。
進(jìn)入win10系統(tǒng)后設(shè)備管理器只需要看看光驅(qū)型號(hào)就能確定你安裝成功了了反虛擬化檢測(cè)包。
只需要看一點(diǎn)就是:ide光驅(qū)是不是從qemu DVD...變成asus DVD...., 這就代表你安裝的包是反虛擬化檢測(cè)的!


最后,祝折騰愉快!如果核顯直通中啟動(dòng)藍(lán)屏,你就讓他多重啟幾次就是,藍(lán)屏1-3次不算啥
qm stop 100
qm start 100
多強(qiáng)制開(kāi)關(guān)幾次就是而已。
發(fā)幾張12700核顯直通后+反虛擬化檢測(cè)的效果圖如下:




以下為cpu性能測(cè)試結(jié)果對(duì)比:


12700 20核我全部直通進(jìn)去,cpu-z跑分單核757.9->666.6大概能達(dá)到87.95%,多核8654.7->8071.7大概能達(dá)到93.26%。
核顯性能達(dá)到多少百分比沒(méi)測(cè)!
cpu的性能還是不錯(cuò)的!
三、已知問(wèn)題
1、如果正常重啟、關(guān)開(kāi)機(jī)虛擬機(jī),hdmi聲音小圖標(biāo)是不會(huì)掉的,如果你強(qiáng)制pkill kvm后開(kāi)虛擬機(jī)聲卡必掉,只有重啟物理機(jī)才能恢復(fù)。原因就是聲卡沒(méi)得reset方法得,畢竟是集成在主板上得,不是什么usb或者pcie卡轉(zhuǎn)的。
2、會(huì)出現(xiàn)藍(lán)屏多次問(wèn)題,以及少部分花屏問(wèn)題,這個(gè)時(shí)候你多重啟下虛擬機(jī)就是哈!可能是目前的方案還不足夠穩(wěn)定(我個(gè)人覺(jué)得已經(jīng)足夠穩(wěn)定了),手動(dòng)安裝intel核顯驅(qū)動(dòng)我沒(méi)試過(guò),不知是否藍(lán)屏或者重啟,我是win10自帶驅(qū)動(dòng),大家可以qq群 @李曉流 直接反饋或者交流!
四、后續(xù)
11代核顯直通繼續(xù)折騰中!目前還沒(méi)有好的方案!如果你知道可加群討論!@李曉流
以上教程來(lái)自于多方網(wǎng)友以及前輩文章,以及各種網(wǎng)友的思路,在此不再一一列舉。
最后只想說(shuō)一句線索:IgdAssignmentDxe的源碼和vbios_gvt_uefi.rom這兩個(gè)和intel的大神changbin.du有關(guān)。他的郵箱是:changbin.du@intel.com,核顯直通搞不定了你們發(fā)郵件請(qǐng)教他吧
線索如下:
1、vbios_gvt_uefi.rom中可以看到是changbin的工程文件編譯出來(lái)的

2、和IgdAssignmentDxe的patch一起打包的另外一個(gè)patch:enable gvtg virtual option rom 是changbin提交的。

兩個(gè)patch地址的如下:
https://bugzilla.tianocore.org/show_bug.cgi?id=935?
這里面還有他們的一堆英文討論,留給有心人去看和研究吧。
我在這篇文章中詳細(xì)介紹了編譯代碼怎么來(lái)的,以及對(duì)rom提出了探討
