原文链接: https://mp.weixin.qq.com/s/zNubQcNOePB7Y4AWfou0Yg
前言
从前几年开始,我平时使用的虚拟机就换成了hyper-v,当然PVE也会使用(作为服务器挂机用,后面出个文章说下),VMware是完全抛弃不用了。
至于为什么不用VMware,好像也没啥理由,就感觉hyper-v使用更顺手一点。我现在所有的工作都在虚拟机里操作,主机现在基本没装什么软件,这样方便迁移和备份。
安装
在控制面板\程序\程序和功能
中的启用或关闭Windows功能
里勾选你需要的,说个小技巧,在文件资源管理器输入路径回车后可以直接打开这个界面
如果你只需要使用hyper-v的话勾选红色的即可,我一般是将Linux子系统(WSL)和Windows沙盒一起勾选了。hyper-v用来跑Windows,WSL则是跑Linux(虽然hyper-v也能安装Linux,但是实测下来不如WSL好用)。
勾选后等待安装完成后会提示重启(注意需要开启Windows更新,如果之前禁用了Windows更新会失败),重启后就能在开始菜单栏里搜索到一个Hyper-v管理器
,
如果是家庭版系统,需要使用powershell脚本安装,百度搜索一下很多文章,基本都是一样的脚本内容。
操作
新建
快速创建
这个没用过, 我都用的第二个新建
,下面简单截图一下流程:
指定代数
这个选项我一般都选第二代,能选最新的就不选旧的。
分配的内存大小可以按需自己填写,这个动态内存的勾我一般是不选的,因为我电脑内存是64G的,不会出现内存不够的情况。
网络的话就选默认创建的网络,后面再细说一下怎么设置网络桥接。
虚拟机磁盘大小的话也是按需填写,默认创建的磁盘是动态扩展的磁盘,也就是有多少文件占用多少空间,但是它有一个问题:当你删除文件时不会自动释放空间,得你手动用powershell命令释放空间。
所以我一般新建完虚拟机后再新建一个固定大小的磁盘,将默认创建的磁盘替换掉,我很少用动态扩展类型的磁盘。
下一步选择需要安装的系统ISO镜像文件
创建完虚拟机后先不着急启动,先右键进入设置页面,将检查点关了,也可以调整一下cpu的核数。检查点类似VMware的快照,可以恢复虚拟机状态。如果你需要的话可以先不关,但我觉得不太好用。
如果是安装的win11则还需要勾选启用受信任的平台模块
接着就是启动虚拟机(右键连接然后点启动),启动的过程中需要按F2,可以狂点直到虚拟机进去转圈页面。如果不按F2就会出现下面的错误界面
后面就跟正常安装系统一样了,就不多说了,没有安装完成的时候是无法全屏显示。这是因为rdp服务还没有正常启动,hyper-v的增强服务其实就是rdp的封装。
导入导出虚拟机
需要先右键某个虚拟机选择导出
,然后才能在以后或者其他机器上导入。如果是其他机器的Win11的虚拟机,还需要同时导入相关证书才能启动。不然会出现The key protector could not be unwrapped
的错误,这个遇到的时候自己百度下。
Hyper-v设置
这个没什么可说的,就设置下新建虚拟硬盘和虚拟机默认存储位置,其他设置我也没用过。
虚拟网络交换机
这里的外部
就是桥接网络(可以选择桥接哪个网卡),内部
是Nat网络,专用
这个没用过不知道是什么。
要添加网络的话在虚拟机设置里网络适配器
切换网络,或者添加硬件
在添加一个网络适配器
编辑磁盘
这个编辑磁盘只能扩展磁盘空间,不能用于压缩磁盘空间。如果需要压缩磁盘大小只能用powershell来操作,之前用过已经忘了怎么操作了,到时候用到的时候再看
其他操作
即使没开启检查点,也可以右键在运行的虚拟机选择保存
可以将当前运行的虚拟机状态保存到磁盘文件,下次直接启动就会恢复。这个功能还挺好用的,比如我的笔记本中午太吵了,我就会先保存虚拟机,睡完午觉再启动。
显卡共享
直接创建的虚拟机无法使用主机显卡,需要一些特殊的操作才能让虚拟机共享主机显卡。
参考链接: https://blog.shigure.fun/laptop_gpu_hyperv/
总结来说总共就两个步骤:
- 设置显卡共享
- 复制显卡驱动
设置显卡共享
先用管理员运行powershell执行(设置脚本为宽松模式,不然执行不了脚本):Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
将下面的保存为gpu.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
显卡的路径可以通过Get-VMPartitionableGpu
或Get-VMHostPartitionableGpu
查看(Name字段),如果有多个显卡,不知道是哪个的话可以在设备管理器里硬件Id看,
显卡共享
显卡的驱动路径也在设备管理器里的驱动程序详细信息里看
主机驱动路径(驱动大小大概1G多): C:\WINDOWS\System32\DriverStore\FileRepository\nvcvi.inf_amd64_3fb1ec653d065ff1
虚拟机目录(需要自己创建): C:\WINDOWS\System32\HostDriverStore\FileRepository
先将虚拟机关机,然后双击虚拟机的磁盘文件将磁盘挂载到主机。将主机驱动整个文件夹复制到虚拟机目录里,接下来复制宿主机中的 C:\Windows\System32\nvapi64.dll
到虚拟机中的C:\Windows\System32
。
然后将挂载的磁盘分离后开启虚拟机就能在虚拟机的设备管理器看到显卡是正常工作的。这个在任务管理器不会显示。
之前按其他文章设置出现显卡43错误,应该是没有设置显卡路径的原因。按上面给的那个文章的话显卡就正常工作。