在OS X中部署xhyve

xhyve hypervisor是将bhyve port到OS X的开源项目。xhyve构建在OS X 10.10的 Hypervisor.framework或者更高版本,完全运行在用户空间,没有其他依赖。xhyve可以运行FreeBSD或vanilla Linux发行版。相关介绍见 xhyve – Lightweight Virtualization on OS X Based on bhyve

bhyve架构

                                                           Linux
               I/O        VM control       FreeBSD        NetBSD
                                                          OpenBSD
             |     A        |     A           |              |
             V     |        V     |           V              V
         +-------------++-------------++-------------++-------------+
         |             ||             ||             ||             |
         |    bhyve    ||  bhyvectl   ||  bhyveload  || grub2-bhyve |
         |             ||             ||             ||             |
         |             ||             ||             ||             |
         +-------------++-------------++-------------++-------------+
         +----------------------------------------------------------+
         |                        libvmmapi                         |
         +----------------------------------------------------------+
                                       A
                                       |                         user
         ------------------------------┼------------------------------
                                       | ioctl         FreeBSD kernel
                                       V
                         +----------------------------+
                         |        VMX/SVM host        |
                         |       VMX/SVM guest        |
                         |   VMX/SVM nested paging    |
                         |           Timers           |
                         |         Interrupts         |
                         +----------------------------+
                          vmm.ko

安装xhyve

xhyve hypervisor安装有多种方法,最简单的是通过homebrew:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

brew update
brew install --HEAD xhyve

Homebrew官方提供了安装指南

--HEAD在brew命令中确保总是获得最新修改,即使homebrew数据库还没有更新。

如果重新安装,brew也提供了reinstall命令,即 brew reinstall xhyve

如果使用MacPorts则简单执行

sudo port selfupdate
sudo port install xhyve

最后,也可以自行编译:

git clone https://github.com/machyve/xhyve.git
cd xhyve
xcodebuild

编译后执行程序位于 build/Release/xhyve。 在最新的 macOS Mojave 10.14.1 编译成功,运行 xhyve -h失败,显示

Killed: 9

不过,我使用 make 编译生成的 build/xhyve 可以运行,并且能够启动 4.15 内核,但显示不能找到磁盘设备:

Gave up waiting for root file system device.  Common problems:
 - Boot args (cat /proc/cmdline)
   - Check rootdelay= (did the system wait long enough?)
 - Missing modules (cat /proc/modules; ls /dev)
ALERT!  /dev/vda1 does not exist.  Dropping to a shell!

目前采用 homebrew 安装的 xhyve

使用xhyve

xhyve -h

在xhyve中运行Tiny Core Linux

git clone https://github.com/mist64/xhyve
cd xhyve
make
./xhyverun.sh

此时会看到启动了一个Tiny Core Linux运行在终端中,使用命令 uname -adf -h命令可以看到这是一个完整的Linux运行环境。

关闭虚拟机的方法是执行 sudo halt

参考

Last updated