5. Création d'une machine virtuelle

[Note] Note

Toutes les opérations présentées dans cette section utilisent le répertoire utilisateur ~/vm/ dans lequel sont stockées les images de systèmes virtuels.

Outils nécessaires

Sachant que les modules de virtualisation appartenant au noyau Linux sont chargés en mémoire, il faut maintenant connaître la liste des outils nécessaires à la création et au lancement des instances de machines virtuelles. Les paquets associés à la gestion des images de machines virtuelles sont les suivants :

$ aptitude search ~iqemu
i A ipxe-qemu                 - PXE boot firmware - ROM images for qemu
i A qemu-system-common        - QEMU full system emulation binaries (common files)
i   qemu-system-x86           - QEMU full system emulation binaries (x86) 
i   qemu-user                 - QEMU user mode emulation binaries
i A qemu-user-binfmt          - QEMU user mode binfmt registration for qemu-user
i   qemu-utils                - QEMU utilities

Le paquet qemu-system-x86 correspond au processus d'émulation d'architecture x86 avec le support des extensions matérielles : Intel VT et AMD SVM. Il fournit aussi les éléments de description des périphériques de carte mère pour cette architecture : contrôleur PCI, carte vidéo, carte réseau, carte son, etc.

Installation d'une machine virtuelle

On commence par créer un fichier image de disque virtuel qui servira de support au système de fichiers de la nouvelle instance de système d'exploitation.

:~/vm$ qemu-img create -f raw vm0-debian-stable-amd64.raw 80G
Formatting 'vm0-debian-stable-amd64.raw', fmt=raw size=85899345920

:~/vm$ du -hs vm0-debian-stable-amd64.raw
0       vm0-debian-stable-amd64.raw

Le format d'image créé à l'aide de l'instruction ci-dessus est baptisé raw. Il s'agit d'un format brut, utilisé par défaut, sur lequel seuls les secteurs écrits entraînent une réservation d'espace. Ce choix de format peut être modifié par la suite puisqu'il est toujours possible de convertir une image d'un format à un autre après coup.

On utilise cette image disque pour lancer le processus d'installation de la machine virtuelle.

:~/vm$ ./scripts/iso-install-startup.sh \
vm0-debian-stable-amd64.raw \
~/iso.images/debian-8.3.0-amd64-netinst.iso \
512 \
0

~> Machine virtuelle : vm0-debian-stable-amd64.raw
~> Port SPICE        : 5900
~> Mémoire RAM       : 512
~> Adresse MAC       : ba:ad:ca:fe:00:00

Pour l'installation du système d'exploitation de la machine virtuelle, on utilise le script iso-install-startup.sh donné en annexe Section A.4, « Installation d'un système sur machine virtuelle ». Ce script impose au moins quatre paramètres.

  1. Le fichier image de la machine virtuelle : vm0-debian-stable-amd64.raw dans l'exemple ci-dessus.

  2. Le fichier au format iso correspondant au média d'installation. Dans l'exemple, il s'agit de l'image netinst de la version Jessie du système Debian GNU/Linux.

  3. La quantité de RAM allouée à la machine virtuelle : 512Mo dans l'exemple.

  4. Le numéro du port d'accès à l'écran de la machine virtuelle via le protocole SPICE. Ici la valeur 0 conduit à l'utilisation du port numéro 5900.

Après l'initialisation de la machine virtuelle, le processus d'installation classique démarre.

Utilisation du protocole SPICE

Le protocole SPICE a pour but de fournir un accès distant interactif à l'écran d'un système virtualisé. Il s'agit d'un protocole client/serveur dont la partie serveur est située sur la machine virtuelle.

Dans le contexte de ce guide, les paramètres nécessaires à l'utilisation de ce protocole sont présents dans les scripts proposés en Annexe A, Scripts spécifiques. Un choix de paramétrage particulier a été fait. L'accès est ouvert sur l'adresse localhost du système hôte dans le but de faciliter l'utilisation de l'écran distant avec IPv4 ou IPv6. Cet accès ne devient «vraiment distant» que si un tunnel SSH est ouvert entre le système hôte et le système sur lequel on souhaite afficher l'écran de la machine virtuelle.

Ainsi, le script iso-install-startup.sh utilisé plus haut ouvre un accès sur le port tcp/5900 en écoute sur l'interface de boucle locale du système hôte. On peut établir un tunnel SSH puis exécuter le client SPICE à l'aide des commandes suivantes.

:~$ ssh -f -N -L 5900:localhost:5900 <user>@<hostname>

:~$ spicec -h localhost -p 5900

Le programme spicec appartient au paquet spice-client.

C'est à l'aide de ces paramètres que le protocole SPICE a été utilisé pour réaliser la copie d'écran ci-dessus.