« Qemu » : différence entre les versions

De Wiki doc

m (Correction des niveaux de titres)
Ligne 1 : Ligne 1 :
[[Category:virtualisation]]
[[Category:virtualisation]]
==Prérequis==
=Prérequis=


* [[Open vSwitch|L'installation d'Open vSwitch et création d'un  commutateur virtuel]]
* [[Open vSwitch|L'installation d'Open vSwitch et création d'un  commutateur virtuel]]
* Vérifier que les instructions de virtualisations sont supportés et activés : <source lang="bash" inline>egrep '^flags.*(vmx|svm)' /proc/cpuinfo</source>. Si un résultat s'affiche, c'est que c'est bon.
* Vérifier que les instructions de virtualisations sont supportés et activés : <source lang="bash" inline>egrep '^flags.*(vmx|svm)' /proc/cpuinfo</source>. Si un résultat s'affiche, c'est que c'est bon.


==Installation==
=Installation=


Qemu est disponible dans les dépôts Debian
Qemu est disponible dans les dépôts Debian
Ligne 11 : Ligne 11 :
  # apt install qemu-system-x86-64
  # apt install qemu-system-x86-64


==Script réseau==
=Script réseau=
Pour que la machine virtuelle puise se connecter sur Open vSwitch, des scripts sont a créer.
Pour que la machine virtuelle puise se connecter sur Open vSwitch, des scripts sont a créer.


Ligne 18 : Ligne 18 :
{{astuce|Les scripts peuvent être dans l'arborescence que vous voulez puisque vous spécifiez leur chemin dans la [[#D.C3.A9marrage_classique|commande de démarrage]] de la machine virtuelle.}}
{{astuce|Les scripts peuvent être dans l'arborescence que vous voulez puisque vous spécifiez leur chemin dans la [[#D.C3.A9marrage_classique|commande de démarrage]] de la machine virtuelle.}}


===Script de démarrage de l’interface===
==Script de démarrage de l’interface==
<source lang="sh">
<source lang="sh">
#!/bin/sh
#!/bin/sh
Ligne 42 : Ligne 42 :
* '''OVSTAG''' : numéro du Vlan
* '''OVSTAG''' : numéro du Vlan


===Script de d'arrêt de l’interface===
==Script de d'arrêt de l’interface==
<source lang="sh">
<source lang="sh">
#!/bin/sh
#!/bin/sh
Ligne 58 : Ligne 58 :
* '''OVSCOMMUT''' : interface de votre commutateur virtuel
* '''OVSCOMMUT''' : interface de votre commutateur virtuel


===Modifier les droits===
==Modifier les droits==
Ajouter les droits d’exécutions aux scripts
Ajouter les droits d’exécutions aux scripts
  # chmod +x /etc/qemu/qemu-if*
  # chmod +x /etc/qemu/qemu-if*


==Création d'une machine virtuelle==
=Création d'une machine virtuelle=


Création d'un disque virtuel
Création d'un disque virtuel
Ligne 73 : Ligne 73 :
* '''10G''' : taille attribué au disque
* '''10G''' : taille attribué au disque


==Démarrage de la machine virtuelle==
=Démarrage de la machine virtuelle=


===Démarrage classique===
==Démarrage classique==


  # qemu-system-x86_64 -m 1024 -name host1 -vnc :6 --enable-kvm -cpu host -smp cores=2,threads=1,sockets=1 -net nic,macaddr=52:54:00:12:34:56 -net tap,ifname=host1_180,script=/etc/qemu/qemu-ifup,downscript=/etc/qemu/qemu-ifdown -boot c --cdrom /etc/qemu/iso/debian-live-8.7.1-amd64-lxde-bureau.iso -hda /etc/qemu/disques/hdd.qcow2
  # qemu-system-x86_64 -m 1024 -name host1 -vnc :6 --enable-kvm -cpu host -smp cores=2,threads=1,sockets=1 -net nic,macaddr=52:54:00:12:34:56 -net tap,ifname=host1_180,script=/etc/qemu/qemu-ifup,downscript=/etc/qemu/qemu-ifdown -boot c --cdrom /etc/qemu/iso/debian-live-8.7.1-amd64-lxde-bureau.iso -hda /etc/qemu/disques/hdd.qcow2
Ligne 92 : Ligne 92 :
* '''-hda /root/hdd.qcow2''' : lien vers le disque virtuel précédant créé
* '''-hda /root/hdd.qcow2''' : lien vers le disque virtuel précédant créé


===Démarrage sur squashfs===
==Démarrage sur squashfs==


  # qemu-system-x86_64 -m 1024 -name pxe-doc -vnc :3 --enable-kvm -cpu host -smp cores=1,threads=1,sockets=1 -net nic,macaddr=52:54:00:12:34:53 -net tap,ifname=pxe-doc_182,script=/etc/qemu/qemu-ifup,downscript=/etc/qemu/qemu-ifdown -boot c -append 'root=/dev/sda net.ifnames=0' -kernel /var/lib/lxc/lxc-pxe/rootfs/srv/tftp/noyaux/stretch/vmlinuz-4.13.0-custom -initrd /var/lib/lxc/lxc-pxe/rootfs/srv/tftp/noyaux/stretch/initrd.img-4.13.0-custom -hda /var/lib/lxc/lxc-pxe/rootfs/srv/tftp/images/stretch-pxe.squashfs
  # qemu-system-x86_64 -m 1024 -name pxe-doc -vnc :3 --enable-kvm -cpu host -smp cores=1,threads=1,sockets=1 -net nic,macaddr=52:54:00:12:34:53 -net tap,ifname=pxe-doc_182,script=/etc/qemu/qemu-ifup,downscript=/etc/qemu/qemu-ifdown -boot c -append 'root=/dev/sda net.ifnames=0' -kernel /var/lib/lxc/lxc-pxe/rootfs/srv/tftp/noyaux/stretch/vmlinuz-4.13.0-custom -initrd /var/lib/lxc/lxc-pxe/rootfs/srv/tftp/noyaux/stretch/initrd.img-4.13.0-custom -hda /var/lib/lxc/lxc-pxe/rootfs/srv/tftp/images/stretch-pxe.squashfs
Ligne 101 : Ligne 101 :
* '''-initrd''': Indique le chemin de l'image initrd
* '''-initrd''': Indique le chemin de l'image initrd


==Arrêt de la machine virtuelle==
=Arrêt de la machine virtuelle=
L’arrêt s'effectue via la fonction dédiée à chaque système émulé. Pour forcer l’extinction, effectuer un <code>CTRL+C</code>.
L’arrêt s'effectue via la fonction dédiée à chaque système émulé. Pour forcer l’extinction, effectuer un <code>CTRL+C</code>.



Version du 10 décembre 2017 à 11:15

Prérequis

Installation

Qemu est disponible dans les dépôts Debian

# apt install qemu-system-x86-64

Script réseau

Pour que la machine virtuelle puise se connecter sur Open vSwitch, des scripts sont a créer.

INFORMATION

Ce script met dynamiquement les interfaces réseaux dans le VLAN indiqué dans la variable ifname de la commande de démarrage d'une machine virtuelle. Il suffit de mettre l'id du VLAN après un trait de soulignement pour que le script puisse le gérer. Dans l'exemple, ma machine sera dans le VLAN 180.

ASTUCE

Les scripts peuvent être dans l'arborescence que vous voulez puisque vous spécifiez leur chemin dans la commande de démarrage de la machine virtuelle.

Script de démarrage de l’interface

#!/bin/sh
#Séparation du nom de l'interface de l'id du VLAN utilisé
#nomIface=`echo $1 | cut -f 1 -d '_'`
idVlan=`echo $1 | cut -f 2 -d '_'`

OVSCOMMUT=br0
OVSTAG=$idVlan
echo "Execution de /etc/qemu/qemu-ifup"
echo "Allumage de $1 pour l'ajout au pont OVS..."
ip link set $1 up promisc on
echo "Ajout de $1 à ${OVSCOMMUT}..."
ovs-vsctl --may-exist add-br ${OVSCOMMUT}
ovs-vsctl --if-exists del-port ${OVSCOMMUT} $1
ovs-vsctl --may-exist add-port ${OVSCOMMUT} $1
ovs-vsctl --if-exists set port $1 tag=${OVSTAG}
sleep 2

Variables:

  • OVSCOMMUT : interface de votre commutateur virtuel
  • OVSTAG : numéro du Vlan

Script de d'arrêt de l’interface

#!/bin/sh
OVSCOMMUT=br0
echo "Execution de /etc/qemu/qemu-ifdown"
echo "Arrêt de $1 pour la suppression au pont OVS..."
ip link set $1 down
echo "Suppression de $1 à ${OVSCOMMUT}..."
ovs-vsctl --if-exists del-port ${OVSCOMMUT} $1
echo "Suppression de $1..."
ip link delete dev $1

Variable:

  • OVSCOMMUT : interface de votre commutateur virtuel

Modifier les droits

Ajouter les droits d’exécutions aux scripts

# chmod +x /etc/qemu/qemu-if*

Création d'une machine virtuelle

Création d'un disque virtuel

# qemu-img create -f qcow2 hdd.qcow2 10G

Paramètres:

  • -f qcow2 : type du disque vituel
  • hdd.qcow2 : nom de l'image disque
  • 10G : taille attribué au disque

Démarrage de la machine virtuelle

Démarrage classique

# qemu-system-x86_64 -m 1024 -name host1 -vnc :6 --enable-kvm -cpu host -smp cores=2,threads=1,sockets=1 -net nic,macaddr=52:54:00:12:34:56 -net tap,ifname=host1_180,script=/etc/qemu/qemu-ifup,downscript=/etc/qemu/qemu-ifdown -boot c --cdrom /etc/qemu/iso/debian-live-8.7.1-amd64-lxde-bureau.iso -hda /etc/qemu/disques/hdd.qcow2

Paramètres:

  • -m 1024 : mémoire attribué a la machine virtuelle (en octets)
  • -name : nom de la machine virtuelle
  • -vnc :6 : Utilisation de VNC sur le port 5906
  • --enable-kvm : Permet la prise en charge des instructions de virtualisation du processeur
  • -cpu host : Émule un processeur KVM avec théoriquement les mêmes fonctionnalités que l'hôte (ne fonctionne qu'avec le paramètre --enable-kvm). Voir le paramètre -cpu help pour la liste des possibilités
  • -smp cores=2,threads=1,sockets=1 : Émule un multiprocesseur symétrique à mémoire partagée (on peut mettre plusieurs cœurs et plusieurs processeurs sur une machine)
  • -net nic,macaddr=52:54:00:12:34:57 : l'adresse MAC de la machine virtuelle (voir)
  • -net tap,ifname=host1-eth0,script=/etc/qemu/qemu-ifup,downscript=/etc/qemu/qemu-ifdown : nom de l'interface réseau sur la machine maître (limité à 15 caractères) suivie des scripts précédemment créés
  • -boot c : Démarre sur le disque dur. Le disque étant vierge, il démarre le cdrom pour l'installation et redémarrera sur le disque dur la prochaine fois (valeurs possible : c|d|n - disque principal|cdrom|réseau)
  • --cdrom /srv/iso/debian-live-8.7.1-amd64-lxde-bureau.iso : lien vers l'ISO du CD-ROM
  • -hda /root/hdd.qcow2 : lien vers le disque virtuel précédant créé

Démarrage sur squashfs

# qemu-system-x86_64 -m 1024 -name pxe-doc -vnc :3 --enable-kvm -cpu host -smp cores=1,threads=1,sockets=1 -net nic,macaddr=52:54:00:12:34:53 -net tap,ifname=pxe-doc_182,script=/etc/qemu/qemu-ifup,downscript=/etc/qemu/qemu-ifdown -boot c -append 'root=/dev/sda net.ifnames=0' -kernel /var/lib/lxc/lxc-pxe/rootfs/srv/tftp/noyaux/stretch/vmlinuz-4.13.0-custom -initrd /var/lib/lxc/lxc-pxe/rootfs/srv/tftp/noyaux/stretch/initrd.img-4.13.0-custom -hda /var/lib/lxc/lxc-pxe/rootfs/srv/tftp/images/stretch-pxe.squashfs

Les 3 éléments importants sont:

  • -append: définit les paramètres du noyau. Le pré-requis indispensable est la valeur root=/dev/sda qui va indiquer au noyau d'utiliser ce périphérique comme / (il est émulé. Il n'existe pas réellement).
  • -kernel: Indique le chemin du noyau
  • -initrd: Indique le chemin de l'image initrd

Arrêt de la machine virtuelle

L’arrêt s'effectue via la fonction dédiée à chaque système émulé. Pour forcer l’extinction, effectuer un CTRL+C.

Source