amd全系列7940 7840 5500 等bios和核显vbios提取并 核显直通win10教程
amd核显直通win10可以参考这个教程。
我这里以5500u举例,5500u无csm兼容选项,适用于所有bios没有csm选项的机器,pve只能采用ovmf+q35进行虚拟机核显直通。
只需要以下步骤:
一、准备工作:
1、pve环境8。请确认你的amd主机bios默认已经开了虚拟化svm, iommu等,没开需要自己手动打开一下。
如何安装pve8,可以下载pve8的iso文件后,直接拷贝进入ventoy启动盘里面。ventoy如何弄参考我以前的教程 。

2、提取bios和核显vbios
2.1如果你的机器官网提供bios下载,请直接下载就是(无需提取机器的bios)
2.2如果你的机器官网不提供bios下载(或者你就是找不到),那就老老实实需提取机器bios了
请用下面这一篇文章中的AFUWIN5.12(win10完美运行)在win10系统上对主机提取bios
win10亲测可用!AMI bios(ami固件)提取工具AFUWIN分享


把存储的bios拷贝进ubu软件目录下就是
UBU 1.79.17下载地址:https://pan.baidu.com/s/1pD7NqJoOThQawJw59NyTHQ 提取码: ivwk




接下来,在ubu目录下分别有个GOP和VBIOS文件夹里面分别有efi文件和dat文件。5系列的核显这两个文件夹下都有东西而且完美,6系列和7系列估计只有一个efi文件。




在pve下执行:lspci -nnk | grep VGA 查看当前核显编号是多少,我这里是164c。和我bios导出的1638有差异,估计是可以使用的,如果你那无法使用,请多更换尝试一下其他dat。尽量两个编号一致。
vbios_1638.dat 这个文件核显直通要用
如果6系列7系列cpu的vbios dat文件用UBU提取不出来或者提取出来不能用,请参考教程:
https://forum.proxmox.com/threads/have-anyone-susscesfully-passthroughed-the-igpu-amd-radeon-680m-to-vm.119178/
中#11楼 xi4oyu的代码 ,复制张贴进vbios.c
gcc vbios.c -o vbios
./vbios运行就出来你想要的vbios文件了

现在所有准备工作就绪!
二、正式操作 关于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、OVMF中添加AMDGopDriver.efi得到自己的OVMF.fd 定制bios
6.1 https://github.com/pbatard/ffs/releases 这个软件用于efi文件转ffs 比如把AMDGopDriver.efi转AMDGopDriver.ffs 我估计intel的11-13代核显也可以这样转ffs来加入得到定制bios(以后有空再试)


请把前面导出的AMDGopDriver.efi拷贝进ffs文件夹中,在cmd中运行
GenMod.cmd AMDGopDriver.efi 就能得到一个AMDGopDriver.ffs 文件,这个文件是用来添加进自定义bios使用的
6.2 把pve里面的OVMF_CODE.fd拷贝出来到本地
用winscp软件等,进入/usr/share/pve-edk2-firmware 目录,把里面的1.87M的OVMF_CODE.fd拷贝到本地,如果要用到安全引导,下载带sec...的个就是

6.3 重头戏,AMDGopDriver.ffs加入OVMF_CODE.fd
下载MMTool V5.07 中文免费版 http://www.downxia.com/downinfo/284655.html 到本地并解压运行

OVMF_CODE.fd把他加载镜像到MMTool中,把AMDGopDriver.ffs插入到模块中,最后另存镜像为OVMF.fd,这个文件核显直通要用
7、直通虚拟机环境设置
在创建win10虚拟机里面请选择默认 (ovmf),q35 7.2版本以上机型,cpu为host,其他保持默认设置
在添加显卡pcie设备里面勾选主gpu,rom-bar,pcie-express这三个选项,并对所有功能不勾选。显示设置为无 none。

并同时添加负责声音的pcie设备
如果你的bios阉割了csm兼容选项,那只能用ovmf的虚拟机直通显卡
手动修改虚拟机参数。
执行命令
nano /etc/pve/qemu-server/101.conf
101是你需要直通的windows虚拟机
删除 bios: ovmf 这一列,代表不使用pve自带的bios
增加一行 args: -bios /root/OVMF.fd OVMF.fd 需要在第6步中自己弄出来,它可以直通看见bios启动画面
修改这一行为这样 hostpci0: 0000:06:00.0,pcie=1,romfile=vbios_1638.dat,x-vga=1 vbios_1638.dat是自己提取的vbios文件,用于启动核显使用。dat文件你可以尝试更换其他dat,直到核显不43错误。这个在准备工作中自己提取出来。
配置参照我这下面关键内容:
agent: 1
args: -bios /root/OVMF.fd
boot: order=sata0;ide2;net0
cores: 12
cpu: host
efidisk0: local-lvm:vm-101-disk-1,efitype=4m,pre-enrolled-keys=1,size=4M
hostpci0: 0000:06:00.0,pcie=1,romfile=vbios_1638.dat,x-vga=1
hostpci1: 0000:06:00.1
machine: pc-q35-8.0
vga: none
OVMF.fd 请放在root目录下。

vbios_1638.dat请放在/usr/share/kvm/ 目录下。

怎么放,用winscp之类的软件哈。
8、安装win10系统
正常用iso文件安装windows并把amd驱动安装上,不要重启电脑。这个不废话了。
9、打补丁(不完美解决amd gpu passthrough rest bug问题)
下载RadeonResetBugFixService这个软件0.17版本,下载地址:https://github.com/inga-lovinde/RadeonResetBugFix/releases
下载解压放在c盘根目录,cmd管理员模式下运行RadeonResetBugFixService.exe install
等服务安装完成后,就可以随便关闭win10虚拟机了,就可以正常开机win10虚拟机了。
10、已知问题
amd gpu passthrough rest bug问题
如果虚拟机没有安装amd显卡驱动,pve管理界面可以随便重启关机停止。
一旦安装上了amd显卡驱动,不管是win10自己更新安装的驱动还是自行下载安装amd官网的驱动还是安装主板厂商网站下载的显卡驱动,都会存在win10虚拟机重启就再也不出画面问题。只能依靠安装RadeonResetBugFixService这个软件不完美解决这个问题。安装这个软件后可以正常重启和关机(需要开机后等个2分钟以上等RadeonResetBugFixService服务启动并运行中才能正常重启或者关机虚拟机。本人盯着服务列表看总感觉这个服务启动比较慢,先是启动中然后慢慢变成运行中),不管是虚拟机里面还是pve管理界面,但是管理界面不能点停止,点了就只有重启整个物理机了才能重来了。
RadeonResetBugFixService这个软件在重启win10虚拟机的时候会有1-2分钟无画面状态,等系统自动重新安装了显卡驱动后就会一下显示出来win10画面,对远程比如rdp,todesk没有影响。RadeonResetBugFixService这个软件的原理是,在关机的时候自动卸载显卡,保持一个基本显示器以便下一次可以正常开机。
另外就是只有物理机开机后第一次开虚拟机可以看见核显直通的bios画面,后面你重启虚拟机或者关机后开启虚拟机,都会黑屏1分钟,直接一下就蹦出来win10画面,估计跟amd reset bug有关。不影响使用哈。
不需要/etc/modules 手动添加以下四个模块
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
不需要获取核显id并绑定核显设备为vfio_pci
不要开win10的休眠、睡眠功能,还有pve管理界面的虚拟机休眠、停止功能,开了直通会恢复不过来,只有重启物理机才可以解决
如果遇到pve的管理网页卡死了,那就重启物理机吧
最后发张5500u核显直通后的效果图
