VirtualBox无法使用原始模式,因为Hyper-V已在Windows 10上开启。

142

问题:

Failed to open a session for the virtual machine ubuntu.

Raw-mode is unavailable courtesy of Hyper-V. (VERR_SUPDRV_NO_RAW_MODE_HYPER_V_ROOT).

Result Code: E_FAIL (0x80004005)
Component: ConsoleWrap
Interface: IConsole {872da645-4a9b-1727-bee2-5585105b9eed}

更新:

解决方案如下。


1
我使用Win 10和Intel Core i7,它对我很有效。我不知道为什么,但如果你对某些特定设置感兴趣,我可以帮你看一下。到目前为止,我只看到一个区别——我在“Windows功能”中启用了“容器”。虽然我不认为这是原因。当我遇到这个问题时,我只需转到“控制面板\程序\程序和功能”中禁用复选框即可解决问题。我从未在CLI中运行命令。这可能是原因吗? - Yevgeniy Afanasyev
我点赞了你的问题,因为我认为它很重要。但是它设置得不好,我的意思是你在一个帖子中问了几个问题,这很令人困惑。让我在这里通过评论回答你的第四个问题:当你的Hyper-V处于活动状态或者BIOS中禁用虚拟化时,VM Box加速会被禁用。 - Yevgeniy Afanasyev
我曾经为Hyper-V问题苦苦挣扎。问题在于我无法更改处理器和加速设置,也无法运行虚拟操作系统。我尝试删除旧的虚拟机并创建一个新的,但是什么都不起作用。我的系统中的Hyper-V设置在Windows功能下没有列出。BIOS中启用了虚拟化。 解决方案:在Windows Defender安全中心中关闭“核心隔离”。 - Vikas Kumar
我遇到了同样的问题,我按照你的步骤操作。当我到达最后一步时,VM box加速已经启用并且所有项目都已检查。现在,虚拟机已经启动,错误没有显示。谢谢 :) - Günay Gültekin
禁用容器和 Hyper-V 对我有用。 - greg
21个回答

219

您可能需要禁用虚拟化程序。

因此,请按照以下步骤进行:

1) 以管理员身份打开命令提示符

2) 运行 bcdedit 命令以检查虚拟化程序的状态:

bcdedit

3) 检查虚拟机监控程序的启动类型:

显示已标记'hypervisorlaunchtype Auto'命令输出的图像

4) 如果设置为auto,则将其禁用:

bcdedit /set hypervisorlaunchtype off

5) 重新启动主机,并再次启动VirtualBox。


17
禁用它,但这并没有帮助。 - Stepan Yakovenko
3
这对我有用(Windows 10 家庭版)。非常感谢你。 - clo5ure
2
这个方法解决了VirtualBox的问题,但是现在Android Studio无法启动模拟器,这也是我最初必须启用Hyper-V的原因。我的CPU是Ryzen 7,Windows 10 18936(Insider预览版)。 - Violet Giraffe
这个解决方案对我有用,我同时启用了Hyper-V和沙盒,禁用了两者并执行了以下操作。 - Ricardo Pimentel
1
如果您想重新启用 Hyper-V,请运行以下命令:bcdedit /set hypervisorlaunchtype auto - Nuryagdy Mustapayev
显示剩余3条评论

34

这是我用的方法来修复问题的:

  • 点击开始菜单 > 运行,输入gpedit.msc,然后点击确定。打开本地组策略编辑器。 前往本地计算机策略 > 计算机配置 > 管理模板 > 系统 > 设备卫士 > 启用基于虚拟化的安全性。 选择禁用。
  • 前往控制面板 > 卸载程序 > 打开或关闭Windows功能关闭Hyper-V

选择。不要重启计算机。

通过管理员账户在主机上打开命令提示符并运行以下命令删除相关EFI变量:

mountvol X: /s
copy %WINDIR%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y
bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "\EFI\Microsoft\Boot\SecConfig.efi"
bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBS 
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:
mountvol X: /d
注意:确保 X 是未使用的驱动器,否则更改为其他驱动器。
重新启动主机。在启动屏幕上接受提示以禁用 Device Guard 或 Credential Guard。
来源:https://kb.vmware.com/s/article/2146361

1
运行所有更改EFI变量的命令对我来说是一个遗漏的步骤。现在虚拟化可以正常工作了。 - Mykhaylo Kopytonenko
禁用组策略+卸载Hyper V对我有效。我不必处理与EFI相关的变量。 - Faheem
如果安全启动处于活动状态,只有这个解决方案适用于我。否则(如果我不删除EFI变量)......操作系统将无法启动。因此,在现代Windows 10计算机上要小心第一个解决方案! - Filip OvertoneSinger Rydlo

22
  1. 禁用 Hyper-V (控制面板\程序\程序和功能\Hyper-V)

    图片描述

  2. 修改 BCD(bcdedit /set hypervisorlaunchtype off)

    图片描述

  3. 如果启用了核心隔离,请关闭它(Windows Defender 安全中心 > 设备安全性 > 核心隔离)

    图片描述

如果您无法进行修改,则可以在注册表中更改 HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ DeviceGuard \ Scenarios \ HypervisorEnforcedCode Integrity \ Enabled 的值为 0。

图片描述


1
注册表键对我来说不存在,即使在“HKLM/SYSTEM/CurrentControlSet/Control/DeviceGuard”下也是如此。 - Juha Untinen
2
关闭核心隔离是最终解决我的问题的方法。我尝试了主要的建议,比如bcdedit和卸载Hyper-V,但都没能解决问题。 - Justin
尽管截图显示的是不同的语言环境,但这对我有效。 - leeand00
这个方法可行,但对我来说第一步不必要,因为根本没有Hyper-V项目。 - Nianliang
1
取消勾选 Hyper-V 和容器对我有用。感谢解决方案。 - Tarun Reddy
太好了,我在我的笔记本电脑上多年来一直无法同时运行Docker工具箱和VirtualBox。现在第一次成功了...(不能使用Docker for Windows,因为我使用的是Windows 10 Home)。顺便说一句@Loong Chen,为什么不编辑完整路径,这样我们就可以将其复制/粘贴到regedit中:Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity - goamn

16

1)以管理员模式在 Powershell 中运行以下命令:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

2) 以管理员模式在命令提示符中运行以下命令:

bcdedit /set hypervisorlaunchtype off 

在这里输入图片描述

3) 禁用 Hyper-V:控制面板\程序\程序和功能\在这里输入图片描述

4) VMBox 内存大小为: 3155 MB (VMbox->设置->系统)

VMBox 加速已禁用。如何激活它?以及如何解决上述错误?在这里输入图片描述

重新启动您的系统。


8
这很可能是安装Docker引起的。 - Danon
1
是的,肯定是 Docker 导致了我的问题。我的问题是,我想同时运行两个。 - Picl
花了好几个小时,还是没有成功。该死的 Docker。 - Aman
@Danon,我没有安装Docker。 - AKB

11

最终我现在可以修复这个问题了。

首先,我们需要识别或理解问题,大多数人并没有真正发现,我的虚拟机带有Ubuntu 64位的客户操作系统,但是导入后,我们在该虚拟机上检查,显示仅为32位操作系统。

当我们启动虚拟机时,我们遇到错误:


Failed to open a session for the virtual machine ERPNext-Develop-20180331192506.

Raw-mode is unavailable courtesy of Hyper-V. (VERR_SUPDRV_NO_RAW_MODE_HYPER_V_ROOT).

Result Code: E_FAIL (0x80004005)
Component: ConsoleWrap
Interface: IConsole {872da645-4a9b-1727-bee2-5585105b9eed}

我尝试了上述解决方案,但似乎并没有真正起作用,或者我可能遗漏了什么。

然后我注意到上面的一点(32位操作系统),所以我认为问题可能出在这个地方。

在互联网上看到一些帖子,可以解释Windows 10也带有与Oracle VM VirtualBox冲突的Hyper-V。

所以我采取的解决方案是...

1. 在组策略中禁用基于虚拟化的安全

  • 启动Run应用程序并启动: gpedit.msc
  • 转到计算机配置>管理模板>设备防护

进入图像描述

  1. 禁用Microsoft Hyper-V

    • 启动Run应用程序并启动:OptionalFeatures.exe
    • 取消选中:Hyper-V
    • 重新启动电脑

进入图像描述

然后我们就可以使用虚拟机了,它已经启动。在上述两个步骤中,我相信第2步确实解决了问题。

总之,请尝试并告诉我们是否有所帮助。


11
我想学习如何使用vagrant和virtualbox,但当我收到错误信息“由于Hyper-V的原因,原始模式不可用”时,我感到困惑。为了解决这个问题,我认为我已经按照上面提供的所有建议进行了更改(谢谢大家),并进行了一些其他更改。
让我总结一下:
(cmd: optionalfeatures) 关闭“Hyper-V” 关闭“容器” 关闭“适用于Linux的Windows子系统”

Turn off 'Hyper-V' and 'Containers' Turn off 'Windows Subsystem for Linux'

命令提示符: bcdedit /set hypervisorlaunchtype off

bcdedit hypervisorlaunchtype off

(命令提示符:gpedit.msc)
本地计算机策略 -> 计算机配置 -> 管理模板 -> 系统 -> 设备卫士 ->
禁用“启用基于虚拟化的安全性”

Disable Virtualization Based Security

设置 -> 更新和安全 -> Windows 安全 -> 设备安全性 -> 核心隔离详细信息 -> 内存完整性 -> 关闭

enter image description here


我有一个“打开基于虚拟化的安全性”但没有设置值,所以我不知道它是否有帮助,或者是禁用容器,也许更好是禁用容器。谢谢。 - FantomX1

11

查看Windows 10中Hyper-v的状态,

右键单击 <"开始" > → 运行 → OptionalFeatures.exe ,→ 找到 "Hyper-V"选项。

方框应该是空的,未被选中或变灰。

在更改Hyper-v设置后,请务必完全关闭和重新启动主机。

PS

Docker以激活此“Hyper-V”而闻名,而不征求用户意见,然后Oracle VirtualBox就无法工作。


2
我已经提供了Hyper-V的截图。它清楚地显示Hyper-V被禁用了,并且已经重新启动了多次。 - AKB
我知道这个答案对你没有帮助,但它可能会帮助其他人。我们保留它,好吗? - Yevgeniy Afanasyev

5
您需要禁用Windows Hyper-V功能和bcd。然后Virtual Box将在最新的Windows 10版本(2018年1-3月)中运行。 Windows 10 Hyper-V与VirtualBox功能冲突。
我通过以下步骤解决了这个问题-
1. bcdedit /set hypervisorlaunchtype off 2. Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All 3. 重新启动您的Windows
关于此问题的详细讨论可在以下链接中找到- https://forums.virtualbox.org/viewtopic.php?f=6&t=87237 或者,您可以从最新的bash命令中在Windows 10中安装Linux(Ubuntu)- https://www.windowscentral.com/how-install-bash-shell-command-line-windows-10

我在我的电脑上更改了这个(2将此信息放入具有管理员权限的PowerShell中),但是重启后,没有任何效果,还有其他可能性吗? - Mike
概念是不能同时运行2个虚拟机。您必须禁用Windows 10 Hyper V,然后才能安装和运行另一个虚拟机。或者,您可以在Bash模式下直接在Windows 10上安装Ubuntu。 - Riddhi Sanyal
如果在cmd中运行而不是powershell,则修改后的第二个命令为powershell -Command "Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All" - ncoghlan

4
对我来说,以下三项的组合是解决方案:
1. 控制面板 > 打开或关闭Windows功能 > Hyper-V:取消选择
2. 管理员命令提示符 > bcdedit > hypervisorlaunchtype:Auto 禁用: bcdedit /set hypervisorlaunchtype off
3. gpedit.msc > ' 计算机配置 > 管理模板 > 系统 > 设备卫士' > 启用基于虚拟化的安全性: 从“未配置”更改为“已禁用”
重启电脑
注意:重新启动后,VirtualBox可以正常工作,但Docker Desktop的VirtualBox开始抱怨缺少Hyper-V!
额外信息:https://forums.docker.com/t/running-docker-and-virtualbox-on-the-same-machine/23578/13

3

你需要禁用内存完整性。

进入设备安全,然后核心隔离,关闭内存完整性并重新启动。

似乎内存完整性会虚拟化一些进程(在这种情况下是VMware),导致出错。


如果你的控制面板显示“这是由管理员管理的”,你也可以从注册表编辑器中禁用内存完整性。

计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity

双击 Enabled ,将其值从 1 改为 0 以禁用它。


有用的来源:https://forums.virtualbox.org/viewtopic.php?t=86977#p420584


我在我的电脑上更改了这个,但是重启后没有任何效果,还有其他可能性吗? - Mike
@Mike 这个问题有很多不同的答案,所以我猜这是一个新问题。你必须考虑到 Hyper-V 相关的东西可能在你的机器上出了问题,然后诊断那一部分。 - Shafiq al-Shaar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接