记一次 Vagrant 排坑经历:error: Raw-mode is unavailable courtesy of Hyper-V

前言:为了尝鲜Windows 1903(五月更新),得付出代价啊。。。

当运行vagrant up时,看着bash终端上运行到
==> homestead-7: Running 'pre-boot' VM customizations... ==> homestead-7: 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", "da766e1e-a423-4f4d-a37e-8523e39b294f", "--type", "headless"]  Stderr: VBoxManage.exe: error: Raw-mode is unavailable courtesy of Hyper-V. (VERR_SUPDRV_NO_RAW_MODE_HYPER_V_ROOT) VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component ConsoleWrap, interface IConsole

重点是error: Raw-mode is unavailable courtesy of Hyper-V这句话,其余的可以忽略

排坑开始:

  • 系统平台:Windows 10 1903(千万千万不要手贱,能不升级就不升级!!!)
  • VirtualBox 6.0.8 r130520(如果低于此版的,务必升级到此版本!)

必须保证以下两点大前提:
       ①在使用VirtualBox时不能开启Hyper-V,这一点和docker不同,docker必须要启用它。
       ②保证开启了虚拟化VT-X
查看Hyper-V是否 关闭
控制面板→程序→程序和功能→启用或关闭Windows功能 不勾选 即为关闭,'确定'后需要重启计算机才会生效

记一次Vagrant拍坑经历

查看虚拟化VT-X是否 开启
任务管理器→性能→CPU

记一次Vagrant拍坑经历

如果不放心,还可以去BIOS中查看具体的设置项Virtualization需要为Enable

  • 以为这样就成功了?
    如果不出意外,在按照上面的方法检查后,输入vagrant up依然无效,报同样的错误!!!
  • 要想成功解决问题,还是得靠搜索啊。这种问题,靠国内的百度是没救了(P.S.搜了一大圈都是在浪费时间,没一个是管用的!),推荐Bing国际版(暂时可以替代下Google)

    以管理员的方式启动CMD,输入bcdedit回车,结果如下图显示:

    记一次Vagrant拍坑经历

    注意我标记的地方,hypervisorlaunchtype这里必须保证是Off,通过上面①②步的检查,按道理来说是没任何问题的,但实际上问题就是出在这里,不是很明白为什么这里的设置会对其有影响。
    运行上面的命令后一般这里的默认的值为Auto,因而就导致前面你无论怎么设置,运行vagrant up时都是会报错的(不知道是不是1903版本造成的)。按照如下指令修改:
    禁用掉Hyper-V: bcdedit /set hypervisorlaunchtype off然后重启电脑,再运行vagrant up就成功了

    打开Hyper-V:bcdedit /set hypervisorlaunchtype auto需要重启电脑生效


    附上链接:
    https://discuss.erpnext.com/t/virtualbox-wont-run-raw-mode-unavailable-courtesy-of-hyper-v/34541/10
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 5

所以只能关闭 Hyper-V ? 那要用 docker 怎么办?

4年前 评论

@overfalse 要么用Linux,要么就二选一 :see_no_evil:

4年前 评论

上周安装了 docker 这周的vagrant 就报错了,感谢

4年前 评论

楼主真乃神人啊,我ensp的ar路由器死活就是起不来,virtual box手动启动时,总是说hyper-v有问题,明明已经卸载了,看了你的文章才解决了这个问题,感谢!!!

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!