Que ce soit pour tester de nouvelles distributions, des environnements de production, avoir un WilainOS sous la main en cas de besoin, ou garder son bureau GNU/Linux et malgré tout pouvoir développer en environnement "clientèle", la virtualisation est un outil indispensable aujourd'hui. Il existe de nombreuses solutions fonctionnelles sous Linux pour permettre de virtualiser un environnement. Mais malgré tout le bien que je pense de VirtualBox ou Qemu, VMWare reste de loin le plus stable et le plus efficient de tous. Au point d'avoir pu l'utiliser pendant un an en continu comme station de travail principale pour des développements lourd.
Maintenant VMWare Workstation reste payant. Alors voici comment utiliser VMPlayer qui lui est gratuit pour faire rigoureusement la même chose avec juste un peu plus d'huile de coude.
VMWare est un fantastique outil permettant d'exécuter des OS guest sur un OS host. Vous pouvez ainsi lancer Windows dans Linux, Linux dans Linux, ReactOS dans linux, etc...
Contrairement à d'autres systèmes, VMWare n'émule pas le processeur. Le code est exécuté nativement sur l'unité physique permettant des performances totalement comparables à un environnement natif. Le pendant de cette approche est que seul les OS i86 peuvent devenir des guests.
La couche matérielle, est elle émulée. C'est là la principal perte de performance de la plateforme. Perte limitée par l'utilisation des pilotes optimisés contenus sur les Guest Tools. Limitée aussi si l'on utilise un disque physique dédié comme espace de stockage plutôt qu'un disque virtuel.
VMPlayer s'installe comme n'importe quel autre logiciel en téléchargeant le paquet et en l'installant via un urpmi VMPlayer.XXX.rpm. Ceci fait, il va nous falloir compiler les modules kernels de VMWare nécessitant le téléchargement préalable des sources du votre kernel. Ensuite, un simple vmware-config.pl suffit à lancer l'assistant qui vous poser divers questions pour finir par construire les modules. Après cela, VMWare devient le service /etc/init.d/vmware que l'on peut lancer (service vmware start) ou arrêter à loisir.
Pour fabriquer la machine virtuelle, rien de plus simple. Choisissez un emplacement approprié sur votre disque et créez un nouveau dossier. Allez dans ce dossier et créez un fichier vm.vmx.
J'ai commenté ce fichier de sorte à ce qu'il soit le plus compréhensible possible et restant facilement copiable :


Cette approche est sans doute la plus simple. L'avantage du disque virtuel est qu'il n'occupe que la place utilisée par le guest. Ainsi à sa création, il n'occupe que 1.4mo.
Pour créer ce disque nous allons utiliser l'utilitaire qemu-img provenant du paquet du même nom. La syntaxe est trés simple :
Et voilà, nous avons cré un disque de 10G qui pour l'instant en occupe beaucoup moins vu qu'il est vide.
A partir de là, notre VM est déjà utilisable, et nous pouvons la lancer par un
Votre machine virtuelle devrait normalement démarrer sans encombre. Vous pouvez alors aller (F2) dans le BIOS pour régler les priorités sur les disques pour démarrer sur un CD-ROM et commencer une installation.
A ce stade CTRL+ALT permette de dégager la souris de la fenêtre du player, CTRL+ALT+Entrée permet de basculer en plein écran et CTRL+ALT+ESPACE, relachement d'espace suivi de F1, permet de simuler le CTRL-ALT-F1.
Maintenant, un disque virtuel n'est pas ce que l'on fait de mieux pour une utilisation quotidienne de VMPlayer. En effet, soit parce que l'on désire utiliser une installation physique existante, soit pour des raisons de performances, nous pouvons préférez un bon vieux disque physique.
Pour se donner une idée des performances d'un disque physique contre un disque virtuel, il faut garder tête que pour un disque physique ayant un débit en lecture sur le host de 59MB/s, donnera utilisé en virtuel environ 12MB/S. Le même disque physique mais utilisé à travers la VM donnera 34MB/s. Il est donc clairement plus performant de dédier un disque à VMWare dés que l'on utilise cet outil pour travailler sur du long terme.
L'autre cas d'utilisation d'un disque physique peut être de virtualiser une installation existante. Personnellement j'ai adopté la double approche d'un disque physique dédié qui est donc bootable en directe par la machine physique et utilisable en virtualisé par VMPlayer. Sur ce disque j'installe tranquillement toutes mes VM, chacune sur sa ou ses partitions avec un GRUB pour gérer le multi-boot.
Quel que soit votre usage, le travail préalable reste le même et consiste à créer un fichier vmdk qui va reprendre les caractéristiques du disque physiques.
En simplifiant un peu, un disque dur est composé de plateaux avec une têtes pour chacun. Les plateaux sont découpés en cercles concentriques, les pistes (tracks). Une même piste forme un cylindre pour l'ensemble des plateaux. La piste est découpée en secteurs, historiquement de 512 octets. Le nombre de cylindres, le nombre de secteur par piste, et le nombre de têtes (et donc de plateaux) par cylindre, forment la géométrie du disque.
Pour connaître cette géométrie, le mieux est d'utiliser l'utilitaire parted. Par exemple si l'on désire utiliser le disque /dev/hda, cela nous donne :
Les valeurs peuvent surprendre. 255 têtes impliquent 255 plateaux, ce qui semble un peu volumineux pour un si petit disque... En fait, pour des raisons un peu longuètes à expliquer, le disque ne donne jamais son véritable nombre de têtes, pour préférer quelque chose de plus assimilable par la couche logicielle. Et au fond, on s'en moque. Notre disque dispose donc de 255 têtes, 63 secteurs par piste, et 24321 cylindres. Ce qui nous donne un espace disque de 512 (taille d'un secteur) x 255 (têtes par cylindre) x 63 (secteurs par piste) x 24321 (cylindres) = 200Go. Le compte est bon
Maintenant ce qu'il nous faut, c'est la taille du disque en secteurs. Pour cela, nous allons encore utiliser parted mais cette fois en changeant l'unité de cylinder à sector.
En vert, nous avons la taille du disque en secteurs. Il ne nous reste donc plus qu'à reporter ces informations pour créer notre fichier disque_dur.vmdk
Notez qu'il est possible de faire des fichiers vmdk beaucoup plus évolués que celui-là en créant un disque composé de partitions qui ne se suivent pas, et même d'images de partitions sockés sur le disque sous la forme d'un fichier. Mais même si vous n'utilisez cette technique que pour une seule partition, autant inclure le disque en entier, secteur de démarage compris. Le seul risque de cette approche est que la machine virtuel aura un accès en écriture sur l'ensemble du disque, c'est à vous de voir.
Normalement, le disque /dev/hda (ou quel que soit le votre) n'est pas accessible en écriture (et même en lecture d'ailleurs) à un utilisateur Lambda. Et comme me l'a très justement fait remarquer Malic, lancer VmPlayer en root n'est pas une idée de génie. La solution consiste donc à changer les droits de /dev/hda pour les mettre en accord avec le ou les utilisateurs amenés à utiliser cette machine.
Sous Mandriva, les disques appartiennent à root et au groupe disk. Dans ce cas, une version simple consiste à modifier /etc/group et à ajouter le ou les utilisateurs à la fin de la ligne correspondante.
Ensuite, il faut donner les droits d'écritures sur le disque au groupe en question par la commande chmod g+rw /dev/hda. Ceci fait, il devrait suffire d'ouvrir une nouvelle console au nom de l'utilisateur cible pour pouvoir lancer VmPlayer. Le souci avec les distributions modernes, c'est qu'il y a un nouveau démon, console-kit-daemon, dont le but dans la vie est d'unifier les accès aux consoles (à ce que j'ai compris) et qui empêche du coup, de récupérer les bons droits directement. La seule parade que j'ai trouvée est de quitter X, puis se re-connecter pour bénéficier du nouveau groupe ainsi pouvoir lancer la VM sans problèmes.
Les guest tools sont des images ISO, une par OS host donc, permettant l'installation d'utilitaires et de pilotes DANS la VM. Le problème est que ces ISO ne sont pas fournies avec le player. La solution est donc simplement de retourner sur le site de VMWare, télécharger la version d'évaluation de VMWare Workstation en rpm. Plus de décompresser le paquet par la commande suivante :
La commande find, est une recherche simple des fichiers .iso qui nous permet de découvrir une série de fichier avec des noms d'OS (windows.iso, linux.iso, etc...). Ce sont les ISO Guest Tools. Il suffit alors de recopier ses fichiers où bon vous semble. Ensuite vous devez monter le fichier correspondant à l'OS host sur le lien du CD-ROM. Une fois le tout installé, les performances sont transfigurées.
Comme je le disais en introduction, j'ai utilisé pendant 1 ans VMWare comme environnement principal de développement, et ce pour faire du Delphi/COM/DCOM. Pas réputé pour être d'une grande légereté. Cet outil m'est devenu aujourd'hui absoluent indispensable.
Dernier truc avant de partir, ma découverte du jour,
Ext2 IFS For Windows. Un pilote natif Windows qui permet d'attaquer en lecture ET en écriture des partitions ETX2/EXT3 et EXT4. Le tout avec les mêmes performances que sous Linux, très bon
- répondre
Wazzaaabid , le 24 June, 2008 - 19:10Salut,
Je sais complètement HS par rapport au sujet abordé... mais j'arrive plus à utiliser correctement tes zones de code (en cliquant sur "texte simple"). Je ne sais pas si c'est dû à Firefox 3 ou à une mise à jour de ton thème.
En tout cas j'apprécie toujours autant tes articles, et l'esthétique de ton blog.
Florent
- répondre
Zanko, le 24 June, 2008 - 20:50J'ai le même problème (et suis moi aussi sous FF3). C'est honteux ça ! Heureusement que je fais plus d'efforts que ça pour m'occuper de mon propre blog et heu... comment ça il est down mon blog ? comment ça il marche bien que sous FF2 ?
.
Bon j'ai rien dit
En fait, je ne comprend pas pourquoi tu as besoin de créer un fichier à part pour le boot loader. Avec qemu je boot sur la partition de windows directement en tapant qemu -hda /dev/ad0 (bon après ça plante avant que windows ait fini de se charger...).
Sinon je te plains, avoir du installer windows... Quelle horreur... Tu devrais voir un psy il t'aidera à reprendre pied
.
- répondre
Ulhume, le 24 June, 2008 - 21:42@Zanko & Wazzaaabid
Bon, ça va, je vais l'installer le machin 3.0...
@Zanko
Pour le coup du bootloader bravo, tu viens de dramatiquement réduire la taille du tuto. J'ai même pas pensé à remettre en cause mes sources, pas bien. Effectivement, sans le bl, ça marche aussi très bien.
Je vais quant même versionné le précédent tuto car tout le monde fait ce maudit calcul et ces deux parties... On sais jamais, peut-être un cas particulier qui nous aurait échappé...
Pour ce qui est de Windows, t'as pas idée de l'enfer que ça a été. J'installe une mandriva de base, en 20minutes, j'ai une machine qui est reconnue de A à Z.
Là, 16 minutes pour qu'il installe.. l'installer... 45 minutes pour installer... l'OS et ensuite 2h de galère because 11 périphériques avec un joli ? jaune... J'adore...
- répondre
feilong , le 24 June, 2008 - 21:57Est que la machine est exportable par la suite ou on est lié au disque dur physique "à vie" ?
- répondre
Dab, le 24 June, 2008 - 22:37Oui exportable par un logiciel p2v (physical to virtual). Après il s'agit de savoir vers quel format tu veux exporter (Xen, QEMU, KVM, vmx)
- répondre
Zanko, le 24 June, 2008 - 23:07Logiquement pour exporter la partition il suffit d'en faire une image avec dd, de même que la procédure inverse permet d'installer "pour de vrai" une partition créée dans une vm.
Sinon, Ulhume, as-tu essayé qemu ? Si oui y'a t'il une raison pour lui préférer vmplayer ? Car bien que ton tuto se soit simplifié, ça reste plus long que de taper qemu -hda /dev/ad0 qui chez moi lance un windows (qui vit ses dernières heures car demain c'est la fin des cours pour moi et comme je le garde seulement pour passer les évals qui se font avec un client .net, demain soir à la poubelle le windows
).
Sinon ext2ifs c'est bien mais à moins que ça ai changé ou que je ne sache pas l'utiliser, il ne sait pas faire de fsck ce qui fait qu'on doit rebooter sous linux lorsque le disque a été éteint à l'arrache.
- répondre
Ulhume, le 24 June, 2008 - 23:24@feilong & Dab
Y'a aussi VmWare Converter qui fait cela très bien
- répondre
Ulhume, le 24 June, 2008 - 23:30@Zanko
ET les seules fois où ça crashait pas, s'était beaucoup plus lent que VmWare. Donc je dirais avant tout stabilité et performances. Mais Qemu a peut-être beaucoup changé, s'était il y a un certain temps. Mais comme je n'utilise VMWare que pour des choses ch***tes, j'aime bien que tout fonctionne direct.
Ben pour qemu je ne saurais trop dire, la seule chose que j'ai jamais réussi à faire avec, c'est crasher ma bécane
Pour ext2ifs je ne pense effectivement pas avoir vu de fsck. Ceci dit, c'est tout de même redoutablement pratique. Pour mes bench, cela me permet d'avoir windows sur un vilain disque tout lent et faire les tests IO sur le même disque que Linux.
- répondre
feilong , le 25 June, 2008 - 09:49@Ulhume
Ouai je l'utilise depuis pas mal de temps pour migrer des machines physiques vers mes serveurs ESX. Par contre, il ne marche qu'avec windows... ma question était plutôt intéressée pour virtualisr un serveur Debian 3.0 physique...
- répondre
malic , le 25 June, 2008 - 14:16Pour virtualiser du linux, on peut utiliser clonezilla ou PING ou plus classiquement (malheureusement) Norton Ghost pour faire une image et restaurer dans une machine virtuelle.
L'opération inverse est aussi possible.
- répondre
malic , le 25 June, 2008 - 14:28Un truc que je n'avais pas noté :
Hmm.. je ne sais pas si c'est une bonne idée... il commence à y avoir des soucis d'étanchéité entre les machines virtuelles VMware et les OS hébergeant avec tous les ponts de com (VMware tools, Share folders, gnagna).
Plutôt essayer de donner les droits à ton utilisateur sur la partition en question.
- répondre
feilong , le 25 June, 2008 - 14:39Salut Malic,
En effet, VmWare Converter est sensé pouvoir virtualiser des images (.gho > version 9). On peut essayer aussi de démarrer un client ghost dans un logiciel de virtualisation... J'ai toujours trouvé ça très peu concluant dans les deux cas (enfin de mon expérience).
Sinon, je me tourne de ce pas vers clonezilla et PING...
Merci pour les infos Malic.
- répondre
malic , le 25 June, 2008 - 15:42le P2V de VMWare faisait intervenir Ghost au début, maintenant, je ne sais plus si ils continuent à vendre ça et VMware Converter, je ne connais pas la techno qui est dessous.
Pour le principe de passer un soft d'image (type Ghost), c'est vraiment utilisable avec linux qui est très tolérant au changement de hardware, et particulièrement du physique vers le virtuel.
Dans le sens inverse, il suffit de se préparer un peu dans le cas de hardware spécifique (inclure pilotes RAID matériel) avant de faire l'image et la restauration est possible. A valider avant de faire ça en prod évidement.
En dernier recours, il existe une méthode bourrin de P2V et V2P, c'est tar
Dans certain cas, ça marche même plutôt bien, la récupération pouvant être un peu houleuse.
Pour le fait de démarrer un client ghost dans une VM, je ne l'ai fait qu'une fois acculer par la livraison d'une image à ce format... bah... Mais sur le principe, ça ne dérange pas... j'ai vu des gens coller des agents de sauvegarde dans les machines virtuelles et procéder à des sauvegardes à travers le réseau comme n'importe qu'elle machine physique.
Pour Windows, par contre, ça ne fonctionne pas, les clonezilla et consorts.
- répondre
Ulhume, le 25 June, 2008 - 15:16@malic Tu n'as pas tord du tout. J'ai changé cela.
- répondre
feilong , le 25 June, 2008 - 15:56Merci pour le détail.
- répondre
malic , le 25 June, 2008 - 17:02Autrefois, un kill -HUP du daemon l'obligeait à se remettre en phase avec sa config. As tu essayé ce genre de manipulation un peu "vieille école"?
C'est horrible, on en est presque à redémarrer pour prendre en compte une changement de droit sur un fichier... ça me rappelle un au autre OS, ça.
- répondre
Ulhume, le 25 June, 2008 - 20:32@malic j'avais tenté mais la vieille école ne fait plus recette semble t-il
Je suis assez d'accord avec ta remarque finale...
- répondre
Denis , le 14 September, 2008 - 18:26Mais à quoi ça sert tout ça ? Vmware server est gratuit et permet de créer des machines virtuelles.
Que d'emmerdements pour rien !
- répondre
Ulhume, le 14 September, 2008 - 19:06@Denis
Vmware Server et VMWare WorkStation (dont hérite le player) sont deux bêtes assez différentes. Déjà, comme leur nom l'indique, l'une est plus adapté au travail sur poste de travail que l'autre (par exemple le Drag & Drop, copier/collet, etc, entre les VM). Ensuite les deux systèmes n'ont carrément pas le même poids sur l'OS hôte. Cela se sent déjà au download (550mo de téléchargement juste pour avoir une interface...).
Ensuite "l'emmerdement" comme tu dis est une chose très relative. J'utilise le même .vmx depuis deux ans et je fais ce que je veux avec. Une IHM, puisque c'est au fond la seule chose qui semble te manquer, moi, m'emmerderait plus qu'autre chose, au delà du fait que j'aime bien comprendre ce que je fais.
- répondre
Denis , le 16 September, 2008 - 12:45J'utilise, je déploie, je forme à Vmware depuis 2002 si ma mémoire est bonne.
L'astuce consiste à installer Vmware Server dont je concède qu'il est lourd, créer la machine, le désinstaller et installer Vmware player qui est plus léger. C'est un fait.
Tu peux aussi - soumis à licence - installer Virtual Box (mode nat plus simple) pour exécuter / convertir ton vmx.
@+
- répondre
Ulhume, le 16 September, 2008 - 12:54@Denis
Je pense que nous avons juste une petite incompréhension sur la "cible", là.
Je n'ai jamais dit que ton approche n'était pas réalisable. Sans faire de formation, j'utilise VmWare en tant que développeur quasi quotidiennement depuis à peu près la même époque que toi et je pense malgré tout que connaître la structure d'un fichier VMX ainsi que la manière de créer des disques est extrêmement pratique y compris lorsque l'on dispose de la version Workstation. Cela me permet de créer des VM ou plus souvent de dupliquer une VM pour en modifier deux trois aspects (réseau, disques généralement) en quelques minutes, et ce avec seulement vi et qemu-img.
Alors il y a sans aucun doute un coût d'apprentissage que j'ai essayé ici de rendre le plus léger possible. Mais ceci fait, je serais toujours plus rapide dans ce mode qu'en utilisant un Vmware server ou un Virtual Box (qui est loin d'être aussi stable/performant que VmWare d'ailleurs) avec les risques de "génération de drouilles" en les installant juste pour cela. Et j'ajouterais même que cet orientation "fichier configuration interprété par l'émulateur" de VmWare est pour moi un de ses gros atouts.
En somme, je suis technicien, l'informatique est mon métier, je n'ai pas peur d'un fichier de configuration qui me permet d'arriver au plus vite au résultat attendu. Sinon je serais bien plus embêté pour installer un serveur Postfix qui est autrement plus complexes à paramétrer qu'un vmx
C'est là que je pense qu'il y a une incompréhension de cible. Et en corrolaire, cette technique, comme à peu prés tout ce qui se trouve sur ce site d'ailleurs, ne s'adresse pas à un utilisateur "standard", c'est même tout le contraire.
- répondre
malic , le 16 September, 2008 - 14:21Pour créer une VM sans rien installer, il reste toujours la solution http://www.easyvmx.com qui marche plutôt bien.
Combiné avec un vmplayer, c'est plus approprié que de prendre le bus pour aller chercher le pain.
- répondre
Ulhume, le 16 September, 2008 - 16:09@malic hum, j'aime bien l'image
Poster un nouveau commentaire