🤔问题:
现象一:Windows的wsl安装linux虚拟机遇到虚拟化不支持的问题:
类似如下界面:
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x80370102
Please enable the Virtual Machine Platform Windows feature and ensure virtualization is enabled in the BIOS.
For information please visit https://aka.ms/enablevirtualization
或:
PS C:\Users\Administrator> wsl --import Ubuntu-24 D:\WSL\Ubuntu2404 D:\WSL\Ubuntu2404\ubuntu-24.04.3-wsl-amd64.wsl --version 2 请启用虚拟机平台 Windows 功能并确保在 BIOS 中启用虚拟化。 有关信息,请访问 https://aka.ms/wsl2-install PS C:\Users\Administrator>
现象二:
docker desktop中启动失败:
Virtualization support not detected
Docker Desktop requires virtualization support to run. Contact yourIT admin to enable virtualization or check system requirements.
🐲物理主机解决方法:
需要三个关键条件全部满足:
1. 启用 Windows 的“虚拟机平台”功能
可以通过图形界面或者命令行的方式设置。
1)图形界面
打开
控制面板 → 程序 → 启用或关闭 Windows 功能
勾选:
虚拟机平台 (Virtual Machine Platform)
适用于 Linux 的 Windows 子系统 (Windows Subsystem for Linux)
设置界面:
确定 → 重启
2)或者用命令行(管理员 PowerShell)
powershell
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
执行后重启
2. 在 BIOS/UEFI 中开启 CPU 虚拟化
不开这个,Windows 再怎么设置也没用
1)检查CPU是否开启了虚拟化
管理员模式运行:
powershell
Get-CimInstance -ClassName Win32_Processor | Select-Object Name, VirtualizationFirmwareEnabled
如果
VirtualizationFirmwareEnabled
显示True
→ VT‑x 已开启如果是
False
→ 需要重启进 BIOS/UEFI 手动开启
2)进入 BIOS 开启 VT‑x
重启电脑,出现品牌 Logo 时快速按:
桌面主板常用:
DEL
或F2
品牌机/笔记本:
F2
、F10
、ESC
(视厂商而定)
找到相关菜单(可能在 Advanced / CPU Configuration / Processor 下):
Intel Virtualization Technology
VT‑x
Intel VT‑d(可选,涉及 I/O 虚拟化)
设为 Enabled
保存并退出(通常是
F10
)
3. 确认 Hyper-V 内核已启用
虽然你不一定用 Hyper-V 管理器,但 WSL 2 会用到它的内核功能。
1)检查 Hyper-V内核是否已启用
powershell
bcdedit /enum | findstr -i hypervisorlaunchtype
显示auto表示已启用,如果显示 Off,就需要设置。
2)设置启动
Hyper-V内核
powershell
bcdedit /set hypervisorlaunchtype Auto
然后重启。
或者图形化方式:
🐲云服务器的探索方法
在 物理服务器 上,你通常可以在 BIOS/UEFI 里看到 Intel VT-x(Virtualization Technology) 的开关选项,可以手动开启或关闭。
但是在 云服务器(云主机) 上,情况不一样:
1. 云服务器上的 BIOS 为什么没有 VT-x 选项?
云服务器本身是运行在 云厂商的虚拟化平台 上(比如 KVM、Xen、VMware、Hyper-V 等),你拿到的云主机并不是物理机,而是虚拟出来的一层。
VT-x 这类硬件虚拟化特性需要 底层物理 CPU 提供支持,并由云厂商的虚拟化层决定是否对上层云主机暴露。
因此,在云服务器 BIOS 里,你通常看不到「Intel Virtualization Technology」这种选项。
2. 那怎么在云服务器里使用 VT-x?
如果云厂商支持 嵌套虚拟化(Nested Virtualization),你就可以在云主机里再运行 KVM/VMware/VirtualBox 等。
这种情况下,云厂商会在创建云主机时提供一个选项(有些叫“开启嵌套虚拟化”或者“允许硬件虚拟化”)。
例如:
阿里云:ECS 支持嵌套虚拟化,但需要在控制台或工单申请开通。
腾讯云:同样需要工单申请“嵌套虚拟化”。
Google Cloud / AWS EC2:部分实例类型支持 nested virtualization,可以直接开启。
3. 怎么确认云主机有没有 VT-x?
1)Get-WmiObject命令版本
Windows2022之前的版本,Get-WmiObject可用,则使用下面方式检测。
在 PowerShell 里运行:
Get-WmiObject -Class Win32_Processor | Select-Object Name, SecondLevelAddressTranslationExtensions, VirtualizationFirmwareEnabled, VMMonitorModeExtensions
输出示例:
Name : Intel(R) Xeon(R) CPU ...
SecondLevelAddressTranslation... : True
VirtualizationFirmwareEnabled : True
VMMonitorModeExtensions : True
VirtualizationFirmwareEnabled = True
→ 表示 VT-x 已经启用False
或缺失 → 就是没有开放
2)Get-CimInstance命令版本
Windows 云服务器如果是 Windows Server 2022 / Windows 11 以后的环境,微软已经弃用 Get-WmiObject
了,需要换成 Get-CimInstance
:
Get-CimInstance -ClassName Win32_Processor | Select-Object Name, SecondLevelAddressTranslationExtensions, VirtualizationFirmwareEnabled, VMMonitorModeExtensions
执行结果示例:
输出里关键字段含义:
SecondLevelAddressTranslationExtensions
True = 支持 SLAT(嵌套页表,现代虚拟化必备)
VirtualizationFirmwareEnabled
True = BIOS/固件里开启了虚拟化(等价于 VT-x 已经启用)
False = 没开启(在云里通常是云厂商没开放)
VMMonitorModeExtensions
True = CPU 硬件支持虚拟化扩展(Intel VT-x 或 AMD-V)
4. 总结
云服务器 BIOS 里 不会提供 VT-x 开关,能否用取决于云厂商是否开放。
想用 VT-x(比如要在云主机里再跑虚拟机)→ 需要:
使用支持 嵌套虚拟化 的实例规格;
在控制台开启,或者联系云厂商申请。