WinのVM環境 : Hyper-V or VirtualBox
Win上の開発環境を検討していて、VirtualBoxとHyper-Vって同居できないという事に気づいたのでメモ。
環境:
- Windows 10 Pro (x64)
- VirtualBox version.5.1.18
最終的に僕の場合は、Hyper-Vはインストール済みだが、BCDの編集で起動時にHyperVisorをOffにする事で通常はVirtualBoxを使うという状態を選択しました。
理由は vagrant 利用する場合 Hyper-V 対応のboxがほぼなかったという点につきます。本番想定では別ですが、開発環境という視点だと vagrant で box が利用できるのは大変助かるので。
背景
Win/Mac/LinuxとOS問わずに動作してくれるので、Mac使い始めてからVirtualBoxを利用してましたが、WinだったらやっぱHyper-V?って思いたったのが始まり。
どちらも仮想化ソフトですが、大きく仕組みが異なります。
- VirtualBox は ホスト型の仮想化技術。OS上の1アプリとしてゲストVMが動作するタイプ。
- Hyper-V は ハイパーバイザ型の仮想化技術。ハイパーバイザ層という薄いソフトの上で、Win10(ホストOS)やゲストVMが動作するタイプ。
VirtualBoxの類似ソフトだと、vmware Player とか Microsoft Virutal PC。Hyper-Vの類似ソフトだと、vmware vSphere とかですね。
解決策
BCD (ブート構成データ, Windows Boot Managerで利用。NTLDR の boot.ini相当) で Hyper-V の ハイパーバイザ層のOn/Offが可能でした。
※そもそも、Hyper-Vをインストールしないという人には関係ない手法です
- 管理者権限でコマンドプロンプトを立ち上げ
- 次のコマンドを目的に応じて。 ※On/Off後、再起動が必須
# Hyper-V On (有効化)
bcdedit /set hypervisorlaunchtype auto# Hyper-V Off (無効化)
bcdedit /set hypervisorlaunchtype off
こちらを参考にして、バッチ化するのが楽だなーと思います。
その他
なお BCD で HyperVisor を Off にしても、Hyper-Vマネージャーは利用可能です。ただ、Hyper-Vマネージャー上のVMがOnにできないという制約があるだけ。
vhdx形式の仮想ディスクをvhd形式に変換するとか、そういうことは問題なく操作できます。vhdx形式の仮想ディスクは、Win8以降じゃないと扱えないから、それだけでも価値あるかなって思いました(偶然遭遇してしまったので、活用できましたw)
ちなみに VirtualBoxの仮想ディスクをHyper-Vに変換したい時には、次をつかってやりました。
- VirtualBox のイメージを Hyper-V のVHD形式に簡単にコンバートする方法: ある SE のつぶやき
- VirtualBoxで良く使う機能をメモ。不変(immutable)ディスクについてとか。 - kanonjiの日記
cd "c:\Program Files\Oracle\VirtualBox"
vboxmanage clonehd CentOS6.3.vdi CentOS6.3.vhd -format VHD
version.5.1.18 現在は clonemedium が正式コマンドのようです。
> VBoxManage.exe clonemedium
Usage:VBoxManage clonemedium [disk|dvd|floppy]
[--format VDI|VMDK|VHD|RAW|]
[--variant Standard,Fixed,Split2G,Stream,ESX]
[--existing]
しっかりと理由は調べてませんが、Hyper-V (Win10) が Nested に対応してないからかな?と思ったので、WS2016以降ならできちゃうのかも。