[{"data":1,"prerenderedAt":364},["ShallowReactive",2],{"\u002F2024\u002Fpve-amd-gpu-passthrough-windows-display-guide":3,"surround-\u002F2024\u002Fpve-amd-gpu-passthrough-windows-display-guide":353},{"id":4,"title":5,"body":6,"categories":327,"date":329,"description":330,"draft":331,"extension":332,"image":333,"meta":334,"navigation":336,"path":337,"permalink":333,"published":333,"readingTime":338,"recommend":333,"references":333,"seo":343,"sitemap":344,"stem":345,"tags":346,"type":351,"updated":329,"__hash__":352},"content\u002Fposts\u002F2024\u002Fpve-amd-gpu-passthrough-windows-display-guide.md","PVE系统下的AMD独立显卡直通Windows并输出画面教程",{"type":7,"value":8,"toc":306},"minimark",[9,13,17,28,31,42,45,48,51,59,66,80,129,133,136,146,160,164,167,171,174,180,206,212,218,221,224,232,236,239,245,248,254,258,261,265,271,275,281,285,288,294,298],[10,11,12],"p",{},"PVE 做显卡直通经常出现错误代码 43 的情况，不出意外我也碰上了，下面是我的所有配置和操作步骤，也是折腾了半天，扒了很多论坛。虽然不知道哪个地方解决了问题，但是现在是能够稳定工作，所以发出来供参考。",[14,15,16],"h2",{"id":16},"主机配置",[18,19,24],"pre",{"className":20,"code":22,"language":23},[21],"language-text","主板：ASUS B460M Pro\n\nCPU：Intel i7-10700\n\n显卡：AMD RX6600XT\n\nPVE版本：6.4\n","text",[25,26,22],"code",{"__ignoreMap":27},"",[10,29,30],{},"PVE内核： 5.4.140-1-pve",[32,33,34],"note",{},[10,35,36,37,41],{},"直通无需确定内核版本 建议统一升级到 ",[38,39,40],"strong",{},"PVE 8.2"," 以上版本",[14,43,44],{"id":44},"配置步骤",[10,46,47],{},"首先需要更新主板的 BIOS 到最新版本，然后开启主板的虚拟化功能，包括 VT-d、IOMMU、CPU 虚拟化，关闭 CSM，然后最好将主板的首选显卡改为 PEG。",[10,49,50],{},"然后按照 PVE 官方的教程配置到 Verify IOMMU Isolation 这一步，在 PVE 中使用下面脚本检查是否显卡在一个单独的 IOMMU 组里",[18,52,57],{"className":53,"code":55,"language":56,"meta":27},[54],"language-terminal","shopt -s nullglob\nfor g in `find \u002Fsys\u002Fkernel\u002Fiommu_groups\u002F* -maxdepth 0 -type d | sort -V`; do\n    echo \"IOMMU Group ${g##*\u002F}:\"\n    for d in $g\u002Fdevices\u002F*; do\n        echo -e \"\\t$(lspci -nns ${d##*\u002F})\"\n    done;\ndone;\n","terminal",[25,58,55],{"__ignoreMap":27},[10,60,61,62],{},"如果有类似下面的输出，就代表显卡在一个单独的 IOMMU 组里面。\n",[63,64],"img",{"alt":27,"src":65},"http:\u002F\u002Fkilomaple.test.upcdn.net\u002F20241108175623.webp",[10,67,68,69,72,73,76,77],{},"如果 在一个IOMMU组中存在多个设备，就说明需要开启 ACS 补丁。\n这个补丁需要 CPU 支持，具体参考 PVE 官方教程里面的介绍，一般比较新的 CPU 都支持。\nPVE 自带 ACS 补丁，只需要在 ",[25,70,71],{"code":71},"\u002Fetc\u002Fdefault\u002Fgrub"," 里的 ",[25,74,75],{"code":75},"GRUB_CMDLINE_LINUX_DEFAULT"," 项里面添加 ",[25,78,79],{"code":79},"\"pcie_acs_override=downstream,multifunction\"",[32,81,82,85],{},[10,83,84],{},"添加步骤",[86,87,88,104,111,116,119,126],"ol",{},[89,90,91,92,94,95],"li",{},"打开 ",[25,93,71],{"code":71}," 文件\n",[96,97,98],"ul",{},[89,99,100,101],{},"命令行输入 ",[25,102,103],{"code":103},"nano \u002Fetc\u002Fdefault\u002Fgrub",[89,105,106,107,110],{},"找到 ",[25,108,109],{"code":109},"GRUB_CMDLINE_LINUX_DEFAULT="," 这一行",[89,112,113,114],{},"在这一行后面添加 ",[25,115,79],{"code":79},[89,117,118],{},"保存并关闭文件",[89,120,121,122,125],{},"运行 ",[25,123,124],{"code":124},"sudo update-grub"," 更新 GRUB 配置",[89,127,128],{},"重启系统使更改生效\n然后重启即可看到 IOMMU 中每个 PCIE 设备都在单独一个分组里面。",[14,130,132],{"id":131},"虚拟机内打-vendor-reset-补丁","虚拟机内打 vendor-reset 补丁",[10,134,135],{},"官方教程里 RX系列会存在复位不正确的 bug，需要打这个 vendor-reset 补丁。",[137,138,139],"warning",{},[10,140,141,142,145],{},"此项目issue已经许久未更新，最后 Release 的版本为 2020年8月22日，\n目前判断已经",[38,143,144],{},"停止更新","，请谨慎使用！",[32,147,148,151],{},[10,149,150],{},"补丁本身使用非常方便，仅需下载后放到虚拟机的C盘目录下，右键以管理员身份运行即可。",[10,152,153],{},[154,155,159],"a",{"href":156,"rel":157},"https:\u002F\u002Fgithub.com\u002Fgnif\u002Fvendor-reset",[158],"nofollow","Github仓库",[14,161,163],{"id":162},"创建-win10-虚拟机","创建 WIN10 虚拟机",[10,165,166],{},"参照 PVE 官方的 win10 best practice ，并且在选择 BIOS 的时候要选 OVMF，即使用 UEFI 启动，机型推荐选择 pc-q35-5.2，然后继续按照官方教程的 GPU Passthrough 一节中的指导，使用 GPU OVMF PCI Passthrough 的方式。",[14,168,170],{"id":169},"提取显卡-rom","提取显卡 ROM",[10,172,173],{},"依次输入如下命令：",[18,175,178],{"className":176,"code":177,"language":23},[21],"    cd \u002Fsys\u002Fbus\u002Fpci\u002Fdevices\u002F0000:01:00.0\u002F\n    echo 1 > rom\n    cat rom > \u002Ftmp\u002Fimage.rom\n    echo 0 > rom\n",[25,179,177],{"__ignoreMap":27},[32,181,182,185,191],{},[10,183,184],{},"或使用下方的一键命令",[18,186,189],{"className":187,"code":188,"language":23},[21],"cd \u002Fsys\u002Fbus\u002Fpci\u002Fdevices\u002F0000:01:00.0\u002F && echo 1 > rom && cat rom > \u002Ftmp\u002Fimage.rom && echo 0 > rom\n",[25,190,188],{"__ignoreMap":27},[10,192,193,194,197,198,201,202],{},"注意上面的 ",[25,195,196],{"code":196},"0000:01:00.0"," 要换成自己的显卡的 pci 地址，使用 lspci -v | grep VGA 可以看到。\n可能显示的数值是 02:00.0，但是实际地址前要加入",[25,199,200],{"code":200},"0000:","，所以要改一下。\n然后可以使用 rom-parser 校验一下显卡固件是否支持 UEFI 启动，即输出的解析内容里面有 type 3 即可。\nrom-parser 的仓库地址 ",[154,203,204],{"href":204,"rel":205},"https:\u002F\u002Fgithub.com\u002Fawilliam\u002From-parser",[158],[10,207,208,211],{},[63,209],{"alt":27,"src":210},"http:\u002F\u002Fkilomaple.test.upcdn.net\u002F20241108194352.webp","\n然后将提取出来的rom（在上面代码的路径是 \u002Ftmp\u002Fimage.rom）放到 \u002Fusr\u002Fshare\u002Fkvm 路径下，我的显卡是 RX6600XT，所以就改名成 RX6600XT.rom。",[18,213,216],{"className":214,"code":215,"language":56,"meta":27},[54],"cp \u002Ftmp\u002Fimage.rom \u002Fusr\u002Fshare\u002Fkvm\u002FRX6600XT.rom\n",[25,217,215],{"__ignoreMap":27},[10,219,220],{},"然后在 win10 虚拟机的配置文件中的显卡 pci 配置项中加入 rom 文件。",[10,222,223],{},"在虚拟机conf中完整的配置项如下：",[18,225,230],{"className":226,"code":228,"language":229,"meta":27},[227],"language-100.conf","...       ↓你的显卡地址|↓PCIE|↓显卡的 rom 文件名|↓设置为虚拟机的输出\nhostpci0: 0000:03:00,pcie=1,romfile=RX6600XT.rom,x-vga=1\n...省略\n","100.conf",[25,231,228],{"__ignoreMap":27},[14,233,235],{"id":234},"设置-cpu-选项","设置 cpu 选项",[10,237,238],{},"在虚拟机配置文件中添加 CPU 选项",[18,240,243],{"className":241,"code":242,"language":23},[21],"cpu: host,hidden=1,flags=+pcid\n",[25,244,242],{"__ignoreMap":27},[14,246,247],{"id":247},"设置虚拟机显示输出",[10,249,250,251],{},"将 WIN10 虚拟机的自带显示输出为 none，只通过显卡进行输出。\n",[63,252],{"alt":27,"src":253},"http:\u002F\u002Fkilomaple.test.upcdn.net\u002F20241108195007.webp",[14,255,257],{"id":256},"如果不出意外的话直通就应该能成功了","如果不出意外的话直通就应该能成功了！",[14,259,260],{"id":260},"排障",[262,263,264],"h3",{"id":264},"设备管理器中出现代码43错误",[18,266,269],{"className":267,"code":268,"language":23},[21],"安装 AMD 的驱动即可，安装完成在设备管理器里就能看到不带黄色感叹号的显卡了！\n",[25,270,268],{"__ignoreMap":27},[262,272,274],{"id":273},"设备管理器显示设备没有正常启动代码51","设备管理器显示设备没有正常启动（代码51）",[18,276,279],{"className":277,"code":278,"language":23},[21],"根据 ## 虚拟机内打 vendor-reset 补丁 中的提示，安装补丁即可！\n",[25,280,278],{"__ignoreMap":27},[14,282,284],{"id":283},"最后所有相关配置文件附注释","最后所有相关配置文件（附注释）",[262,286,287],{"id":287},"虚拟机配置文件",[18,289,292],{"className":290,"code":291,"language":229,"meta":27},[227],"agent: 1    # Guest Agent选项 虚拟机互联所需 类似于VM Tools\nbios: ovmf      # 虚拟机启动模式\nboot: order=scsi0;ide2;net0     # 启动顺序\ncores: 8        # CPU核心数\ncpu: host,hidden=1,flags=+pcid   # CPU选项\nefidisk0: disk-img:100\u002Fvm-100-disk-1.qcow2,size=128K    # 虚拟机磁盘文件\nhostpci0: 0000:03:00,pcie=1,romfile=RX6600XT.rom,x-vga=1    # 显卡直通配置\nide0: local:iso\u002Fvirtio-win-0.1.185.iso,media=cdrom,size=402812K # Vitrio驱动镜像 半虚拟化硬件所需\nide2: local:iso\u002FSW_DVD9_Win_Pro_10_20H2_64BIT_ChnSimp_Pro_Ent_EDU_N_MLF_-2_X22-41514.ISO,media=cdrom # 安装系统镜像 \nmachine: pc-q35-5.2     # 虚拟机机型\nmemory: 16384       # 内存大小\nname: Win10     # 虚拟机名称\nnet0: virtio=02:F7:CD:B6:9A:56,bridge=vmbr1,firewall=1      # 网卡配置\nnuma: 0     # NUMA配置 默认为0 表示关闭 这个选项非必要一般不需要开启 \nonboot: 1       # 是否开机启动\nostype: win10   # 操作系统类型\nscsi0: disk-img:100\u002Fvm-100-disk-0.qcow2,cache=writeback,discard=on,size=200G    # 虚拟机磁盘文件\nscsihw: virtio-scsi-pci     # SCSI控制器\nsmbios1: uuid=ced7dbb9-bc4f-473b-804e-f9720a6ce54b      # SMBIOS UUID\nsockets: 1      # CPU核心数\nusb0: host=046d:c53f,usb3=1     # USB设备\nusb1: host=0483:522a,usb3=1     # 鼠标\nusb2: host=2-5,usb3=1          # 键盘\nvga: none       # 虚拟机显示输出\nvmgenid: d0749618-e1e9-4a4c-8b51-162eac4f26a4       # 虚拟机UUID\n",[25,293,291],{"__ignoreMap":27},[262,295,297],{"id":296},"grub-配置文件","GRUB 配置文件",[18,299,304],{"className":300,"code":302,"language":303,"meta":27},[301],"language-grub","GRUB_DEFAULT=0\nGRUB_TIMEOUT=5\nGRUB_DISTRIBUTOR=\"Proxmox Virtual Environment\"\nGRUB_CMDLINE_LINUX_DEFAULT=\"quiet nomodeset intel_iommu=on iommu=pt video=efifb:off,vesafb:off pcie_acs_override=downstream,multifunction\"      \n# GRUB启动参数,分别代表:不显示启动画面、不显示内核信息、开启 IOMMU、开启 IOMMU、关闭 efifb、关闭 vesafb、关闭 pcie_acs_override、关闭 multifunction功能\nGRUB_CMDLINE_LINUX=\"\"\nblacklist\nblacklist radeon        # 禁用radeon驱动\nblacklist nouveau       # 禁用N卡开源驱动\nblacklist nvidia        # 禁用官方N卡驱动\nvfio.conf\noptions vfio-pci ids=1002:73ff,1002:ab28 disable_vga=1      # 直通显卡的 pci 地址和类型，禁用虚拟化显卡的显示\n","grub",[25,305,302],{"__ignoreMap":27},{"title":27,"searchDepth":307,"depth":307,"links":308},4,[309,311,312,313,314,315,316,317,318,323],{"id":16,"depth":310,"text":16},2,{"id":44,"depth":310,"text":44},{"id":131,"depth":310,"text":132},{"id":162,"depth":310,"text":163},{"id":169,"depth":310,"text":170},{"id":234,"depth":310,"text":235},{"id":247,"depth":310,"text":247},{"id":256,"depth":310,"text":257},{"id":260,"depth":310,"text":260,"children":319},[320,322],{"id":264,"depth":321,"text":264},3,{"id":273,"depth":321,"text":274},{"id":283,"depth":310,"text":284,"children":324},[325,326],{"id":287,"depth":321,"text":287},{"id":296,"depth":321,"text":297},[328],"技术","2024-11-08 00:00:00","本教程介绍如何在PVE系统下实现AMD独立显卡直通Windows并输出画面，包括主机配置、PVE配置、Windows配置等。",false,"md",null,{"slots":335},{},true,"\u002F2024\u002Fpve-amd-gpu-passthrough-windows-display-guide",{"text":339,"minutes":340,"time":341,"words":342},"8 min read",7.025,421500,1405,{"title":5,"description":330},{"loc":337},"posts\u002F2024\u002Fpve-amd-gpu-passthrough-windows-display-guide",[347,348,349,350],"PVE","AMD","显卡直通","Windows","tech","0xR85ltiyI_YB5tmK4eQ3L3HfcF0J2XjBnRLZ2clsq8",[354,359],{"title":355,"path":356,"stem":357,"date":358,"type":351,"children":-1},"RHEL Linux下新增硬盘，分区并挂载教程","\u002F2024\u002Frhel-add-disk-partition-mount-guide","posts\u002F2024\u002Frhel-add-disk-partition-mount-guide","2024-06-09 00:00:00",{"title":360,"path":361,"stem":362,"date":363,"type":351,"children":-1},"在PVE 8中使用Cloud-init初始化cloud-image并创建模板","\u002F2025\u002Fpve8-cloud-init-cloud-image-template","posts\u002F2025\u002Fpve8-cloud-init-cloud-image-template","2025-03-14 00:00:00",1777395321852]