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 。
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 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 -h
git clone https://github.com/mist64/xhyve
cd xhyve
make
./xhyverun.sh
此时会看到启动了一个Tiny Core Linux运行在终端中,使用命令 uname -a
和 df -h
命令可以看到这是一个完整的Linux运行环境。
关闭虚拟机的方法是执行 sudo halt
- xhyve.org
- Set up xhyve with Ubuntu 16.04 建议参考
- Install an Ubuntu 16.04 VM on macOS using xhyve
- Virtualization on Mac OS X using Vagrant (Part 2) - 最好的方式:启动xhyve,并使用vagrant来管理,则标准化,更为易用
- Running Mac OS X El Capitan and macOS Sierra on QEMU/KVM 提供了在KVM环境中运行macOS的方法(反过来哦,和我这里实践不同,是在Ubuntu中运行macOS)