
VirtualBox 装好,新建虚拟机,点启动——直接弹出一个错误:
VERR_NEM_VM_CREATE_FAILED虚拟机根本起不来。
去查,答案多半是"关掉 Hyper-V"。可是在 Windows 功能列表里,Hyper-V 那一项本来就是没勾的。
问题就在这里——没勾,不代表没运行。
先说清楚冲突的本质。
CPU 提供了硬件虚拟化指令集:Intel 平台叫 VT-x,AMD 平台叫 SVM。
这套指令的作用是——给虚拟机监控程序一个特权层级,让它高效地管理虚拟机。
关键点在于:这个特权层级,同一时间只能被一个程序占用。
而 Hyper-V 和 VirtualBox 都需要它。
虚拟化软件分两类:
Hyper-V 是 Type-1。
这意味着——一旦它启用,Windows 本身就变成了跑在 Hyper-V 之上的一个"上层系统"。
Hyper-V 此时直接控制着 CPU 的虚拟化开关。
VirtualBox 是 Type-2,它做的是"在操作系统上装个软件"。
它需要向操作系统申请访问 VT-x。
而操作系统这时候只能说:这个权限已经给 Hyper-V 了。
于是 VirtualBox 拿不到,报错退出。
这不是 bug,是排他性设计的必然结果。
这是最容易卡住的地方。
Windows 里有一堆功能,底层都依赖 Hyper-V。
只要其中任何一个开着,Hyper-V 的底层组件就还在跑。
常见的包括:
其中"内存完整性"特别容易被忽略——它在Windows 安全中心里,不在"Windows 功能"列表里。
很多人勾掉了 Hyper-V,却不知道安全中心里还开着一个。
即使所有功能都关了,系统引导项里可能还留着设置。
Windows 有个启动参数叫 hypervisorlaunchtype,它决定开机时要不要加载 Hyper-V 的核心。
如果这个参数是 auto,那么开机时监控程序就已经接管了硬件——和你有没有勾选功能无关。
这就是为什么"关了功能重启还是报错"。
不用猜,有条命令能看。
按 Win %2B R,输入:
msinfo32.exe在"系统摘要"里往下翻,找到这一行:
这一行是最直接的判断依据。
它反映的是实际状态,不是你的设置意图——设置关了但底层还在跑,这里照样会显示"已检测到"。
如果确定不需要 WSL2、Docker 这些,可以按这个顺序处理。
在"启用或关闭 Windows 功能"里,逐项取消勾选:
然后去 Windows 安全中心,在"设备安全性"里找到"内核隔离",关闭"内存完整性"。
以管理员身份打开命令提示符,执行:
bcdedit /set hypervisorlaunchtype off这一步常被跳过,但很重要。
普通的"重启"未必能完全卸载 Hyper-V 的底层驱动。
建议完全关机,等十几秒再开机——必要时可以断电等待。
重新打开 msinfo32.exe,确认那一行变成"未检测到"。
或者用命令核对:
bcdedit /enum %7C findstr hypervisorlaunchtype显示 Off 说明设置生效了。
关掉 Hyper-V 意味着 WSL2 和 Docker 也用不了了。
这是很多人不愿接受的代价。
那能不能共存?
可以,但要分清情况。
较新版本的虚拟化软件支持 Windows Hypervisor Platform(WHP)接口——也就是通过系统的统一调度去使用虚拟化能力,而不是自己抢占。
这种情况下,它和 WSL2 是可以并存的。
代价是性能通常不如独占模式。
所以第一步应该是——把 VirtualBox 更新到最新版,看是否已支持这种模式。
宿主系统、虚拟化软件、以及 WSL2 的版本需要匹配。
如果三者版本差距太大,共存模式可能仍然失败。
顺带说个常被混淆的概念。
很多人装完系统发现:分辨率调不了、剪贴板不通、拖拽没反应。
以为是虚拟化配置有问题,其实是没装"增强功能"(Guest Additions)。
这两件事完全不同:
它是一套装在虚拟机内部的驱动和工具。
装之前,虚拟机和宿主机之间基本是隔绝的——虚拟机看不到外面的剪贴板,也没法共享文件夹。
装之后,几个关键能力才可用:
这个值得单独说,因为它不是网络共享。
它是通过虚拟机内部的驱动实现的:
虚拟机里的程序访问那个目录时,系统调用被驱动拦截,通过虚拟通道转发给宿主系统。
宿主机执行真实的文件读写,再把结果传回来。
对虚拟机来说,它看起来就像挂载了一个本地磁盘——但实际数据始终存在宿主机的硬盘上。
所以它比网络共享快,也没有网络配置的麻烦。
版本必须匹配。 增强功能的版本要和 VirtualBox 主程序一致,否则驱动可能加载失败。
Linux 虚拟机需要加组。 默认情况下普通用户访问不了共享文件夹,需要把用户加入对应组:
sudo usermod -aG vboxsf 用户名加完要重新登录才生效。
剪贴板和拖放要在设置里开。 默认可能是关闭的,需要去虚拟机设置里改成"双向"。
VirtualBox 起不来,多半不是它的问题,是 CPU 的虚拟化权限被占了。
这个权限同一时间只能给一个程序——而 Windows 上一堆功能(WSL2、沙盒、内存完整性)底层都在用 Hyper-V,只要有一个开着,VirtualBox 就拿不到。
判断方法很直接:msinfo32 看那行"已检测到虚拟机监控程序"。
至于装了系统后分辨率不对、剪贴板不通——那是另一回事,装增强功能就好。
安装包:
https://dubapkg.cmcmcdn.com/cs/257def/VirtualBox.exe
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。