bhyve Bee Hive Logo

bhyve - The BSD Hypervisor

About bhyve

bhyve is a legacy-free Hypervisor for FreeBSD and its derivatives such as PC-BSD and NanoBSD

Q: What is bhyve?

A: bhyve, the "BSD hypervisor" is a legacy-free hypervisor/virtual machine manager that is actively being developed on FreeBSD and leverages modern CPU features such as Extended Page Tables (EPT).

Q: What hardware does it run on?

A: bhyve currently supports Intel processors with Extended Page Tables and AMD support is undergoing testing. Processor EPT compatibility can be determined at ark.intel.com but most Core i3, i5, i7 and related Xeon processors are supported. Presence of the "POPCNT" (POP Count) processor feature in dmesg(8) will also indicate EPT support.

Q: How does it work?

A: Here is an overview of its operation:

bhyve Diagram

Q: What versions of FreeBSD does bhvye support as a host?

A: bhyve can be built and operated on FreeBSD 9.0 but its active development is taking place on 10-CURRENT. Backporting to 9.* and even 8.* is fundamentally possible.

Q: What guest operating systems does bhyve support?

A: As a legacy-free hypervisor, bhyve currently only supports the booting of FreeBSD guests on a FreeBSD host. Currently, unmodified FreeBSD 10-CURRENT, 9-STABLE and 8-STABLE guests can be booted on a bhyve 10-CURRENT host because they include VirtIO drivers. VirtIO drivers can be added to FreeBSD 8.3 and 9.0 systems.

CentOS under bhyve was demonstrated at the BSDCan 2013 FreeBSD Developer Summit.

Q: What is bhyve comprised of?

A: The vmm.ko loadable kernel module, the libvmmapi library, the bhyve, bhyveload and bhyvectl utilities. In total these binaries are about 250K in size.

Q: Where are the sources?

A: bhyve was merged from the bhyve projects branch into FreeBSD head on January 19th, 2013.

A raw diff, a diff without svn mergeinfo and an annotated diff of the bhyve patches prior to import are available for reference.

Q: Does bhyve have any dependencies?

A: bhyve uses the VirtIO set of devices for virtualized storage and network devices. It can boot with only a kernel-loaded, memory-backed root filesystem but this provides limited flexibility.

Q: Does bhyve support VT-d PCI device pass-through?

A: Yes, currently only on the Xeon 5600/5500 - 5520 Chipset.

Q: What boot media are supported?

A: Raw disk images and any block device such as ZFS zvols and iSCSI targets.

Q: Can bhyve be built with LLVM/CLANG?

A: Yes, this is a requirement of FreeBSD 10 where bhyve is being developed.

Q: Is there a mailing list or IRC channel?

A: The most popular places to discuss bhyve are the freebsd-virtualization@freebsd.org mailing list and the #bhyve channel on irc.freenode.net.

Q: Is it "bhyve" or "BHyVe"?

A: The developers mercifully depreciated the CamelCase name "BHyVe" and simply refer to it as "bhyve".

Important Milestones

Operating bhyve

The easiest way to try bhyve is with a FreeBSD 10-CURRENT release.iso snapshot from March 19th, 2013 (r248477) or later for the host and the vmrun.sh launch and management script (instructions) to install and manage guests. Any recent FreeBSD 8.3-STABLE, 8.4-RELEASE, 9.0-STABLE, 9.1-STABLE or 10-CURRENT release.iso snapshot should include the necessary VirtIO drivers for bhyve. The vmrun.sh launch and management script is now included in 10-CURRENT in /usr/share/examples/bhyve/vmrun.sh

Once you have the 10-CURRENT snapshot installed as a host, vmrun.sh will look for the release.iso disc image and will create an 8G disk image named diskdev for storage. vmrun.sh only requires a guest name as a parameter and must be executed with root privileges: sudo sh vmrun.sh vm1

The bhyve Manual

A verbose explanation of bhyve's requirements can be found in the bhyve Manual – TXT

The bhyve-scripts

For greater flexibility you can use a series of sequential scripts that will build and populate various boot media using the official FreeBSD snapshot install media.

Latest Version 1.5.4: bhyve-scripts.tar
Date: May 23th, 2013

The archive contains:

INSTRUCTIONS-COPYRIGHT.txt
0-make-softdevice.sh
1-format-device.sh
1-format-zvol-gpt.sh
2-install-guest.sh
3-host-prep.sh
4-boot-guest.sh
4-make-boot-script.sh
5-cleanup-guests.sh
mount-diskdev.sh
mirror10-from-memstick.sh
mirror9or10-from-ftp.sh
nanobsd2bhyve.sh
bhyve-manual.txt

The nanobsd2bhyve.sh script takes in a VirtIO-equipped NanoBSD disk image such as a pfSense or FreeBSD "nightly" development image and prepares it for bhyve use and generates three management scripts. This takes seconds.

Please provide script-related bug reports and feedback to editor@callfortesting.org

Presentations

Additional bhyve Information

FreeBSD Virtualization Mailing List

Neel's Personal Page

The FreeBSD Wiki bhyve Page

Special Thanks

Bandwidth courtesy of High5! and NYC*BUG, the New York City *BSD User Group.

NYC*BUG


This page is maintained by Michael Dexter and the bhyve development team.

Copyright © 2012 – 2013 Michael Dexter unless specified otherwise.

FreeBSD is a registered trademark of the FreeBSD Foundation.