PVE直通intel amd核显全系rom新制作方式(使用mmtool软件读取bios实现提取全系列核显gop和vbios并用efirom合并成rom)

前言

之前出过一期定制rom实现PVE外接显示器输出画面(适用于Intel与AMD处理器)链接:https://imacos.top/2023/10/26/rom/,本期的大部分内容基本与上期的原理基本一致,只是使用mmtool软件读取bios实现提取全系列核显gop和vbios并用efirom合并成rom,并补充了一部分直通的内容.

视频教程

点击进入YouTube观看》

 

点击进入bilibili观看》

 

开始前准备

1.本文基于你已安装了PVE环境
如果您还未安装Proxmox(PVE)环境,请按照此教程操作,Proxmox(PVE)系统环境搭建安装教程:https://imacos.top/2023/07/18/pve/

2.工具:AFUWIN、mmtool64、EfiRom(包含了IgdAssignmentDxe.efi及PlatformGOPPolicy.efi),使用到的工具在本文末下载

 

cpu型号 是否验证 下载地址 提取码 备注
i3 8130U 26-26.png 百度网盘 zw8x 理论适用所有8代
i3 10105 26-26.png 百度网盘 5fm4 理论适用所有10代
i5 8265U 26-26.png百度网盘 qka2 理论适用所有8代
i7 9700 26-26.png百度网盘 41fs 理论适用所有9代
J4125 26-26.png百度网盘 7t89
J6413 26-26.png百度网盘 9w4r
AMD Ryzen™ 3 5400U 26-26.png百度网盘 geyj 理论适用AMD5000系列
AMD Ryzen™ 7 5700U 26-26.png百度网盘 f28n 理论适用AMD5000系列
i3_6100U 26-26.png百度网盘 3tgs 理论适用所有6代( i7-6700HQ测试可用)
n100 26-26.png百度网盘 8hes 来源于“蛋炒饭 i”投稿
AMD 3k-7k核显直通全系列 26-26.png百度网盘 g8pc 通用-理论适用AMD3-7系列核显(李晓流)
Intel 11-14代核显直通 26-26.png百度网盘 fnem 通用-理论适用Intel 11-14代核显(李晓流)
AMD 5500U 26-26.png百度网盘 6uxt 来源于“Wayne”投稿

文件解压密码:imacos.top

所有工具在本文下载地址中,如果你使用的cpu型号在以上列表,可以直接使用已经定制好的rom文件,如果你有定制好的rom文件,也欢迎您联系站长,发送到邮箱271638927@qq.com中,站长将分享在本文中,提供给更多的人使用。上述的是否验证栏里有否的,如果你使用了,也欢迎在评论区留言是否使用成功,后续还会持续更新定制更多rom.

BIOS设置建议

启用 VT-d
禁用 CSM # i44fx机型建议开启此项,并且设置csm里的其他项目为UEFI
ACS Enable # 如果存在,设置为已启用(自动不起作用)
启用 4G解码 4G Decoding
禁用 Resizable BAR/Smart Access Memory智能访问内存 #(如果启用,AMD GPUS(Vega 及更高版本)会遇到“代码 43 错误”)
启用 IOMMU # 如果存在,主要用于 AMD 主板
将主显示器设置为 CPU/iGPU # 如果您的 CPU 有 iGPU
预分配内存为 64M

获取 BIOS合并rom

注:如果您无法通过以下方式提取您物理机BIOS,物理bios可以到华擎官网下载与自己同代处理器的都可以通用 https://www.asrockind.com/zh-cn/single-board-computer

1.获取物理机BIOS(AMD的处理器也可以通过此方式提取)

如果你的电脑设备型号官网提供bios下载,请直接下载使用(无需提取设备的bios)

如果你的设备官网不提供bios下载(或者你找不到同设备的bios),那就使用AFUWIN5.12提取设备bios

建议使用AFUWIN5.12(win10完美运行)版本,下载后并在win10系统(已经测试在winpe也行)上提取bios,运行软件点下存储就可以。因为软件是win10或winpe环境才可以运行,所以你需要在设备上安装个win10或者用winpe系统环境下运行提取。不管是安装win10或者用winpe系统都比较简单,我这里就不介绍安装方式了。winpe进此文中有下载https://imacos.top/2023/10/26/rom/下载文件中包含了winpe的dmg文件,可以使用balenaEtcher写入到你的U盘中使用。(AFUWIN软件运行经过我测试,他不支持根目录文件夹名称有中文字符的情况运行,所以我们将文件夹重新命名为英文字符)

在win10上运行这个软件点“储存”就能获取物理机的bios文件

2.从bios.rom中提取核显相关的GOP与vbios模块

使用mmtool64工具打开bios.rom文件,venderid和deviceid都为空(N/A)的个就是核显gop,其他1002开头的都是amd的核显vbios(intel平台一般为8086)

按照上图导出gop与vbios核显
(1).打开bios.rom
(2).切换到Option ROM
(3).导出Option ROM
(4).选择要导出的gop或vbios
(5).浏览处选择导出的位置,后续导出只需要修改最后的文件名
(6).点击“应用”,在所选位置处就多出来一个导出的文件

3.合并生成rom

Win+R运行cmd,cd 进EfiRom文件夹

# amd处理器
.\EfiRom.exe -b .\15e7 .\164c .\1638 -e .\gop -f 0x1002 -i 0xffff -o amd.rom
ffff可以可以替换成你的核显设备id,如164c,amd可自定义
# Intel处理器
.\EfiRom.exe -e .\gop .\IgdAssignmentDxe.efi .\PlatformGOPPolicy.efi -f 0x8086 -i 0xffff -o Intel.rom
ffff可以可以替换成你的核显设备id,如3185,Intel可自定义

注意命令的文件名称需要改成你自己保存的gop与vbios文件名,运行结束后,EfiRom文件中就获取到xx.rom的文件.

将获取到的显卡rom上传到PVE的指定目录中(PVE开机状态),上传路径:/usr/share/kvm
win下推荐上传工具:WinSCP下载地址https://winscp.net/eng/index.php
Mac下我使用的上传工具是Transmit.app,本站下载地址:https://imacos.top/2024/01/15/transmit-5-for-mac-v5-9-2/

准备工作-PVE开启iommu直通

1.进入PVE WEB端的管理页面并登陆,打开PVE节点的shell,输入命令:
要忽略 dmesg 输出中的一些烦人的错误, 请运行以下命令(# 这一步对于直通来说不是必需的,但有助于保持干净。)

nano /etc/modprobe.d/kvm.conf
options kvm ignore_msrs=Y report_ignored_msrs=0
# 按 Ctrl + X,然后按 Y + Enter 保存更改。

2.启动内核IOMMU支持
IOMMU(Input-Output Memory Management Unit)是一种硬件功能,用于管理设备对系统内存的访问。启用 IOMMU 后,可以在虚拟机中直接访问物理设备,并允许虚拟机独立于主机操作系统运行

nano /etc/default/grub # 将以下行粘贴到其中,并在旧标签前面添加一个注释标签#,以下为常用的一些写法。
# 对于 Intel CPU
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt initcall_blacklist=sysfb_init pcie_acs_override=downstream,multifunction pci=nommconf"
# 对于 AMD CPU
GRUB_CMDLINE_LINUX_DEFAULT="quiet iommu=pt initcall_blacklist=sysfb_init pcie_acs_override=downstream,multifunction pci=nommconf"
或者
GRUB_CMDLINE_LINUX_DEFAULT="quiet initcall_blacklist=sysfb_init"
注意,对于 AMD CPUinitcall_blacklist=sysfb_init 屏蔽掉pve7.2以上的一个bug,方便启动时候就屏蔽核显等设备驱动。pve8grub里面不需要加入amd_iommu=on pcie_acs_override=downstream,multifunction这些参数,一般默认就开启了,如果后面直通不成功,在加上这些参数。
# 其他的一些写法(如果是AMD处理器,将intel改为amd)
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_gvt=1 video=efifb:off" # 这是GVT模式,也就是共享模式,少部分cpu支持,但体验很好
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt video=efifb:off" # 这是独占模式,都支持,但显示器没有pve的控制台输出,也只能直通个一个虚拟机
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction"
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on initcall_blacklist=sysfb_init pcie_acs_override=downstream,multifunction"
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on" #本期教程我使用的就是这个
# 参数释义
1.iommu=pt:启用 Intel VT-d  AMD-Vi  IOMMU。这是一种硬件功能,用于管理设备对系统内存的访问。在虚拟化环境中,启用 IOMMU 后,可以将物理设备直通到虚拟机中,以便虚拟机可以直接访问硬件设备。“iommu=pt”不是必须的,PT模式只在必要的时候开启设备的IOMMU转换,可以提高未直通设备PCIe的性能,建议添加。
2.initcall_blacklist=sysfb_init:禁用 sysfb_init 内核初始化函数。这个函数通常用于在内核启动过程中初始化系统帧缓冲。在使用 GPU 直通的情况下,这个函数可能会干扰直通操作,因此需要禁用它。
3.i915.enable_gvt=1:启用 Intel GVT-g 虚拟 GPU 技术。这个选项用于创建一个虚拟的 Intel GPU 设备,以便多个虚拟机可以共享物理 GPU 设备。启用 GVT-g 需要在支持虚拟 GPU  Intel CPU 和主板上运行,并且需要正确配置内核和虚拟机。想开启GVT-g的就添加这条,显卡直通的就不要添加了。
4.initcall_blacklist=sysfb_init:屏蔽掉pve7.2以上的一个bug,方便启动时候就屏蔽核显等设备驱动;
5.pcie_acs_override=downstream,multifunction:便于iommu每个设备单独分组,以免直通导致物理机卡死等问题
6.pci=nommconf:意思是禁用pci配置空间的内存映射,所有的 PCI 设备都有一个描述该设备的区域(您可以看到lspci -vv),访问该区域的最初方法是通过 I/O 端口,而 PCIe 允许将此空间映射到内存以便更简单地访问。

3.使用以下命令更新 grub

update-grub
reboot
#重启PVE,也可以把后面的操作执行了在重启

4.主机启动并运行后,运行以下命令,验证是否开启iommu

dmesg | grep -e DMAR -e IOMMU -e AMD-Vi
# 如果没有输出,则说明有问题。你应该看到这样的东西;“DMAR: IOMMU enabled”
# 另外一种验证方式
dmesg | grep iommu
# 出现如下例子。则代表成功
[ 1.341100] pci 0000:00:00.0: Adding to iommu group 0
[ 1.341116] pci 0000:00:01.0: Adding to iommu group 1
[ 1.341126] pci 0000:00:02.0: Adding to iommu group 2
[ 1.341137] pci 0000:00:14.0: Adding to iommu group 3
[ 1.341146] pci 0000:00:17.0: Adding to iommu group 4
# 此时输入命令
find /sys/kernel/iommu_groups/ -type l
# 出现很多直通组,就代表成功了。如果没有任何东西,就是没有开启

5.对于某些平台,可能需要允许不安全中断。运行以下命令

nano /etc/modprobe.d/iommu_unsafe_interrupts.conf # 添加以下行;请注意,此选项可能会使您的系统不稳定。
options vfio_iommu_type1 allow_unsafe_interrupts=1

6.启用必要的内核模块,运行以下命令

nano /etc/modules # 添加以下行;
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

7.将驱动程序模块列入黑名单,以使虚拟机能够完全访问显卡等。运行以下命令

执行命令:nano /etc/modprobe.d/pve-blacklist.conf
# 在里面加入
blacklist nvidiafb
blacklist nouveau
blacklist nvidia
blacklist snd_hda_codec_hdmi
blacklist snd_hda_intel
blacklist snd_hda_codec
blacklist snd_hda_core
blacklist radeon
blacklist amdgpu
blacklist i915
options vfio_iommu_type1 allow_unsafe_interrupts=1
# 如果有重复项,记得删除,解释:屏蔽三大显卡驱动,屏蔽hdmi声音驱动;options,options vfio_iommu_type1 allow_unsafe_interrupts=1允许不安全的设备中断

8.查看直通设备 

#执行 lspci -nn 可命令查看需要直通设备,核显一般带VGA,连同核显音频ID也记录,用于确保后续直通核显ID正确。

9.更新initramfs模块并重新启动主机以应用更改

update-initramfs -u -k all
reboot
#重启PVE

虚拟机配置调整-非常重要

1.关于虚拟机创建配置

直通Intel核显
所选的虚拟机类型必须为i440fx 7.2版本或者最新以上机型(不能选q35!)
系统类型可选择为推荐使用Linux,Windows或其他类型可能会导致安装核显驱动后,出现43错误,驱动不成功。
固件类型选择ovmf UEFI
TPM选择开启,安全启动随意
CPU类型选HOST,否则可能会出现装不上驱动
光驱选择ide,硬盘选择sata硬盘或者也可以scsi(选择ide和sata是为了核显直通打游戏需要,你也可以坚持选其他),其他保持默认设置
创建后进入Options,打开QEMUGuestAgent和UseLocalTimeforUTC以获得更好体验

直通amd核显
基本与Intel核显一致,只不过所选的虚拟机类型必须为q35,这是特别需要注意的一点

3.直通虚拟机环境设置

虚拟机创建后先不要启动,为创建的虚拟机添加核显pcie,将显示设置为无 none。并同时添加负责声音的pcie设备。在PVE的SHell节点下执行命令

nano /etc/pve/qemu-server/100.conf

100是你创建直通核显虚拟机的ID

进入后在配置文件中增加一行,这行用于设置核显额外参数,包括把设备地址设置为02.0,设置x-igd-gms大小并启用x-igd-opregion(AMD核显不需要此行配置文件,可添加此行配置文件args: -cpu host,hypervisor=off )。

#对于Intel
args: -set device.hostpci0.addr=02.0 -set device.hostpci0.x-igd-gms=1 -set device.hostpci0.x-igd-opregion=on
#对于AMD例子
args: -cpu host,hypervisor=off 

添加或修改hostpci0开头的这一行,这行用于添加核显,开启 legacy-igd 模式,加载 romfile。

#对于Intel例子
hostpci0: 0000:00:02,legacy-igd=1,romfile=xx.rom
#对于AMD例子(AMD的加了直通了声卡)
hostpci0: 0000:06:00.0,pcie=1,romfile=xx.rom,x-vga=1
hostpci1: 0000:06:00.1,rombar=0

然后,一定记得把虚拟机的 显卡改为 None,避免虚拟显卡和直通的核显争抢总线地址。

这里上一下我完整的虚拟机配置,可以参考一下

#对于Intel例子
agent: 1
args: -set device.hostpci0.addr=02.0 -set device.hostpci0.x-igd-gms=0x2 -set device.hostpci0.x-igd-opregion=on
bios: ovmf
boot: order=virtio0;ide2;net0
cores: 4
cpu: host
efidisk0: local-lvm:vm-100-disk-0,efitype=4m,size=4M
hostpci0: 0000:00:02.0,legacy-igd=1,romfile=i3_10105_igd_efi.rom
hostpci1: 0000:00:1f.3
ide2: none,media=cdrom
memory: 4096
meta: creation-qemu=8.0.2,ctime=1698238750
name: i44fx
net0: virtio=BA:A1:1D:08:A9:5B,bridge=vmbr0,firewall=1
numa: 0
ostype: l26
scsihw: virtio-scsi-single
smbios1: uuid=b3176867-4e41-4637-b3c1-a68810d70644
sockets: 1
tpmstate0: local-lvm:vm-100-disk-1,size=4M,version=v2.0
vga: none
virtio0: local-lvm:vm-100-disk-2,cache=writeback,discard=on,iothread=1,size=32G
vmgenid: fb5d54dc-02a5-44c2-8a04-2649d69249b2
#对于AMD例子(AMD的加了直通了声卡)
agent: 1
args: -set device.hostpci0.bus=pci.0 -set device.hostpci1.bus=pci.0 -set device.hostpci0.addr=0x01.0 -set device.hostpci1.addr=0x02.0 -cpu host,hypervisor=off -device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" -smbios type=2 -device usb-tablet -global nec-usb-xhci.msi=off -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off -cpu Cascadelake-Server,vendor=GenuineIntel,+invtsc,-pcid,-hle,-rtm,-avx512f,-avx512dq,-avx512cd,-avx512bw,-avx512vl,-avx512vnni,kvm=on,vmware-cpuid-freq=on
bios: ovmf
boot: order=usb1;sata0;virtio1
cores: 4
cpu: Haswell
efidisk0: local-lvm:vm-100-disk-0,efitype=4m,size=4M
hostpci0: 0000:06:00.0,pcie=1,romfile=5700U.rom,x-vga=1
hostpci1: 0000:06:00.1,rombar=0
machine: q35
memory: 4096
meta: creation-qemu=7.2.0,ctime=1685719709
name: macOS
net0: virtio=DA:D8:83:DC:DF:55,bridge=vmbr0
numa: 0
ostype: other
sata0: local-lvm:vm-100-disk-1,size=1436M
scsihw: virtio-scsi-pci
smbios1: uuid=6bea0641-7c93-44b4-af72-409c6649ff38
sockets: 1
tags: imacos.top;macos;sonoma14.4.1_23e224
usb0: host=1-3,usb3=1
usb1: host=2-2,usb3=1
vga: none
virtio1: local-lvm:vm-100-disk-2,discard=on,iothread=1,size=50G
vmgenid: a8e70cbd-61a1-4ec0-9eed-aff32fabddeb

启动虚拟机后,正常就可以看到PVE BIOS的开机画面,此时你可直通USB键盘,并按ESC进入UEFI设置,所有直通的操作就完成了。

注:只有Intel核显才需要添加args: -set device.hostpci0.addr=02.0 -set device.hostpci0.x-igd-gms=1 -set device.hostpci0.x-igd-opregion=on这一行参数,amd核显不需要,amd的将这行参数修改为:-cpu host,hypervisor=off (可以解决启动报错关于cpu方面的问题),如过你使用amd安装mac,那么还需要添加-set device.hostpci0.bus=pci.0 -set device.hostpci1.bus=pci.0 -set device.hostpci0.addr=0x01.0 -set device.hostpci1.addr=0x02.0 ,用于解决黑苹果卡900的参数.

附:PVE使用常见问题及使用合集链接

PVE OC Mac系统:http://imacos.top/category/pve/pvemac/
Proxmox(PVE)系统环境搭建安装教程http://imacos.top/2023/07/18/pve/
定制OVMF固件实现PVE环境UEFI模式直通Intel核显并显示BIOS画面可以外接显示http://imacos.top/2023/10/09/152/
定制rom实现PVE直通核显并显示BIOS画面可以外接显示器输出画面(适用于Intel与AMD处理器)https://imacos.top/2023/10/26/rom/
PVE(Proxmox VE) 启动各种报错问题合集篇(持续更新)http://imacos.top/2023/09/17/89/
PVE(Proxmox VE) 使用常见问题及笔记合集篇(持续更新)http://imacos.top/2023/09/17/2-2/
PVE(Proxmox)安装macOS苹果系统遇到的一些错误经验分享(持续更新)http://imacos.top/2023/08/27/macos/
PVE(Proxmox VE)安装Windows 11虚拟机直通独立显卡http://imacos.top/2023/09/07/pve-windows-11/
PVE下macOS苹果系统PCI直通AMD 580显卡硬件直通实例提取显卡rom教程http://imacos.top/2023/08/01/580/
PVE下如何启用 PCI直通显卡GPU/iGPU/USB/声卡AUDIO等硬件直通教程http://imacos.top/2023/07/31/pci/
PVE环境安装macOS苹果系统http://imacos.top/2023/07/29/pve-macos/
win系统安装请看我之前发布的教程http://imacos.top/2023/09/07/pve-windows-11/
Windows 物理机系统使用虚拟磁盘备份方式迁移到Proxmox VE虚拟机https://imacos.top/2024/03/22/mac-win/
VE下macOS苹果系统PCI直通UHD630核显硬件实例https://imacos.top/2024/04/18/uhd630/
PVE(Proxmox VE)一键安装macOS苹果系统及mac系统硬盘扩容OpenCore引导安装教程https://imacos.top/2024/04/18/pvemac/
PVE环境Mac系统UEFI模式直通核显并显示BIOS画面可以外接显示器输出画面(i44fx机型)https://imacos.top/2024/04/22/i44fx/
PVE直通核显/独显HDMI外接显示器输出音频声音、3.5耳机扬声器接口输出https://imacos.top/2024/04/26/hdmi/
Proxmox(PVE)macOS虚拟磁盘扩容,黑苹果Hackintosh系统https://imacos.top/2024/05/11/7894-2/
PVE直通物理磁盘到 Proxmox VM 虚拟机https://imacos.top/2024/05/11/4578-3/
新方式PVE一键安装Mac三引导OC Clover winPE使用教程https://imacos.top/2024/05/20/0148/
PVE一键安装Windows系统模板教程https://imacos.top/2024/05/29/win/

文件解压密码:imacos.top

百度网盘立即下载提取码: 9wur复制
天翼网盘立即下载提取码: y1pb复制
夸克网盘立即下载提取码: 4dxK复制
迅雷云盘立即下载提取码: ss32复制
客服QQ271638927
原文链接:https://imacos.top/2024/07/07/rom-2/,转载请注明出处。
0
1. 本站所有资源解压密码均为imacos.top
2. 本站资源收集于网络,仅做学习和交流使用,请于下载后24小时内删除。如果你喜欢我们推荐的软件,请购买正版支持作者。
3. 如有无法下载的链接,联系:邮箱271638927@qq.com,或直接联系QQ271638927进行反馈,我们将及时进行处理。
4. 本站发布的内容若侵犯到您的权益,请联系站长删除,联系方式:邮箱271638927@qq.com,我们将第一时间配合处理!

评论0

请先
终身会员限时上线 ☞ 限时永久会员折扣活动开始啦 > 查看优惠
没有账号?注册  忘记密码?

社交账号快速登录

微信扫一扫关注
如已关注,请回复“登录”二字获取验证码