Une nouvelle version du célèbre émulateur Qemu, la 0.8.0, est sortie aujourd'hui 20 décembre. Cette nouvelle version apporte plusieurs améliorations depuis la version 0.7.2, avec en particulier le support de l'émulation système pour l'architecture ARM, le support de l'émulation multi-processeur (SMP), des nouveaux pilotes sons (ALSA et DirectSound), un début de support du bus USB, l'émulation de la carte son PCI ES1370, l'émulation "utilisateur" des architectures MIPS et MIPSel et des améliorations pour l'émulation système de l'architecture MIPS permettant de démarrer le noyau Linux. Qemu permet également maintenant d'utiliser les ports séries et ports parallèles de l'hôte depuis une machine virtuelle (sous Linux uniquement). Les échanges sont toujours très intenses sur la liste de développement, ce qui promet à l'avenir de nouvelles améliorations.
Dans une précédente dépêche, nous rappelions que Qemu utilise une technique de traduction dynamique de code, ce qui lui permet d'offrir une vitesse d'émulation très supérieure à celle que Bochs peut proposer. L'utilisation des accélérateurs Kqemu (non-libre) ou Qvm86 (libre) permettant d'améliorer encore la vitesse d'émulation lorsque l'architecture hôte est identique à l'architecture émulée.
Sortie de l'émulateur Qemu 0.7.0
Après plus de 6 mois de développement, une nouvelle version de Qemu est sortie fin avril. Qemu est un émulateur fonctionnant dans deux modes différents. Le premier mode permet d'émuler une architecture matérielle complète : le processeur ainsi que les périphériques matériels comme les disques, les cartes réseau, les ports séries, etc. Ce mode permet d'exécuter un système d'exploitation complet, et se rapproche de ce que permet l'émulateur Bochs. Le second mode, fonctionnant sous GNU/Linux uniquement permet d'exécuter des binaires prévus pour une architecture donnée sur une autre architecture : l'émulation n'a lieu que pour un processus particulier.
Le premier mode permettant d'exécuter un système d'exploitation complet, il est parfait pour tester de nouveaux systèmes, réaliser le débogage de modules noyau ou simuler des réseaux composés de machines virtuelles. Le second mode permet par exemple aux possesseurs d'architectures non-x86 d'exécuter des applications propriétaires compilés pour x86 lorsque cela est nécessaire.
Qemu étant indépendant du processeur émulé, il supporte l'émulation de différentes plateformes. L'émulation des processeurs x86 et PPC est complète, et l'émulation des processeurs x86_64, ARM ou SPARC sont à des états plus ou moins avancés. D'autre part, Qemu utilise une technique de traduction dynamique, qui consiste à transformer le code binaire de l'architecture cible en code binaire pour l'architecture hôte. Cette traduction étant effectuée une fois pour toutes pour chaque partie de code, la vitesse d'émulation est grandement améliorée par rapport à un émulateur classique comme Bochs.
Par ailleurs, la version 0.7.0 permet d'utiliser un module noyau, kqemu qui permet d'accélérer encore plus l'émulation, en permettant l'exécution de parties du code directement sur le processeur. Ce module ne fonctionne que si l'on émule un PC sur un PC et est livré sous licence propriétaire. Son auteur, Fabrice Bellard, qui est aussi le développeur principal de Qemu, recherche en effet un sponsor pour le développement de Qemu et kqemu. L'utilisation de cette licence propriétaire a provoqué de vives discussions sur la liste, certains défendant le bien-fondé de la démarche du développeur, d'autres la rejetant. Parallèlement, Paul Brooks a créé un projet expérimental pour développer un module aux fonctionnalités similaires à kqemu, mais distribué sous licence GPL: qvm86.
En dehors de ce support de kqemu, la version 0.7.0 apporte quelques nouveautés ou améliorations comme le support initial de l'architecture x86_64, une amélioration du support SPARC qui permet maintenant de démarrer Linux, le support de l'émulation du port parallèle, des instructions MMX, SSE, SSE2 et PNI, l'amélioration du support ARM, et l'intégration d'un code émulant une unité de calcul en virgule flottante.
Le premier mode permettant d'exécuter un système d'exploitation complet, il est parfait pour tester de nouveaux systèmes, réaliser le débogage de modules noyau ou simuler des réseaux composés de machines virtuelles. Le second mode permet par exemple aux possesseurs d'architectures non-x86 d'exécuter des applications propriétaires compilés pour x86 lorsque cela est nécessaire.
Qemu étant indépendant du processeur émulé, il supporte l'émulation de différentes plateformes. L'émulation des processeurs x86 et PPC est complète, et l'émulation des processeurs x86_64, ARM ou SPARC sont à des états plus ou moins avancés. D'autre part, Qemu utilise une technique de traduction dynamique, qui consiste à transformer le code binaire de l'architecture cible en code binaire pour l'architecture hôte. Cette traduction étant effectuée une fois pour toutes pour chaque partie de code, la vitesse d'émulation est grandement améliorée par rapport à un émulateur classique comme Bochs.
Par ailleurs, la version 0.7.0 permet d'utiliser un module noyau, kqemu qui permet d'accélérer encore plus l'émulation, en permettant l'exécution de parties du code directement sur le processeur. Ce module ne fonctionne que si l'on émule un PC sur un PC et est livré sous licence propriétaire. Son auteur, Fabrice Bellard, qui est aussi le développeur principal de Qemu, recherche en effet un sponsor pour le développement de Qemu et kqemu. L'utilisation de cette licence propriétaire a provoqué de vives discussions sur la liste, certains défendant le bien-fondé de la démarche du développeur, d'autres la rejetant. Parallèlement, Paul Brooks a créé un projet expérimental pour développer un module aux fonctionnalités similaires à kqemu, mais distribué sous licence GPL: qvm86.
En dehors de ce support de kqemu, la version 0.7.0 apporte quelques nouveautés ou améliorations comme le support initial de l'architecture x86_64, une amélioration du support SPARC qui permet maintenant de démarrer Linux, le support de l'émulation du port parallèle, des instructions MMX, SSE, SSE2 et PNI, l'amélioration du support ARM, et l'intégration d'un code émulant une unité de calcul en virgule flottante.
Linux VServer, pour ceux qui ne connaissent pas...
Linux-VServer, à ne pas confondre avec le Linux Virtual Server Project, est un projet lancé à l'origine par Jacques Gélinas (le patch CTX).
Le projet consiste en deux parties. La première est un patch pour le noyau (actuellement vs1.26 stable pour 2.4.25 et vs0.09.8 pour 2.6.3) qui permet, en résumé, de faire tourner plusieurs machines virtuelles sur une même machine physique. La seconde partie ajoute un ensemble d'outils pour installer/gérer ces serveurs virtuels. Ce projet permet, entre autre, de créer des serveurs mutualisés, une alternative très sérieuse au simple chroot, de tester une infrastructure N-tiers sur une même machine, etc.
Pour information le site LinuxFR.org tourne dans un vserver depuis maintenant plus de six mois, d'autres projets comme UUCPSSH.org tournent aussi sous serveurs virtuels. À ce titre la team de LinuxFR remercie Herbert Pötzl pour son support averti ainsi que tous les contributeurs au projet.
Le projet consiste en deux parties. La première est un patch pour le noyau (actuellement vs1.26 stable pour 2.4.25 et vs0.09.8 pour 2.6.3) qui permet, en résumé, de faire tourner plusieurs machines virtuelles sur une même machine physique. La seconde partie ajoute un ensemble d'outils pour installer/gérer ces serveurs virtuels. Ce projet permet, entre autre, de créer des serveurs mutualisés, une alternative très sérieuse au simple chroot, de tester une infrastructure N-tiers sur une même machine, etc.
Pour information le site LinuxFR.org tourne dans un vserver depuis maintenant plus de six mois, d'autres projets comme UUCPSSH.org tournent aussi sous serveurs virtuels. À ce titre la team de LinuxFR remercie Herbert Pötzl pour son support averti ainsi que tous les contributeurs au projet.