Bhyve

Last updated

Bhyve
Developer(s) The FreeBSD Project
Initial release2014;10 years ago (2014)
Repository github.com/freebsd/freebsd-src/tree/main/usr.sbin/bhyve
Written in C
Operating system FreeBSD, illumos
Type Hypervisor
License FreeBSD License
Website bhyve.org   OOjs UI icon edit-ltr-progressive.svg

bhyve (pronounced "bee hive", formerly written as BHyVe for "BSD hypervisor") is a type-2 hypervisor initially written for FreeBSD. [1] [2] [3] It can also be used on a number of illumos based distributions including SmartOS, [4] OpenIndiana, and OmniOS. [5] A port of bhyve to macOS called xhyve is also available. [6]

Contents

Features

bhyve supports the virtualization of several guest operating systems, including FreeBSD 9+, OpenBSD, NetBSD, Linux, illumos, DragonFly and Windows NT [7] (Windows Vista and later, Windows Server 2008 and later). bhyve also supports UEFI installations and VirtIO emulated interfaces. Windows virtual machines require VirtIO drivers for a stable operation. Current development efforts aim at widening support for other operating systems for the x86-64 architecture.

Support for peripherals relies on basic and VirtIO drivers and supports: eXtensible Host Controller Interface (xHCI) USB controllers, NVM Express (NVMe) controllers, High Definition Audio Controllers, raw framebuffer device attached to VNC server (Video Output), and AHCI/PCI Passthrough. [8]

Since the support for peripherals is incomplete, hardware-accelerated graphics is only available using PCI passthrough. But, Intel GVT (and other vGPUs with driver support) should allow sharing the device with the host. [9]

bhyve performs about the same as its competitors with lack of memory ballooning and accelerated graphics interface, but bhyve has a more modern codebase and uses fewer resources. In the case of FreeBSD the resource management is more efficient. FreeBSD is also known for its exemplary I/O speeds; running bhyve from FreeBSD has a lot of advantages for time-critical virtual appliances by reducing I/O time, especially on disk and network related loads.

Applications

Docker on macOS uses a bhyve derivative called HyperKit. It is derived from xhyve, a port of bhyve to macOS's Hypervisor framework. [10]

iohyve on FreeBSD is a command-line utility to create, store, manage, and launch bhyve guests using built in FreeBSD features. [11]

vm-bhyve on FreeBSD is a shell-based, bhyve manager with minimal dependencies. [12]

BVCP on FreeBSD is a lightweight, native, full featured web interface for managing virtual machines. [13]

FreeNAS, based on FreeBSD, uses bhyve alongside its file sharing services to provide hosting for VMs. [14]

Other distributions

ClonOS, a FreeBSD-based distribution for virtual hosting platform and appliance, primarily uses bhyve and has a web-based management interface. [15]

MyBee, a FreeBSD-based distribution for managing cloud VMs (bhyve) through a simplified API. [16]

SmartOS, an Illumos-based distribution for managing cloud VMs (bhyve, Solaris zones) through a simplified API.

MidnightBSD, a desktop operating system, includes bhyve. [17]

Related Research Articles

X.Org Server is the free and open-source implementation of the X Window System (X11) display server stewarded by the X.Org Foundation.

<span class="mw-page-title-main">UEFI</span> Operating system and firmware specification

Unified Extensible Firmware Interface is a specification that defines the architecture of the platform firmware used for booting the computer hardware and its interface for interaction with the operating system. Examples of firmware that implement the specification are AMI Aptio, Phoenix SecureCore, TianoCore EDK II, InsydeH2O. UEFI replaces the BIOS which was present in the boot ROM of all personal computers that are IBM PC compatible, although it can provide backwards compatibility with the BIOS using CSM booting. Intel developed the original Extensible Firmware Interface (EFI) specification. Some of the EFI's practices and data formats mirror those of Microsoft Windows. In 2005, UEFI deprecated EFI 1.10.

A hypervisor, also known as a virtual machine monitor (VMM) or virtualizer, is a type of computer software, firmware or hardware that creates and runs virtual machines. A computer on which a hypervisor runs one or more virtual machines is called a host machine, and each virtual machine is called a guest machine. The hypervisor presents the guest operating systems with a virtual operating platform and manages the execution of the guest operating systems. Unlike an emulator, the guest executes most instructions on the native hardware. Multiple instances of a variety of operating systems may share the virtualized hardware resources: for example, Linux, Windows, and macOS instances can all run on a single physical x86 machine. This contrasts with operating-system–level virtualization, where all instances must share a single kernel, though the guest operating systems can differ in user space, such as different Linux distributions with the same kernel.

In computing, paravirtualization or para-virtualization is a virtualization technique that presents a software interface to the virtual machines which is similar, yet not identical, to the underlying hardware–software interface.

<span class="mw-page-title-main">QEMU</span> Free virtualization and emulation software

QEMU is a free and open-source emulator. It emulates a computer's processor through dynamic binary translation and provides a set of different hardware and device models for the machine, enabling it to run a variety of guest operating systems. It can interoperate with Kernel-based Virtual Machine (KVM) to run virtual machines at near-native speed. QEMU can also do emulation for user-level processes, allowing applications compiled for one architecture to run on another.

Mesa, also called Mesa3D and The Mesa 3D Graphics Library, is an open source implementation of OpenGL, Vulkan, and other graphics API specifications. Mesa translates these specifications to vendor-specific graphics hardware drivers.

<span class="mw-page-title-main">Free and open-source graphics device driver</span> Software that controls computer-graphics hardware

A free and open-source graphics device driver is a software stack which controls computer-graphics hardware and supports graphics-rendering application programming interfaces (APIs) and is released under a free and open-source software license. Graphics device drivers are written for specific hardware to work within a specific operating system kernel and to support a range of APIs used by applications to access the graphics hardware. They may also control output to the display if the display driver is part of the graphics hardware. Most free and open-source graphics device drivers are developed by the Mesa project. The driver is made up of a compiler, a rendering API, and software which manages access to the graphics hardware.

virt-manager Virtualisation software

virt-manager is a desktop virtual machine monitor primarily developed by Red Hat.

The following is a timeline of virtualization development. In computing, virtualization is the use of a computer to simulate another computer. Through virtualization, a host simulates a guest by exposing virtual hardware devices, which may be done through software or by allowing access to a physical device connected to the machine.

<span class="mw-page-title-main">Kernel-based Virtual Machine</span> Virtualization module in the Linux kernel

Kernel-based Virtual Machine (KVM) is a free and open-source virtualization module in the Linux kernel that allows the kernel to function as a hypervisor. It was merged into the mainline Linux kernel in version 2.6.20, which was released on February 5, 2007. KVM requires a processor with hardware virtualization extensions, such as Intel VT or AMD-V. KVM has also been ported to other operating systems such as FreeBSD and illumos in the form of loadable kernel modules.

nouveau (software) Open source software driver for Nvidia GPU

nouveau is a free and open-source graphics device driver for Nvidia video cards and the Tegra family of SoCs written by independent software engineers, with minor help from Nvidia employees.

libvirt Management tool

libvirt is an open-source API, daemon and management tool for managing platform virtualization. It can be used to manage KVM, Xen, VMware ESXi, QEMU and other virtualization technologies. These APIs are widely used in the orchestration layer of hypervisors in the development of a cloud-based solution.

libguestfs is a C library and a set of tools for accessing and modifying virtual disk images used in platform virtualization. The tools can be used for viewing and editing virtual machines (VMs) managed by libvirt and files inside VMs, scripting changes to VMs, creating VMs, and much else besides. It was created because of security issues, when virtual disk images are mounted directly on the host system.

<span class="mw-page-title-main">Lennart Poettering</span> German software engineer

Lennart Poettering is a German software engineer working for Microsoft and the original author of PulseAudio, Avahi and systemd.

<span class="mw-page-title-main">SmartOS</span> Operating system

SmartOS is a free and open-source SVR4 hypervisor based on the UNIX operating system that combines OpenSolaris technology with bhyve and KVM virtualization. Its core kernel contributes to the illumos project. It features several technologies: Crossbow, DTrace, bhyve, KVM, ZFS, and Zones. Unlike other illumos distributions, SmartOS employs NetBSD pkgsrc package management. SmartOS is designed to be particularly suitable for building clouds and generating appliances. It was originally developed for and by Joyent, who announced in April 2022 that they had sold their business supporting and developing of Triton Datacenter and SmartOS to MNX Solutions. It is open-source and free for anyone to use.

mpv (media player) Free and open-source media player software

mpv is free and open-source media player software based on MPlayer, mplayer2 and FFmpeg. It runs on several operating systems, including Unix-like operating systems and Microsoft Windows, along with having an Android port called mpv-android. It is cross-platform, running on ARM, PowerPC, x86/IA-32, x86-64, and MIPS architecture.

<span class="mw-page-title-main">OpenZFS</span> Open-source implementation of the ZFS file system

OpenZFS is an open-source implementation of the ZFS file system and volume manager initially developed by Sun Microsystems for the Solaris operating system and now maintained by the OpenZFS Project. It supports features like data compression, data deduplication, copy-on-write clones, snapshots, and RAID-Z. It also supports the creation of virtual devices, which allows for the creation of file systems that span multiple disks.

GPU virtualization refers to technologies that allow the use of a GPU to accelerate graphics or GPGPU applications running on a virtual machine. GPU virtualization is used in various applications such as desktop virtualization, cloud gaming and computational science.

<span class="mw-page-title-main">Windows Subsystem for Linux</span> Compatibility layer for running Linux binary executables natively on Windows

Windows Subsystem for Linux (WSL) is a feature of Windows that allows developers to run a Linux environment without the need for a separate virtual machine or dual booting. There are two versions of WSL: WSL 1 and WSL 2. WSL 1 was first released on August 2, 2016, and acts as a compatibility layer for running Linux binary executables by implementing Linux system calls on the Windows kernel. It is available on Windows 10, Windows 10 LTSB/LTSC, Windows 11, Windows Server 2016, Windows Server 2019 and Windows Server 2022.

<span class="mw-page-title-main">Lumina (desktop environment)</span> Desktop environment for X Window System

Lumina Desktop Environment, or simply Lumina, is a plugin-based desktop environment for Unix and Unix-like operating systems. It is designed specifically as a system interface for TrueOS, and systems derived from Berkeley Software Distribution (BSD) in general, but has been ported to various Linux distributions.

References

  1. Carabas, Mihai; Grehan, Peter (10 June 2016). "Porting bhyve on ARM" (PDF). Retrieved 8 February 2017.
  2. Dexter, Michael (20 October 2012). "BHyVe: The BSD HyperVisor In Depth" (PDF). Archived from the original (PDF) on 18 February 2018. Retrieved 8 February 2017.
  3. Kerner, Sean Michael (22 January 2014). "Open Source FreeBSD 10 Takes on Virtualization". ServerWatch. QuinStreet Enterprise. Retrieved 28 July 2014.
  4. Gerdts, Mike (March 2018). "bhyve zones in SmartOS" (PDF).
  5. "bhyve Hypervisor". omniosce.org. Retrieved 27 September 2018.
  6. "machyve/xhyve: a lightweight OS X virtualization solution". GitHub. 9 July 2020.
  7. "bhyve Windows Virtual Machines". FreeBSD Wiki.
  8. Peter Grehan; Neel Natu. "FreeBSD Manual Pages". The FreeBSD Project.
  9. "Bhyve guests with hardware accelerated graphics". FreeBSD Presentations and Papers.
  10. "moby/hyperkit: A toolkit for embedding hypervisor capabilities in your application". GitHub. Moby. 10 July 2020.
  11. "FreeBSD bhyve manager utilizing ZFS and other FreeBSD tools". GitHub. Pr1ntf. Retrieved 7 August 2021.
  12. "Shell based, minimal dependency bhyve manager". GitHub. Churchers. Retrieved 7 August 2021.
  13. "BVCP: FreeBSD Bhyve Project". bhyve.npulse.net. Retrieved 7 August 2021.
  14. "18. Virtual Machines — FreeNAS®11.3-U5 User Guide Table of Contents". www.ixsystems.com. Retrieved 2 January 2023.
  15. "Free Open-Source Hosting Platform". clonos.convectix.com. Retrieved 7 August 2021.
  16. "The most simplified API for creating and destroying K8S and cloud VMs". myb.convectix.com. Retrieved 17 May 2022.
  17. "Virtualization". github.com. Retrieved 23 September 2023.

Further reading