Vous êtes ici : Logram >> Les tutoriels >> Utiliser Qemu a fond

Utiliser Qemu a fond

Ca marche !
avatar
Auteur : steckdenis
Difficulté : 3/10
Date : le 14/09/2008 à 19:30

Commenter ce tutoriel

Le tutoriel que vous vous apprêtez à lire a été écrit par un bénévole, qui a mis à disposition gratuitement son savoir. Malgré le passage à la validation de ce tutoriel, nous ne pouvons garantir la véricité des informations contenues dedans. Merci de garder ceci à l'esprit pendant votre lecture
Bonjour :) ,

Normalement, si vous développez un OS, ou si vous en testez, vous devez connaître Bochs ou Qemu. Dans ce tuto, nous allons parler de l'utilisation avancée de Qemu.

Qemu est un système de virtualisation extrêmement simple à utiliser, et très rapide. Avec Qemu, en une simple ligne de commande, vous pouvez lancer une machine virtuelle complète, composée de plusieurs disques durs, avec des paramètres, voire même lancer directement un noyau Linux.

Nous allons donc apprendre à utiliser cette mine d'or qu'est Qemu, surtout du côté du débogage.

Table des matières

  1. La ligne de commande de Qemu
  2. Options de commande avancées
  3. Utilisation de Qemu est de GDB

La ligne de commande de Qemu

A la différence de Bochs, Qemu n'a pas besoin d'un lourd fichier de configuration, il peut être utilisé directement sous forme de ligne de commande. On pourrait croire que c'est moins efficace, mais ce n'est pas le cas. Qemu est très puissant.

Passons maintenant à cette fameuse ligne de commande. Pour un usage normal (booter sur un disque dur, avec le support du son et de l'usb), entrez simplement cette ligne :

Code : Console
  1. qemu -boot c -hda fichier_image.img -usb -localtime -soundhw sb16

Le système d'exploitation se trouvant sur le disque démarre :) . Décrivons cette ligne de commande.


Voilà, vous connaissez maintenant les arguments basiques de Qemu. Nous pouvons maintenant passer à l'usage avancé.

Options de commande avancées

Bon, maintenant, vous savez lancer un OS dans Qemu. Le problème, c'est que si c'est un OS stable (Windows, Linux, ou un mini-OS testé et qui marche), il n'y a pas de problème, mais si c'est votre OS, et qu'il plante, vous ne savez pas ce qui se passe.

Qemu est vraiment très pratique pour le débogage. Tout d'abord, si votre OS plante et affiche son message d'erreur (style "une erreur #GP s'est produite !"), ça va être difficile de laisser faire Qemu, car Qemu ne sait même pas que votre OS a planté. Il vous faut donc désactiver la gestion des erreurs de votre OS, pour que la moindre erreur grave produise un TripleFault. Grâce à ce TripleFault, Qemu va se fermer, et afficher à l'écran une foule d'informations, dont un dump très précis de tous les registres, même les x87, XMM, les registres systèmes, les registres de segment, le contenu du GDTR, IDTR, LDTR, TR, les crx, drx, etc.

Bref, un TripleFault dans Qemu est une mine d'or. Le problème, c'est que nous ne savons pas où s'est produite l'erreur. Pour cela, il va falloir un peu réfléchir. Vous allez d'abord rajouter à Qemu l'option "-d IN_ASM". Grâce à cette option, tout au long de l'exécution, Qemu va écrire dans un fichier de log toutes les instructions assembleur rencontrées.

Une fois le TripleFault survenu, il vous suffit d'ouvrir le fichier de log (/tmp/qemu.log sous Linux, et C:\Program Files\Qemu\qemu.log dans Windows).

N'ouvrez pas ce fichier dans un éditeur graphique, si votre OS a été utilisé pendant longtemps, beaucoup d'instructions ont étés écrites. Ce fichier peut faire 30 ou 40 Mo, et le bloc-note n'aime pas du tout les fichiers aussi gros (il plante à partir de +- 5Mo). Préférez un éditeur de texte en mode console, style "less" sous Linux, ou Vi porté sous Windows

Une fois que vous avez ouvert ce fichier, déplacez-vous à la fin. Avec less, c'est très simple, appuyez sur END. Pour les autres éditeurs de textes, genre Vi, Emacs ou autre (sachant que less suffit amplement), il faut entrer une commande pour se placer à la fin du fichier.

Une fois à la fin du fichier, vous voyez à nouveau le dump des registres. Remontez un petit peu, et vous trouvez les dernières instructions assembleur exécutées avant le crash de l'OS. À vous maintenant d'analyser tout ça ;) .

Utilisation de Qemu est de GDB

Erreur dans le lCode, que l'auteur de se message le corrige svp.
Ca marche !
avatar

Retour en haut

Auteur : steckdenis
Difficulté : 3/10
Date : le 14/09/2008 à 19:30

Commenter ce tutoriel