起因
现在工作电脑是win10,还不太适合升级win11,但是想琢磨一下win11的 WSA (windows Subssytem For Android). 虽然国内不直接支持 安卓子系统,但是网上有办法离线安装.
为什么要用hyper-V下安装win11+wsa ?
今天看了下vmware新版本是 17 , 想着体验下,vmware17 都出了一个 vctl.exe
容器,跟docker类似,有点厉害。 podman 都还没琢磨, vmware vctl 容器就来了.
使用vmware17 安装了win11 ,速度 挺慢的,然后想着开wsl的时候,突然发现, 我主机已经开启 hyper-V + WSL2 , 这个时候vmware是不支持虚拟化的, 里面的操作系统,是无法再次开启虚拟化的,性能受限, 安装就很慢, 无法开启intel XT CPU虚拟化的. (除非关闭主机hyper-V和wsl2 但我不想)
所以想起了 hype-V 支持嵌套虚拟化, 查了一下, hyper-V 可以安装五层hyper-V 然后就卡的不要不要了.按说hyper-V 虚拟机里面的 应该跟外面的 level 一致的啊??? 算了,反正支持 2层 嵌套虚拟化 对于一般人也够用了.
hyper-V 安装win11 需要注意的地方
1 需要开启TPM2.0 以及 CPU 2核+ 内存4GB+ 2 想要开启嵌套虚拟化 , 还需要额外的 使用 PS 来设置 Hyper-V的VM的虚拟化.
实际体验
使用hyper-V 安装win11 , 速度快了很多, 的确微软自己的技术NB的很.
参考链接
- hyper-V 安装win11 提示不符合最低要求 Hyper-v虚拟机安装Windows 11失败问题处理
- 开启嵌套虚拟化 借助嵌套虚拟化在虚拟机中运行 Hyper-V Microsoft Learn
Get-Vm
Set-VMProcessor -VMName win11 -ExposeVirtualizationExtensions $true
Get-VMProcessor -VMName win11 | fl | findstr "ExposeVirtualizationExtensions"
==================================
PS C:\WINDOWS\system32> Get-Vm
Name State CPUUsage(%) MemoryAssigned(M) Uptime Status Version
---- ----- ----------- ----------------- ------ ------ -------
win11 Off 0 0 00:00:00 正常运行 9.0
PS C:\WINDOWS\system32> Get-VMProcessor -VMName win11 | fl
ResourcePoolName : Primordial
Count : 1
CompatibilityForMigrationEnabled : False
CompatibilityForOlderOperatingSystemsEnabled : False
HwThreadCountPerCore : 0
ExposeVirtualizationExtensions : True
EnablePerfmonPmu : False
EnablePerfmonLbr : False
EnablePerfmonPebs : False
EnablePerfmonIpt : False
EnableLegacyApicMode : False
AllowACountMCount : True
Maximum : 100
Reserve : 0
RelativeWeight : 100
MaximumCountPerNumaNode : 6
MaximumCountPerNumaSocket : 1
EnableHostResourceProtection : False
OperationalStatus : {}
StatusDescription : {}
Name : 处理器
Id : Microsoft:67501139-8CA7-4D2B-895A-8D365C16D154\b637f346-6a0e-4dec-af52-b
d70cb80a21d\0
VMId : 67501139-8ca7-4d2b-895a-8d365c16d154
VMName : win11
VMSnapshotId : 00000000-0000-0000-0000-000000000000
VMSnapshotName :
CimSession : CimSession: .
ComputerName : QH-3FD31PC
IsDeleted : False
VMCheckpointId : 00000000-0000-0000-0000-000000000000
VMCheckpointName :
PS C:\WINDOWS\system32> Set-VMProcessor -VMName win11 -ExposeVirtualizationExtensions $true
-----------
MAC 地址欺骗
为了通过两台虚拟交换机路由网络数据包,必须在第一级 (L1) 虚拟交换机上启用 MAC 地址欺骗。 使用以下 PowerShell 命令完成此操作。
PowerShell
Get-VMNetworkAdapter -VMName <VMName> | Set-VMNetworkAdapter -MacAddressSpoofing On
网络地址转换 (NAT)
第二个选项依赖于网络地址转换 (NAT)。 此方法非常适合于无法使用 MAC 地址欺骗的情况,例如在公有云环境中。
首先,必须在主机虚拟机(“中间”虚拟机)中创建一个虚拟 NAT 交换机。 请注意,IP 地址仅作举例之用,会因环境不同有所差异:
PowerShell
New-VMSwitch -Name VmNAT -SwitchType Internal
New-NetNat –Name LocalNAT –InternalIPInterfaceAddressPrefix “192.168.100.0/24”
接下来,将 IP 地址分配给网络适配器:
PowerShell
Get-NetAdapter "vEthernet (VmNat)" | New-NetIPAddress -IPAddress 192.168.100.1 -AddressFamily IPv4 -PrefixLength 24
每个嵌套的虚拟机必须分配有一个 IP 地址和网关。 请注意,网关 IP 必须指向上一步中的 NAT 适配器。 您可能想要分配 DNS 服务器:
PowerShell
Get-NetAdapter "vEthernet (VmNat)" | New-NetIPAddress -IPAddress 192.168.100.2 -DefaultGateway 192.168.100.1 -AddressFamily IPv4 -PrefixLength 24
Netsh interface ip add dnsserver “vEthernet (VmNat)” address=<my DNS server>