我用Hyper-V创建的Ubuntu试图在virtualbox + vagrant上再创建另一个Ubuntu

首先

在团队开发中,我们使用VirtualBox + Vagrant + Ansible在本地构建开发环境。由于只有我一个人在使用Windows系统,所以在构建开发环境时需要做一些调整(因为Ansible不支持Windows作为控制机器,而VirtualBox不支持嵌套虚拟化)。

当时,我在WSL上操控着在Windows操作系统上安装的VirtualBox和Vagrant,并在WSL上运行Ansible。

我认为可能有更好的方法,于是在通过Windows + Hyper-V创建的虚拟机中尝试了VirtualBox + Vagrant。

最终目标是追求以下的构成。

            -------------------------------
           | Ubuntu (VirtualBox + Vagrant) |
        ---------------------------------------
       |          Ubuntu (Hyper-V)             |
     ----------------------------------------------
    |                  Windows                     |
    ------------------------------------------------

环境

主机端

Windows 10 专业版
Hyper-v
Intel Core i7-3770k

客人方

Ubuntu 16.04 版本
VirtualBox 6.0.0 版本
Vagrant 2.2.2 版本

将VirtualBox更改为Hyper-V。

由于VirtualBox和Hyper-V管理器使用的虚拟机技术不同(INTEL VT-x和Hyper-V),它们无法共存。

由于Docker for Windows 使用了 Hyper-V 技术,因此如果在使用VirtualBox时安装了 Docker for Windows,那么在从VirtualBox启动虚拟机时可能会导致蓝屏。这是由于使用了不同的虚拟化技术所引起的蓝屏问题。

Microsoft 公司对于启用 Hyper-V 进行了介绍。

Hyper-V を利用してUbuntu をたてる

Hyper-V を利用してUbuntu を入れる。
ここもMicrosoftさんが説明してくれている。

インストールが済んだあとVirtualBox とVagrant を導入する。

Vagrant up してみる

ハマりポイント1

vagrant init ubuntu/xenial64
vagrant up

然后

The provider 'virtualbox' that was requested to back the machine
'default' is reporting that it isn't usable on this system. The
reason is shown below:

VirtualBox is complaining that the kernel module is not loaded. Please
run `VBoxManage --version` or open the VirtualBox GUI to see the error
message which should contain instructions on how to fix this error.

となり、起動できない。

原因はHyper-Vマネージャの設定 > ハードウェア > セキュリティ の”セキュアブートが有効” にチェックがついていることが原因だった。
なので、この設定を無効にする。

迷上了两大亮点。

重新启动虚拟机。

vagrant init 
vagrant up

随后

There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["startvm", "f59d4b5a-ecdb-4755-9918-77db8ed472d3", "--type", "headless"]

Stderr: VBoxManage: error: VT-x is not available (VERR_VMX_NO_VMX)
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component ConsoleWrap, interface IConsole
キャプチャ.JPG

如果怀疑是作为VM机的一侧设置有问题,可以进行调查。我发现了一个被嵌套在Microsoft内的基于虚拟化的虚拟机执行的Hyper-V功能,我试试看。

请在Windows端以管理员权限启动PowerShell。

PS C:\WINDOWS\system32> Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true

尝试执行。

重新启动虚拟机。

vagrant up

尝试之后,虚拟机成功启动。

总结

最初本来选择不使用Windows的话,但是最近Windows上也能做很多有趣的事情,例如WSL,所以我试着用了一下。
我觉得这样比之前用的方式更简单地进行虚拟机上的虚拟机操作。
Windows包括WSL在内,提供了一些开发友好的功能,所以尝试一下也是个不错的选择。

广告
将在 10 秒后关闭
bannerAds