ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

OSX-KVM GPU 直通教程:5 步把物理显卡交给 macOS 虚拟机

OSX-KVM GPU 直通教程:5 步把物理显卡交给 macOS 虚拟机 OSX-KVM GPU 直通教程5 步把物理显卡交给 macOS 虚拟机【免费下载链接】OSX-KVMRun macOS on QEMU/KVM. With OpenCore Monterey Ventura Sonoma support now! Only commercial (paid) support is available now to avoid spammy issues. No Mac system is required.项目地址: https://gitcode.com/GitHub_Trending/os/OSX-KVMiMovie 导出 4K 视频的进度条爬了四十分钟渲染队列挂到凌晨还没出片——问题不在系统而在虚拟机里那个性能垫底的默认 VGA 控制器。本文给出在 OSX-KVM 中完成 GPU 直通GPU passthrough的完整步骤把一张物理显卡的控制权整体划给 macOS 虚拟机让硬件算力直接服务虚拟机导出 4K 从熬一夜变回泡杯茶的功夫。GPU 直通到底在干什么一句话QEMU 通过 IOMMUIntel 叫 VT-dAMD 叫 AMD-Vi把物理 PCI 设备的控制权从宿主机手里移交给虚拟机由vfio-pci驱动完成隔离与绑定虚拟系统里的显卡驱动直接操作真实硬件绕开软件模拟。硬件与系统门槛先排除硬伤项目硬性要求说明CPU / 主板开启 VT-xAMD-V VT-dAMD-Vi两者缺一不可IOMMU 负责设备隔离显卡双显卡分工一张核显/独显供宿主机显示一张直通给虚拟机内核≥ 5.4较新的vfio-pci行为更稳定虚拟化栈KVM QEMUq35 芯片组boot-passthrough.sh 默认即 q35先跑一遍项目自带的诊断脚本确认虚拟化与 IOMMU 模块已加载sudo ./run-diagnostics.sh预期在 Loaded Modules 段看到 kvm 相关模块并且出现下列其中一行amd_iommu 20480 0如果两行amd_iommu/intel_iommu都没有先回 BIOS 开启 IOMMU 再谈后面的一切。Step 1查出直通显卡的 PCI 地址与 IOMMU 分组用lspci记下显卡的 VGA 控制器与 HDMI 音频设备两个地址示例为 AMD RX 580lspci -nnk | grep -i amd01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] [1002:67df] (rev ef) 01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590] [1002:aaf0]再运行 scripts/list_iommu_groups.sh确认这两个地址落在同一个 IOMMU 分组里./scripts/list_iommu_groups.shIOMMU Group 15: 01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 580] [1002:67df] (rev ff) 01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere HDMI Audio [Radeon RX 580] [1002:aaf0] (rev ff)⚠️ 若分组里还混着 SATA 控制器、USB 控制器等其他设备直通会失败IOMMU 以组为单位移交。此时需要更换插槽位置或参考 notes.md 处理 ACS 问题。记下你的组号本例是 15后面要用。Step 2绑定 VFIO 驱动的三个内核参数编辑/etc/default/grub把下面参数追加到GRUB_CMDLINE_LINUX_DEFAULT以 Intel 平台为例vfio-pci.ids换成你自己的显卡 Vendor:Device# Intel 平台 iommupt intel_iommuon vfio-pci.ids1002:67df,1002:aaf0 kvm.ignore_msrs1 videovesafb:off,efifb:off # AMD 平台把 intel_iommuon 换成 amd_iommuon其余不变三个关键参数的作用iommupt让 IOMMU 以直通模式工作降低开销intel_iommuon/amd_iommuon启用 IOMMUvfio-pci.ids…在开机瞬间就把这两个设备交给vfio-pci避免amdgpu/nouveau抢先占用。再创建/etc/modprobe.d/vfio.conf照抄 notes.md 中的版本options vfio-pci ids1002:67df,1002:aaf0 disable_vga1 # 防止内核显示抢用直通卡 softdep radeon pre: vfio-pci softdep amdgpu pre: vfio-pci softdep nouveau pre: vfio-pci softdep drm pre: vfio-pci最后更新引导并重启sudo update-grub2 sudo update-initramfs -k all -u sudo reboot同时进 BIOS 把 Primary Display 设为核显IGFX。重启后验证驱动确实挂上dmesg | grep vfio lspci -nkk -d 1002:67df01:00.0 0300: 1002:67df (rev ef) Subsystem: 1da2:e366 Kernel driver in use: vfio-pci Kernel modules: amdgpu看到Kernel driver in use: vfio-pci即绑定成功。注意此时宿主机桌面大概率会黑屏/切回核显这是预期行为。Step 3配置 vfio 设备权限把项目自带的规则文件装到 udev 目录内容就是SUBSYSTEMvfio, OWNERroot, GROUPkvm让 kvm 组能访问/dev/vfio/组号sudo cp vfio-kvm.rules /etc/udev/rules.d/vfio-kvm.rules sudo udevadm control --reload sudo udevadm trigger预期ls -l /dev/vfio/15显示该设备属组为kvm。Step 4修改启动脚本接入物理显卡打开 boot-passthrough.sh确认或调整这几处脚本注释里已内置 RX 580 示例替换成你的地址即可ALLOCATED_RAM8192 # MiB给 GPU 留足带宽 CPU_CORES4 # 核心数 CPU_THREADS8 # 线程数 # 关键三行 # -vga none # 关闭 QEMU 内置 VGA # -device vfio-pci,host01:00.0,multifunctionon,x-no-kvm-intxon # -device vfio-pci,host01:00.1multifunctionon表示该 PCI 函数带多个子功能VGA音频必须成对直通x-no-kvm-intxon关闭 INTx 中断路由规避部分主板的复位问题音频函数01:00.1直通后 HDMI 声音也能用。脚本注释中还留了romfilegpu_original_bios.bin的开关个别显卡需要喂原始 VBIOS 才能点亮先不用管。Step 5启动虚拟机先做一次无直通的首装脚本头部注释也强调首次安装 macOS 不要用直通脚本装完再跑./boot-passthrough.sh脚本以-vnc 0.0.0.0:1输出画面用 VNC 客户端连上后走完 OpenCore 引导。QEMU 终端若出现vfio: error ...之类报错说明设备仍被宿主机占用回到故障排查。快速验证确认虚拟机认出了真卡✅ 最小验证动作macOS 里打开 关于本机/系统信息 → 显卡确认显示的是物理显卡型号如 Radeon RX 580而不是VGA compatible controller。可选项量化对比渲染耗时用 iMovie 导出同一段 4K 素材记录直通前后耗时跑分Cinebench / 3DMark 直接对比虚拟显卡与真卡得分物理直出把显示器接到直通卡的 HDMI 口虚拟机内切换分辨率物理屏应即时跟随——这是最硬的证据。故障排查启动时报 Device is in use by driver设备仍被宿主机驱动占用或 udev 规则未生效。确认 Step 2 的dmesg | grep vfio已显示vfio-pci重新执行 Step 3 的 udev 重载命令用项目工具显式绑定整组设备sudo ./scripts/vfio-group.sh 15组号换成 Step 1 记下的数字再sudo ./scripts/vfio-ungroup.sh 15可反向解绑。AMD 卡反复复位、黑屏、no signalboot-passthrough-windows.sh 的注释直言AMD 卡在 Windows 虚拟机里有AMD reset bugmacOS 侧表现是反复复位。优先使用仓库 notes 中提到的测试通过的卡Sapphire RX 6600 被标注 RECOMMENDED保持x-no-kvm-intxon参数不要删用厂商工具 dump 出显卡 VBIOS通过romfile参数喂给 QEMU多数no signal可解。宿主机重启后直通卡不见了vfio-pci.ids只在启动瞬间绑定被其他模块抢走后会失效。确认/etc/modprobe.d/vfio.conf的softdep四行都在重启后重跑lspci -nkk -d 1002:67df复查驱动仍失效就用sudo ./scripts/vfio-group.sh 组号手动补绑。VNC 里画面卡但本机显示器流畅-display none -vnc本身只编码一路 2D 画面不代表 GPU 没工作。以系统信息中的显卡型号和渲染耗时为准别被 VNC 观感误导在意画面延迟可把 VNC 分辨率调低。至此物理显卡的算力已完整交给 macOS 虚拟机。可以继续探索用 scripts/lsgroup.sh 把 USB 控制器也直通进去、直通第二张 GPU 给另一台虚拟机、按 notes.md 配置 Synergy 共享键鼠。遇到问题先翻 README.md 和项目社区的讨论串。提示NVIDIA 卡直通 macOS 的驱动兼容性与 AMD 差异较大仓库测试记录里只有低端型号如 GT 710可用于 Big Sur 以下版本N 卡用户请先查 Dortania GPU 买家指南的适配表再动手N 卡配 Windows 虚拟机则效果很好boot-passthrough-windows.sh 可直接参考。【免费下载链接】OSX-KVMRun macOS on QEMU/KVM. With OpenCore Monterey Ventura Sonoma support now! Only commercial (paid) support is available now to avoid spammy issues. No Mac system is required.项目地址: https://gitcode.com/GitHub_Trending/os/OSX-KVM创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表