KVM
Comment mettre en place KVM sur Debian 10/11 ?
KVM (Kernel-based Virtual Machine) est une solution de virtualisation de type 1 (Baremetal) open source complète pour les système Linux fonctionnant sur une architecture x86 avec des extensions de virtualisation (Intel VT ou AMD-V).
KVM exige que le CPU est la fonction Intel VT ou AMD-V. KVM est constitué d’un module chargeable, kvm.ko, qui fournit l’infrastructure de virtualisation de base et un module spécifique au processeur, kvm-intel.ko ou kvm-amd.ko.
La configuration est différente d’une distribution à une autre. Parfois même entre diverses versions de la même distribution.
Configuration KVM sur Debian 10/11
Tous les paquets KVM pour Debian sont disponibles sur les référentiels en amont. Le gestionnaire de paquets apt est utilisé pour toutes les installations de conditionnement.
sudo apt -y install qemu-kvm libvirt-daemon bridge-utils virtinst libvirt-daemon-system
Chargez et activez le module vhost-net.
$ sudo modprobe vhost_net
$ lsmod | grep vhost
vhost_net 24576 0
tun 49152 1 vhost_net
vhost 49152 1 vhost_net
tap 28672 1 vhost_net
$ echo vhost_net | sudo tee -a /etc/modules
Installer également des outils de gestion de machines virtuelles utiles.
sudo apt -y install virt-top libguestfs-tools libosinfo-bin qemu-system virt-manager
Cela offre des outils similaires aux commandes ls, cat, top pour une utilisation avec Virtual Machines.
Créer un réseau virtuel en accès par pont (Bridge) pour l’hôte KVM (facultatif)
Pour que vos machines virtuelles communique avec le monde extérieur, un accès par pont est nécessaire. La mise en place de KVM crée un bridge appelé virbr0 qui peut être utilisé
Mais si vous voulez que vos machines virtuelles soient accessibles sur le réseau, vous devrez créer une passerelle sur l’interface réseau physique attachée à votre machine.
Créez-en un sur votre machine Debian comme ci-dessous dans le fichier /etc/network/interfaces
La configuration du pont utilise une interface réseau, ici pour ma part c’est eth0, pour créer un pont appelé br1. Remplacez les valeurs fournies par les vôtres.
#Primary network interface
auto eth0
iface eth0 inet manual
#Bridge definitions
auto br1
iface br1 inet static
bridge_ports eth0
bridge_stp off
address 192.168.20.149
network 192.168.20.0
netmask 255.255.255.0
broadcast 192.168.20.255
gateway 192.168.20.1
dns-nameservers 192.168.21.6
Redémarrez la machine pour que les changements de configuration du réseau prennent effet.
sudo reboot
Confirmer les détails du réseau ip.
$ ip a
Vous deviez avoir le pont que vous qvez créé s’afficher avec l’ip que vous avez définit et votre machine virtuelle est maintenant accessible sur le même réseau que son hôte KVM.
Créer une machine virtuelle sur KVM
Vous pouvez utiliser Virtual Machine Manager GUI pour créer une instance sur KVM ou via l’outil de ligne de commande virt-install.
Pour virt-install, un exemple est ci-dessous pour la création d’une machine virtuelle sur Debian 11
sudo virt-install \
--name deb11 \
--ram 2048 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/deb11-vm.qcow2,size=20 \
--os-type linux \
--os-variant debian9 \
--network bridge=br1 \
--graphics vnc \ #il suffit de choisir entre vnc,spice,none
--console pty,target_type=serial \
--location 'http://ftp.debian.org/debian/dists/bullseye/main/installer-amd64/' \
--extra-args 'console=ttyS0,115200n8 serial'
Cela permettra de télécharger l’image du noyau et de l’initrd avant de commencer l’installation.
Si l’hôte n’a pas d’environnement graphique
Pour cela, il faut passer par VNC lors de l’installation comme ci-dessus. Une fois fait, il faut utiliser sur une machine appartenant au même réseau local que l’hôte KVM afin de créer un tunnel SSH.
Le port par défaut de VNC est le 5900
ssh utilisateurKVM@ip-ou-hostname-machine-kvm -L 5900:127.0.0.1:5900
ainsi vous accéderer en VNC à l’interface graphique de votre machine virtuelle pour l’installer et aussi l’utiliser si vous installe une interface graphique pour l’utiliser.