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

amd全系列7940 7840 5500等pve核显直通简单教程不定制ovmf了

2023-09-10 03:20 作者:bili_29515820169  | 我要投稿

前言:

2023年7月31的时候我发过下面这篇文章(以下简称该教程为

以前的教程

):

amd全系列7940 7840 5500 等bios和核显vbios提取并 核显直通win10教程 出bios启动画面

该文章详细介绍了amd核显直通的方法,唯一一点不方便的(也觉得麻烦的)是要定制ovmf。这一个月我一直在思考可否用pve默认的ovmf,无需自己定制ovmf,最近intel11-13代核显直通有了新的突破办法,参考了网友挂多个rom的思路,恍然大悟。今天我找到了更加方便的办法,不用定制ovmf折腾了。今天的教程和以前的教程

最大的区别就是,不用定制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分有问题画面。不管怎么优化都上不去了,unraid直接可以跑3200多。

目前我发现Pve即使你换成amd_pstate调频,可以最高4.06ghz全核睿频的,但是一开win虚拟机带核显直通,他就掉频率到基础频率2.1ghz,你只要把win虚拟机关了,又全部最高睿频4.06ghz了。这是个bug,pve下无法解决。

本教程支持amd核显cpu全系列。

第一部分:准备工作

1、pve环境8。

请确认你的amd主机bios默认已经开了虚拟化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 转为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

使用这个命令进行转换,1002是amd生厂商标识。-i 0xffff这个是产品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哈。

准备工作结束,你得到了AMDGopDriver.rom和vbios_1002_xxxx.bin这两个文件,请把他们两个用winscp(或者命令)拷贝

到/usr/share/kvm 目录

第二部分:正式操作 关于nano编辑保存文件这个不会请自行百度

1、执行命令:

nano /etc/default/grub 在里面加入以下内容 GRUB_CMDLINE_LINUX_DEFAULT="quiet initcall_blacklist=sysfb_init" 解释:initcall_blacklist=sysfb_init 屏蔽掉pve7.2以上的一个bug,方便启动时候就屏蔽核显等设备驱动。这里说明一下,pve8的grub里面不需要加入amd_iommu=on (开启iommu) 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),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的虚拟机直通显卡 手动修改虚拟机参数。 执行命令 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这个根据你显卡名字进行更改。 配置参照我这下面关键内容: 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才能继续处理进win系统和装win显卡驱动。这两个romfile的顺序不能互换。思路就是你直通多少个pci设备,你就可以挂载多少个rom,0000:06:00.1虽然是声卡但是我还是给他挂了个AMDGopDriver.rom显卡驱动(这个不影响),可能网友会问,为啥不直接挂efi,因为efi读入kvm,kvm要检查一个关键位置确认是rom他才加载到内存,如果不是他就没法加载,所以我们需要efirom工具转一下。还有efirom工具太旧,需要下载最新的自己编译下后使用不(linux下最新版edk2或edk2-platform),三个字:没必要!

20231005更新:鉴于多个rom在unraid平台使用太麻烦,我找到了多个rom 多个efi合并转换成1个rom的方法,具体请看下面这篇文章

pve unraid核显直通多个efi多个rom合并转化成1个rom教程

.\EfiRom.exe -f 0xffff -i 0xffff -b .\vbios_1002_164c.bin -e .\AMDGopDriver.efi -o 5500u.rom 就这样一行命令简单合并转化出来1个rom,x-vga后面就挂一个5500u.rom就是了。如果不能直通,你把-f -i 后面编号改为真实编号比如:-f 0x1002 -i 0x164c

7、安装win10系统

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

8、打补丁(不完美解决amd 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上操作)。

最后发张5500u核显直通后的效果图

第三部分:补充一个惊喜方案

如果amd核显直通想反虚拟化检测核显玩游戏,请直接跳转查看下面文章的:

pve7 pve8 kvmqemu反虚拟化检测显卡直通玩游戏教程小白直接安装+大神可以自己源码编译

安装里面的对应包 虚拟机里面加至少这一句参数: args: -cpu host,hypervisor=off

最后:

以前的教程中提的: 1. 定制ovmf直接集成efi 以前的教程已经实现 2.使用pve自带ovmf,grub启动的时候就外挂efi 还没实现,原理应该可行,估计简单 3.使用pve自带ovmf,使用rom外挂efi(或者efi转成的rom)本文教程已经实现 这3个方法1和3我都实现了,2应该不难,留给网友实现。 关于多efi 多rom合并转换为1个rom,有需要的可以参考下面我这个文章。

pve unraid核显直通多个efi多个rom合并转化成1个rom教程

amd全系列7940 7840 5500等pve核显直通简单教程不定制ovmf了的评论 (共 条)

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