ADeLLA.org , ADeLLA.org
Accueil du site > Documentation > Miscellanées > j’émule, tu émules, il émule...

j’émule, tu émules, il émule...

samedi 15 avril 2006, par aster


Émulons [1] !

Sans refaire un topo sur l’émulation (d’autres le font bien mieux que moi), ça consiste depuis son système, à lancer une machine virtuelle ("machine" comme PC) pour y émuler à l’intérieur un autre système. C’est très bien pour tester des live CD, ou lancer son Windows pour utiliser son logiciel "pro" qui ne marche que sous Windows.

Avant-propos et blablas

Je vais ici m’attarder, mais pas trop quand même, sur Qemu. Lors du dernier LEF, avec Daniel, nous avons eu le temps de tester un live CD de XEN (un autre émulateur, plus puissant). Cependant, ne l’utilisant pas encore, je vais vous conter ma relation intime avec Qemu ;) Par contre, et j’insiste, je ne vais pas refaire dans l’article la pige à ré-écrire des articles que d’autres ont déjà écrits [2] !

Prérequis

- Un système d’exploitation qui marche (oui même Windows fera l’affaire) depuis lequel nous allons émuler.
- Un binaire de Qemu. Pour nous, on passe par notre gestionnaire de paquets comme à l’habitude.
- soit un système d’exploitation sur le disque dur à booter, soit une iso (d’un live CD c’est bien) qu’on veut tester. Pour l’installation d’un système d’exploitation via Qemu, je vous renvoie sur Google[2] ;) En effet c’est possible, et relativement simple. L’intérêt ici n’est pas d’installer, mais bien de tester, avant d’installer :]

C’est parti

On fait simple, et pourtant c’est ce sur quoi j’ai buté pendant plusieurs heures (au bout de 3 jours on peut dire "plusieurs jours" ou pas encore ?)

Qemu n’a pas besoin que l’on soit super user root de l’espace pour l’utiliser, cependant, il faut avoir les même droits que root pour émuler un système existant. Vérifions ensemble. On est bien sous Linux et on veut lancer Windows XP qui est sur /dev/hda1, juste pour voir :)

$ls -l /dev/hda
brw-rw----  1 root disk 3, 0 2002-06-09 21:27 /dev/hda

Là, vu comme ça, à froid, si vous ne faites pas partie du groupe disk (tapper la commande `groups` pour le savoir) vous allez avoir du mal. Donc on s’ajoute au bon groupe (toujours en console ; comment ça je l’ai pas dit avant !?) ; en root : usermod -G disk <votre_login> Inutile de revenir sur l’importance de faire un `man usermod` ainsi que dans l’élan, un `man ls` (rien d’obligatoire, juste conseillé ;) ) On quitte X et on y revient (^atl-del, où ^=la touche Ctrl, alt=la touche alt, et del la touche del -ça paraît super logique en fait ;) ... ce qui est censé "killer" (fermer de façon violente) X (votre interface graphique) ce qui a pour effet, quand vous utilisez un gestionnaire de login (identifiants) graphique, de vous déloger afin que l’ajout du groupe soit effectif. À ce stade la commande (toujours dans un xterm, konsole...) `groups` doit nous dire qu’on est dans le groupe disk et qu’on a donc les droits d’écriture (w) et de lecture (r) sur celui-ci.

C’est maintenant que je lance mon sytème via mon lanceur (lilo, grub...). qemu -boot c -hda /dev/hda Cette commande devrait faire appraître votre lanceur qui vous donne le choix en général au démarrage ! Cliquez sur _ce que vous voulez_ il le lancera !

Mais quel intérêt ?

Personnellement je suis en train de faire un changement de disque dur et tout ce que cela implique (installation du système d’exploitation sur l’autre disque, copie des fichiers à sauver...). Donc, au lieu de redémarrer à tout va pour voir si mon lvm ou mon initrd est pris en compte, j’émule ! Ça peut tout à fait servir à rester sous Linux, et travailler sous son logiciel qui ne marche QUE sous Windows. Ça peut servir à tester un live-CD sans redémarrer :
- je télécharge l’iso
- je l’émule sans le graver qemu -cdrom /vers/le/chemin/de/l.iso) On peut émuler un Power-pc pour tester Mac-OSx ! Les possibilités sont énormes et chacun peut y trouver un usage.

Difficultés rencontrées

Tout d’abord cette histoire de droits ! Qemu n’est pas bavard, et me donnait comme erreur "disque introuvable", sans me parler de permissions. Heureusement on m’a aidé sur irc (irc.freenode.net/#qemu). Le fait de vouloir démarrer sans passer par un lanceur (grub dans mon cas). En théorie ça donne : qemu -kernel /mnt/hd/boot/vmlinuz -initrd /mnt/hd/boot/initrd.gz -hda /dev/hda Cependant, Qemu n’a pas su prendre mon initrd.gz en compte, ce qui me faisait un kernel panic (panique à bord du noyau) (dans Qemu, pas sur mon système réel ;) )

Conclusion

Comme vous l’avez vu, l’exercice peut être très intéressant et est relativement simple. J’espère donc que nombreux seront ceux qui vont tester, et bien sûr faire leurs retours en bas de l’article :)

P.-S.

Il peut être dangeureux d’émuler comme XP qui est installé sur le disque dur. En effet Qemu n’utilise pas votre configuration matérielle, mais une qui lui est propre : c’est la virtualisation. Ce qui fait que XP, va détecter du nouveau matériel, et se configurer en fonction. Quand vous rebooterais votre véritable XP, il va falloir reconfigurer à nouveau. Pour pallier à ça, on peut installer l’OS sur un disque virtuel (et là je refais pas la doc, il y en a des dizaines sur le net).

Notes

[1] Le terme est peut-être mal choisi mais il a l’avantage d’être explicite. Nous devons parler de virtualisation

[2] En effet lors de mes recherches je suis tombé sur les 3 ou 4 mêmes articles des dizaines de fois. Les articles étant sous licence libre, tout le monde les a remis sur son site, et Google qui fait bien son boulot, me les a tous sortis dans les 60 premiers. Je vous passe les hurlements et morsures que j’ai laissées à droite à gauche avant d’arriver à mes fins

Répondre à cet article

1 Message

  • j’émule, tu émules, il émule...

    17 avril 2006 22:24, par daniel

    super comme article ;-)

    J’ajoute comme info l’existence d’un accélérateur pour qemu : kqemu (ou qemu accelerator).

    performance :
    Qemu : le système émulé tourne de 5 -> 10 fois moins vite que le système hôte
    Qemu + kqemu : le système émulé tourne de 1 -> 2 fois moins vite que le système hôte.

    http://fabrice.bellard.free.fr/qemu/

    Cet accélérateur fonctionne si l’architecture de l’hôte et de la machine émulée sont identiques.

    J’ai eu quelques plantages avec ce accélérateur mais il fonctionne vraiment.

    Répondre à ce message


Suivre la vie du site | Valid HTML 4.01! | Valid CSS! | Plan du site | Espace privé | SPIP