Original author(s) Operating system | Written in C | |
![]() | ||
Stable release 1.2.0 / September 5, 2012; 4 years ago (2012-09-05) Repository git.kernel.org/pub/scm/virt/kvm/kvm.git |
Kernel-based Virtual Machine (KVM) is a virtualization infrastructure for the Linux kernel that turns it into a hypervisor. It was merged into the Linux kernel mainline in kernel version 2.6.20, which was released on February 5, 2007. KVM requires a processor with hardware virtualization extensions. KVM has also been ported to FreeBSD and illumos in the form of loadable kernel modules.
Contents
KVM originally supported x86 processors and has been ported to S/390, PowerPC, and IA-64. An ARM port was merged during the 3.9 kernel merge window.
A wide variety of guest operating systems work with KVM, including many flavours and versions of Linux, BSD, Solaris, Windows, Haiku, ReactOS, Plan 9, AROS Research Operating System and OS X. In addition, Android 2.2, GNU/Hurd (Debian K16), Minix 3.1.2a, Solaris 10 U3 and Darwin 8.0.1, together with other operating systems and some newer versions of these listed, are known to work with certain limitations.
Paravirtualization support for certain devices is available for Linux, OpenBSD, FreeBSD, NetBSD, Plan 9 and Windows guests using the VirtIO API. This supports a paravirtual Ethernet card, a paravirtual disk I/O controller, a balloon device for adjusting guest memory usage, and a VGA graphics interface using SPICE or VMware drivers.
Internals
By itself, KVM does not perform any emulation. Instead, it exposes the /dev/kvm interface, which a userspace host can then use to:
On Linux, QEMU versions 0.10.1 and later is one such userspace host. QEMU uses KVM when available to virtualize guests at near-native speeds, but otherwise falls back to software-only emulation.
Internally, KVM uses SeaBIOS as an open source implementation of a 16-bit x86 BIOS.
Licensing
KVM's parts are licensed under various GNU licenses:
History
Avi Kivity began the development of KVM at Qumranet, a technology startup company that was acquired by Red Hat in 2008.
KVM was merged into the Linux kernel mainline in kernel version 2.6.20, which was released on 5 February 2007.
KVM is maintained by Paolo Bonzini.