amd全系列7940 7840 5500等unraid核显直通简单教程
前言:
2023年9月10的时候我发过下面这篇文章:
amd全系列7940 7840 5500等pve核显直通简单教程(不定制ovmf了
和2023年7月31的时候我发过下面这篇文章:
amd全系列7940 7840 5500 等bios和核显vbios提取并 核显直通win10教程 出bios启动画面
(以下简称上面两篇教程为以前的教程)
想了下,unraid和pve既然同源kvm,很多思路也参考了unraid的一些教程,要不也把unraid核显直通教程也做了算了。
先废话几句:
amd核显直通win10可以直接参考这个教程。今天我就写简单点,细节之处可以看上面我以前的教程。我这里还是以 天宝wtr 5500u 举例。5500u在unraid下睿频完美,虚拟机跑分美丽。
因我的5500u使用todesk远程我老是觉得有点卡顿,突然有一天我测了虚拟机的cpu-z,发现多核跑不了1000分,然后我就把pve,unraid,esxi全部测试了一圈,这里有必要废话一下三个平台虚拟机跑分效果,以免你也是amd cpu,也遇上这个问题:



5500u受限于pve的只要核显直通他就睿频不上去,我从多核跑分1000--1300--2087再也优化不动了(具体就是上amd_pstate调速器,怎么优化这个跑分明显都不正常),unraid直接3259(而且还能核显直通),esxi直接3688(但是不能核显直通)。建议直接选择unraid作为5500u的底层系统。如果你是amd更高版本的核显u,请一定测一下虚拟win的cpu-z跑分和物理win下跑分对比是否正常,不正常就是睿频调频问题!!!!郑重提醒amd用户要注意测一下!!!估计是核显直通功率分配原因吧。
目前我发现Pve即使你换成amd_pstate调频,可以最高4.06ghz全核睿频的,但是一开win虚拟机带核显直通,他就掉频率到基础频率2.1ghz,你只要把win虚拟机关了,又全部最高睿频4.06ghz了。这是个bug,pve下无法解决。

unraid如果你在这个插件(Tips and Tweaks 插件)中设置不超频。cpu-z撑死也只有跑1800-2000之间哈。安装不安装这个插件都不影响跑分的。
正文开始:
适用于所有bios没有csm选项的机器,unraid只能采用ovmf+q35进行虚拟机核显直通。支持amd核显cpu全系列。
第一部分:准备工作
1、unraid环境。这个随意版本(我用的最新版Version: 6.12.4,你的不要太旧)。请确认你的amd主机bios默认已经开了虚拟化svm, iommu等,没开需要自己手动打开一下。
unraid需要有个阵列才能开虚拟机,以及保存硬盘开机后启动这些设置,这个你自己弄好就是。最终确保VMS那打开没错误就行。安装unraid,配置存储池,格式化硬盘,设置硬盘开机使用,以及如何开ssh,使用什么unraid,如何授权等这些问题你解决就是,这里不再叙述。

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群),我不是群主哈

我5500u运行该编译出来的vbios文件,导出的vbios文件名为vbios_1002_164c.bin,你的类似vbios_1002_xxxx.bin这个名字,xxxx为具体显卡id哈。
准备工作结束,你得到了AMDGopDriver.rom和vbios_1002_xxxx.bin这两个文件,请把他们两个用winscp(或者命令)拷贝到比如 /mnt/disk1 这个目录(这个你随意)

开ssh在Settings->ManagementAccess 的Use SSH: yes中开启

第二部分:正式操作
1、虚拟机设置设置如下属性:
SETTINGS→VM Manager→ADVANCED VIEW
(中文版:设置→虚拟机管理器,然后点一下右边的高级视图)
PCIe ACS override: Muti function 或者Both 都可以
VFIO allow unsafe interrupts: Yes

2、准备好win安装光盘iso并上传比如下面目录 /mnt/user/isos

3、强制核显和hdmi声卡为vfio-pci.设备
前往TOOLS→System Devices
(中文版:工具→系统设备)
把核显和hdmi声卡设备勾上,然后绑定


4、请重启一下unraid(这个必做一下)
5、新建win10虚拟机

对于里面配置,注意以下几点:
ovmf+q35
安装iso优先级为1,硬盘为2
要加载2个rom



图形化操作完成以后,需要用winscp进入/etc/libvirt/qemu这个目录

对Windows 10.xml(根据你的情况决定是哪一个文件)进行修改根据 <rom file='/mnt/disk1/vbios_1002_164c.bin'/>类似
在第二个pci设备</source>后面加这样一行
<rom file='/mnt/disk1/AMDGopDriver.rom'/>

然后保存。如果你后面图形化修改过虚拟机配置,这一行<rom file='/mnt/disk1/AMDGopDriver.rom'/>会被删掉的,只有你重新加入一下。
20231005更新:鉴于多个rom在unraid平台使用太麻烦,我找到了多个rom 多个efi合并转换成1个rom的方法,具体请看下面这篇文章

就这样一行命令简单合并转化出来1个rom,unraid图形化设置界面显卡那就选择这个5500u.rom就是了。如果不能直通,你把-f -i 后面编号改为真实编号比如:-f 0x1002 -i 0x164c
这里我贴一下我的所有配置内容,大家可以参考
6、启动虚拟机并安装win10系统


7、安装完成系统以后,安装网卡驱动,核显驱动,并打reset bug补丁
如果你选了virtIO,光驱里面安装下驱动就是
核显的驱动可以windows更新打,也可以官网下载安装
贴一个核显直通后的效果图

打补丁(不完美解决amd gpu passthrough rest bug问题)
下载RadeonResetBugFixService这个软件0.17版本,下载地址:https://github.com/inga-lovinde/RadeonResetBugFix/releases
下载解压放在c盘根目录,cmd管理员模式下运行RadeonResetBugFixService.exe install
等服务安装完成后,就可以随便关闭win10虚拟机了,就可以正常开机win10虚拟机了。
建议除了启动虚拟机在unraid的web操作点开启,其他重启、关机的操作在虚拟机win10里面去操作(不要在unraid web上操作)。
8、完工
贴一个双烤画面

第三部分:后记
1、2个rom合并为1个rom加载给核显,这个留给网友实现。应该不难!!!!!这个已经实现更新在本文中了!!!
2、unraid反虚拟化检测玩游戏,这个也留给网友自我折腾,应该也不难!!!!!