Skip to content
Surf Wiki
Save to docs
technology/operating-systems

From Surf Wiki (app.surf) — the open knowledge base

Kernel-based Virtual Machine

Virtualization module in the Linux kernel

Kernel-based Virtual Machine

Virtualization module in the Linux kernel

FieldValue
nameKVM
logoKvmbanner-logo2 1.png
logo size160px
screenshotQEMU 6.2 running NetBSD and OpenIndiana screenshot.png
screenshot size300px
captionScreenshot of QEMU/KVM running NetBSD and OpenIndiana guests on an Arch Linux host.
authorQumranet
developerThe Linux Kernel community
operating_systemUnix-like
programming_languageC
platformARM, PowerPC, z/Architecture, IA-32, x86-64, RISC-V, LoongArch
genreHypervisor
licenseGNU GPL or LGPL
website

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.{{cite web | access-date = 2014-06-16

KVM was originally designed for x86 processors but has since been ported to z/Architecture,{{cite web | access-date = 2025-08-23 The IA-64 port was removed in 2014.

KVM supports hardware-assisted virtualization for a wide variety of guest operating systems including BSD, Solaris, Windows, Haiku, ReactOS, Plan 9, AROS, macOS, and even other Linux systems. 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.

Additionally, KVM provides paravirtualization support for Linux, OpenBSD, FreeBSD, NetBSD, Plan 9 and Windows guests using the VirtIO API. This includes a paravirtual Ethernet card, disk I/O controller, balloon driver, and a VGA graphics interface using SPICE or VMware drivers.

History

Avi Kivity began the development of KVM in mid-2006 at Qumranet, a technology startup company that was acquired by Red Hat in 2008.{{cite web | access-date = 16 June 2015

KVM surfaced in October 2006 and was merged into the Linux kernel mainline in version 2.6.20, released on 5 February 2007.

KVM is maintained by Paolo Bonzini.{{cite web | access-date = 17 June 2015 | archive-url = https://web.archive.org/web/20160315095510/http://www.linux.com/news/featured-blogs/200-libby-clark/821899-git-success-stories-and-tips-from-kvm-maintainer-paolo-bonzini | archive-date = 15 March 2016 | url-status = dead

Internals

A high-level overview of the KVM/QEMU virtualization environment<ref>{{cite web

| access-date = January 3, 2015 | fix-attempted = yes}}]]

KVM provides device abstraction but no processor emulation. It exposes the interface, which a user mode host can then use to:

  • Set up the guest VM's address space. The host must also supply a firmware image (usually a custom BIOS when emulating PCs) that the guest can use to bootstrap into its main OS.
  • Feed the guest simulated I/O.
  • Map the guest's video display back onto the system host.

Originally, a forked version of QEMU was provided to launch guests and deal with hardware emulation that is not handled by the kernel. That support was eventually merged into the upstream project. There are now numerous Virtual Machine Monitors (VMMs) which can utilise the KVM interface including kvmtool, crosvm and Firecracker and numerous specialised VMMs built with frameworks such as rust-vmm.

Internally, KVM uses SeaBIOS as an open source implementation of a 16-bit x86 BIOS.

Features

KVM has had support for hot swappable vCPUs, dynamic memory management, and Live Migration since February 2007. It also reduces the impact that memory write-intensive workloads have on the migration process.

Emulated hardware

KVM itself emulates very little hardware, instead deferring to a higher level client application such as QEMU, crosvm, or Firecracker for device emulation.

KVM provides the following emulated devices:

  • Virtual CPU and memory
  • VirtIO

Graphical management tools

  • Kimchi web-based virtualization management tool for KVM
  • Virtual Machine Manager supports creating, editing, starting, and stopping KVM-based virtual machines, as well as live or cold drag-and-drop migration of VMs between hosts.
  • Proxmox Virtual Environment an open-source virtualization management package including KVM and LXC. It has a bare-metal installer, a web-based remote management GUI, a HA cluster stack, unified storage, flexible network, and optional commercial support.
  • OpenQRM management platform for managing heterogeneous data center infrastructures
  • GNOME Boxes Gnome interface for managing libvirt guests on Linux
  • oVirt open-source virtualization management tool for KVM built on top of libvirt

Licensing

The kernel-mode component of KVM is a part of the Linux kernel, itself licensed under GNU General Public License, version 2.

References

Bibliography

References

  1. [http://www.linux-kvm.org/page/FAQ#What_do_I_need_to_use_KVM.3F KVM FAQ: What do I need to use KVM?]
  2. "FreeBSD Quarterly Status Report: Porting Linux KVM to FreeBSD".
  3. (15 August 2011). "KVM on illumos".
  4. (2008-04-27). "KVM: s390: arch backend for the kvm kernel module".
  5. "KVM/ARM: An Open-Source ARM Virtualization System".
  6. "KVM/ARM Open Source Project".
  7. (2014). "KVM/ARM: The Design and Implementation of the Linux ARM Hypervisor". ACM International Conference on Architectural Support for Programming Languages and Operating Systems.
  8. "kernel/git/torvalds/linux.git: KVM: ia64: remove".
  9. "KVM wiki: Guest support status".
  10. "Running Mac OS X as a QEMU/KVM Guest".
  11. "status". Gnu.org.
  12. "Guest Support Status - KVM". Linux-kvm.org.
  13. "OpenBSD man page virtio(4)".
  14. "virtio binary packages for FreeBSD".
  15. "NetBSD man page virtio(4)".
  16. "plan9front".
  17. (2007-07-11). "An API for virtual I/O: virtio". [[LWN.net]].
  18. (2012-08-07). "SCSI target for KVM wiki". linux-iscsi.org.
  19. [http://kerneltrap.org/node/8088 Interview: Avi Kivity] {{webarchive. link. (2007-04-26 on [[KernelTrap]])
  20. (7 March 2007). "KVM 15 equipped with live migration | IT World Canada News".
  21. (2013-12-21). "SeaBIOS". seabios.org.
  22. (16 February 2016). "Hot Plugging Virtual CPUs with Red Hat Enterprise Virtualization Manager".
  23. "Faq - KVM".
  24. "KVM-15 release [LWN.net]".
  25. "Migration - KVM".
  26. "Daniel P. Berrangé » Blog Archive » Analysis of techniques for ensuring migration completion with KVM".
  27. "The Definitive KVM (Kernel-based Virtual Machine) API Documentation — the Linux Kernel documentation".
  28. "Linux kernel licensing rules — The Linux Kernel documentation".
Info: Wikipedia Source

This article was imported from Wikipedia and is available under the Creative Commons Attribution-ShareAlike 4.0 License. Content has been adapted to SurfDoc format. Original contributors can be found on the article history page.

Want to explore this topic further?

Ask Mako anything about Kernel-based Virtual Machine — get instant answers, deeper analysis, and related topics.

Research with Mako

Free with your Surf account

Content sourced from Wikipedia, available under CC BY-SA 4.0.

This content may have been generated or modified by AI. CloudSurf Software LLC is not responsible for the accuracy, completeness, or reliability of AI-generated content. Always verify important information from primary sources.

Report