PVE环境Mac系统UEFI模式直通核显并显示BIOS画面可以外接显示器输出画面(i44fx机型)

前言及准备

之前我们讲过q35核显的直通(q35核显直通教程https://imacos.top/2024/04/18/uhd630/),这种方式方式缺点就是无法HDMI输出画面信号,本文主要来分享PVE环境Mac系统以i44fx机型直通核显,并显示BIOS画面的方式。

非常重要:

1.如果您之前定制过OVMF固件实现的直通,需要将定制的文件复原,否则可能会导致本次定制rom后直通不成功
2.如果你之前修改过PVE下的很多模块,也有可能会导致定制rom后直通不成功,这种情况建议重新安装PVE环境

3.本文的内容理论上适用于Intel 4-10代核显
PVE版本为:Proxmox Virtual Environment 8.0.3
内核版本:Linux6.2.16-6-pve
BIOS默认已经开了虚拟化vt-d, iommu相关直通设置,没开的自己进BIOS设置
本文内容的介绍是基于你已经1.安装了PVE、2.开启了iommu直通、3.定制了核显rom、4.安装了本站macOS系统一键恢复包的基础上介绍(下面附上教程链接)
如果你还没有安装PVE及macOS系统,可以参考我前几期的教程附上链接:
Proxmox(PVE)系统环境搭建安装教程:https://imacos.top/2023/07/18/pve/
PVE下如何启用 PCI直通显卡GPU/iGPU/USB/声卡AUDIO等硬件直通教程:https://imacos.top/2023/07/31/pci/
定制rom实现PVE环境UEFI模式直通核显:https://imacos.top/2023/10/26/rom/
PVE一键安装macOS苹果系统:https://imacos.top/2024/04/18/pvemac/

4.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设置(主要是就csm还有Graphics两处,每个人的或许不一样,BIOS设置不对,也是无法直通成功的)

工具

winscp/Transmit

视频教程

点击进入YouTube观看》

 

点击进入bilibili观看》

上传获取到的rom

将获取到的显卡rom上传到PVE的指定目录中(PVE开机状态),上传路径:/usr/share/kvm

核显rom哪里来?看之前的教程:定制rom实现PVE环境UEFI模式直通核显:https://imacos.top/2023/10/26/rom/

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节点的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"
# 其他的一些写法(如果是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

更新后可以重启电脑

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 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

8.通过设备ID绑定vfio-pci 

#执行 lspci -nn 命令,您应该看到如下内容,找到有vga标识的一行,记录核显VendorID 和 DeviceID,这里的两个ID后续定制rom也会用到
0x:00.x VGA compatible controller  [1234:5678]”
0x.00.x Audio Device  [1234:5678]” # 无需记下 GPU 音频 ID。
0x.00.x USB controller  [1234:5678]”
nano /etc/modprobe.d/vifo.conf # 添加以下行; options vfio-pci ids=8086:5917

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

update-initramfs -u -k all
reboot

10.注意:

我这里分享一下我在直通的时候遇到的一个问题,大家一定要注意,我们在没有做PVE直通的操作前,PVE画面的输出是会显示像这张图片上的样式

有PVE登录的IP地址,一旦你做了PVE直通的操作后,重启PVE,如果直通操作成功的话,是一定不会看到PVE登录的IP地址,我这里,操作直通成功重启后的画面是如下图这样的


也许你的直通操作成功后,画面样式与我的会有一定的区别,但是请记住,如果你操作直通后通过上述介绍的,在PVE的Shell节点下验证成功了,但是PVE开机画面还是会显示登录的IP地址,这种情况一定是直通的启动内核IOMMU支持代码不对,换一种写法继续尝试,直到PVE重启看不到登录的IP地址才算成功。

虚拟机配置或创建注意事项

1.【重要】准备事项提醒

正如前言说的一样,本文是基于1.安装了PVE、2.开启了iommu直通、3.定制了核显rom、4.安装了本站macOS系统一键恢复包的基础上介绍,
如果你还没有安装PVE及macOS系统等,可以参考前言部分的教程链接去操作。

2.关于虚拟机创建配置

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

对于使用本站一键安装mac系统的
直接把所选的虚拟机类型修改为i440fx 7.2版本或者最新以上机型,其他保持默认设置

3.直通虚拟机环境设置

虚拟机创建或修改后先不要启动,为创建的虚拟机添加核显pcie,将显示设置为无 none。在PVE的SHell节点下执行命令

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

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

进入后在配置文件中增加一行,这行用于设置核显额外参数,包括把设备地址设置为02.0,设置x-igd-gms大小并启用x-igd-opregion。

  • 如果你是新建虚拟机,想安装win,args使用如下参数
args: -set device.hostpci0.addr=02.0 -set device.hostpci0.x-igd-gms=1 -set device.hostpci0.x-igd-opregion=on
  • 如果安装Mac苹果系统,或使用的是本站macOS系统一键恢复包,args使用如下参数
args: -set device.hostpci0.addr=02.0 -set device.hostpci0.x-igd-gms=0x2 -set device.hostpci0.x-igd-opregion=on -device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" -smbios type=2 -global nec-usb-xhci.msi=off -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off -cpu host,vendor=GenuineIntel,+invtsc,+hypervisor,kvm=on,vmware-cpuid-freq=on

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

hostpci0: 0000:00:02,legacy-igd=1,romfile=xxxx.rom

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

这里上一下我安装Mac系统完整的虚拟机配置,可以参考一下

agent: 1
args: -set device.hostpci0.addr=02.0 -set device.hostpci0.x-igd-gms=0x2 -set device.hostpci0.x-igd-opregion=on -device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" -smbios type=2 -global nec-usb-xhci.msi=off -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off -cpu host,vendor=GenuineIntel,+invtsc,+hypervisor,kvm=on,vmware-cpuid-freq=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

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

关于macOS苹果系统核显驱动问题

PVE的i44fx机型,是比较接近物理机运行的模式的,如果装PVE的设备之前就装过黑苹果,可以直接使用装黑苹果的EFI引导。其实不管是独立显卡还是核显,都可以使用在黑苹果系统下驱动的方式,去驱动显卡。

这里我针对英特尔核显做一下内容拓展,目前英特尔最新的已经到14代了,但是macOS苹果系统可以驱动使用的,也就是英特尔3-10代的核显,在PVE安装Mac系统我比较推荐的核显直通是9代及10代处理器,核显型号为UHD630,这个型号绝大多数的核显,一般都不需要修改OC引导,直接直通进mac系统就可以正常驱动使用,并且在目前最新的macOS Sonoma 14下也是可以正常使用的,如3代4代这类的核显,在最新的macOS Sonoma 14下,需要安装像OpenCore Legacy Patcher这类第三方驱动补丁才可以驱动,7代8代这类的需要仿冒核显ID也才可以被驱动。我这里也附上黑苹果下通过仿冒驱动核显的教程,如果你使用7代与8代的核显可以参考(https://imacos.top/2020/09/03/2216/)。如果你使用比较旧的核显,如3代或4代在macOS Sonoma 14下使用,则需要使用OpenCore Legacy Patcher补丁,我这里没有这么旧的核显,就没法给大家演示安装了。

我们还是回到目前安装的这台设备上。我用我手上i7 9700与i3 10105的处理器都测试过,因为核显都是UHD 630,所以直通上核显就可以正常驱动了。但是其中有一台设备在物理机下安装,是需要定制HDMI与DP接口,才有画面信号输出,在PVE下也不例外,同样需要定制HDMI与DP的接口,才可以驱动,如果你也遇到与我一样,显卡可以驱动,但是没画面信号输出,可以按照之前我出的定制显示器接口的教程,教程链接我这里也附上:https://imacos.top/2023/01/30/1524-3/

结束语

正常情况操作完后,不管后续要安装Liunx、win、mac或其他系统,直通出画面就都没有问题了,只不过安装不同的操纵系统,在配置上会有一定的变动。

关于win系统安装,我自己测试的安装成功后,直接安装显卡驱动,没有什么问题,显卡工作正常。win系统安装请看我之前发布的教程(http://imacos.top/2023/09/07/pve-windows-11/

附: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/
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/
定制rom实现PVE环境UEFI模式直通核显:https://imacos.top/2023/10/26/rom/
PVE一键安装macOS苹果系统:https://imacos.top/2024/04/18/pvemac/

文件解压密码:imacos.top

原文链接:http://imacos.top/2024/04/22/i44fx/,转载请注明出处。
3
1. 本站所有资源解压密码均为imacos.top
2. 本站资源收集于网络,仅做学习和交流使用,请于下载后24小时内删除。如果你喜欢我们推荐的软件,请购买正版支持作者。
3. 如有无法下载的链接,联系:邮箱271638927@qq.com,或直接联系QQ271638927进行反馈,我们将及时进行处理。
4. 本站发布的内容若侵犯到您的权益,请联系站长删除,联系方式:邮箱271638927@qq.com,我们将第一时间配合处理!

评论4

请先
  1. 我cpu是i5-9500t,直通核显给win10也正常,,使用你的MAC OS14.4.1固件一健还原安装的MAC,直通核显给MAC,还原成功,启动时卡IOPCIConfigurator: :configure kIOPCIEnumerationWaitTime is 900,机型I440fx,有解决方案吗?
    wtu251 2024-06-25 0
  2. 你好 站长 我根据你的教程,使用你的MAC OS14.4.1固件,还原系统,直通成功。但是图形卡里面的VRAM只有7MB,然后系统操作有迟滞感,不怎么顺滑。 我的CPU是i7 10510U,显卡是CometLake-U GT2(系统就是这样显示,不知道实际是不是UHD630)。 BIOS里面没有启用4G解码,禁用 Resizable BAR,预分配内存为 64M等选项。CSM不管开不开都可以直通,但是进系统之后都是只有7MB. 能帮我看一下哪里出了问题吗?
    cnthor 2024-04-24 0
    • 那应该还是核显驱动问题。不行的话就按照图文教程仿冒核显的ID试试,ID可以优先用0x3E9B0007 ,教程https://imacos.top/2020/09/03/2216/
      imacos.top 2024-04-24 0
    • 这里回复可能不及时,你有空直接联系站长看看。QQ271638927
      imacos.top 2024-04-24 0
终身会员限时上线 ☞ 限时永久会员折扣活动开始啦 > 查看优惠
没有账号?注册  忘记密码?

社交账号快速登录

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