双显卡笔记本 HyperV GPU虚拟化 踩坑记录

正文之前

本文是针对特定情况(笔记本双显卡)来配置的,如果你只有一张显卡,那大可不必继续阅读下去,可以直接看最底下的相关链接找一个讲得更详细的文章。

如有可能,请尽可能使用自动化脚本 https://github.com/jamesstringerparsec/Easy-GPU-PV

自动化脚本局限较高,比如要求宿主机和虚拟机为统一系统,笔记本显卡支持可能不完善,但好处是简单省事。

不过我用自动化脚本遇到了 PowerShell 权限不足的报错,是没有权限读取虚拟机磁盘中的系统目录,尝试给予权限无果后,决定手动配置。

配置

  • 宿主机: Windows 11 Pro 22563.1
  • 虚拟机: Windows 10 Pro 21H2
  • 显卡: R7 5800H自带核显 + NVIDIA RTX 3070 Laptop GPU(不支持显卡直连)

效果图

个人需求,只将独显虚拟化了,此图为在虚拟机上跑甜甜圈的效果图。

虚拟机甜甜圈测试

Step0 准备工作

  1. Windows Features 中启用 HyperV
  2. 下载虚拟机镜像,下载什么镜像取决你自己的需求,可以使用 Rufus 来下镜像,如下图
Rufus 下载 windows iso

Step1 安装虚拟机

这一步没什么要说的,看个人需求安装就行,记得关掉 Dynamic Memory (我不知道为什么,但是所有的教程都把它关了)。

记录下你虚拟机的名称,这里我们假设它 $vm = 'win10',下文中所有提到虚拟机名称的地方,都会用 $vm 来替代。

Step2 配置显卡

以下所有 PowerShell 脚本建议在 Windows PowerShell ISE 中运行。

上文我提到过,由于我是双显卡设备,所以不能像其他文章一样直接添加显卡,默认可能会添加核显上去,这完全没法用嘛!所以需要指定显卡给它。


# get_gpu.ps1

Get-VMPartitionableGpu

运行它,然后你会看到所有符合条件的显卡,它没有告诉我显卡名称,只是给了一长串的Name, 那就一个个试过去嘛,当然记得从后往前试,这里记录下来 Name,后面指定显卡要用。

# get_gpu.ps1 output
Name  : \\?\PCI#VEN_10DE&DEV_249D&SUBSYS_128C1043&REV_A1#4&29f08f2d&0&0009#{064092b3-625e-43bf-9eb5-dc845897dd59}\GPUPARAV

接下来,就可以往虚拟机中添加显卡。

# set_vm.ps1

$vm = "win10"
$gpu_path = "\\?\PCI#VEN_10DE&DEV_249D&SUBSYS_128C1043&REV_A1#4&29f08f2d&0&0009#{064092b3-625e-43bf-9eb5-dc845897dd59}\GPUPARAV"

Remove-VMGpuPartitionAdapter -VMName $vm
Add-VMGpuPartitionAdapter -VMName $vm -InstancePath $gpu_path

Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionVRAM 80000000 -MaxPartitionVRAM 100000000 -OptimalPartitionVRAM 100000000 -MinPartitionEncode 80000000 -MaxPartitionEncode 100000000 -OptimalPartitionEncode 100000000 -MinPartitionDecode 80000000 -MaxPartitionDecode 100000000 -OptimalPartitionDecode 100000000 -MinPartitionCompute 80000000 -MaxPartitionCompute 100000000 -OptimalPartitionCompute 100000000

Set-VM -GuestControlledCacheTypes $true -VMName $vm
Set-VM -LowMemoryMappedIoSpace 1Gb -VMName $vm
Set-VM -HighMemoryMappedIoSpace 32GB –VMName $vm

代码的前两行,分别是虚拟机的名称和显卡的路径。第三行是移除已经添加的显卡,无视这行可能出现的报错(如果你之前没添加过显卡这里就会报错),这一步是确保没有显卡已经被添加进去了。 第四行是添加显卡,接下来的配置是抄来的,我看不懂( 没错。如果报错的话,考虑去其他地方抄点别的配置过来。

Step3 复制驱动

其他众多文档都只是说复制 nv_dispi.inf_amd64* 这个文件夹,但是我这里并没有这个文件夹,所以提供一个可能通用的方案。

win + r 输入 dxdiag ,点击 Save All Information 导出文件,然后在系统中打开文件,搜索你的显卡型号,再稍微往下一点的地方,可以找到

Driver Name: C:\WINDOWS\System32\DriverStore\FileRepository\nvamig.inf_amd64_ce72d4a089c320b0\nvldumdx.dll,C:\WINDOWS\System32\DriverStore\FileRepository\nvamig.inf_amd64_ce72d4a089c320b0\nvldumdx.dll,C:\WINDOWS\System32\DriverStore\FileRepository\nvamig.inf_amd64_ce72d4a089c320b0\nvldumdx.dll,C:\WINDOWS\System32\DriverStore\FileRepository\nvamig.inf_amd64_ce72d4a089c320b0\nvldumdx.dll 

要做的是复制宿主机 C:\WINDOWS\System32\DriverStore\FileRepository\nvamig.inf_amd64_ce72d4a089c320b0 这个文件夹,到 虚拟机中的 C:\WINDOWS\System32\HostDriverStore\FileRepository 这里,注意虚拟机的HostDriverStore文件夹可能需要自己创建。如果遇到复制权限不足的情况,可以先复制到虚拟机的桌面上,再从虚拟机的桌面复制进System32

接下来复制宿主机中的 C:\Windows\System32\nvapi64.dll 虚拟机中的C:\Windows\System32 。重启虚拟机,然后就大功告成了(应该?

正文之后

Step2 和 Step3 可能可以颠倒顺序。如果想用此方式打游戏的话,可以试试Parsec


相关文章

https://jasper1024.com/jasper/ioubn7891wc/

评论

  1. NewBayStanly
    3周前
    2022-5-02 6:04:36

    404和bing都找全了,就你一个muti GPU指定独显是成功的,可惜我宿主机是21H2,命令缺失指定不了独显

    • 废纸时雨 博主
      2周前
      2022-5-02 12:47:56

      缺失了啥命令呢
      话说我也是找了好多篇教程经验才总结出一个能用的。。

      • NewBayStanly
        2周前
        2022-5-04 2:35:31

        Add-VMGpuPartitionAdapter 缺少 -InstancePath 参数

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇