Publié il y a 7 mois, 4 semaines
Étiquettes: ArchLinux, logiciel libre, virtualisation
Étant donné la puissance actuelle des ordinateurs personnels, il est tout à fait possible d'utiliser plusieurs OS en même temps. Cela permet par exemple de jouer avec des livecd, tester des systèmes, utiliser des programme n'existant que sur un OS donné, sans avoir à se prendre la tête avec une solution comme le dual-boot.
Il existe depuis longtemps des solutions d'émulation permettant de faire fonctionner plusieurs OS en même temps (bochs). Cependant l'émulation complète du matériel entraine une perte de performances très importante. Pourtant si l'OS hôte et l'OS invité sont destiné tout les 2 à la même architecture matérielle, il est envisageable d'exécuter directement (ou quasiment) un certain nombre des instructions de l'OS invité sur la machine hôte ... c'est un des principe reprit par la plupart des logiciels de virtualisation existants.
Il existe des solutions qui ont le vent en poupe à l'heure actuelle. Sous Linux on retrouve notamment VMware Workstation, VMware Server Parallels Workstation et SUN xVM VirtualBox ... cependant, je préfère utiliser 2 autres solutions qemu et kvm.
qemu, kvm ... qui sont ces 2 gus ?
qemu et kqemu
qemu ne fait pas de la virtualisation à proprement parler, mais utilise une technique de traduction de code pour atteindre une vitesse d'émulation raisonnable. l'auteur de qemu (aka Fabrice Bellard) a cependant créer un module d'accélération nommé kqemu permettant d'exécuter directement le code des applications fonctionnant en espace utilisateur de l'OS émulè sur le processeur. Ce module transforme donc qemu en une solution de virtualisation.
kvm
kvm est une solution tirant partie des instructions de virtualisation ajoutées aux processeurs x86 par Intel® et AMD®. kvm se présente comme une module noyau utilisé par une version modifiée de qemu.
Pourquoi pas Virtual Box, VMWare, Parrallels ?
Avantages
Selon moi, les avantages de qemu + kqemu et/ou kvm vis à vis des solutions concurrentes sont:
- Simplicité d'installation: ce n'est pas du cliquodrome, mais paradoxalement, je trouve son utilisation en ligne de commande d'une très grande simplicité, et aussi d'une grande souplesse.
- Installation non intrusive: (pas de modules inconnu ou de services supplémentaires à lancer au démarrage). Je me souviens d'une époque où j'utilisais VMWare Workstation, et où tout passage à un noyau d'une version supérieure cassait les modules et services nécessaires à son fonctionnement, en attendant l'arrivée de patchs non supportés par VMWare (qui a parlé de vmware-any-any-update ??). Au moins avec kvm (intégré au noyau à partir de la version 2.6.20) et kqemu je n'ai pas ces soucis.
- LIBRES: contrairement à Parrallels Workstation et VMWare (Server ou Workstation).
- qemu-img : la commande permettant de créer les images de disque dur pour les machines virtuelle, qui est un véritable couteau suisse des formats de disques utilisés par les différentes solutions existantes.
Inconvénients
Les avantages que je trouve dans qemu et kvm ne doivent pas éclipser certains inconvénients (pour certains en tout cas).
- Ligne de commande: les 2 programmes fonctionnent en CLI et sont de ce fait, pour certains moins accessibles que les GUI proposées par les concurrents.
- Mise en œuvre du réseau: bien qu'il soit simple de donner accès au réseau à une machine virtuelle, accèder à cette même machine virtuelle par le réseau à partir de son LAN (machine hôte ou autres machines physiques ou virtuelles), est une autre paire de manche, et nécessite quelques bidouillages.
Installation et utilisation sur ArchLinux
Pré-requis
Pour peu que ce ne soit pas le cas (je ne vois pas trop comment ce serait possible):
pacman -S kernel26
Le noyau vient avec les modules nécessaires pour l'utilisation de kvm si le processeur le supporte.
Les 2 autres pré-requis sont tout aussi simples à satisfaire:
pacman -S kqemu, qemu
Le paquet qemu, est fourni avec le binaire permettant de tirer parti de kvm (binaire nommé qemu-kvm). Quant à l'utilisation de kqemu, elle nécessite l'installation du paquet sus-nommé. Pour utiliser kqemu sur un système 64bits, il faudra bien prendre la précaution d'appeler qemu-system-x86_64.
Le cas de kvm
L'utilisation de kvm nécessite un processeur Intel® ou AMD® supportant la virtualisation. Pour vérifier que c'est le cas de votre processeur, il suffit d'entrer la commande suivante dans un terminal:
egrep '^flags.*(vmx|svm)' /proc/cpuinfo
Si cette commande retourne un affichage à l'écran, vous pouvez utilisez kvm, sinon, vous devez vous contentez de qemu et kqemu.
Il va falloir aussi charger les modules au démarrage. On modifie donc notre /etc/rc.conf. Les modules à charger diffèrent selon que le processeur est de marque Intel® ou Amd®.
Pour les processeurs Intel®, on charge le module:
kvm-intelPour les processeurs AMD® on charge le module:
kvm-amd
Utilisation basique
Je vais décrire une utilisation basique d'une machine virtuelle dans laquelle je souhaite installer la dernière version (à la date de la rédaction) de fedora (en).
La première chose à faire lorsque l'on souhaite utiliser une machine virtuelle est de créer un disque dur virtuel (sauf si l'on test un livecd ou si on utilise une partition physique). La création de cette image disque se fait avec la commande qemu-img:
qemu-img create -f qcow2 ~/vm/fedora-00.img 20G
Une fois le disque créer il faut lancer la machine virtuelle. Dans cet exemple il s'agit d'une machine virtuelle connecté au net disposant de 512Mo de RAM.
Lors du premier lancement il peut être intéressant de procéder à l'installation d'un OS. On lance donc la machine avec l'image ISO du disque d'installation de l'OS en question, et on exige un boot de la machine virtuelle sur le cdrom:
qemu avec kqemu (sur arch64)
qemu-system-x86_64 -kernel-kqemu -boot d -m 512 -net nic -net user -cdrom ~/isos/Fedora-9-Beta-i386-DVD.iso ~/vm/fedora-00.imgkvm
qemu-kvm -boot d -m 512 -net nic -net user -cdrom ~/isos/Fedora-9-Beta-i386-DVD.iso ~/vm/fedora-00.img
Une fois l'installation du système d'exploitation sur la machine virtuelle achevée, il n'est plus nécessaire de monter l'image du cdrom dans la machine virtuelle, ni de préciser le boot sur cd, on pourra donc se contenter de démarrer la machine virtuelle par la commande:
qemu avec kqemu (sur arch64)
qemu-system-x86_64 -kernel-kqemu -m 512 -net nic -net user ~/vm/fedora-00.imgkvm
qemu-kvm -m 512 -net nic -net user ~/vm/fedora-00.img
Pour aller plus loin
Documentation
Quelques liens concernant qemu et kvm:
- La documentation officielle de qemu: http://fabrice.bellard.free.fr/qemu/qemu-doc.html (en)
- La FAQ de qemu : http://kidsquid.com/cgi-bin/moin.cgi/FrequentlyAskedQuestions (en)
- La FAQ de kvm est aussi un très bon endroit pour trouver des renseignements : http://kvm.qumranet.com/kvmwiki/FAQ (en)
- La page de qemu sur le wiki archlinux: http://wiki.archlinux.org/index.php/QEMU (en)
- La page de qemu sur le wiki de archlinux.fr: http://wiki.archlinux.fr/howto:virtualisation:qemu?s=qemu
- L'incontournable wikipedia : la page de qemu et la page de kvm.
Interface graphique
Il existe un certain nombre de GUI pour qemu, mais si je ne devais en retenir qu'une ce serait : Qemulator dont voici quelques captures d'écran (lachement copiées du site web):
Réseau
Pour une mise en réseau plus sophistiquée, on pourra regarder du coté de ces 2 projets:
- bridge-utils: permettant de partager une interface réelle entre plusieurs interfaces virtuelles.
- virtual distributed ethernet.
À suivre ...
S'en est fini de ce (long) billet. La suite dans un article à suivre ou je présenterais plus en détails la façon dont j'utilise qemu, à savoir :
- Lancement des machines virtuelles au démarrage.
- Indépendance vis à vis d'un serveur X sur l'hôte.
- Visualisation distante.
Dans un précédent billet, je m'inquiétais du sort réservé à kvm dans la version i686 de ArchLinux. Avec la sortie du noyau 2.6.22, les développeurs ont revus leur choix et intègrent à nouveau kvm dans la version i686:
[root@melody : ~]
# pacman -Q kernel26
kernel26 2.6.22.1-3
[root@melody : ~]
# zgrep KVM /proc/config.gz
CONFIG_KVM=m
CONFIG_KVM_INTEL=m
CONFIG_KVM_AMD=m
Et cerise sur la gateau, le paquet qemu contient un exécutable (/usr/bin/qemu-kvm) avec le support de kvm.
C'est donc une bonne nouvelle, même si, j'aurais (finalement) préféré la solution d'avoir les modules fournis dans un paquet séparé afin de suivre au plus prêt les versions de kvm.
Publié il y a 1 année, 6 mois (Édité il y a 1 année, 5 mois)
Étiquettes: ArchLinux, Windows, coup de gueule, fedora, virtualisation
NOTE: une mise à jour sur l'évolution de la situation de kvm avec la sortie du noyau 2.6.22 est disponible ici.
Le problème.
En mettant à jour ma distribution, j'ai eu la mauvaise surprise de constater la désactivation du support de kvm dans le noyau par défaut.
[root@melody : ~]
# pacman -Q kernel26
kernel26 2.6.21.5-1
[root@melody : ~]
# zcat /proc/config.gz | grep KVM
# CONFIG_KVM is not set
Je ne m'attarderais pas sur les raisons qui ont poussé les développeurs à faire ce choix (cf ce fil de discussion et ma réponse).
La solution: on package
Si comme moi vous souhaitez tout de même utiliser kvm sur votre ArchLinux (i686), il faut reconstruire les paquets nécessaires en se basant entre autre sur les travaux effectués par l'équipe de ArchLinux (x86_64). Les paquets à reconstruire sont au nombre de 3:
- kvm-modules: Dans le PKGBUILD, n'hésitez pas à changer la ligne définissant la variable _kver afin que cette variable corresponde au noyau sur lequel vous souhaitez utiliser kvm.
- gcc3: La compilation des dernières versions de l'exécutable qemu utilisé par kvm nécessite gcc 3.4.x, or ArchLinux fourni un gcc 3.3.x.
- qemu-kvm: Pour finir il faut compiler le qemu fourni avec kvm.
Il faut noter que l'exécutable qemu produit est compatible avec le module kqemu présent dans le dépot extra.
Une capture d'écran pour la route.
Comme d'habitude, je ne pouvait pas faire un ticket sans une capture d'écran
Vous y voyez une fedora tournant dans ce qemu+kvm fraichement (ré)installé.
Un mal pour un bien ?
Bien que je ne sois pas d'accord avec cette suppression, elle a au moins le mérite de permettre d'utiliser des versions de kvm plus récentes que celles présentes dans les releases du noyau. Ainsi la version empaquetée ci dessus est la version kvm-28 qui supporte entre autre comme système invité (guest) Windows Vista, ce qui n'est pas possible avec la version kvm-17 fournie dans le noyau 2.6.21 .
J'ai soumis tout ces résultats sur le bugtracker d'ArchLinux en espérant qu'ils soient utiles.













![Validate my Atom 1.0 feed [Valid Atom 1.0]](http://media.slubman.info/valid-atom.png)