VMware FusionではmacOS上で仮想マシンを動作させることができる。その仮想マシン上でさらにネストしてKVMなどの仮想環境を動かす(Nested Virtualization)には、仮想マシンの設定を変更して「Intel VT-x」という仮想化ハードウェア拡張を有効にする必要がある。
現在利用している仮想マシンでIntel VT-xが有効になっているかどうかはcpuinfo
にvmx
が含まれるかどうかで確認できる。
grep vmx /proc/cpuinfo
grepを実行しても何も表示されない場合は、Intel VT-xが有効になっていないということになる。
たとえば、virsh define
実行時には次の様なエラーが発生した。
# virsh define ubuntu16.xml error: Failed to define domain from ubuntu16.xml error: invalid argument: could not find capabilities for arch=x86_64 domaintype=kvm
VMware Fusionの設定画面でIntel VT-xを有効にするには、仮想マシンをシャットダウンした状態で仮想マシンの「設定 -> プロセッサとメモリ」を開き。
「詳細オプション」にある「この仮想マシンでハイパーバイザー アプリケーションを有効にする」にチェックをつける。
この設定をした後、仮想マシンを起動して先ほどのgrepコマンドを実行すると、Intel VT-xが有効になっていることを確認できる。
grep vmx /proc/cpuinfo flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm epb tpr_shadow vnmi ept vpid fsgsbase smep dtherm ida arat
VirtualBoxでもKVMの準仮想化機能などを利用する場合にはこの設定が必要となる。
VMware Fusionの設定ファイルであるvmxファイルにおいては、vhv.enable
をTRUE
値を設定する行を追加すればよい。
vhv.enable = "TRUE"
Vagrantでvmware_fusionのproviderを使用している場合は、例えばVagrantfileに次の様に記述すれば、vagrant up
でIntel VT-xを有効化した仮想マシンを起動することができるようになる。
Vagrant.configure("2") do |config| config.vm.box = "bento/ubuntu-16.04" config.vm.provider :vmware_fusion do |vmware| vmware.vmx["vhv.enable"] = "TRUE" end end