Introduction
Comment virtualiser un OS sur un simple PC hôte ?
Je propose ici une solution simple et open-source : Qemu-KVM. Elle permet de créer des machines virtuelles, puis de les gérer à partir d'une interface graphique : par exemple les démarrer indépendamment les unes des autres.
Je l’utilise avec succès depuis plusieurs années, sur un PC mono-processeur multi-coeurs (Intel i5). Elle est stable, plutôt rapide et facile d’utilisation.
1) Choix technique
En terme de virtualisation, plusieurs pistes sont aujourd’hui facilement disponibles sur une distribution Linux, notamment :
- Le logiciel Wine, prévu pour installer un OS Windows virtuel.
- Le logiciel PlayOnLinux, prévu pour utiliser une application compatible Windows, au sein d’un interpréteur de commandes.
- Des logiciels de virtualisation, tels Qemu-KVM, VMWare, Xen, VirtualBox…
N’étant pas particulièrement exigeant sur les capacités techniques ou fonctionnalités étendues, je voulais une solution simple à utiliser et rapide à mettre en œuvre. Il s’agissait avant tout de disposer de machines virtuelles me permettant de tester différentes distribution Linux, voire d’effectuer des tests sur un clône de mon PC hôte. Ce dernier cas d’usage s’est avéré intéressant pour choisir des nouvelles applications ou bien compiler des applications non disponibles en bibliothèque !
Pour toutes ces raison, j’ai choisi la solution Qemu déclinée dans KVM, d’où la dénomination « Qemu-KVM » que l’on peut retrouver dans les packages Debian.
2) Pré-requis
Par défaut, le PC hôte partage ses ressources physiques :
- De façon dédiée pour le processeur, le disque et la mémoire (voir ci-après).
- De façon mutualisée pour le clavier, la souris, l’écran, les réseaux LAN et Wi-Fi, le son.
Chaque machine virtuelle consomme au moins 1 coeur du processeur, 8 Go de disque et 1 Go de RAM. Ces valeurs sont des prérequis usuels pour installer une distribution Linux.
Attention : il s’agit d’une consommation exclusive, c’est-à-dire réservée et allouée par le PC hôte. Tous ces chiffres s'additionnent, donc il faut faire attention à respecter les ressources physiques du PC hôte avant de lancer plusieurs machines virtuelles simultanément !
En ce qui concerne l’utilisation du disque : la machine virtuelle y sera stockée sous forme de fichier binaire. La taille du fichier représente :
- Soit une partition unique, partagée par le système et les données utilisateur.
- Soit plusieurs partitions, pour séparer traditionnellement le système des données.
- Une partition de swap, automatiquement créée lors de l’installation d’une machine virtuelle.
Ces partitions sont proposées lors de l'installation de la distribution dans sa machine virtuelle, et n'ont rien à voir avec la virtualisation à proprement parler.
Par ailleurs, si l’on souhaite échanger des fichiers entre machines virtuelles, il faudra créer un serveur Samba quelque part sur le PC hôte ou une des machines virtuelles. Ou bien utiliser le cloud, un NAS, un serveur tiers.
3) Installation de Qemu-KVM
Je vous laisse consulter par vous-même la littérature disponible sur le web sur KVM !
Par hypothèse, je vais utiliser mon PC hôte : il repose sur une distribution AntergOS (https://antergos.com), motorisée par Linux ARCH. J’ai testé l’installation avec succès début 2019.
Pour ceux qui utilisent une distribution basée sur DEBIAN, j’indique également la marche à suivre, mais n’ai pas testé ce contexte depuis mi-2018.
Sur ArchLinux, les packages à installer sont les suivants :
- qemu
- qemu-arch-extra
- libvirt
- virt-manager
- bridge-utils
- ebtables
- dnsmasq
On peut effectuer l’installation soit à partir du client Pacman disponible dans la distribution, soit en ligne de commande.
- Sur Debian, les packages à installer sont les suivants :
- qemu-kvm
- qemu-utils
- libvirt-clients (ou "libvirt-bin" pour Debian Jessie)
- libvirt-daemon-system
- virt-manager
- spice-client-gtk
- ebtables
- gir1.2-spice-client-gtk-3.0
Remarque : le package « dnsmasq » est préinstallé dans la distribution. Si ce n’est pas le cas, il faudra l’ajouter à la liste...
4) Configuration de Qemu-KVM
Après l’installation des packages, il faut autoriser le service « libvirtd » afin qu’il soit automatiquement lancé au démarrage du PC hôte.
- Sur ArchLinux :
sudo systemctl enable libvirtd.service
- Sur Debian :
sudo service libvirtd enable
Si l’on se connecte via un compte utilisateur standard, il faut également intégrer cet utilisateur <youruser> aux groupes "kvm" et "libvirt".
- Sur ArchLinux :
usermod -aG libvirt,kvm <youruser>
- Sur Debian :
adduser <youruser> libvirt kvm
Enfin, redémarrer le PC hôte afin que tout soit OK.
Ouvrir une session et lancer l’application « Virt-Manager » qui est l’interface graphique de gestion des machines virtuelles.
5) Dépannage rapide
5.1) Service opérationnel
Il arrive fréquemment que le service « libvirtd » n’ait pas démarré au boot du PC hôte. Aussi, avant de lancer l’interface de gestion Virt-Manager, je conseille de vérifier ce point à la 1ère utilisation :
- Sur ArchLinux :
systemctl status libvirtd.service
- Sur Debian :
sudo service libvirtd status
Si le service est en effet arrêté, il faut le lancer et l’autoriser pour le prochain redémarrage.
- Sur ArchLinux :
sudo systemctl enable --now libvirtd.service
- Sur Debian :
sudo service libvirtd enable
sudo service libvirtd restart
Maintenant, Virt-Manager devrait être totalement opérationnel.
5.2) Erreur de bridge réseau
Parfois, il est impossible de créer une machine Virtuelle dans Virt-Manager, car une erreur apparaît :
cannot create bridge 'virbr0': File exists:
Dans ce cas, il faut supprimer le bridge par défaut :
- Sur Debian :
sudo ifconfig virbr0 down
sudo brctl delbr virbr0
service libvirtd restart
On peut de nouveau lancer Virt-Manager et aller dans le menu "Edit" -> "Host details" -> "Virtual networks".
Démarrer alors le réseau par défaut.
5.3) Droits d’accès
Lors de la création d’une nouvelle Machine Virtuelle, il peut apparaître l’erreur "media location" :
Dans ce cas, il faut s'assurer que l'ISO de la distribution à installer :
- Soit est accessible en lecture pour tout le monde, soit appartient à root, et que root soit habilité en lecture-écriture.
- Est bien stockée dans un répertoire nommé sans espace (utiliser - ou _ à la place).
Conclusion
Voilà de quoi vous lancer dans l'aventure !
N'oubliez pas ce que j'ai écrit en introduction : une fois installée, la solution est 100 % utilisable via l'interface graphique "Virt-Manager".
PS : si j'ai le temps, je réaliserai un article d'utilisation avec capture d'écran.
Félicitations ! Votre post a été sélectionné de part sa qualité et upvoté par le trail de curation de @aidefr !
La catégorie du jour était : #linux
Si vous voulez aider le projet, vous pouvez rejoindre le trail de curation ici!
Bonne continuation !
Rendez-vous sur le nouveau site web de FrancoPartages ! https://francopartages.xyz
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Ce post a été supporté par notre initiative de curation francophone @fr-stars.
Rendez-vous sur notre serveur Discord pour plus d'informations
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Une bonne petite introduction à la virtualisation sous Linux ! Upvoté à 100% !
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Merci pour le tutoriel ! :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Congratulations @banania! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :
You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word
STOP
Do not miss the last post from @steemitboard:
Vote for @Steemitboard as a witness to get one more award and increased upvotes!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit