Windows 安装 Vagrant 报错 Hyper-V

网上的做法

Windows10 下关闭 Hyper-V 服的几种方法

1
bcdedit /set hypervisorlaunchtype off

目测无效

Vagrant 官方方法

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

目测无效

关闭 Virtualization Based Security 方法

DG_Readiness_Tool_v3.6.ps1 -Disable

参考: https://www.quchao.net/Windows10-Hyper-V-VirtualBox.html

目测无效

错误处理

无法加载文件 ***.ps1,因为在此系统中禁止执行脚本

set-ExecutionPolicy RemoteSigned

参考: https://www.jb51.net/article/95022.htm

实际的问题

  1. 启动或关闭 Windows 功能 里面没有 Hyper-V 选项
  2. 提示无 Microsoft-Hyper-V-All 服务

最终解决方案 hyper-v.bat 脚本

1
2
3
4
5
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL

执行完上面的脚本, 在 启动或关闭 Windows 功能 里面就出现了 Hyper-V 选项, 将该选项的 去掉.

开启无 Hyper-V 系统模式

手动执行以下步骤, 其中第二步的 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, 为第一步返回的内容.

1
2
bcdedit.exe /copy {current} /d "Windows10 no Hyper-V";
bcdedit.exe /set {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} hypervisorlaunchtype off

个人电脑实测通过以上方法, 可以首先将选项显示出来, 但是直接使用 vagrant 启动虚拟机, 会蓝屏死机 system_service_exception 错误. 然后通过第二步, 做完重启后会出现两个选项, 一个是 Windows10 也就是原来的系统, 一个是 “Windows10 no Hyper-V” 也就是我们第二步操作搞出来的.

经过两天的倒腾, 终于在 Windows 上可以使用 vagrant 了, 但是一台新的 Windows 能否用这套方案复现问题, 并且以此方案解决, 仍然是未知数, 比较一致线性倒腾, 没有回滚复现.

Donate - Support to make this site better.
捐助 - 支持我让我做得更好.