[心得] AMD內顯Passthrough踩坑心得

看板PC_Shopping (個人電腦購買)作者 (交大廢文王子)時間3月前 (2025/12/02 23:38), 3月前編輯推噓24(28427)
留言59則, 32人參與, 3月前最新討論串1/1
前言 小弟有組一台黑X暉的NAS 因為所需服務都已經找到替代的開源方案,好像也沒有理由再繼續用黑X暉了 再加上上次手賤點個升級結果系統掛點==,花幾個小時才修好 想了想還是轉往Proxmox + TrueNAS的方案比較安心 因此在拆掉前來記錄兼分享下在黑X暉平台上玩的VMM內顯直通方案 *先聲明本篇沒有要推廣黑X暉,相反的想在這上面搞些有的沒的真的麻煩超級多 還有整個過程在其他KVM環境也都通用,非限制於黑X暉才可用 以下正文開始 我的平台是AMD Ryzen3 5350GE + Asrock B450m Pro4 + 40G ECC RAM (往回翻的話這張消費級主板已經24/7服役進入第七年惹 周邊都換一輪剩他還在 真的妖) 周邊有張4 port HBA卡跟10G光口洋垃圾網卡 硬碟共4顆HDD/2顆SATA SSD/1條NVME SSD當cache 這樣的組合常駐功耗大概落在90-100W之間 https://imgur.com/42WV9JU
https://imgur.com/5nrxrrL
https://imgur.com/I1nvXee
https://imgur.com/hgRg5F5
https://imgur.com/yK0ELMQ
https://imgur.com/lyCszeC
帳面配置怎麼看這顆CPU只跑NAS實在是大材小用 因此也在黑X上額外跑了Ubuntu跟Windows虛擬機 玩到這邊其實跑得順風順水,也算榨乾了整個系統的資源...嗎? 並沒有XDD,想折騰的心是無窮的,看著白花花銀子買來的iGPU被晾在那就覺得不太爽 加上NAS是放在電視旁,想讓Windows虛擬機可以直接顯示輸出到電視上 做到用電視看各種直播/影片,甚至是遠端PC來大螢幕玩遊戲的騷操作 所以就有了以下直通內顯的曲折過程 ‧黑X暉VMM如何做到PCI Passthrough 雖然底層是KVM ,但顯然VMM介面是不可能會串直通功能的,要做到大概就兩種做法: a. 直接改虛擬機的xml設定 b. 用指令"virsh attach-device"直接把device分配給某台虛擬機 a作法就我所知是行不通,VMM似乎有自己維護的虛擬機設定檔,每次VM開機都會蓋掉xml 正解是b做法: 1. 先把device unbind echo "0000:${DEVICE}" > /sys/bus/pci/devices/0000:${DEVICE}/driver/unbind 那個${DEVICE}是PCIe device的vendor:product值 可以從lspci看到 2. 將想要分配出去的PCI device按照kvm所需格式填寫xml檔 https://imgur.com/fP8KJaZ
3. 把PCI device分配給VM virsh attach-device ${VM_NAME} *.xml 但這方法也不是很完美,因為每次VM重開機都要自行去執行一遍這個步驟 不過可用就是了 ‧IOMMU Group的坑 PCI Passthrough是以IOMMU Group為單位,因此如果你想直通的device分到的Group很糟 (例如這個Group內存在超多device) 那就頭很痛了 可以用類似這種script來檢查看看: https://gist.github.com/jabbas/a8785710a5e8655045fc0be67385e887 一般來說Group分配太爛可以嘗試去BIOS打開ACS Enable選項,會好很多 然而慘的是Asrock B450m Pro4這張板子在使用5系列Ryzen的時候,這選項被閹掉了... 原因也很簡單,這麼老的板子要支援更多AM4 CPU能做的也只有砍功能這一步 才能塞進去這麼小的BIOS內 (都支援5代了也不忍苛責XD) 只能說AM4產品週期長是好事,但也是有意想不到的副作用QQ 到這邊幾乎覺得是死局了... 但!!直到找到這篇討論: https://www.reddit.com/r/ASRock/comments/pfza16/deskmini_x300_bios_with_acs_enable/ 在Asrock B450F的某版本BIOS開啟PCIe ARI選項也可以跟ACS選項同樣有好的Group分配 用相應AGESA版本的BIOS刷到B450m後就成功啦! 正常的結果應該如下: https://imgur.com/3zeUbbi
可以看到目標的VGA compatible controller單獨在Group 13 只能說妖板不愧是妖板 BTW這資訊看起來還是寄信去Asrock原廠問到的 連這種小眾的需求都願意回真的太棒惹 ╰(⊙Д⊙)╮佛心公司╭(⊙Д⊙)╯佛心公司 ‧AMD GPU Passthrough的坑 用上面的作法依樣畫葫蘆把AMD iGPU passthrough之後進到Windows始終顯示Error 43 首先有個懷疑的點: virsh attach-device時間點太慢了 由於這指令必須要在VM開機後才可以下 從按下開機到attach都跑過BIOS了可能真的太晚 有找到可以在KVM START階段hook並且執行attach的方案: https://github.com/sramshaw/pci_coral_on_synology 魔改一下後就成功在BIOS前把iGPU attach上去了! 但還是Error 43,可撥QQ 再來網路上對於AMD iGPU的直通其實也滿多資訊惹,很多作業可以抄 (雖然幾乎都是Proxmox 但反正底都是KVM沒差) 總結大概有幾個問題待解: 1. GPU直通時要順便帶vbios 2. 直通給Windows要順便把CPU的Audio直通過去 並且代AMDGopDriver 3. AMD Reset Bug 1/2要用一些tool把你當前iGPU的vbios跟AMDGopDriver導出來 或是可以去這邊翻看看有沒有相應型號的可以直接下載來用: https://github.com/isc30/ryzen-gpu-passthrough-proxmox 並且在做virsh attach-device時的xml裡面要順便帶rom這個參數進去 此時Windows VM進去就不會Error 43了,到此算是完成惹~ https://imgur.com/YlNepUN
剩下一個AMD Reset Bug比較討厭,可以安裝這個Service: https://github.com/inga-lovinde/RadeonResetBugFix 它的作用是在Windows VM關機時會正常的把GPU關閉,等到下次VM開機時才可以正常init 但如果VM被強制關機或reboot那就沒救了(e.g. 藍屏) 只要上次GPU沒有正常關閉那顆GPU就再也沒辦法被使用了,只能reboot host 另外我的經驗是如果確定上次VM有正常關機但還是Error 43 可以直接重裝GPU Driver並reboot VM,通常都能好 最後來看結果 Windows虛擬機可以直接HDMI連到電視 看實況YT都很順 https://imgur.com/AlGlwVH
甚至透過10G內網遠端到PC打個POE刷圖都沒問題 https://imgur.com/l1GINLY
就是畫面有時候FPS會變低 這個需求CPU真的極限了XDD 解碼速度上不去 另外,上面那些步驟實在太繁瑣,小弟把此方案弄成一個簡單的script: https://github.com/jcchen7566/SynoPassthru 不算是很無腦的script需要花一點時間了解在幹麻,但只要配置好deploy完就一勞永逸了 目前用這方案半年多,除了Reset Bug常踩到要重開機很討厭之外真的滿穩定的 謝謝大家收看 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.34.178.145 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/PC_Shopping/M.1764689918.A.BCD.html

12/02 23:49, 3月前 , 1F
讚哦 我的prime x370還在服役中
12/02 23:49, 1F
AM4真的讚 但現在板子不好買了 希望別掛掉

12/02 23:59, 3月前 , 2F
謝謝
12/02 23:59, 2F

12/03 00:03, 3月前 , 3F
入境隨俗
12/03 00:03, 3F

12/03 00:10, 3月前 , 4F
雖然門外漢不太懂但還是推分享
12/03 00:10, 4F

12/03 00:10, 3月前 , 5F
感謝分享
12/03 00:10, 5F

12/03 00:18, 3月前 , 6F
風氣
12/03 00:18, 6F

12/03 00:38, 3月前 , 7F
怎麼有JB...
12/03 00:38, 7F
roger788 roger788

12/03 00:40, 3月前 , 8F
12/03 00:40, 8F
※ 編輯: NCTUFAIWEN (1.34.178.145 臺灣), 12/03/2025 00:45:33

12/03 00:52, 3月前 , 9F
小丑被A桶了.嘻嘻*(專業文推一個)
12/03 00:52, 9F

12/03 00:53, 3月前 , 10F
12/03 00:53, 10F

12/03 01:04, 3月前 , 11F
感謝大大無私分享,本來打算搞完一般服
12/03 01:04, 11F

12/03 01:04, 3月前 , 12F
務就放置,看到這篇之後一定要搞一搞了
12/03 01:04, 12F

12/03 01:05, 3月前 , 13F
清一下灰塵好嗎...
12/03 01:05, 13F

12/03 01:11, 3月前 , 14F
reset bug fix 在 6000 系顯卡 (Navi20)
12/03 01:11, 14F

12/03 01:11, 3月前 , 15F
之後就沒用了,之後只能賭看看卡本身有沒
12/03 01:11, 15F

12/03 01:11, 3月前 , 16F
有 reset bug
12/03 01:11, 16F

12/03 01:24, 3月前 , 17F
12/03 01:24, 17F

12/03 02:45, 3月前 , 18F
JB
12/03 02:45, 18F

12/03 02:45, 3月前 , 19F
補推
12/03 02:45, 19F

12/03 06:05, 3月前 , 20F
看個yt 、打個電動這麼累
12/03 06:05, 20F

12/03 07:02, 3月前 , 21F
常駐等於一天要2.5度電,還不含作動功
12/03 07:02, 21F

12/03 07:02, 3月前 , 22F
12/03 07:02, 22F

12/03 07:05, 3月前 , 23F
直通內顯有什麼好處 效能好很多嗎
12/03 07:05, 23F

12/03 07:20, 3月前 , 24F
自己動手樂趣多 合理
12/03 07:20, 24F

12/03 07:59, 3月前 , 25F
這操作太騷了
12/03 07:59, 25F

12/03 08:11, 3月前 , 26F
12/03 08:11, 26F

12/03 08:22, 3月前 , 27F
太麻煩了 玩直通或虛擬化還是偏好
12/03 08:22, 27F

12/03 08:22, 3月前 , 28F
Intel,只要開SRIOV就解決了不折騰
12/03 08:22, 28F

12/03 08:27, 3月前 , 29F
之前玩12700k 直通也是搞得要死要活
12/03 08:27, 29F

12/03 09:18, 3月前 , 30F
用不到但給技術分享給推
12/03 09:18, 30F

12/03 09:23, 3月前 , 31F
不能被發現看不懂 先推
12/03 09:23, 31F

12/03 09:57, 3月前 , 32F
感謝分享
12/03 09:57, 32F

12/03 11:39, 3月前 , 33F
推實作心得,以後買小主機可以參考
12/03 11:39, 33F

12/03 12:37, 3月前 , 34F
YT上面一堆中國人搞這類All in ONE
12/03 12:37, 34F

12/03 12:37, 3月前 , 35F
有很多解決方案可以參考
12/03 12:37, 35F

12/03 12:37, 3月前 , 36F
我手上幾臺7840HS底層都是PVE
12/03 12:37, 36F

12/03 12:37, 3月前 , 37F
然後通iGPU進去給Win用掛機遊戲
12/03 12:37, 37F

12/03 12:37, 3月前 , 38F
老實說黑群非常難用 不如買TrueNAS或
12/03 12:37, 38F

12/03 12:37, 3月前 , 39F
UnRAID 社群多又豐富 XD
12/03 12:37, 39F

12/03 12:38, 3月前 , 40F
我是裝VirtualDisplayDriver 不接螢幕
12/03 12:38, 40F

12/03 12:38, 3月前 , 41F
通通用moonlight遠端操作
12/03 12:38, 41F

12/03 12:39, 3月前 , 42F
Intel的SRIOV也不是萬能解 我好幾次Li
12/03 12:39, 42F

12/03 12:39, 3月前 , 43F
nux Kernel一更新整個跑掉 要重新編譯
12/03 12:39, 43F

12/03 12:42, 3月前 , 44F
順帶一提 不同機型的GopDriver不一定
12/03 12:42, 44F

12/03 12:42, 3月前 , 45F
能通用,我用GMK K6導出給銘凡UM780不
12/03 12:42, 45F

12/03 12:42, 3月前 , 46F
能用,最好還是自己導出自己的
12/03 12:42, 46F

12/03 13:58, 3月前 , 47F
寫得如此詳細, 即便自己應該不會這樣
12/03 13:58, 47F

12/03 13:58, 3月前 , 48F
折騰自己, 還是覺得不推不行 XDDD
12/03 13:58, 48F

12/03 14:18, 3月前 , 49F
掉驅動問題 NV也曾容器化過渡期調很久
12/03 14:18, 49F

12/03 17:23, 3月前 , 50F
推!!之前搞VMM直通網卡給opnsense虛擬機
12/03 17:23, 50F

12/03 17:23, 3月前 , 51F
也是得掛一堆腳本,但成功後直接解放NAS
12/03 17:23, 51F

12/03 19:23, 3月前 , 52F
不是應該先套一層PVE吧組儲存和運算分離
12/03 19:23, 52F

12/03 19:23, 3月前 , 53F
嗎XD
12/03 19:23, 53F

12/03 19:28, 3月前 , 54F
虛擬化玩家推一個 Intel這邊其實也沒
12/03 19:28, 54F

12/03 19:28, 3月前 , 55F
好多少 SRIOV好用但也並沒無所不能 比
12/03 19:28, 55F

12/03 19:28, 3月前 , 56F
如上面大大提到的kernel編譯
12/03 19:28, 56F

12/03 19:29, 3月前 , 57F
目前小弟是用N100當迷你server 兼具NA
12/03 19:29, 57F

12/03 19:29, 3月前 , 58F
S WinVM 軟路由
12/03 19:29, 58F

12/03 19:54, 3月前 , 59F
好傑寶
12/03 19:54, 59F
文章代碼(AID): #1fBmV-lD (PC_Shopping)
文章代碼(AID): #1fBmV-lD (PC_Shopping)