PVE下macOS苹果系统PCI直通AMD 580显卡硬件直通实例提取显卡rom教程

视频教程

点击进入YouTube观看》

 

点击进入bilibili观看》

前言

本文所用的工具,均已经打包好,在本文中直接下载即可,工具包括

  1. 教程中提取的580rom
  2. 鲁大师安装包.zip
  3. Aida64.exe
  4. GPU-Z.2.54.0.exe
  5. Transmit_5.9.2_imacos.top.dmg
  6. WINPE.dmg
  7. WinSCP-6.1.1-Setup.exe
  8. balenaEtcher三平台版本v1.7.9_v1.18.11

本文是基于你已经在PVE下安装了macOS苹果系统的基础上操作的,如果您还未在PVE下安装macOS苹果系统,请按下面的教程操作

对于PVE下直通显卡来说,每个人的硬件配置不一样,直通操作的方式也会有所差异

  • 设备只有核显:大部分情况会出现核显直通后,即使驱动了显卡,显示信号的HDMI、DP、DVI等接口无法正常输出画面,但是也有部分电脑可以通过加载显卡的rom来实现显示信号的输出,提取rom并加载的一些方式,后续在更新对应的教程
  • 设备只有独立显卡(或双独立显卡):直通后需要通过加载显卡的rom后,可实现显示信号输出,显卡信号输出正常工作.独立显卡的rom可以通过https://www.techpowerup.com/vgabios下载自己对应的型号,下载的时候需要对应显卡型号、厂商信息、显卡BIOS版本日期等信息,至于这些信息如何查看,下面的内容会介绍
  • 设备核显与独立显卡同时具备:直通独立显卡一般不用加载显卡的rom,但这也不是绝对的,直通核显同样需要加载显卡的rom,不然也会出现接口无法正常输出画面的情况
  • 设备有两张以上独立显卡或同时具备两张显卡:通常PCIE通道的第一张独立显卡需要加载显卡的rom,才能直通。第二张之后的独立显卡因为启动PVE系统的时候不会占用到,所以第二张之后的独立显卡不用添加rom也可以实现直通,添加了rom后反而会直通不成功。

本文介绍的情况是电脑设备上只有独立显卡的操作情况,电脑详细的配置如下

电脑型号 华硕 All Series 台式电脑
处理器 英特尔 Xeon(至强) E3-1230 v3 @ 3.30GHz 四核
主板 华硕 B85M-F(Lynx Point)
显卡 AMD Radeon RX 580 ( 华硕 )
内存 16 GB ( 金士顿 DDR3 1866MHz 8GB x 2 )
主硬盘 三星 SSD 850 EVO 250GB (250 GB / 固态硬盘)
显示器 三星 SAM0B27 S27D360 ( 27 英寸 )
声卡 DisplayLink USB Audio Adapter
网卡 博通 Broadcom 802.11ac Network Adapter / 苹果

关于哪些显卡直通后能在macOS系统下正常工作的问题,一般在黑苹果能驱动的一些显卡,都是可以正常使用的,我这里列一些本站前期整理的一些显卡列表

如果你想得到更好的硬件支持,也可以参考苹果官方外置图形处理器推荐的显卡型号https://support.apple.com/zh-cn/HT208544

准备工作

正如上述介绍的情况,设备只有独立显卡需要准备显卡的rom,这里介绍两种方式来获取显卡的rom,(需要用到的工具本文中也会提供下载)

方式一

  1. 在Windows系统下:安装鲁大师软件,在硬件参数的总览下,点击右下角生成报告,保存这一份报告并打开,找到显卡信息部分,就可以看到显卡型号、厂商信息、显卡BIOS版本等信息,如果鲁大师有部分看不到的信息,就用Aida64.exe工具查看(如果没有win环境,那就建议使用下面2的方式是否能获取到)
  2. 在winPE环境下:您需要使用U盘制作winPE的启动盘,在winPE下使用Aida64.exe工具,可以通过显卡的BIOS版本日期、显存大小来查看这些信息.下载对应的显卡rom
  3. 获得显卡的信息,进入下载https://www.techpowerup.com/vgabios

方式二

使用GPU-Z工具,工具下载地址https://www.techpowerup.com/gpuz/(本文中也提供了该软件下载)

打开GPU-Z后,界面上显示的“bios 版本”(英文版的叫“bios vision”),这一行最右边有一个小图标,点击一下,会出现菜单选项,选“保存至文件”就可以了。如果保存下来的是“*.bin”格式的文件,也是可以直接用的,如果介意的话,也可以直接载入到bios编辑刷新软件中,就可以改为“*.rom”格式了(具体bin改为rom的方式我这里不赘述了,反正都能用)。目前新版本的GPU-Z导出都是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/

操作步骤

1.使设备正常工作的重要 BIOS 设置

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

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

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

3.启动内核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"
# 其他的一些写法(如果是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的控制台输出,也只能直通个一个虚拟机
# 参数释义
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 允许将此空间映射到内存以便更简单地访问。

4.使用以下命令更新 grub

update-grub

5.重新启动主机以应用更改

reboot

6.主机启动并运行后,运行以下命令,验证是否开启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
# 出现很多直通组,就代表成功了。如果没有任何东西,就是没有开启

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

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

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

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

9.更改任何相关模块后,您需要刷新 initramfs。 运行以下命令

update-initramfs -u -k all

10.现在检查是否已启用重新映射, 运行以下命令

dmesg | grep remapping # 应该输出类似这样的内容;
“AMD-Vi: Interrupt remapping enabled”
“DMAR-IR: Enabled IRQ remapping in x2apic mode”
# 'x2apic' 在旧 CPU 上可能有所不同,但应该仍然可以工作。

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

nano /etc/modprobe.d/pve-blacklist.conf # 添加以下行;
blacklist nouveau
blacklist nvidia
blacklist nvidiafb
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

12.找到您的 PCI 设备对应的 ID, 运行以下命令

lspci -nn | grep -i “device” # 您也可以执行 lspci -nn 命令,这将列出所有设备及ID
# “device”= amd、ati、nvidia、vga、usb、audio、wireless 等
# 然后您应该会看到类似于下面的列表;
# 一次只引用一个设备,并记下您需要的 ID。
“0x:00.x VGA compatible controller … [1234:5678]”
“0x.00.x Audio Device … [1234:5678]” # 无需记下 GPU 音频 ID。
“0x.00.x USB controller … [1234:5678]”

13.将主机的 PCI 设备 ID 绑定到vifo模块, 运行以下命令

nano /etc/modprobe.d/vfio-pci.conf
# 请注意,在此处添加disable_vga 可能会阻止来宾在SeaBIOS 模式下启动,也可以将disable_vga=1参数去掉
# 像这样在此文件中添加设备 ID,两组以上用,隔开,只有一个就不用了;
options vfio-pci ids=1234:5678,1234:5678 disable_vga=1
# 再次强调,不要添加 GPU 音频 ID。

14.先在虚拟机硬件中添加直通显卡,然后再虚拟机的配置文件中添加显卡rom的加载

nano /etc/pve/qemu-server/"VMID".conf
# VMID修改为您的设备ID,VMID = 例如 100、101、102 等
# 可能需要避免在某些设备上使用“pcie=1”。
hostpci0: “0x:00”,pcie=1,x-vga=1
#hostpci1: “0x:00”,pcie=1
#hostpci2; “0x:00”,pcie=1
# 在直通的显卡后加入如下参数
,romfile=amd580.rom

15.再次重新启动主机以应用更改

reboot

16.能够为连接的外部显示器提供适当的显示加速(# 这可以在虚拟机的硬件部分中完成,而不是使用此方法。硬件 -> 显示 -> 无。)

nano /etc/pve/qemu-server/”VMID”.conf
# VMID = 例如 100、101、102 等
# 请注意,将“显示”设置为“无”(vga:无)会导致控制台/noVNC 被禁用 - “任务错误:无法运行 vncproxy”。
# 如有必要,恢复到 vmware。
vga: none
# vga: vmware # 如果使用此选项,请删除“vga: none”。

17.Mac系统下有关兼容 GPU 的一些信息

EFI/OC/config.plist # 挂载 EFI 驱动器并在 OpenCore Configurator.app中打开文件。
# boot-args 位于 NVRAM -> 7C436110-AB2A-4BBB-A880-FE41995C9F82
# AMD RX 5000 和 6000 系列需要在 boot-arg 添加以下参数才能获得正确的输出(同时也建议AMD的显卡都可以添加)。
agdpmod=pikera
# 如果您有 Nvidia 的任何 GTX 600 或 700 系列,请仅使用 OpenCore Legacy Patcher,因为该系列是唯一与 macOS 兼容的系列。
# AMD RX 400/500 和 RX 5000/6000 系列不需要任何补丁,因为它们是macOS支持的原生卡。

18.注意:

# 勾选直通的所有功能,这是您希望 GPU 充分工作的设置。对于某些功能,只能勾选“所有功能”和“ROM-Bar”。
这些复选框因卡而异,可能需要测试适合您的选项。
有些卡还需要转储显卡的.rom文件才能工作。要实现这一点,您必须使用现有的一些指南,从您的特定卡中自行转储显卡的rom文件。我们将来可能会为此添加一个指南。
独立显卡的rom下载地址https://www.techpowerup.com/vgabios
# 我们最近发现,如果未勾选 PCI-Express,则 HDMI-音频之类的功能可能无法工作。但请注意,您的安装可能无法在勾选后启动,然后取消勾选即可。
# 关于Mac系统下的提醒!如果您有 Nvidia 的任何 GTX 600 或 700 系列,请仅使用 OpenCore Legacy Patcher,因为该系列是唯一与 macOS 兼容的系列。
#如果您使用 OCLP 并收到这些错误,这可以解决问题
EFI/OC/config.plist # boot-args 位于 NVRAM 下 -> 7C436110-AB2A-4BBB-A880-FE41995C9F82
amfi_get_out_of_my_way=0x1 # AMFI 已启用
ngfxcompat=1 # 强制缺少 compat 属性
ngfxgl=1 # 强制 OpenGL 属性缺失
nvda_drv_vrl=1 # nvda_drv(_vrl) 变量缺失
# 要解决 SIP 错误,请将 csr-active-config 更改为030A0000
# 重新启动后,从启动选择器中选择重置 NVRAM
百度网盘工具包立即下载提取码: xtp7复制
天翼云盘工具包立即下载提取码: o1g7复制
夸克网盘工具包立即下载提取码: JZfw复制
迅雷云盘工具包立即下载提取码: aeue复制
百度网盘: balenaEtcher三平台版本v1.7.9_v1.18.11立即下载提取码: gv43复制
天翼云盘:balenaEtcher三平台版本v1.7.9_v1.18.11立即下载提取码: 6fug复制
夸克网盘:balenaEtcher三平台版本v1.7.9_v1.18.11立即下载提取码: ikup复制
迅雷云盘:balenaEtcher三平台版本v1.7.9_v1.18.11立即下载提取码: b5fh复制
客服QQ271638927
原文链接:https://imacos.top/2023/08/01/580/,转载请注明出处。
0
1. 本站所有资源解压密码均为imacos.top
2. 本站资源收集于网络,仅做学习和交流使用,请于下载后24小时内删除。如果你喜欢我们推荐的软件,请购买正版支持作者。
3. 如有无法下载的链接,联系:邮箱271638927@qq.com,或直接联系QQ271638927进行反馈,我们将及时进行处理。
4. 本站发布的内容若侵犯到您的权益,请联系站长删除,联系方式:邮箱271638927@qq.com,我们将第一时间配合处理!

评论4

请先
  1. 按照这个操作,vega56没有输出信号,没有进引导界面,直接黑屏。不知道是哪里出错了
    chenpei58 2024-07-14 1
  2. 感谢,验证开通通过了。但是在mac启动时,会在apfs mount的时候自动关机。这是为什么? 系统debian 12+pve guest: macos 13.6
    u4122848652366061 2024-04-08 0
  3. [ 6.370825] AMD-Vi: AMD IOMMUv2 functionality not available on this system - This is not a bug.,这个是什么意思啊,这个580直通是不是就是不行呀?
    u2844708596937830 2024-03-30 0
    • AMD-Vi只针对AMD的cpu,是intel cpu的话就没有
      u4122848652366061 2024-04-08 0
终身会员限时上线 ☞ 限时永久会员折扣活动开始啦 > 查看优惠
没有账号?注册  忘记密码?

社交账号快速登录

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