)
OSX-KVM GPU 直通教程5 步把物理顯卡交給 macOS 虛擬機(jī)【免費(fèi)下載鏈接】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.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/os/OSX-KVMiMovie 導(dǎo)出 4K 視頻的進(jìn)度條爬了四十分鐘渲染隊(duì)列掛到凌晨還沒(méi)出片——問(wèn)題不在系統(tǒng)而在虛擬機(jī)里那個(gè)性能墊底的默認(rèn) VGA 控制器。本文給出在 OSX-KVM 中完成 GPU 直通GPU passthrough的完整步驟把一張物理顯卡的控制權(quán)整體劃給 macOS 虛擬機(jī)讓硬件算力直接服務(wù)虛擬機(jī)導(dǎo)出 4K 從熬一夜變回泡杯茶的功夫。GPU 直通到底在干什么一句話QEMU 通過(guò) IOMMUIntel 叫 VT-dAMD 叫 AMD-Vi把物理 PCI 設(shè)備的控制權(quán)從宿主機(jī)手里移交給虛擬機(jī)由vfio-pci驅(qū)動(dòng)完成隔離與綁定虛擬系統(tǒng)里的顯卡驅(qū)動(dòng)直接操作真實(shí)硬件繞開軟件模擬。硬件與系統(tǒng)門檻先排除硬傷項(xiàng)目硬性要求說(shuō)明CPU / 主板開啟 VT-xAMD-V VT-dAMD-Vi兩者缺一不可IOMMU 負(fù)責(zé)設(shè)備隔離顯卡雙顯卡分工一張核顯/獨(dú)顯供宿主機(jī)顯示一張直通給虛擬機(jī)內(nèi)核≥ 5.4較新的vfio-pci行為更穩(wěn)定虛擬化棧KVM QEMUq35 芯片組boot-passthrough.sh 默認(rèn)即 q35先跑一遍項(xiàng)目自帶的診斷腳本確認(rèn)虛擬化與 IOMMU 模塊已加載sudo ./run-diagnostics.sh預(yù)期在 Loaded Modules 段看到 kvm 相關(guān)模塊并且出現(xiàn)下列其中一行amd_iommu 20480 0如果兩行amd_iommu/intel_iommu都沒(méi)有先回 BIOS 開啟 IOMMU 再談后面的一切。Step 1查出直通顯卡的 PCI 地址與 IOMMU 分組用lspci記下顯卡的 VGA 控制器與 HDMI 音頻設(shè)備兩個(gè)地址示例為 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]再運(yùn)行 scripts/list_iommu_groups.sh確認(rèn)這兩個(gè)地址落在同一個(gè) 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 控制器等其他設(shè)備直通會(huì)失敗IOMMU 以組為單位移交。此時(shí)需要更換插槽位置或參考 notes.md 處理 ACS 問(wèn)題。記下你的組號(hào)本例是 15后面要用。Step 2綁定 VFIO 驅(qū)動(dòng)的三個(gè)內(nèi)核參數(shù)編輯/etc/default/grub把下面參數(shù)追加到GRUB_CMDLINE_LINUX_DEFAULT以 Intel 平臺(tái)為例vfio-pci.ids換成你自己的顯卡 Vendor:Device# Intel 平臺(tái) iommupt intel_iommuon vfio-pci.ids1002:67df,1002:aaf0 kvm.ignore_msrs1 videovesafb:off,efifb:off # AMD 平臺(tái)把 intel_iommuon 換成 amd_iommuon其余不變?nèi)齻€(gè)關(guān)鍵參數(shù)的作用iommupt讓 IOMMU 以直通模式工作降低開銷intel_iommuon/amd_iommuon啟用 IOMMUvfio-pci.ids…在開機(jī)瞬間就把這兩個(gè)設(shè)備交給vfio-pci避免amdgpu/nouveau搶先占用。再創(chuàng)建/etc/modprobe.d/vfio.conf照抄 notes.md 中的版本options vfio-pci ids1002:67df,1002:aaf0 disable_vga1 # 防止內(nèi)核顯示搶用直通卡 softdep radeon pre: vfio-pci softdep amdgpu pre: vfio-pci softdep nouveau pre: vfio-pci softdep drm pre: vfio-pci最后更新引導(dǎo)并重啟sudo update-grub2 sudo update-initramfs -k all -u sudo reboot同時(shí)進(jìn) BIOS 把 Primary Display 設(shè)為核顯IGFX。重啟后驗(yàn)證驅(qū)動(dòng)確實(shí)掛上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即綁定成功。注意此時(shí)宿主機(jī)桌面大概率會(huì)黑屏/切回核顯這是預(yù)期行為。Step 3配置 vfio 設(shè)備權(quán)限把項(xiàng)目自帶的規(guī)則文件裝到 udev 目錄內(nèi)容就是SUBSYSTEMvfio, OWNERroot, GROUPkvm讓 kvm 組能訪問(wèn)/dev/vfio/組號(hào)sudo cp vfio-kvm.rules /etc/udev/rules.d/vfio-kvm.rules sudo udevadm control --reload sudo udevadm trigger預(yù)期ls -l /dev/vfio/15顯示該設(shè)備屬組為kvm。Step 4修改啟動(dòng)腳本接入物理顯卡打開 boot-passthrough.sh確認(rèn)或調(diào)整這幾處腳本注釋里已內(nèi)置 RX 580 示例替換成你的地址即可ALLOCATED_RAM8192 # MiB給 GPU 留足帶寬 CPU_CORES4 # 核心數(shù) CPU_THREADS8 # 線程數(shù) # 關(guān)鍵三行 # -vga none # 關(guān)閉 QEMU 內(nèi)置 VGA # -device vfio-pci,host01:00.0,multifunctionon,x-no-kvm-intxon # -device vfio-pci,host01:00.1multifunctionon表示該 PCI 函數(shù)帶多個(gè)子功能VGA音頻必須成對(duì)直通x-no-kvm-intxon關(guān)閉 INTx 中斷路由規(guī)避部分主板的復(fù)位問(wèn)題音頻函數(shù)01:00.1直通后 HDMI 聲音也能用。腳本注釋中還留了romfilegpu_original_bios.bin的開關(guān)個(gè)別顯卡需要喂原始 VBIOS 才能點(diǎn)亮先不用管。Step 5啟動(dòng)虛擬機(jī)先做一次無(wú)直通的首裝腳本頭部注釋也強(qiáng)調(diào)首次安裝 macOS 不要用直通腳本裝完再跑./boot-passthrough.sh腳本以-vnc 0.0.0.0:1輸出畫面用 VNC 客戶端連上后走完 OpenCore 引導(dǎo)。QEMU 終端若出現(xiàn)vfio: error ...之類報(bào)錯(cuò)說(shuō)明設(shè)備仍被宿主機(jī)占用回到故障排查??焖衮?yàn)證確認(rèn)虛擬機(jī)認(rèn)出了真卡? 最小驗(yàn)證動(dòng)作macOS 里打開 關(guān)于本機(jī)/系統(tǒng)信息 → 顯卡確認(rèn)顯示的是物理顯卡型號(hào)如 Radeon RX 580而不是VGA compatible controller??蛇x項(xiàng)量化對(duì)比渲染耗時(shí)用 iMovie 導(dǎo)出同一段 4K 素材記錄直通前后耗時(shí)跑分Cinebench / 3DMark 直接對(duì)比虛擬顯卡與真卡得分物理直出把顯示器接到直通卡的 HDMI 口虛擬機(jī)內(nèi)切換分辨率物理屏應(yīng)即時(shí)跟隨——這是最硬的證據(jù)。故障排查啟動(dòng)時(shí)報(bào) Device is in use by driver設(shè)備仍被宿主機(jī)驅(qū)動(dòng)占用或 udev 規(guī)則未生效。確認(rèn) Step 2 的dmesg | grep vfio已顯示vfio-pci重新執(zhí)行 Step 3 的 udev 重載命令用項(xiàng)目工具顯式綁定整組設(shè)備sudo ./scripts/vfio-group.sh 15組號(hào)換成 Step 1 記下的數(shù)字再sudo ./scripts/vfio-ungroup.sh 15可反向解綁。AMD 卡反復(fù)復(fù)位、黑屏、no signalboot-passthrough-windows.sh 的注釋直言AMD 卡在 Windows 虛擬機(jī)里有AMD reset bugmacOS 側(cè)表現(xiàn)是反復(fù)復(fù)位。優(yōu)先使用倉(cāng)庫(kù) notes 中提到的測(cè)試通過(guò)的卡Sapphire RX 6600 被標(biāo)注 RECOMMENDED保持x-no-kvm-intxon參數(shù)不要?jiǎng)h用廠商工具 dump 出顯卡 VBIOS通過(guò)romfile參數(shù)喂給 QEMU多數(shù)no signal可解。宿主機(jī)重啟后直通卡不見了vfio-pci.ids只在啟動(dòng)瞬間綁定被其他模塊搶走后會(huì)失效。確認(rèn)/etc/modprobe.d/vfio.conf的softdep四行都在重啟后重跑lspci -nkk -d 1002:67df復(fù)查驅(qū)動(dòng)仍失效就用sudo ./scripts/vfio-group.sh 組號(hào)手動(dòng)補(bǔ)綁。VNC 里畫面卡但本機(jī)顯示器流暢-display none -vnc本身只編碼一路 2D 畫面不代表 GPU 沒(méi)工作。以系統(tǒng)信息中的顯卡型號(hào)和渲染耗時(shí)為準(zhǔn)別被 VNC 觀感誤導(dǎo)在意畫面延遲可把 VNC 分辨率調(diào)低。至此物理顯卡的算力已完整交給 macOS 虛擬機(jī)。可以繼續(xù)探索用 scripts/lsgroup.sh 把 USB 控制器也直通進(jìn)去、直通第二張 GPU 給另一臺(tái)虛擬機(jī)、按 notes.md 配置 Synergy 共享鍵鼠。遇到問(wèn)題先翻 README.md 和項(xiàng)目社區(qū)的討論串。提示NVIDIA 卡直通 macOS 的驅(qū)動(dòng)兼容性與 AMD 差異較大倉(cāng)庫(kù)測(cè)試記錄里只有低端型號(hào)如 GT 710可用于 Big Sur 以下版本N 卡用戶請(qǐng)先查 Dortania GPU 買家指南的適配表再動(dòng)手N 卡配 Windows 虛擬機(jī)則效果很好boot-passthrough-windows.sh 可直接參考?!久赓M(fèi)下載鏈接】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.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/os/OSX-KVM創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考