KVM a été initialement conçu pour les processeurs x86, mais a depuis été porté sur z/Architecture , PowerPC , IA-64 , et ARM . Le portage IA-64 a été supprimé en 2014.
KVM prend en charge la virtualisation matérielle pour une grande variété de systèmes d'exploitation invités, notamment BSD , Solaris , Windows , Haiku , ReactOS , Plan 9 , AROS , macOS et même d'autres systèmes Linux. De plus, Android 2.2, GNU/Hurd ( Debian K16), Minix 3.1.2a, Solaris 10 U3 et Darwin 8.0.1, ainsi que d'autres systèmes d'exploitation et certaines versions plus récentes de ceux mentionnés, sont compatibles, avec certaines limitations.
De plus, KVM fournit une prise en charge de la paravirtualisation pour les invités Linux, OpenBSD , FreeBSD, NetBSD , Plan 9 et Windows utilisant l' API VirtIO . Cela inclut une carte Ethernet paravirtuelle , un contrôleur d'E/S disque, un pilote de ballon et une interface graphique VGA utilisant des pilotes SPICE ou VMware .
Avi Kivity a commencé le développement de KVM au milieu de l'année 2006 chez Qumranet , une start-up technologique qui a été acquise par Red Hat en 2008.KVM a fait surface en octobre 2006 et a été intégré à la branche principale du noyau Linux dans la version 2.6.20, publiée le 5 février 2007.
KVM est maintenu par Paolo Bonzini.
Internes

KVM fournit une abstraction des périphériques, mais pas d'émulation de processeur. Il expose l' interface /dev/kvm , qu'un hôte en mode utilisateur peut ensuite utiliser pour :
- Configurez l'espace d'adressage de la machine virtuelle invitée. L'hôte doit également fournir une image de firmware (généralement un BIOS personnalisé lors de l'émulation de PC) que l'invité pourra utiliser pour démarrer son système d'exploitation principal.
- Fournir au client des E/S simulées.
- Associer l'affichage vidéo de l'invité à l'hôte du système.
À l'origine, une version dérivée de QEMU permettait de lancer des machines virtuelles et de gérer l'émulation matérielle non prise en charge par le noyau. Cette fonctionnalité a finalement été intégrée au projet principal. De nombreux moniteurs de machines virtuelles (VMM) exploitent désormais l'interface KVM, notamment kvmtool, crosvm et Firecracker , ainsi que de nombreux VMM spécialisés développés avec des frameworks tels que rust-vmm.
En interne, KVM utilise SeaBIOS comme implémentation open source d'un BIOS x86 16 bits .
Caractéristiques
KVM prend en charge les vCPU remplaçables à chaud , la gestion dynamique de la mémoire et la migration à chaud depuis février 2007 Il réduit également l'impact des charges de travail intensives en écriture mémoire sur le processus de migration
Matériel émulé
KVM lui-même émule très peu de matériel, préférant s'appuyer sur une application cliente de niveau supérieur telle que QEMU , crosvm ou Firecracker pour l'émulation des périphériques.
KVM fournit les périphériques émulés suivants :
- Processeur et mémoire virtuels
- VirtIO
Outils de gestion graphique

- Kimchi – outil de gestion de virtualisation web pour KVMGestionnaire de machines virtuelles – prend en charge la création, la modification, le démarrage et l'arrêt de machines virtuelles basées sur KVM, ainsi que la migration à chaud ou à froid par glisser-déposer de machines virtuelles entre hôtes.Proxmox Virtual Environment est une solution de gestion de virtualisation open source incluant KVM et LXC . Elle propose un installateur bare-metal, une interface graphique de gestion à distance via le web, une pile de clusters haute disponibilité, un stockage unifié, un réseau flexible et un support commercial optionnel.
- OpenQRM – plateforme de gestion pour les infrastructures de centres de données hétérogènesGNOME Boxes – Interface GNOME pour la gestion des machines virtuelles libvirt sous LinuxoVirt – outil de gestion de virtualisation open source pour KVM basé sur libvirt
Licence
Le composant en mode noyau de KVM fait partie du noyau Linux , lui-même sous licence GNU General Public License, version 2.