![]() | Pensez bien à lancer la commande qemuctl en la faisant toujours précéder de sudo. Dans le cas contraire le script s'écuterait sans les droit de l'utilisateur root et s'arrêterait en affichant un message d'erreur. |
Afin d'automatiser les tâches de création, de démarrage et d'arrêt des images QEMU j'ai mis au point un script nommé qemuctl (téléchargeable ici). Une fois le script téléchargé, déposez-le en tant que root dans /usr/bin/ et rendez-le exécutable à l'aide de chmod +x /usr/bin/qemuctl. Ensuite vérifiez que vous avez bien suivi ce que nous avons dit Section 5.1 pour pouvoir utiliser ce script avec les droits de l'utilisateur root.
Avant toute chose, pensez à adapter la configuration du script à votre système. Les constantes à modifier se trouvent en début de script:
use constant QEMU_PATH => "/home/grinch/qemu"; use constant QEMU_RAM_SIZE => 256; use constant QEMU_GRAPHIC => '-nographic'; use constant QEMU_VLAN_IP => '127.0.0.1'; use constant QEMU_VLAN_PORT => '1234';
La constante QEMU_PATH
pointe sur le répertoire dans lequel se trouve vos répertoires d'images QEMU.
La constante QEMU_RAM_SIZE
indique la taille maximum de la RAM à allouer pour le système contenu dans l'image QEMU.
La constante QEMU_GRAPHIC
contient l'option de contrôle de l'affichage. Si elle contient -nographic
, aucun display X ne sera utilisé lors du lancement. Si elle ne contient rien (une chaîne vide), QEMU utilisera un display X.
La constante QEMU_VLAN_IP
contient l'adresse IP sur laquelle est géré le VLAN. Il ne s'agit pas obligatoirement de la boucle locale. Elle est utilisée lorsque l'option vls
(VLAN serveur) ou vlc
(VLAN client) est passée à qemuctl.
La constante QEMU_VLAN_PORT
contient le numéro de port sur lequel est géré le VLAN. Il est utilisé lorsque l'option vls
(VLAN serveur) ou vlc
(VLAN client) est passé à qemuctl.
![]() | Une fois que le système est installé et configuré sur l'image je vous conseille de ne plus utiliser de display X et d'accéder à votre image via SSH depuis la machine hôte. |
Le fonctionnement du script est très simple. Dans un premier temps, lancez-le sans arguments afin d'afficher l'aide:
grinch@badiou:~/qemu$ qemuctl Version: 2006042300 Usage : qemuctl imgname [install|start|stop] [vls|vlc] Example: qemuctl freebsd start Available QEMU images: - fedora - freebsd - debian - gentoo Report bugs to <esaracco@users.labs.libre-entreprise.org> grinch@badiou:~/qemu$
Par défaut, qemuctl affiche une aide ainsi que la liste des différentes images détectées.
Le synopsis est le suivant:
qemuctl imgname [install | start | stop] [vls | vlc]
qemuctl permet de simplifier la création d'une image QEMU. Il faut néanmoins lui préparer un peu le terrain. Le script s'attend à trouver l'arborescence décrite Section 2.3. Si nous décidions par exemple d'installer une image du système FreeBSD nous préparerions le terrain comme suit:
$ cd ~/qemu/ $ mkdir -p freebsd/src $ cd freebsd/src/ $ wget "ftp://ftp.freebsd.org/pub/FreeBSD/ISO-IMAGES-i386/6.1/6.1-RC1-i386-disc1.iso" $ ln -s 6.1-RC1-i386-disc1.iso freebsd.iso $ cd ../ $ qemu-img create freebsd.img 5G
Ce qui nous donnerait au final:
grinch@badiou:~/qemu/freebsd$ pwd /home/grinch/qemu/freebsd grinch@badiou:~/qemu/freebsd$ ls -lR .: total 4 -rw-r--r-- 1 grinch grinch 5368709120 2006-03-13 18:43 freebsd.img drwxr-xr-x 2 grinch grinch 4096 2006-04-17 19:47 src ./src: total 49728 lrwxrwxrwx 1 grinch grinch 30 2006-04-17 19:47 freebsd.iso -> 6.1-RC1-i386-disc1.iso -rw-r--r-- 1 grinch grinch 50862080 2006-03-13 18:25 6.1-RC1-i386-disc1.iso grinch@badiou:~/qemu/freebsd$
Une fois le terrain préparé il suffirait de lancer sudo qemuctl freebsd install.
Pour exécuter une image (debian dans notre cas), utilisez sudo qemuctl debian start.
Un fichier de log est automatiquement créé directement sous le répertoire d'hébergement de l'image. Ici sous ~/qemu/debian/. Ce fichier porte le nom de l'image: debian.log. Le script crée également un fichier debian.pid dans lequel est stocké l'identifiant du processus correspondant à l'image QEMU démarrée.
Pour lancer une image en tant que serveur de réseau virtuel (voir Section 4.3.1) il suffit de préciser l'argument vls
après l'action: sudo qemuctl debian start vls.
Pour lancer une image en tant que client d'un réseau virtuel (voir Section 4.3.1) il suffit de préciser l'argument vlc
après l'action: sudo qemuctl debian start vlc.
![]() | Il est recommandé de ne jamais arrêter manuellement une image lancée avec qemuctl. Les images lancées avec qemuctl doivent être arrêtées avec qemuctl. |
L'arrêt d'une image est aisé lorsqu'on l'a démarrée en ne lui interdisant pas d'utiliser un display graphique. Néanmoins l'utilisation d'un display pouvant causer des problèmes au sein de X (instabilité du comportement de la souris, instabilité de la console graphique etc.) il est plus simple de passer l'option -nographic
à QEMU via la constante QEMU_GRAPHIC
de qemuctl (voir Section 5.2 pour les détails).
Pour arrêter une image (debian dans notre cas), pensez à stopper son système proprement (via la command halt par exemple), puis après avoir attendu un peu le temps que ses processus se terminent, utilisez sudo qemuctl debian stop.
Précédent | Sommaire | Suivant |
Automatisation | Niveau supérieur | Conclusion |