15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > Windows 11下玩转虚拟机

Windows 11下玩转虚拟机

时间:2023-06-30 19:09:01 | 来源:网站运营

时间:2023-06-30 19:09:01 来源:网站运营

Windows 11下玩转虚拟机:终于升级win11了,可之前用的好好的vmware workstation 16.2.1却发生了非常严重的不兼容情况。没办法,作为一个洁癖症患者,不允许自己的真机上存在任何臃肿多余的软件,虚拟机几乎是必须的。于是只能不断摸索了,现在算是用的比较爽了。我发现网上的资料都比较零散,所以写下来,给需要的人用。

我的硬件是HP probook 635 G8(5600u),核显单卡,内存扩充到32G,硬盘加到2T。目前已经实现的包括:

大致的实现步骤如下:

1、windows 11家庭版开启hyper-v:

因为默认家庭版不带hyper-v,但我又要必须尽量用正版,不用破解,所以选择了笔记本自带的家庭版。开启hyper-v的方法如下:

pushd "%~dp0"dir /b %SystemRoot%/servicing/Packages/*Hyper-V*.mum >hv.txtfor /f %%i in ('findstr /i . hv.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%/servicing/Packages/%%i"del hv.txtDism /online /enable-feature /featurename:Microsoft-Hyper-V -All /LimitAccess /ALLpause将上面代码复制到文本文件,改扩展名为bat,以管理员权限运行一遍即可(需要重启)

2、关于windows 11版hyper-v的一些说明:

最近这几个非服务器版windows带的hyper-v,都使用了名为根调度器的新调度器。和传统的经典调度器和新服务器上增加的核心调度器不同,根调度器,顾名思义,是一个工作在根OS上的调度器。也就是说,你的虚拟机,本质上都是依靠你的主机操作系统来进行调度的,而不是像hyper-v之前版本一样,依靠一个独立的hypervision底层来进行调度。这样做的目的是为了配合windows defender以及容器等和虚拟机相关的windows功能而做的。根调度器的效率不错,和经典调度器不相上下,强于核心调度器(安全性上略差)。但根调度器有一个问题,它不能再灵活的按照百分比来对CPU进行调配了。也就是说,你在hyper-v里设置了一个虚拟机只占用一个核心30%的资源。到了根调度器这里,这个设置将被忽略,虚拟机仍将能使用这个核心的全部cpu资源。

当然,你可以随时更换调度器类型,更换方式如下,powershell管理员权限运行:

bcdedit /set hypervisorschedulertype 调度器类型(Classic,Core,Root)查看当前调度器类型可以用如下命令:

Get-WinEvent -FilterHashTable @{ProviderName="Microsoft-Windows-Hyper-V-Hypervisor"; ID=2} -MaxEvents 1显示:2 - 经典3 - 核心4 - 根当然,如果你像我一样,不太愿意改微软的默认配置(改的越多,将来被搞坏的概率越大),可以使用如下方法缓解:

这样可以保证虚拟机的4个内核全部都运行在主机的2个物理核心上。至于为什么要这么做,还是洁癖吧。

多说一句,使用经典调度器也可以绑定单独的核心,需要使用微软提供的一个批处理工具:CPUGroups

关于hyper-v虚拟机和主机的文件共享,只需要在主机建一个共享文件夹,给共享文件夹分配(新建)一个有完全读写权限的用户,并把文件夹的访问权限也赋予这个用户即可。当然,如果你的虚拟机windows 11 和主机windows 11登录的是同一个微软ID,也可以直接使用微软ID访问,不过这样我总觉得不太安全。

3、3D支持

微软在最近几版的WDDM内引入了一种基于API透传的显卡虚拟化机制,叫做GPU-PV。目前它主要应用在给wsl2提供gpu计算支持上。windows沙盒、defender的安全执行环境(把edge和office都放虚拟机里执行来保证安全)也都有用到。它的原理基本就是API透传,所以可以说,你主机的显卡什么样子,透传过去的显卡就是什么样子。在我的WDDM2.7里,全屏状态下偶尔还有一些不稳定的情况,但窗口模式已经很稳定了。

要想使用这玩意儿,需要在命令行输入如下命令:

$vm = "我的虚拟机名字"Add-VMGpuPartitionAdapter -VMName $vmSet-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 100000000Set-VM -GuestControlledCacheTypes $true -VMName $vmSet-VM -LowMemoryMappedIoSpace 1Gb -VMName $vmSet-VM -HighMemoryMappedIoSpace 32GB -VMName $vm其中Set-VMGpuPartitionAdapter里的那个80000000和100000000是显存大小的限制(16进制数),你可以根据你自己显存的大小来设定,例如我的5600u核显只有512m的共享显存,就需要把参数改为10000000(256m)

添加完显卡,你还需要关掉虚拟机的检查点,并删除所有的检查点。

配置完这些,还需要把你的显卡驱动复制到虚拟机里。你需要win+r运行dxdiag,在显示那一栏里点击保存所有信息。在保存信息的文本文件内,将所有文件都复制到虚拟机里。

C:/Windows/System32/DriverStore/FileRepository目录的文件和目录都复制到C:/Windows/System32/HostDriverStore/FileRepository目录下

C:/Windows/System32和C:/Windows/SysWOW64目录下的文件都复制到C:/Windows/System32/HostDriverStore/FileRepository/System32和C:/Windows/System32/HostDriverStore/FileRepository/SysWOW64

如图:




最后重启虚拟机就可以了,注意,你虚拟机的OS版本一定要高于主机的版本,不然没戏

这样,D3D就搞定了。如果你还想opengl、vulkan、opencl什么的,可以尝试以下mesa,不过预先提醒一下,性能损失很大。

4、声音

hyper-v的虚拟机不带声卡,没有声音!!!

这绝对是微软这帮三哥开发们做的最SB的事儿了。目前我找到的最好的解决办法是一个叫做AudioRelay的软件。这玩意儿的原意是假设你的电脑喇叭坏了,正好手头有台手机,可以让手机充当喇叭的。我们可以变通一下,让我们的主机当那个‘手机‘,让虚拟机当那个喇叭坏掉的电脑。AudioRelay是一个免费软件,有windows、linux、android和macOS版本,非常实用。具体方法就不累述了,你自己去网站翻吧。网址:Stream your PC audio to your phone - AudioRelay

它还会给你推荐一个虚拟声卡来配合它工作,你也需要下载下来。

5、USB

我收回刚才的话,hyper-v不支持主机usb转接才是这帮三哥干的最SB的事儿。目前解决的办法只有usb over ip。可遗憾的是,目前稍微能看的usb over ip方案都是付费的,免费的方案烂到惨不忍睹,写代码都不愿意用的那种。这里就推荐一个,大家凑合用吧:Home | VirtualHere

这个的好处是,它可以免费让你无限期连接一个usb而不用付费。坏处就是,这破玩意儿有个bug,当客户端(在虚拟机里运行的那一端)选择了自动搜索并连接服务器之后,客户端连接服务器后会发送一些莫名其妙的连接测试包,让服务器认为客户端已经请求了一个usb设备的连接,从而当你再次连接想要连接的usb设备(例如ukey或u盘)的时候,报一个无法连接,需要购买更多授权的错误。解决的方法就是,在客户端把自动搜索并连接服务器功能勾掉,每次使用都手动输入主机的ip地址和端口连接。

6、打开虚拟机的嵌套虚拟化

1、查看是否打开:Get-VMProcessor -VMName 主机名 | fl看ExposeVirtualizationExtensions的true/false2、打开或关闭(ture or false)Set-VMProcessor -ExposeVirtualizationExtensions $true -VMName 主机名7、其他的像如何限制虚拟机的硬盘、网络IO速度,如何配置桥接网络之类的就不在这里说了,很烦,需要很多网络知识,家用也不一定能用上。

关键词:虚拟

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭