« Qemu » : différence entre les versions
m Correction des niveaux de titres |
|||
| Ligne 1 : | Ligne 1 : | ||
[[Category:virtualisation]] | [[Category:virtualisation]] | ||
=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= | |||
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= | |||
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== | |||
<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== | |||
<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== | |||
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'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 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== | |||
# 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= | |||
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 à 09:15
Prérequis
- 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.
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
{{{1}}}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
<source lang="sh">
- !/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 </source>
Variables:
- OVSCOMMUT : interface de votre commutateur virtuel
- OVSTAG : numéro du Vlan
Script de d'arrêt de l’interface
<source lang="sh">
- !/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 </source>
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.