<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Artisan Numérique</title>
  <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1572"/>
  <link rel="self" type="application/atom+xml" href="http://artisan.karma-lab.net/node/1572/atom/feed"/>
  <id>http://artisan.karma-lab.net/node/1572/atom/feed</id>
  <updated>2008-07-24T02:50:58+02:00</updated>
  <entry>
    <title>Mise en oeuvre de VMPlayer</title>
    <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1572" />
    <id>http://artisan.karma-lab.net/node/1572</id>
    <published>2008-07-24T02:50:16+02:00</published>
    <updated>2008-07-24T02:50:58+02:00</updated>
    <author>
      <name>Ulhume</name>
    </author>
    <category term="Virtualisation" />
    <category term="OK" />
    <category term="Planet Libre" />
    <category term="Tutoriel" />
    <summary type="html"><![CDATA[<p>
   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. 
</p>
<p>
   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. 
</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>
   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. 
</p>
<p>
   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. 
</p>
<!--break-->

	<a name='chapter_1'></a>
  <h2>Introduction</h2>
	
<p>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, 
  <a target='_blank' href='http://fr.wikipedia.org/wiki/ReactOS'>
  ReactOS
  </a> dans linux, etc... 
</p>
<p>
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.  
</p>
<p>
  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.  
</p>

	<a name='chapter_2'></a>
  <h2>Installation de VMPlayer</h2>
	
<p>
VMPlayer s'installe comme n'importe quel autre logiciel en <a class='external' target='_blank' href='http://www.vmware.com/products/player/' >téléchargeant le paquet</a> et en l'installant via un <kbD>urpmi VMPlayer.XXX.rpm</kbd>. 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 <kbd>vmware-config.pl</kbd> suffit à lancer l'assistant qui vous poser divers questions pour finir par construire les modules. Après cela, VMWare devient le service <kbd>/etc/init.d/vmware</kbd> que l'on peut lancer (<kbd>service vmware start</kbd>) ou arrêter à loisir.
</p>


	<a name='chapter_3'></a>
  <h2>Création de la machine virtuelle</h2>
	
<p>
   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 <kbd>vm.vmx</kbd>. </p>
   <p>
   J'ai commenté ce fichier de sorte à ce qu'il soit le plus compréhensible possible et restant facilement copiable :
</p>
<p>

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="co0"># Ces versions indiquent que notre VM est conçue une version 6 de VMWare Worstation</span><br />
<span class="co0"># et qu'elle est donc optimum pour VMPlayer 2.x. Placez un virtualHW.version=&quot;4&quot; pour une </span><br />
<span class="co0"># Workstation 5.x.</span><br />
<span class="co0">#</span><br />
config.version = <span class="st0">&quot;8&quot;</span><br />
virtualHW.version = <span class="st0">&quot;6&quot;</span><br />
<br />
<span class="co0"># Le petit nom de note VM, il sera affiché dans la barre de titre du player</span><br />
<span class="co0">#</span><br />
displayName = <span class="st0">&quot;VM Native&quot;</span><br />
<br />
<span class="co0"># La définition de l'OS &quot;invité&quot;. Personnellement je n'ai jamais vu ce que changeait</span><br />
<span class="co0"># cette valeur. Et comme j'utilise le même VMX pour plusieurs OS en multi boot </span><br />
<span class="co0"># comme nous le verrons plus loin, il semble bien que cela n'empêche pas un Linux de </span><br />
<span class="co0"># fonctionner très bien avec ce paramètre.</span><br />
<span class="co0">#</span><br />
guestOS = <span class="st0">&quot;winxppro&quot;</span><br />
<br />
<span class="co0"># Ici nous définissons le nombre de processeur à simuler. Ce nombre ne peut dépasser 2, et ne doit</span><br />
<span class="co0"># dans tous les cas pas être supérieur au nombre réel de processeur.</span><br />
<span class="co0">#</span><br />
<span class="re2">numvcpus=</span><span class="st0">&quot;1&quot;</span><br />
<br />
<span class="co0"># Taille de la mémoire à allouer à VMWare. Il faut raisonner comme pour une machine physique. Ainsi ne tentez pas</span><br />
<span class="co0"># de faire fonctionner Vista avec 512mo de RAM, ça ne marchera pas pas mieux que dans la vraie vie <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/wink2.gif" title="Wink" alt="Wink" class="smiley-content"/></span><br />
<span class="co0"># &nbsp;</span><br />
memsize = <span class="st0">&quot;1024&quot;</span><br />
<br />
<span class="co0"># Avec ce paramètre à TRUE, vous autorisez le player à diminuer la mémoire physique réellement</span><br />
<span class="co0"># utilisée en fonction de son utilisation par le guest. Ainsi si vous avez déclaré un memsize à</span><br />
<span class="co0"># 1Go, et que vous autorisez le scaleDown, la mémoire réellement consommée peut être moindre.</span><br />
<span class="co0"># La contepartie c'est que pour regagner la mémoire rendu, il peut y avoir de la latence de la part </span><br />
<span class="co0"># de l'OS host.</span><br />
<span class="co0">#</span><br />
<span class="co0"># Le MemTrimRate permet de définir le rythme de désallocation de la mémoire. A ce que j'ai compris les deux paramètres </span><br />
<span class="co0"># vont de paire mais je n'ai pas trouvé d'information sur l'unité (seconde, milli ? )</span><br />
<span class="co0">#</span><br />
MemAllowAutoScaleDown = <span class="st0">&quot;FALSE&quot;</span><br />
MemTrimRate = <span class="st0">&quot;-1&quot;</span><br />
<br />
<span class="co0"># Le page sharing consiste pour VMWare à utiliser une seule page mémoire sur le host lorsque le guest en a deux ou plus</span><br />
<span class="co0"># d'identique. Cela peut certe réduire la consommation sur le host, mais réduit aussi les performances.</span><br />
<span class="co0"># </span><br />
sched.mem.pshare.<span class="re2">enable=</span>FALSE<br />
<br />
<span class="co0"># Permet de créer un ID unique à la machine virtuelle au démarrage de celle-ci.</span><br />
<span class="co0">#</span><br />
uuid.action = <span class="st0">&quot;create&quot;</span><br />
<br />
<span class="co0"># Réglage des outils de base</span><br />
<span class="co0">#</span><br />
tools.remindInstall = <span class="st0">&quot;TRUE&quot;</span>&nbsp; &nbsp; <span class="co0"># vous préviens si les Guest Tools ne sont pas installés</span><br />
tools.upgrade.policy = <span class="st0">&quot;upgradeAtPowerCycle&quot;</span> &nbsp;<span class="co0"># vous préviens si une mise à jour est disponible</span><br />
tools.syncTime = <span class="st0">&quot;TRUE&quot;</span> &nbsp; <span class="co0"># Synchronise l'heure entre le guest et le host</span><br />
<br />
<span class="co0"># Ces paramètres permettent d'activer toutes les interactions entre le guest et le host. </span><br />
<span class="co0"># Ces fonctions nécessitent l'installation des Guest Tools</span><br />
<span class="co0">#</span><br />
isolation.tools.hgfs.disable = <span class="st0">&quot;FALSE&quot;</span>&nbsp; &nbsp; <span class="co0"># Permet à la souris de sortir de la VM sans CTRL+ALT</span><br />
isolation.tools.dnd.disable = <span class="st0">&quot;FALSE&quot;</span> &nbsp; &nbsp;<span class="co0"># Autorise le Glisser-Déposer</span><br />
isolation.tools.copy.<span class="kw3">enable</span> = <span class="st0">&quot;TRUE&quot;</span>&nbsp; &nbsp; <span class="co0"># Autorise le Copier</span><br />
isolation.tools.paste.enabled = <span class="st0">&quot;TRUE&quot;</span> &nbsp;<span class="co0"># Autorise le Coller</span><br />
<br />
<br />
<span class="co0"># Configuration de la carte son. Ici nous émulons une Ensonic ES1371. Il est possible d'utiliser</span><br />
<span class="co0"># aussi une Sound Blaster 16 en utilisant la valeur SB16. Mettre .present à false pour désactiver le son.</span><br />
<span class="co0"># D'un point de vue général, les périphériques peuvent activées ou désactivées en utilisant la barre </span><br />
<span class="co0"># d'outils du player.</span><br />
<span class="co0"># &nbsp;</span><br />
sound.present = <span class="st0">&quot;TRUE&quot;</span><br />
sound.virtualdev = <span class="st0">&quot;es1371&quot;</span><br />
sound.synth.operational = <span class="st0">&quot;TRUE&quot;</span><br />
<br />
<br />
<span class="co0"># Configuration du port série n°1, on laisse ici le player trouver</span><br />
<span class="co0"># le device correspondant. Si vous voulez l'activer, positionnez </span><br />
<span class="co0"># .present à &quot;TRUE&quot;, de même pour le second port.</span><br />
<span class="co0"># </span><br />
serial0.present = <span class="st0">&quot;FALSE&quot;</span><br />
serial0.fileName = <span class="st0">&quot;Auto Detect&quot;</span><br />
serial0.autodetect = <span class="st0">&quot;TRUE&quot;</span><br />
serial0.hardwareFlowControl = <span class="st0">&quot;TRUE&quot;</span><br />
serial1.<span class="re2">present=</span> <span class="st0">&quot;FALSE&quot;</span><br />
<br />
<span class="co0"># Configuration du port parralèle. Même chose que pour le port série, </span><br />
<span class="co0"># désactivé par défaut.</span><br />
<span class="co0"># </span><br />
parallel0.present = <span class="st0">&quot;FALSE&quot;</span><br />
parallel0.fileName = <span class="st0">&quot;Auto Detect&quot;</span><br />
parallel0.autodetect = <span class="st0">&quot;TRUE&quot;</span><br />
parallel0.bidirectional = <span class="st0">&quot;TRUE&quot;</span><br />
<br />
<span class="co0"># Configuration du lecteur de disquette, là aussi désactivé, ces bêtes là deviennent rares <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/wink2.gif" title="Wink" alt="Wink" class="smiley-content"/></span><br />
<span class="co0">#</span><br />
floppy0.present = <span class="st0">&quot;FALSE&quot;</span><br />
floppy0.startConnected = <span class="st0">&quot;FALSE&quot;</span><br />
<br />
<span class="co0"># Configuration de l'USB. Là ça peut être utile. La configuration est assez simple mais</span><br />
<span class="co0"># vous notez la présente d'un .present ET d'un usb.generic.autoconnect. Ce dernier indique </span><br />
<span class="co0"># que par si le port USB est bien reconnu par VMPlayer, les périphériques qui y sont connectés</span><br />
<span class="co0"># ne sont pas automatiquement connectées. Elle pourront l'être de manière dynamique</span><br />
<span class="co0"># par la barre d'outils de VMPlayer qui prendra ainsi la main sur une clef USB ou une souris.</span><br />
<span class="co0">#</span><br />
<span class="co0"># Notez que si le player prend la main sur une périphérique USB, le host n'en dispose plus. Faites donc </span><br />
<span class="co0"># attention si vous avez l'idée de connecter votre souris ou clavier par exemple &nbsp;;-) &nbsp;</span><br />
usb.present = <span class="st0">&quot;TRUE&quot;</span><br />
usb.generic.autoconnect = <span class="st0">&quot;FALSE&quot;</span><br />
<br />
mks.enable3d = <span class="st0">&quot;FALSE&quot;</span><br />
<br />
<span class="co0"># Là c'est important, le paramétrage du réseau. L'adresse indiquée sera l'adresse MAC de votre machine. </span><br />
<span class="co0"># Pensez donc à la modifier d'une machine à l'autre, et ne pas utiliser la même chose qu'une machine</span><br />
<span class="co0"># physique.</span><br />
<span class="co0"># Ensuite vient le virtualDev qui correspond (comme pour la carte son), à la carte réseau émulée. La valeur</span><br />
<span class="co0"># peut être e1000 pour une Intel Pro Gigabit, vlance pour la carte du même nom, ou vmxnet pour une carte </span><br />
<span class="co0"># VMWare. &nbsp;</span><br />
<span class="co0"># Comme pour serial0/1, il est possible d'avoir deux cartes réseau auquel cas il faut dupliquer les paramètres </span><br />
<span class="co0"># d'ethernet0 pour ethernet1 et biensur changer l'adresse MAC.</span><br />
<span class="co0"># </span><br />
ethernet0.present = <span class="st0">&quot;TRUE&quot;</span><br />
ethernet0.connectionType = <span class="st0">&quot;nat&quot;</span><br />
ethernet0.addressType = <span class="st0">&quot;generated&quot;</span><br />
ethernet0.generatedAddress = <span class="st0">&quot;00:0c:29:59:aa:eb&quot;</span><br />
ethernet0.virtualDev = <span class="st0">&quot;e1000&quot;</span><br />
ethernet0.generatedAddressOffset = <span class="st0">&quot;0&quot;</span><br />
ethernet1.<span class="re2">present=</span><span class="st0">&quot;FALSE&quot;</span><br />
<br />
<span class="co0"># Originellement il était possible de choisir entre SCSI et IDE. Pour les tests que j'avais fait</span><br />
<span class="co0"># il n'y avait aucun gain de performances en passant de l'un à l'autre. Donc j'opte pour le plus</span><br />
<span class="co0"># simple : IDE.</span><br />
<span class="co0">#</span><br />
<span class="co0"># La VM disposent de deux contrôleurs IDE pouvant recevoir deux disques chacun. Nous allons</span><br />
<span class="co0"># donc coller sur le deuxième contrôleur, deux lecteurs de CD-ROM. Le premier sera relié au lecteur</span><br />
<span class="co0"># physique, le second à une image ISO.</span><br />
<span class="co0">#</span><br />
<span class="co0"># Le problème du player, est qu'il n'y a pas de moyen de changer l'image ISO à chaud comme avec</span><br />
<span class="co0"># la version workstation. L'astuce consiste donc à utiliser un fichier cdrom.iso dans le même dossier</span><br />
<span class="co0"># que le fichier .vmx. Et de faire des liens symboliques entre la véritable image ISO et ce fichier. Cela</span><br />
<span class="co0"># permet d'installer un Linux sur 3 CD-ROM sans problèmes. </span><br />
<span class="co0"># </span><br />
ide1:<span class="nu0">0</span>.present = <span class="st0">&quot;TRUE&quot;</span><br />
ide1:<span class="nu0">0</span>.deviceType = <span class="st0">&quot;cdrom-raw&quot;</span><br />
ide1:<span class="nu0">0</span>.startConnected = <span class="st0">&quot;FALSE&quot;</span><br />
ide1:<span class="nu0">0</span>.fileName = <span class="st0">&quot;auto detect&quot;</span><br />
ide1:<span class="nu0">0</span>.autodetect = <span class="st0">&quot;TRUE&quot;</span><br />
ide1:<span class="nu0">1</span>.present = <span class="st0">&quot;TRUE&quot;</span><br />
ide1:<span class="nu0">1</span>.fileName = <span class="st0">&quot;cdrom.iso&quot;</span><br />
ide1:<span class="nu0">1</span>.deviceType = <span class="st0">&quot;cdrom-image&quot;</span><br />
ide1:<span class="nu0">1</span>.startConnected = <span class="st0">&quot;FALSE&quot;</span><br />
<br />
<span class="co0"># Nous arrivons enfin au plus important, le disque de stockage</span><br />
<span class="co0"># Ici, seul un disque est monté sur le contrôleur IDE, mais l'autre peut</span><br />
<span class="co0"># être facilement activé. </span><br />
<span class="co0">#</span><br />
<span class="co0"># Je ne vais pas rentrer dans les détails du independent-persistent, disons</span><br />
<span class="co0"># que ce mode est sensé être le plus proche d'un fonctionnement physiques. En tout cas</span><br />
<span class="co0"># c'est pour moi le mode le plus efficace. </span><br />
<span class="co0">#</span><br />
<span class="co0"># Pour ce qui est du fichier native.vmdk, c'est tout l'objet du prochain chapitre. &nbsp;</span><br />
ide0:<span class="nu0">0</span>.present = <span class="st0">&quot;TRUE&quot;</span><br />
ide0:<span class="nu0">0</span>.fileName = <span class="st0">&quot;disque_dur.vmdk&quot;</span><br />
ide0:<span class="nu0">0</span>.mode = <span class="st0">&quot;independent-persistent&quot;</span><br />
ide0:<span class="nu0">0</span>.deviceType = <span class="st0">&quot;rawDisk&quot;</span><br />
ide0:<span class="nu0">0</span>.redo = <span class="st0">&quot;&quot;</span><br />
ide0:<span class="nu0">0</span>.writeThrough = <span class="st0">&quot;TRUE&quot;</span><br />
ide0:<span class="nu0">0</span>.startConnected = <span class="st0">&quot;TRUE&quot;</span><br />
ide0:<span class="nu0">1</span>.present = <span class="st0">&quot;FALSE&quot;</span>
  </div>
  <div class='caption'>vm.vmx</div>
  </div>
</p>


	<a name='chapter_4'></a>
  <h2>Création de l'espace de stockage</h2>
	
<h3>Utilisation d'un disque virtuel</h3>

<p>
   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. 
</p>
<p>
  Pour créer ce disque nous allons utiliser l'utilitaire <kbD>qemu-img</kbd> provenant du paquet du même nom. La syntaxe est trés simple :
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  qemu-img create -f vmdk disque_dur.vmdk 10G
  </div>
  
  </div>
</p>
<p>
  Et voilà, nous avons cré un disque de 10G qui pour l'instant en occupe beaucoup moins vu qu'il est vide. 
</p>
<p>
  A partir de là, notre VM est déjà utilisable, et nous pouvons la lancer par un 
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  vmplayer vm.vmx
  </div>
  
  </div>
</p>
<p>
   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. 
</p>
<p>
  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.
</p>
<p>
  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. 
</p>
<h3>Utilisation d'un disque dédié</h3>
<div class='inline-box attention'>
  Cette technique, de par l'accès offert aux données physiques, n'est par nature pas sans risques. Faites donc attention à ce que vous faites pour ne pas flinguer les partitions ou le contenu même du support. Vous êtes prévenu. 
</div>
<p>
  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. 
  </p>
  <p>
  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. 
  </p>  
  <p>
     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.
     </p> 
  
<p>
  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.   
</p>
<p>
  Pour connaître cette géométrie, le mieux est d'utiliser l'utilitaire <kbd>parted</kbd>. Par exemple si l'on désire utiliser le disque <kbd>/dev/hda</kbd>, cela nous donne :
  <div id="code_0" class="code-container-area"><div class="code-container"><div class="code">
# <b>parted /dev/hda</b><br/>
(parted)<b> unit cyl</b>                                                         <br/>
(parted)<b> print</b>                                                            <br/>
&nbsp;&nbsp;ST3200822A (ide)<br/>
&nbsp;&nbsp;Disque /dev/hda : 24321cyl<br/>
&nbsp;&nbsp;Taille des secteurs (logiques/physiques): 512B/512B<br/>
&nbsp;&nbsp;BIOS cylindre,tête,secteur géométrie :  <span style="color:brown;font-weight:bold;">24321</span>,<span style="color:blue;font-weight:bold;">255</span>,<span style="color:red;font-weight:bold;">63</span>. Chaque cylindre est 8225kB.<br/>
...
</div></div></div>
</p>
<p>
  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 <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/wink2.gif" title="Wink" alt="Wink" class="smiley-content"/> 
</p>
<p>
  Maintenant ce qu'il nous faut, c'est la taille du disque en secteurs. Pour cela, nous allons encore utiliser <kbd>parted</kbd> mais cette fois en changeant l'unité de cylinder à sector. 
  <div id="code_0" class="code-container-area"><div class="code-container"><div class="code">
(parted)<b> unit s</b><br/>
(parted)<b> print</b><br/>
&nbsp;&nbsp;ST3200822A (ide)<br/>
&nbsp;&nbsp;Disque /dev/hda : <span style="color:green;font-weight:bold;">390721968</span>s<br/>
...<br/>
</div></div></div>
</p>
<p>
    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 <kbd>disque_dur.vmdk</kbd>
<div id="code_0" class="code-container-area"><div class="code-container"><div class="code">
version=1<br/>
CID=400b3894<br/>
parentCID=ffffffff<br/>
createType="fullDevice"<br/>
RW <span style="color:green;font-weight:bold;">390721968</span> FLAT "/dev/hda" 0<br/>
ddb.geometry.cylinders = "<span style="color:brown;font-weight:bold;">24321</span>"<br/>
ddb.geometry.heads = "<span style="color:blue;font-weight:bold;">255</span>"<br/>
ddb.geometry.sectors = "<span style="color:red;font-weight:bold;">63</span>"<br/>
ddb.virtualHWVersion = "4"<br/>
ddb.adapterType = "ide"<br/>
ddb.toolsVersion = "6530"<br/>
</div></div></div>
</p>
<p>
  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. 
</p>


<h3>Les bons droits</h3>
<p>
  Normalement, le disque <kbd>/dev/hda</kbd> (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 <kbd>root</kbd> n'est pas une idée de génie. La solution consiste donc à changer les droits de <kbd>/dev/hda</kbd> pour les mettre en accord avec le ou les utilisateurs amenés à utiliser cette machine. 
</p>
<p>
Sous Mandriva, les disques appartiennent à <kbd>root</kbd> et au groupe <kbd>disk</kbd>. Dans ce cas, une version simple consiste à modifier <kbd>/etc/group</kbd> et à ajouter le ou les utilisateurs à la fin de la ligne correspondante. 
</p>
<p>
Ensuite, il faut donner les droits d'écritures sur le disque au groupe en question par la commande <kbd>chmod g+rw /dev/hda</kbd>. 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, <kbd>console-kit-daemon</kbd>, 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.
</p> 


	<a name='chapter_5'></a>
  <h2>Installation des Guest Tools</h2>
	
<p>
  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 :

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <a target="blank" href="http://pwet.fr/man/linux/commandes/mkdir"><span class="kw2">mkdir</span></a> tmp<br />
<span class="kw3">cd</span> tmp<br />
rpm2cpio VMWare-XXXX.rpm <span class="sy0">|</span> <a target="blank" href="http://pwet.fr/man/linux/commandes/cpio"><span class="kw2">cpio</span></a> -div <span class="sy0">`*</span>.spec<span class="sy0">`</span><br />
<a target="blank" href="http://pwet.fr/man/linux/commandes/find"><span class="kw2">find</span></a> . -name <span class="st0">&quot;*.iso&quot;</span>
  </div>
  
  </div>
</p>
<p>
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. 
</p>


	<a name='chapter_6'></a>
  <h2>Conclusion</h2>
	
<p>
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. 
</p>
<p>
   Dernier truc avant de partir, ma découverte du jour, 
<a class='external' target='_blank' href='http://www.fs-driver.org/' >Ext2 IFS For Windows</a>. 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 <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/smile.gif" title="Smiling" alt="Smiling" class="smiley-content"/>
</p>    ]]></content>
  </entry>
</feed>
