【问题标题】:Vagrant up - VBoxManage.exe error: VT-x is not available (VERR_VMX_NO_VMX) code E_FAIL (0x80004005) gui headless [closed]Vagrant up - VBoxManage.exe 错误:VT-x 不可用(VERR_VMX_NO_VMX)代码 E_FAIL(0x80004005)gui headless [关闭]
【发布时间】:2020-08-21 03:27:57
【问题描述】:

机器:Window10(64 位)。

我下载了最新的 VirtualBox、Vagrant 并初始化了 CentOS 6.7 64bit image/url。

以下在 Git-Bash 会话中成功运行。
1. vagrant box 添加 "centos67x64" "https://github.com/CommanderK5/packer-centos-template/releases/download/0.6.7/vagrant-centos-6.7.box"
2. 流浪初始化
3. 更新了 Vagrantfile(并打开了 vb.gui 选项,即取消注释文件中的配置部分)。

  config.vm.provider "virtualbox" do |vb|
    # Display the VirtualBox GUI when booting the machine
    vb.gui = true

    # Customize the amount of memory on the VM:
    vb.memory = "2048"
  end

之后,我尝试了以下命令,但收到此错误消息。

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'centos67x64'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: vv_default_1466548735200_80300
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["startvm", "ae74ebaa-8f01-48cf-bdad-956c59ef1208", "--type", "gui"]

Stderr: VBoxManage.exe: error: VT-x is not available (VERR_VMX_NO_VMX)
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component ConsoleWrap, interface IConsole

如果我关闭/评论整个 Vagrantfile 相应部分,我仍然会收到以下错误。

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["startvm", "ae74ebaa-8f01-48cf-bdad-956c59ef1208", "--type", "headless"]

Stderr: VBoxManage.exe: error: VT-x is not available (VERR_VMX_NO_VMX)
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component ConsoleWrap, interface IConsole

任何想法!我查看了其他帖子,但在我的情况下找不到解决方法。

当我得到一些提示时,我尝试了一种解决方案。

  1. 关闭我猜在 Windows10 中默认关闭的 Hyper-V。
  2. 为此,我进入 Windows10 的控制面板并查看这里并找到了这个。

  3. 然后,我通过取消选中(勾选标记或黑框)关闭了 Hyper-V。

  4. Windows10 告诉我要重新启动,我说“不”(稍后)。
  5. 尝试再次运行“vagrant up”(没有或没有任何更改或上述 config.vm... 对 Vagrantfile 的更改)。它不起作用,并给了我相同的 --headless 错误消息。

  6. 好的,该重启了。重新启动Windows10。重启后,我看到一堆Virtual Box的错误信息弹出(下面显示的很少)。

  1. 在所有这些 Virtual Box 弹出窗口上单击“确定”按钮后,我尝试在我的机器上运行 Virtual Box,它运行良好(成功)。
  2. 现在,我打开 Git-BASH 并再次进入 Vagrantfile 所在的目录。尝试调整设置打开/关闭或评论/取消评论 Vagrantfile 相应部分(如上所述)。

仍然在运行“vagrant up”时收到相同的错误消息(即使在关闭 Hyper-V 之后也是如此)。

【问题讨论】:

  • 你停止了 hyper-v 吗?
  • 不,我没有。在我的 Windows7 机器上,我没有执行该步骤。在 Windos10(我收到此消息的地方)上,这是 Vagrant 的先决条件吗?不确定他们列出图像框的网站或部分是否提到了这部分。 vagrantbox.es
  • 是的,那是因为 Windows 7 没有安装 hyper-v。以下是此线程中的更多信息:social.technet.microsoft.com/Forums/windows/en-US/…
  • 好的,我取消选中 Hyper-V 的复选框。我真的需要重新启动我的机器吗(即使在取消选中过程应用了更改之后)。接下来我会这样做。我希望在此之后 vb.gui 和 vb.memory 都应该工作,对吧?
  • 是的,我记得我必须重新启动我的 win 服务器才能使其生效。

标签: vagrant windows-10 virtualbox vagrantfile headless


【解决方案1】:

停止在 Windows 8/10 中默认运行的 hyper-v 服务,因为它会阻止所有其他对 VT 硬件的调用。

此处补充说明: https://social.technet.microsoft.com/Forums/windows/en-US/118561b9-7155-46e3-a874-6a38b35c67fd/hyperv-disables-vtx-for-other-hypervisors?forum=w8itprogeneral

同样如您所述,如果尚未启用,请在 BIOS 设置中打开 Intel VT 虚拟化并重新启动机器。


要关闭 Hypervisor,请从命令提示符(管理员)(Windows+X)运行:

bcdedit /set hypervisorlaunchtype off

然后重新启动您的计算机。要重新打开它,请运行:

bcdedit /set hypervisorlaunchtype on

如果你收到“整数数据不是指定的有效”,尝试:

bcdedit /set hypervisorlaunchtype auto

--信用Tj Kellie

【讨论】:

  • 从命令窗口关闭 Windows 上的 Hypervisor:“bcdedit /set hypervisorlaunchtype off”并重新启动。要重新打开它:“bcdedit /set hypervisorlaunchtype on”(或自动启动)并重新启动。
  • @TjKellie 你的建议对我有用,谢谢。也许您想编辑您的推荐并添加用户应该是管理员才能执行该命令。 :)
  • 哇,非常感谢。我为此奋斗了几个小时,我认为这是因为我在 MacBook Pro 上运行 Windows 10。只是因为启用了 hyper-v。 (旁注:奇怪的是 Docker 和 VirtualBox 不能同时工作。)
  • 要重新打开它,它的“bcdedit /set hypervisorlaunchtype auto”,不像@TjKellie提到的那样
【解决方案2】:

我刚刚通过禁用(取消选中)Hyper-V 解决了这个问题。我安装 Docker 时似乎启用了 Hyper-V

Control Panel -> Program And Features -> Turn Windows Features on or off.

您可能需要事后重新启动。

警告:Vagrant 和 VirtualBox 不能同时与 Docker 一起工作。

【讨论】:

  • 我有类似的问题,因为我需要启用 Hyper-V 才能使用 docker,但是当我需要使用 VMware 或 Virtualbox 时禁用它。
  • 在运行 Win 10 Pro 的 Dell Precision 7530 上,我的 CPU 虚拟化功能已在 BIOS 设置中启用,但在运行 Vagrant 时仍然出现相同的“VT-x”错误。为了解决这个问题,我不得不关闭更多的 Windows 功能,尤其是“Hyper-V”、“虚拟机平台”和“Windows Hypervisor 平台”。我想这可能与 Windows 子系统功能有关。
  • 关闭 Hyper-V 后,重新启动对我不起作用。我需要在它工作之前关闭并重新启动。
【解决方案3】:

虽然这是一个老问题,但我最近还是遇到了。

这就是我在运行 Windows 10 的 i7-3770 3.40GHz Z77 Extreme 主板上的工作原理。

在 Windows 中,禁用 Hyper-V:

  1. 以管理员身份打开 PowerShell 或 CMD 会话。
  2. 键入以下命令: dism.exe /Online /Disable-Feature:Microsoft-Hyper-V-All
  3. Windows 会要求您重新启动。

在简历中:

  1. 禁用 >>> 英特尔虚拟化技术,vt-d
  2. 保存 BIOS 设置并允许它重新启动并引导至 Windows。
  3. 关闭电脑(我试过刚重启,还是不行)
  4. 打开计算机电源,进入 BIOS 并重新启用上述禁用的设置。
  5. 保存,重启。

下载Intel Utility查看。

您现在应该看到它已被支持:

如果仍然不起作用,请先尝试重新启用 Hyper-V,然后按照上述步骤操作。

【讨论】:

  • 我实际上发现,在第二次关闭虚拟化之后,虚拟化终于启用了——是的,与预期的完全相反。
【解决方案4】:

Docker 可能是罪魁祸首。安装docker后我遇到了同样的问题。 Docker 使用 Windows hyper-v 驱动程序来创建容器。因此 Docker 和 Virtual Box 可能无法一起工作!

【讨论】:

  • 很棒的发现。我想知道切换是否可以两者兼得,但这并不理想。
  • 这正是我的情况。安装 Docker 后 Vagrant up 失败。
【解决方案5】:

与 Hyper-V 选项一起,我必须取消选中“容器”Windows 功能才能让我的 Vagrant 工作。

【讨论】:

    【解决方案6】:

    如果您在 Windows 10 Pro 上遇到上述错误,则可以禁用 Hyper-V。 Hyper-V 在 Windows 10 中是默认启用的。您可以使用 Hyper-V 或 Virtual Box。因此,要使用虚拟机,您必须在 windows 中禁用 hyper-v,您可以按照以下步骤操作 -

    1. 搜索控制面板
    2. 点击卸载程序
    3. 打开或关闭 Windows 功能
    4. 取消选择 Hyper-V 选项。
    5. 点击确定
    6. 重新启动系统以应用更改。

    【讨论】:

      【解决方案7】:

      搜索 Windows 功能。关闭 Hyper V。Virtual Box 很可能与 Windows 上的 Hyper V 发生冲突。还要检查您的服务中运行的 Hyper V。停止并禁用它。

      【讨论】:

        【解决方案8】:

        除了开启处理器的虚拟化功能和关闭 Hyper-V,还有一件事与 Windows 的基于虚拟化的安全功能相关:

        https://docs.microsoft.com/en-us/windows-hardware/design/device-experiences/oem-vbs

        必须禁用 VBS(以及相关的安全功能)以避免与管理程序发生冲突。这是 VMware 的一个解决方案,它似乎也适用于 VirtualBox 问题”:

        https://kb.vmware.com/s/article/2146361

        【讨论】:

          【解决方案9】:

          如果 Docker 已安装并同时启动并运行,如果您尝试运行 Virtual Box,它将无法正常工作。笔记本电脑上存在的主机上的底层内核不允许同时工作。

          因此 Docker 和 Virtual box 不能同时运行。为此,

          1. 要使用 Docker,您必须启用此位置上的 hyper-v

            控制面板 -> 程序和功能 -> 打开或关闭 Windows 功能。

          2. 要运行 Virtual box,您必须从上面的位置禁用 hyper-v。

          【讨论】:

            【解决方案10】:

            从 Windows 功能列表中关闭 Hyper-V 选项。你可以在控制面板上找到这个。

            【讨论】:

              【解决方案11】:

              唯一对我有用的是运行安装程序并修复 VM VirtualBox 和 Vagrant。

              【讨论】:

                【解决方案12】:

                尝试了上述所有步骤,但在我在 BIOS 中启用虚拟化技术之前没有任何效果。尽管 Intel CPU Utility 将虚拟化显示为 Ticked,但实际上并非如此。

                启动系统,进入 BIOS,启用虚拟化,重新启动,瞧!经过4个多小时的努力,终于成功了。

                【讨论】:

                  【解决方案13】:

                  这对我有帮助:

                  1. 移除 Hyper-V 并安装 Hypervisor 平台。

                    • 在提升的 Powershell 提示符下执行:

                      Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
                      Enable-WindowsOptionalFeature -Online -FeatureName HypervisorPlatform
                      
                    • 重启

                  2. 禁用 Windows Defender Credential Guard

                    • “本地组策略编辑器”→“计算机配置”→“管理模板”→“系统”→“Device Guard”→“打开基于虚拟化的安全”→设置为“禁用”

                    • 删除以下注册表设置:

                      • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\LSA\LsaCfgFlags
                      • HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\DeviceGuard\LsaCfgFlags
                    • 重启

                  3. 删除 Windows Defender Credential Guard 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
                      bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:
                      mountvol X: /d
                      
                    • 重启

                  4. 禁用基于虚拟化的安全性

                    • 删除HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\DeviceGuard\* 下的所有注册表项(但保留DeviceGuard 本身)。

                    • 重启

                  另请参阅: Disable Windows Defender Credential Guard

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2016-08-19
                    • 1970-01-01
                    • 2016-05-08
                    • 1970-01-01
                    • 1970-01-01
                    • 2014-08-28
                    • 1970-01-01
                    相关资源
                    最近更新 更多