设置主机和 VM
- 在 PowerShell 中运行以下命令,使用 GPU 创建 VM。 创建名为 TEST 的 VM。
$vm = “TEST“
New-VM -VMName $vm -Generation 2
Set-VM -GuestControlledCacheTypes $true -VMName $vm
- 为 VM 设置 IO 空间。 GPU-PV 使用 IO 空间来处理 CPU 可见的分配。 至少需要 8GB 的 IO 空间。
Set-VM -LowMemoryMappedIoSpace 1GB -VMName $vm
Set-VM -HighMemoryMappedIoSpace 16GB -VMName $vm
- [可选]默认情况下,高内存 IO 空间的基址设置为 (64GB - 512MB)。 在具有 36 位物理内存寻址的 Haswell 芯片集上,IO 空间区域的结束地址需要低于 64GB,因此需要相应地设置起始地址。 使用以下参数运行时,以下脚本名为 SetHighMmioBase.ps1,将起始地址设置为 47GB:
SetHightMmioBase.ps1 “TEST” 48128
# SetHighMmioBase.ps1
param( [string]$VmName, $BaseInMB)
function Get-WMIVM
{
[CmdletBinding()]
param(
[parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[string]$VmName = ""
)
gwmi -namespace root\virtualization\v2 -query "select * from Msvm_ComputerSystem where ElementName = '$VmName'"
}
function Get-WMIVmSettingData
{
[CmdletBinding()]
param(
[parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[string]$VmName = ""
)
$vm = Get-WMIVM $VmName
return $vm.GetRelated ("Msvm_VirtualSystemSettingData","Msvm_SettingsDefineState",$null,$null, "SettingData", "ManagedElement", $false, $null)
}
Write-Host "Setting HighMmioGapBase to $BaseInMB for VmName $VmName"
$vssd = Get-WMIVmSettingData $VmName
$vmms = Get-WmiObject -Namespace "root\virtualization\v2" -Class Msvm_VirtualSystemManagementService
$vssd.HighMmioGapBase = $BaseInMB
$settingsText = $vssd.PSBase.GetText("CimDtd20")
$ret=$vmms.ModifySystemSettings($settingsText).ReturnValue
if ($ret -eq 0)
{
Write-Host "Successfully set" $vssd.HighMmioGapBase
} else
{
Write-Host "Error $ret"
}
- 将虚拟 GPU 添加到 VM 并禁用检查点
Add-VMGpuPartitionAdapter -VMName $vm Set-VM -CheckpointType Disabled -VMName $vm
- 若要检查 VM 是否具有半虚拟化 GPU,请执行以下命令:
Get-VMGpuPartitionAdapter -VMName $vm in PowerShell. The output should show the adapter.
# Example output from running the command
MinPartitionVRAM :
MaxPartitionVRAM :
OptimalPartitionVRAM :
MinPartitionEncode :
MaxPartitionEncode :
OptimalPartitionEncode :
MinPartitionDecode :
MaxPartitionDecode :
OptimalPartitionDecode :
MinPartitionCompute :
MaxPartitionCompute :
OptimalPartitionCompute :
Name : GPU Partition Settings
Id : Microsoft:9ABB95E2-D12D-43C3-B840-6F4A9CFB217B\929890BC-BB33-4687-BC1A-F72A4F1B3B3F
VMId : 9abb95e2-d12d-43c3-b840-6f4a9cfb217b
VMName : TEST
VMSnapshotId : 00000000-0000-0000-0000-000000000000
VMSnapshotName :
CimSession : CimSession: .
ComputerName : MYCOMPUTER-TEST2
IsDeleted : False
VMCheckpointId : 00000000-0000-0000-0000-000000000000
VMCheckpointName :
-
将 VM 中使用的同一客户端版本的 VHDX 复制到主机目录。 例如,
d:\VM\os.vhdx
。 - 打开 Hyper-V 管理器并修改 VM 参数(选择 VM 并选择“设置”):
- 安全性 - 取消选中 启用安全启动。
- 内存 - 选中“启用动态内存”。 将内存量设置为 1,024 MB 或更多。
- 处理器 - 将 虚拟处理器数 设置为 2 或 4。
- 网络适配器 - 从下拉列表中选择要用于 VM 的网络适配器。 如果启用了网络调试,请确保选择Microsoft调试NET适配器。
- SCSI 控制器 - 硬盘驱动器 - 添加 - 虚拟硬盘 - 浏览 - 选择 d:\VM\os.vhdx
- 当在来宾中初始化适配器时,OS 会将文件从主机驱动程序存储复制到来宾中的 HostDriverStore 目录。
- 挂载 VM 的 VHDX。 例如,挂载到磁盘 f:。
- 在装载的 VM 中,创建名为 f:\%windir%\system32\HostDriverStore\FileRepository的目录。
- 将主机中的 %windir%\system32\DriverStore 驱动程序文件复制到 VM。 VM 中应有 f:\%windir%\system32\HostDriverStore\FileRepository\YourDriverDirectory\* 。
-
如果驱动程序需要从
%windir%\system32
或%windir%\syswow64
访问文件,请手动将文件复制到 VM。 - 如果驱动程序没有经过 Microsoft 签名,请在 VM 中启用测试签名。 在 CMD 管理窗口中运行以下命令:
bcdedit /store <VM drive>:\EFI\Microsoft\Boot\BCD -set {bootmgr} testsigning on
卸载 VM 的 VHDX。
-
启动 VM。
-
使用“Hyper-V 管理器连接”选项连接到 VM。