Qemu¶
Qu’est-ce que Qemu ?¶
QEMU est un logiciel de virtualisation open-source qui permet d’exécuter des systèmes d’exploitation et des applications. Il peut émuler plusieurs architectures matérielles, y compris x86, x86-64, ARM, MIPS, PowerPC, etc. QEMU est souvent utilisé en combinaison avec KVM (Kernel-based Virtual Machine) pour offrir des performances de virtualisation améliorées sur les processeurs compatibles.
J’ai eu à me servir de Qemu quand j’ai travaillé sur mon PC avec Terraform. Après un moment de test avec, je compte le garder et j’ai décidé de le documenter.
Installation¶
Rien de très compliqué, il faudra toutefois que votre pc permet la virtualisation (que Intel VT-x ou AMD-V).
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients virt-manager
Configuration¶
Sécurisation¶
QEMU et Apparmor¶
Ubuntu embarque par défaut Apparmor. Et quand bien même vous diriez à Libvirt de ne pas le charger, ce dernier n’en fait qu’à sa tête ! Résultat, on a des problèmes quand on veut créer un nouveau pool d’image. Il faudra préciser à AppArmor d’autoriser QEMU à aller fouiller le pool :
sudoedit /etc/libvirt/qemu.conf
#security_driver = "selinux" #Trouver la ligne qui parle de security_driver, et la configurer
security_driver = "apparmor"
sudoedit /etc/apparmor.d/libvirt/TEMPLATE.qemu
#
# This profile is for the domain whose UUID matches this file.
#
#include <tunables/global>
profile LIBVIRT_TEMPLATE flags=(attach_disconnected) {
#include <abstractions/libvirt-qemu>
"/srv/VMs/" r,
"/srv/VMs/**" rwk,
}
On rajoute les deux lignes en /srv. Penser à personaliser le lien : VMs est le dossier. La seconde ligne autorise toutes les images dessous.
Utilisation¶
Créer une nouvelle machine¶
Bon, je l’ai mis parce que c’est le but de QEMU, mais go chercher, te faut 20s.
Installer les Guest tools sur Windows¶
Il est possible de télécharger l’équivalent des Guest Additions sur libvirt/QEMU. Pour cela, les récupérer sur le site de Fedora.
Redimensionner un disque¶
Avec packer, mes disques font 40Go, et tout est consommé à cause du partitionnement « ANSSI-proof ». Quand j’ai voulu re-maquetter Wazuh, j’ai eu besoin de plus d’espace sur une partition. Qu’à celà ne tienne, LVM est fait pour ça. 1ère idée, étendre la partition sur un autre disque. C’est mieux avec Terraform, mais demande de redémarrer la machine sur un live boot. Je suis tombé sur une petite doc plutôt cool qui explique comment s’en passer. Je la reprends ici au cas où :
qemu-img resize disk.qcow2 +10G #Ou 50G pour être sur une taille fixe.
sudo modprobe nbd max_part=10 #Permet de créer des faux disque sur lequel on va pouvoir plug le notre !
sudo qemu-nbd -c /dev/nbd0 disk.qcow2 #Le disque est monté en /dev/nbd0.
## Je n'ai pas trouvé la commande pour resize le PV. Donc je le fais à la "main"
gparted /dev/nbd0 #Attention, bien en tant qu'utilisateur simple, sinon 'y'a problème !
lvextend -L+1G /dev/server/var #Rajout 1G à /var. Pour la fixer : -L10G
e2fsck -f /dev/server/var
resize2fs /dev/server/var
qemu-nbd -d /dev/nbd0 #On démonte
Et voilà, on peut relancer la vm, on voit que notre disque a pris un bon +10G, la partition +1G, et il pèse toujours rien !
qcow2 vers vmdk¶
J’ai eu à envoyer une de mes machines sur un ESX. Voici comment faire :
cp disk.qcow2 disk_bkup.qcow2
qemu-img convert -f qcow2 -O vmdk ./disk disk.vmdk
Ok, j’avais trouvé une autre doc qui avait l’air super chiante, alors je voulais le garder, mais j’ai un peu honte là. Bref, c’est fait !
Partage de fichier entre l’hôte et la VM¶
Il est possible de partager des fihciers entre l’hôte et la VM. Pour cela, il faut d’abord installer virtiofsd puis créer le lecteur partagé sur la VM :
sudo apt install virtiofsd
sudo mkdir /mnt/share
sudo mount -t virtiofs share /mnt/share