An excerpt from the repository, fetched Nov 13, 2026.
Read the project’s introduction
xhyve.xyz
About
The xhyve hypervisor is a port of bhyve to macOS. It is built on top of Hypervisor.framework in OS X 10.10 Yosemite and higher, runs entirely in userspace, and has no other dependencies. It can run FreeBSD, some Linux distributions, and Windows 10 and may gain support for other guest operating systems in the future.
License: BSD-2-Clause
Introduction: http://www.pagetable.com/?p=831
Requirements
OS X 10.10.3 Yosemite or later
a 2010 or later Mac (i.e. a CPU that supports EPT: sysctl kern.hv_support = 1)
Installation
If you have homebrew, then simply:
$ brew update
$ brew install --HEAD xhyve
The --HEAD in the brew command ensures that you always get the latest changes, even if the homebrew database is not yet updated. If for any reason you don't want that simply do brew install xhyve .
If you have MacPorts, then simply:
$ sudo port selfupdate
$ sudo port install xhyve
MacPorts is up to date with the GitHub ref listed in the port info
$ port info xhyve
xhyve @20170117 (emulators)
...
Otherwise:
Building
$ git clone https://github.com/machyve/xhyve.git
$ cd xhyve
$ xcodebuild
The resulting binary will be in build/Release/xhyve
Usage
$ xhyve -h
See below for steps to boot various OSs
What is bhyve?
bhyve is the FreeBSD hypervisor, roughly analogous to KVM + QEMU on Linux. It has a focus on simplicity.
It exposes the following peripherals to virtual machines:
Local x(2)APIC
IO-APIC
8259A PIC
8253/8254 PIT
HPET
PM Timer
RTC
PS/2 Keyboard and Mouse (via VNC)
PCI
host bridge
passthrough
UART
AHCI (i.e. HDD and CD)
VirtIO block device
VirtIO networking
VirtIO RNG
Intel e1000 (aka e82545)
VGA/Framebuffer (exposed with a minimal VNC server)
XHCI USB support with one device defined - a tablet for Windows guest support
bhyve architecture
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
vmm.ko
The bhyve FreeBSD kernel module. Manages VM and vCPU objects, the guest physical address space and handles guest interaction with PIC, PIT, HPET, PM Timer, x(2)APIC and I/O-APIC. Contains a minimal x86 emulator to decode guest MMIO. Executes the two innermost vCPU runloops (VMX/SVM and interrupts/timers/paging). Has backends for Intel VMX and AMD SVM. Provides an ioctl and mmap API to userspace.
libvmmapi
Thin abstraction layer between the vmm.ko ioctl interface and the userspace C API.
bhyve
The userspace bhyve component (kind of a very light-weight QEMU) that executes virtual machines. Runs the guest I/O vCPU runloops. Manages ACPI, PCI and all non in-kernel devices. Interacts with vmm.ko through libvmmapi.
bhyvectl
Somewhat superfluous utility to introspect and manage the life cycle of virtual machines. Virtual machines and vCPUs can exist as kernel objects independently of a bhyve host process. Typically used to delete VM objects after use. Odd architectural choice.
bhyveload
Userspace port of the FreeBSD bootloader. This is a cumbersome workaround to bootstrap a FreeBSD guest operating system without using firmware. It creates a VM object, loads the FreeBSD kernel into guest memory, sets up the initial vCPU state and then exits. Only then a VM can be executed by bhyve.
grub2-bhyve
Performs the same function as bhyveload but is a userspace port of GRUB2. It is used to bootstrap guest operating systems other than FreeBSD, i.e. Linux, OpenBSD and NetBSD.
xhyve architecture
+----------------------------------------------------------+
| xhyve |
| |
| I/O |
| |
| |
| |
|+--------------------------------------------------------+|
|| vmm VMX guest ||
|| Timers ||
|| Interrupts ||
|+--------------------------------------------------------+|
+----------------------------------------------------------+
+----------------------------------------------------------+
| Hypervisor.framework |
+----------------------------------------------------------+
A
| user
Read the full README on GitHub