amd全系列7940 7840 5500等pve核顯直通簡單教程不定制ovmf了
前言:
2023年7月31的時候我發(fā)過下面這篇文章(以下簡稱該教程為
以前的教程
):
amd全系列7940 7840 5500 等bios和核顯vbios提取并 核顯直通win10教程 出bios啟動畫面
該文章詳細介紹了amd核顯直通的方法,唯一一點不方便的(也覺得麻煩的)是要定制ovmf。這一個月我一直在思考可否用pve默認的ovmf,無需自己定制ovmf,最近intel11-13代核顯直通有了新的突破辦法,參考了網(wǎng)友掛多個rom的思路,恍然大悟。今天我找到了更加方便的辦法,不用定制ovmf折騰了。今天的教程和以前的教程
最大的區(qū)別就是,不用定制ovmf,掛1個rom變成掛2個rom。
intel 11-14代核顯直通的教程我也放在這自己打個軟廣告,免得大家不知道
intel 11-14代12700 N100 N305等pve8核顯直通win10+kvm反虛擬化檢測核顯玩游戲教程
20230921補充:
Amd用戶注意如果你pve虛擬機win10跑分cpu-z下不正常,因核顯直通功率分配原因吧,5500u受限于pve的只要核顯直通他就睿頻不上去,unraid平臺跑分才完美,下面是我5500u跑分2000分有問題畫面。不管怎么優(yōu)化都上不去了,unraid直接可以跑3200多。
目前我發(fā)現(xiàn)Pve即使你換成amd_pstate調(diào)頻,可以最高4.06ghz全核睿頻的,但是一開win虛擬機帶核顯直通,他就掉頻率到基礎頻率2.1ghz,你只要把win虛擬機關了,又全部最高睿頻4.06ghz了。這是個bug,pve下無法解決。
本教程支持amd核顯cpu全系列。
第一部分:準備工作
1、pve環(huán)境8。
請確認你的amd主機bios默認已經(jīng)開了虛擬化svm, iommu等,沒開需要自己手動打開一下。
2、提取物理機bios和核顯vbios,得到AMDGopDriver.rom和vbios_1002_xxxx.bin這兩個文件
這個可以詳細參考我
以前的教程,這里我只簡略描述一下
2.1 下載你機器的
bios
,如果找不到bios哪兒下載,那就用AMI bios這個軟件提取 2.2 使用
ubu
處理bios,
導出AMDGopDriver.efi?
UBU?1.79.17下載地址:https://pan.baidu.com/s/1pD7NqJoOThQawJw59NyTHQ?提取碼:?ivwk 2.3 使用
edk2-BaseTools-win32-master工具
把AMDGopDriver.efi?轉(zhuǎn)為AMDGopDriver.rom edk2-BaseTools-win32-master下載地址? https://github.com/tianocore/edk2-BaseTools-win32 ?之間打包下載他的zip就是了,他沒有Releases 然后解壓,進入他的目錄后用cmd或者powershell在里面輸入下面命令:
.\EfiRom.exe -f 0x1002 -i 0xffff -e D:\下載\AMDGopDriver.efi
使用這個命令進行轉(zhuǎn)換,1002是amd生廠商標識。-i 0xffff這個是產(chǎn)品id,這個隨便四位十六進制都行(不需要寫具體對應顯卡編號哈),你就會得到
AMDGopDriver.rom
2.4 使用
xi4oyu的源代碼 編譯后導出vbios文件
https://forum.proxmox.com/threads/have-anyone-susscesfully-passthroughed-the-igpu-amd-radeon-680m-to-vm.119178/ 中#11樓 xi4oyu的代碼 或者以前的教程中我貼的源碼
然后運行這三行就出來vbios
nano vbios.c? gcc vbios.c -o vbios ./vbios運行就出來你想要的核顯vbios文件了 這個你不想編譯可以直接pve群去群共享下載直接運行就是,qq群號:904754537(1群已滿),102166071(請加2群),我不是群主哈 運行該編譯出來的vbios文件,導出的vbios文件名為
vbios_1002_164c.bin,你的類似vbios_1002_xxxx.bin這個名字,xxxx為具體顯卡id哈。
準備工作結(jié)束,你得到了AMDGopDriver.rom和vbios_1002_xxxx.bin這兩個文件,請把他們兩個用winscp(或者命令)拷貝
到/usr/share/kvm 目錄
第二部分:正式操作?關于nano編輯保存文件這個不會請自行百度
1、執(zhí)行命令:
nano?/etc/default/grub 在里面加入以下內(nèi)容 GRUB_CMDLINE_LINUX_DEFAULT="quiet?initcall_blacklist=sysfb_init" 解釋:initcall_blacklist=sysfb_init 屏蔽掉pve7.2以上的一個bug,方便啟動時候就屏蔽核顯等設備驅(qū)動。這里說明一下,pve8的grub里面不需要加入amd_iommu=on (開啟iommu) pcie_acs_override=downstream,multifunction (強制iommu分組)這些參數(shù),好像默認就開啟了一樣。
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ū)動,屏蔽hdmi聲音驅(qū)動;options vfio_iommu_type1 allow_unsafe_interrupts=1?允許不安全的設備中斷
4、執(zhí)行命令:
update-initramfs -u -k all 解釋:更新initramfs。
5、執(zhí)行命令:
reboot 接下來你就可以直通核顯了。
6、直通虛擬機環(huán)境設置
在創(chuàng)建win10虛擬機里面請選擇默認 (ovmf),q35 7.2版本以上機型,cpu為host,其他保持默認設置 在添加核顯顯卡pcie設備里面勾選主gpu,rom-bar,pcie-express這三個選項,并對所有功能不勾選。顯示設置為無 none。
并同時添加負責聲音的pcie設備
關于你的機器核顯編號,核顯聲卡編號
等具體是多少,請用命令
?lspci -nnk自己查一下
,一般amd的核顯顯卡和核顯聲卡挨著的,
我這里是0000:06:00.0和0000:06:00.1?,你的可能不同。
如果你的
bios閹割了csm兼容選項
,那只能用ovmf的虛擬機直通顯卡 手動修改虛擬機參數(shù)。 執(zhí)行命令 nano /etc/pve/qemu-server/101.conf 101是你需要直通的windows虛擬機 修改這一行為這樣 hostpci0: 0000:06:00.0,pcie=1,x-vga=1,romfile=vbios_1002_164c.bin 修改這一行為這樣 hostpci1: 0000:06:00.1,romfile=AMDGopDriver.rom 然后這兩行和我這一樣就足夠了。vbios_1002_164c.bin這個根據(jù)你顯卡名字進行更改。 配置參照我這下面關鍵內(nèi)容: agent: 1 bios: ovmf boot: order=sata0;ide2;net0 cores: 12 cpu: host efidisk0: local:101/vm-101-disk-0.raw,efitype=4m,pre-enrolled-keys=1,size=528K hostpci0: 0000:06:00.0,pcie=1,x-vga=1,romfile=vbios_1002_164c.bin hostpci1: 0000:06:00.1,romfile=AMDGopDriver.rom machine: pc-q35-8.0 name: win10nas ostype: win10
這里注意一下,我這沒有動過原生的ovmf了哈
廢話一下原理,
AMDGopDriver.rom相當于AMDGopDriver.efi,他可以在uefi啟動模式下出核顯啟動畫面的bios界面,然后vbios_1002_164c.bin才能繼續(xù)處理進win系統(tǒng)和裝win顯卡驅(qū)動。這兩個romfile的順序不能互換。思路就是你直通多少個pci設備,你就可以掛載多少個rom,0000:06:00.1雖然是聲卡但是我還是給他掛了個AMDGopDriver.rom顯卡驅(qū)動(這個不影響),可能網(wǎng)友會問,為啥不直接掛efi,因為efi讀入kvm,kvm要檢查一個關鍵位置確認是rom他才加載到內(nèi)存,如果不是他就沒法加載,所以我們需要efirom工具轉(zhuǎn)一下。還有efirom工具太舊,需要下載最新的自己編譯下后使用不(linux下最新版edk2或edk2-platform),三個字:沒必要!
20231005更新:鑒于多個rom在unraid平臺使用太麻煩,我找到了多個rom 多個efi合并轉(zhuǎn)換成1個rom的方法,具體請看下面這篇文章
pve unraid核顯直通多個efi多個rom合并轉(zhuǎn)化成1個rom教程
.\EfiRom.exe -f 0xffff -i 0xffff -b .\vbios_1002_164c.bin -e .\AMDGopDriver.efi -o 5500u.rom 就這樣一行命令簡單合并轉(zhuǎn)化出來1個rom,x-vga后面就掛一個5500u.rom就是了。如果不能直通,你把-f -i 后面編號改為真實編號比如:-f 0x1002 -i 0x164c
7、安裝win10系統(tǒng)
正常用iso文件安裝windows并把amd驅(qū)動安裝上,不要重啟電腦。這個不廢話了。
8、打補?。ú煌昝澜鉀Qamd gpu passthrough rest bug問題)
下載RadeonResetBugFixService這個軟件0.17版本,下載地址:https://github.com/inga-lovinde/RadeonResetBugFix/releases 下載解壓放在c盤根目錄,cmd管理員模式下運行RadeonResetBugFixService.exe install 等服務安裝完成后,就可以隨便關閉win10虛擬機了,就可以正常開機win10虛擬機了。
建議除了啟動虛擬機在pve的web操作點開啟,其他重啟、關機的操作在虛擬機win10里面去操作(不要在pve web上操作)。
最后發(fā)張5500u核顯直通后的效果圖
第三部分:補充一個驚喜方案
如果amd核顯直通想反虛擬化檢測核顯玩游戲,請直接跳轉(zhuǎn)查看下面文章的:
pve7 pve8 kvmqemu反虛擬化檢測顯卡直通玩游戲教程小白直接安裝+大神可以自己源碼編譯
安裝里面的對應包 虛擬機里面加至少這一句參數(shù): args: -cpu host,hypervisor=off
最后:
以前的教程中提的: 1. 定制ovmf直接集成efi 以前的教程已經(jīng)實現(xiàn) 2.使用pve自帶ovmf,grub啟動的時候就外掛efi 還沒實現(xiàn),原理應該可行,估計簡單 3.使用pve自帶ovmf,使用rom外掛efi(或者efi轉(zhuǎn)成的rom)本文教程已經(jīng)實現(xiàn) 這3個方法1和3我都實現(xiàn)了,2應該不難,留給網(wǎng)友實現(xiàn)。 關于多efi 多rom合并轉(zhuǎn)換為1個rom,有需要的可以參考下面我這個文章。
pve unraid核顯直通多個efi多個rom合并轉(zhuǎn)化成1個rom教程