<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Virtualisation</title>
  <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/taxonomy/term/1181"/>
  <link rel="self" type="application/atom+xml" href="http://artisan.karma-lab.net/taxonomy/term/1181/atom/feed"/>
  <id>http://artisan.karma-lab.net/taxonomy/term/1181/atom/feed</id>
  <updated>2007-07-04T03:04:49+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>
  <entry>
    <title>Bloc-note &#039;Wine&#039;</title>
    <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1319" />
    <id>http://artisan.karma-lab.net/node/1319</id>
    <published>2008-02-01T12:55:24+01:00</published>
    <updated>2008-02-01T13:03:22+01:00</updated>
    <author>
      <name>Ulhume</name>
    </author>
    <category term="Virtualisation" />
    <category term="Aucun" />
    <category term="Note" />
    <category term="OK" />
    <summary type="html"><![CDATA[<p>Bloc-Note pour Wine</p>    ]]></summary>
    <content type="html"><![CDATA[<p>Bloc-Note pour Wine</p><!--break-->

	<a name='chapter_1'></a>
  <h2>Désinstaller une application</h2
<p>
Autant qu'une telle chose soit possible sur un OS qui n'a pas de gestion centralisée des installations, juste une référence sur l'outil \"gracieusement\" fournit à cet effet lors de l'install, la commande est la suivante :

  <div class='code-block code-block-fragment'>
  <div class='container'>
  wine uninstaller
  </div>
  
  </div>
</p>

<h2>Rebooter Wine</h2>
	
<p>
  Le Boot et Windows, c'est une longue histoire d'amour-haine et Wine n'échappe pas à cette régle. En effet, pour "simuler" le lancement de windows et le chargement automatique de certains outils, l'appel à wine provoque le chargement implicite du démon <kbd>wineserver</kbd>. Lorsque l'on désinstalle une application, il peut ainsi être utile de "rebooter" ce serveur :

  <div class='code-block code-block-fragment'>
  <div class='container'>
  winboot --restart
  </div>
  
  </div>
</p>
<p>
Il est aussi possible d'arrêter le serveur par un <kbd>winboot --shutdown</kbd>. 
</p>


	<a name='chapter_2'></a>
  <h2>Paramétrage de Wine</h2>
	
<p>
  WIne devient de plus en plus efficace et utilisable. La preuve en est l'outil graphique de configuration <kbd>winecfg</kbd> permettant de régler l'accélération vidéo et audio, le look'n'feel de Windows (sic !), et aussi de définir la version de windows simulé par Wine (XP, 2003, Vista, 98, etc..) de manière globale ou spécifiquement à une application. 
</p>

    ]]></content>
  </entry>
  <entry>
    <title>Bloc-note &#039;User Mode Linux&#039;</title>
    <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1321" />
    <id>http://artisan.karma-lab.net/node/1321</id>
    <published>2007-11-05T08:09:52+01:00</published>
    <updated>2008-02-05T08:14:06+01:00</updated>
    <author>
      <name>Ulhume</name>
    </author>
    <category term="Virtualisation" />
    <category term="Aucun" />
    <category term="Note" />
    <category term="OK" />
    <summary type="html"><![CDATA[<p>
  Ce bloc-note sur UML (User Mode Linux) sont des expériences jetées là lors de mes tests. Rien de bien structuré mais cela peu toujours servir... </p>

    ]]></summary>
    <content type="html"><![CDATA[<p>
  Ce bloc-note sur UML (User Mode Linux) sont des expériences jetées là lors de mes tests. Rien de bien structuré mais cela peu toujours servir... </p>

<!--break-->
<p>
L'objectif d'UML a été de modifier le kernel Linux de sorte à permettre de l'exécuter, sans privilèges particuliers, comme une simple application. Grâce à ce projet, nous disposons ainsi d'un véritable linux, moins performant, mais bien plus étanche que notre précédent chrootage.
</p>
<p>
Récupérer les deux images ici : http://user-mode-linux.sourceforge.net/

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <a target="blank" href="http://pwet.fr/man/linux/commandes/dd"><span class="kw2">dd</span></a> <span class="re2">if=</span><span class="sy0">/</span>dev<span class="sy0">/</span>zero <span class="re2">of=</span>uml_root <span class="re2">count=</span><span class="nu0">1</span> <span class="re2">bs=</span>1k <span class="re2">seek=</span>$<span class="br0">&#91;</span><span class="nu0">2</span><span class="sy0">*</span><span class="nu0">1024</span><span class="sy0">*</span><span class="nu0">1024</span><span class="br0">&#93;</span><br />
mkfs -t ext2 uml_root<br />
<a target="blank" href="http://pwet.fr/man/linux/commandes/mkdir"><span class="kw2">mkdir</span></a> racine<br />
<a target="blank" href="http://pwet.fr/man/linux/commandes/mount"><span class="kw2">mount</span></a> uml_root racine -o loop<br />
urpmi bootstrat -root racine
  </div>
  
  </div>
</p>
<p>
Replacer la création des consoles dans /etc/inittab par 

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="co0"># Run xdm in runlevel 5</span><br />
x:<span class="nu0">5</span>:once:<span class="sy0">/</span>etc<span class="sy0">/</span>X11<span class="sy0">/</span>prefdm -nodaemon<br />
<span class="co0"># We launch just one console for UML:</span><br />
c0:<span class="nu0">1235</span>:respawn:<span class="sy0">/</span>sbin<span class="sy0">/</span>mingetty tty0
  </div>
  
  </div>
</p>
<p>
Virer tous les services inutiles (chkconfig --del).<br>
Faire un rsync des device de la fedora de demo sur la machine générée
</p>


<p>
../linux-2.6.23 ubd0=lamp5fs
</p>    ]]></content>
  </entry>
  <entry>
    <title>Decouverte de VirtualBox</title>
    <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1239" />
    <id>http://artisan.karma-lab.net/node/1239</id>
    <published>2007-10-18T16:19:14+02:00</published>
    <updated>2007-10-22T00:59:49+02:00</updated>
    <author>
      <name>Ulhume</name>
    </author>
    <category term="Virtualisation" />
    <category term="OK" />
    <category term="Planet Libre" />
    <category term="Article" />
    <summary type="html"><![CDATA[<p>
  J'ai découvert Virtual Box, complètement par hasard, en cherchant à régler un conflit de performance entre VmPlayer et le kernel standard de la nouvelle mandriva 2008.0. L'ensemble patinant comme pas possible, je me suis donc lancé dans un gouglage de circonstance pour comprendre d'où venait le mal. C'est alors que je tombe sur un article parlant de <a class='external' target='_blank' href='http://www.virtualbox.org/' >Virtual Box</a>. Dans mon petit cerveau qui traite souvent bien trop vite les informations qui nous arrivent en flot dense et continu, je connaissais bien ce nom mais l'avais classé un peu rapidement dans la catégorie "Nième virtualisation spécialisé pour les *nix".
</p>
<p>
  Et bien voilà une bien grosse erreur car Virtual Box accepte TOUS les OS basés sur du code i86. Il est à ce titre un équivalent de VmWare WorkStation s'offrant le luxe de tourner aussi bien sur MacOS, Linux et Windows.
</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>
  J'ai découvert Virtual Box, complètement par hasard, en cherchant à régler un conflit de performance entre VmPlayer et le kernel standard de la nouvelle mandriva 2008.0. L'ensemble patinant comme pas possible, je me suis donc lancé dans un gouglage de circonstance pour comprendre d'où venait le mal. C'est alors que je tombe sur un article parlant de <a class='external' target='_blank' href='http://www.virtualbox.org/' >Virtual Box</a>. Dans mon petit cerveau qui traite souvent bien trop vite les informations qui nous arrivent en flot dense et continu, je connaissais bien ce nom mais l'avais classé un peu rapidement dans la catégorie "Nième virtualisation spécialisé pour les *nix".
</p>
<p>
  Et bien voilà une bien grosse erreur car Virtual Box accepte TOUS les OS basés sur du code i86. Il est à ce titre un équivalent de VmWare WorkStation s'offrant le luxe de tourner aussi bien sur MacOS, Linux et Windows.
</p>
<!--break-->

	<a name='chapter_7'></a>
  <h2>Qu'est-ce que la virtualisation ?</h2>
	
<p>
Nous pourrions couvrir un livre complet sur le sujet, il y en a d'ailleurs déjà beaucoup. Pour faire simple, il faut partir de la problématique de départ. A savoir, comment exécuter sur une machine donnée (la votre <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/wink2.gif" title="Wink" alt="Wink" class="smiley-content"/> ), une application, un programme, qui a été écrit pour une autre machine qui n'a rien à voir (autre processeur, autre siècle, etc...).
</p>
<p>
La première réponse à cette question fût l'émulation. Un émulateur est un programme qui va servir d'interprète. Son travail peut être décomposé en deux temps. Tout d'abord il va "traduire" le binaire à exécuter dans le language natif de votre système et donc de son micro-processeur. Ensuie, à chaque fois que l'application traduite va cherche à écrire sur un disque, à afficher quelque chose sur l'écran, l'émulateur va intercepter cet appel pour le faire passer par ses propres rouages.
</p>
<p>
 L'émulation est un processus complet efficace à 100%. Il permet d'exécuter sur un PC des programmes prévus pour des machines qui n'ont rien avoir. Des émulateurs permettent par exemple de lancer un vieux jeu écrit écrit il y a 20 ans pour un Amstrad sur un PC récent sous Linux, ou encore de jouer à la "playstation" mais sous Windows...
</p>
<p>
  Mais si l'émulation est système de nature universelle, sa mise en œuvre est lourde, lente, et à peu près inutilisable lorsqu'il s'agit de lancer un OS moderne complet (un Windows sous Linux par exemple). C'est là qu'intervient la virtualisation.
</p>
<p>
   Contrairement à l'émulation, la virtualisation ne cherche plus à "traduire" le binaire. Elle part en effet du principe que ce dernier a été écrit pour le <b>même micro-processeur</b> que le système physique. Il va donc seulement chercher à intercepter les appels aux resources physiques. La virtualisation ne peut donc pas de lancer un jeu de PlayStation mais permet (théoriquement) d'exécuter un Mac OS 10 dans sa version Intel sur Linux/PC. Et comme il n'y a plus de traduction, nous disposons dans un système de virtualisation des <b>mêmes performances de calcul</b> que sur le système hôte. 
</p>
<p>
  Les solutions de virtualisation sont nombreuses. Microsoft par exemple, qui n'aime pas être en reste, a racheté (comme d'habitude) un produit d'émulation d'origine Mac : Virtual PC pour le faire muter en outil de virtualisation. Dans le monde libre, nous avons QEmu, un outil puissant lui aussi parti d'un émulateur pur mais qui se dirige peu à peu vers de la virtualisation. Il convient aussi de citer des projets récents plein de promesses comme Xen, très orienté serveur de virtualisation. Enfin, il y a l'acteur historique, VmWare, qui propose aujourd'hui une large gamme de produit allant de l'utilisation en poste de travail à des solutions complexes de serveurs de virtualisation. 
</p>
<p>
  C'est dans ce contexte que débarque Virtual Box, une solution de virtualisation qui va concurrencer directement les produits de VmWare, mais avec une licence GPL.
</p>

	<a name='chapter_8'></a>
  <h2>Installation...</h2>
	
<p>
  Virtual Box est ceci dit relativement récent, la première version date du début de l'année comme en témoigne le <a class='external' target='_blank' href='http://www.virtualbox.org/wiki/Changelog' >changeLog</a>. Un logiciel jeune donc, mais loin d'être dépourvu d'atouts que nous allons tester de ce pas avec le <i>Click'Em Up</i> de chez Redmond.
</p>
<p>
  Le premier atout de Virtual Box est sa version <a class='external' target='_blank' href='http://www.virtualbox.org/wiki/Editions' >Open Source Edition (OSE)</a>. Certaines fonctions sont certes fermées (sources ne sont pas divulgués) mais restent utilisables dans un cadre privé. USB, RDP et  iSCSI en font en autre partie et s'utilisent comme le driver nVidia, sous leur forme seulement binaires et pré-compilés. 
</p>
<p>
  La conséquence d'une version libre est que Virtual Box est disponible en standard dans les dépôts de la Mandriva 2008.0. Il ne nécessite donc aucun téléchargement spécifique ni configuration sauvage à la sauce <kbd>vmware-config.pl</kbd>. Le logiciel se divise en deux parties : un module kernel et une application cliente. L'installation se fait dès lors par un simplissime <kbd>urpmi virtualbox</kbd>. 
</p>

	<a name='chapter_9'></a>
  <h2>Création d'une première machine</h2>
	
<p>
  <image id="2" style="border:none"/>
  Une fois installée, la bête se lance par la commande <kbd>VirtualBox</kbd> donnant lieu à l'affichage d'une belle IHM en Qt qui n'est pas sans rappeler la version Workstation de VMWare. En explorant les options on se rend vite compte qu'il s'agit là d'un produit hautement abouti. Rien ne manque jusqu'au SnapShots (sauvegarde réutilisable de l'état d'une VM à un instant T).
</p>

<p>
 Fabriquer une nouvelle machine se fait en quelques clicks et je ne détaille même pas la procédure tant celle-ci est simple et intuitive. Un assistant vous guide sans encombre à travers la sélection du nom de la machine virtuelle et de l'OS visé (dans mon cas Windows XP), la création d'un disque virtuel, la redirection du CD-ROM virtuel sur une image ISO d'installation ou un CD physique. Une fois achevé, l'assistant vous installe une icône dans le gestionnaire qu'il ne reste alors plus qu'à lancer. 
</p>

<p>
  Comme pour une machine physique, la machine virtuelle démarre sur le CD-ROM de Windows et les étapes d'installation se suivent sans heurts pour déboucher au bout d'une demi heure sur une version fraîche et utilisable.
</p>

<p>
  <image id="1" style="border:none"/>
  Déjà j'étais plutôt <em>interdit</em> d'en arriver là sans avoir à tripatouiller quoi que ce soit. Mais la véritable surprise est du côté des performances. J'ai tout l'impression de ne pas avoir quitté VMPlayer tant le système est aussi réactif que le virtualisateur historique avec un boot qui m'a même semblé plus court. Et, cerise sur le gâteau, le système hôte (le GNU/Linux) me semble globalement plus réactif qu'avec VMPlayer. Un aspect important lorsque l'on utilise la virtualisation d'OS en même temps que d'autres applications Linux. Et ici, tout semble indiquer que Virtual Box prend moins de ressource. 
</p>
<div class='inline-box note'>
  Si VirtualBox couine pour une histoire de module non chargé, faites, en tant que root, un <kbd>modprobe vboxdrv</kbd> et relancez. 
</div>
<p>
  A ce stade une chose manque par rapport à VMplayer : les drivers "natifs". En effet, même si la société VMWare n'équipe pas la version gratuite de son lecteur des fameux pilotes optimisés (écran, disque, souris) qui boostent littéralement un Windows virtuel, les malins savent qu'il suffit de télécharger la version d'évaluation de la Workstation pour en extraire le précieux <kbd>windows.iso</kbd> qui les contiennent. 
</p>
<p>
  Et bien pour Virtual Box point n'est besoin de "tricher". Il suffit simplement d'aller dans les menus et de lancer l'explicite <kbd>Installer les additions client...</kbd>. Après une poignée de secondes,  quelques boite de message inquiètes de Windows, et, bien évidement, un redémarrage, sont installés un pilote écran optimisé, une souris non bloquante, bref, des fonctions comparables à la version payante de VMWare. Et là vous disposez d'une machine virtuelle au performance quasi équivalente à une exécution native. Mon Delphi se lance sans délais, les compilations sont rapides et l'exécution en phase avec ce que j'ai l'habitude de constater. 
<p>

<H2>L'utilisation de machines existantes</h2>
<p>
  <image id="3" style="border:none"/>
  Utilisant VMPlayer pour mon travail depuis plus d'un an, je n'avais aucune envie de ré-installer un système complet pour commencer à re-travailler. Fort heureusement, Virtual Box a prévu le coup. Lors de la fabrication d'une nouvelle machine, à l'étape de la sélection des disques, il est donc possible d'utiliser... un disque VmWare existant (fichiers .vmdk). 
</p>
<p>
  Je m'attendais à ce que rien ne fonctionne et pourtant, ça a booté... mais pas très longtemps <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/wink2.gif" title="Wink" alt="Wink" class="smiley-content"/> Au bout de quelques secondes est apparu un magnifique <em>Ecran Mortel Bleu</em> comme je les adore. Windows me larguait ainsi sans plus d'explication avec un cryptique <kbd>STOP 0x0000007B (bla,bla,bla,bla)</kbd>. Il m'a fallut un peu de temps et l'aide de Gouggle pour comprendre que le problème ne venait pas de Virtual Box mais de Windows (la grosse surprise). Ce dernier faisait une gentille petite crise de panique et n'arrivait plus à trouver les pilotes IDE standards pour cause de "changement de carte mère"... 
</p>
<p>
  La solution, je la dois <a class='external' target='_blank' href='http://dark.merlin.free.fr/blog/index.php?2006/04/30/31-comment-changer-de-carte-mere-sans-reinstaller-windows' >au blog de Merlin</a> que je remercie ici. Elle consiste à :
  <ol>
    <li>Relancer VMWare avec la machine à convertir.</li>
    <li>Aller dans le dossier <kbd>X:\Windows\driver cache\i386</kbd></li>
    <li>Décompresser le fichier <kbd>driver.cab</kbd> qui s'y trouve (avec winrar, winzip, un décapsuleur, etc..) dans le dossier <kbd>X:\Windows\system32\drivers</kbd>.</li>
    <li>Ensuite importer dans le registry le petit fichier <kbd>mergide.reg</kbd> qui est listé à la fin de ce billet.</li>
    <li>Arrêter windows.</li>
    <li>Relancer Windows mais cette fois dans VirtualBox.</li>
  </ol>
</p>
<p>
  Une fois redémarré, windows retrouve miraculeusement ses petits et poursuit sont lancement. Une fois loggé, pensez à installer les outils additionnels comme indiqués au chapitre précédent et aussi à désinstaller ceux de VMWare.
</p>
<div class='inline-box note'>
  Si vous avez des soucis de performance sous linux avec la commande <kbd>top</kbd> qui vous indique que le processus <kbd>ksoftirqd</kbd> est à 20%, vous devez rajouter dans le paramètre <kbd>nohz=off</kbd> au démarrage du kernel (append= dans lilo.conf). Cela devrait régler votre problème en attendant que l'équipe de VirtualBox règle le leur. 
  <br>
  A noter que cette astuce fonctionne aussi pour VMWare qui a le même problème. 
</div>


	<a name='chapter_10'></a>
  <h2>Performances</h2>
	
<p>
  Il est maintenant temps de tester un peu les performances de Virtual Box. Pour se faire, j'utilise l'outil nBench. Ce n'est pas ni le plus fin ni le plus complet des outils mais il est rapide à mettre en œuvre et simple à interpréter. Il teste les opérations CPU, les accès mémoire et disque. Pour la vidéo (2D), j'ai utilise l'outil PerformanceTest. 
</p>
<p>
  Pour service de référence, les mêmes tests ont été effectués sur VmWare et sous Wine (sauf pour la vidéo). Les chiffres donnés par Wine peuvent ainsi servir de référence des performances natives de la machine hôte.
</p>
<p>
  Donc, un dessin introduisant bien mieux un court discours, voilà ce que cela donne :
  <image id="5" width="802" style="border:none;" />
  <br style="clear:left"/>
</p>
<p>
  La première chose que l'on constate, c'est la réalité de ce type de technologie et la preuve qu'il ne s'agit bien en rien d'une émulation. En effet, les performances CPU pures obtenues pour les opérations sur les entiers et les flottants ne permettent en effet pas de distinguer les trois plate-formes. C'est très logique car la virtualisation ne modifie pas le code exécuté, elle ne fait qu'émuler la couche matérielle. Du coup les résultats d'accès mémoire sont eux aussi, équivalents. 
</p>
<p>
  En revanche les différences apparaissent pour le matériel émulé, et donc typiquement, les disques. Nous savions déjà que cet aspect était le gros point noir de VMWare, ici cela apparaît très clairement. VMWare est 8.11 fois plus lent que Wine (natif) en écriture et près de 4.34 fois plus lent quant il s'agit des écritures.
</p>
<p>
   Sur le même test, en n'utilisant pourtant pas son disque natif mais bien le même VMDK que VmWare, Virtual Box est lui "seulement" 2.89 fois plus lent que le natif en lecture. C'est à dire 2.81 fois plus rapide que VMWare...
</p>
<p>
  Concernant l'écriture, une politique de cache de Virtual Box me semble la seule explication pour explique un score 5.24 fois supérieure au natif... Ce qui le donne du coup 22.73 plus rapide que VmWare.
</p>
<p>
  Concernant la vidéo (2D) en revanche les deux plateformes sont totalement similaires. 
</p>
<p>
  Evidement un test n'est qu'un test et nBench n'est pas le meilleur ni le plus intelligent mais il permet de mettre en évidence que pour tout ce qui ne touche pas aux disque, Virtual Box obtient des résultats totalement comparables avec VmPlayer. Mais concernant les accès disques, il est simplement meilleur...
</p>


	<a name='chapter_11'></a>
  <h2>Conclusion</h2>
	
<p>
  La société VmWare propose bien deux produits gratuits que l'on pourrait opposer, en terme de coût, à Virtual Box. Il s'agit de <a class='external' target='_blank' href='http://www.vmware.com/products/player/' >VmPlayer</a>, un "lecteur" sans capacité de création de nouvelles machines, et <a class='external' target='_blank' href='http://www.vmware.com/products/server/' >VmWare Server</a>, excellent pour virtualiser et monitorer plusieurs OS simultanés mais peu adapté à un usage en poste de travail.
</p>
<p>
  Virtual Box se place donc plutôt en concurrent de la version <a class='external' target='_blank' href='http://www.vmware.com/fr/products/ws/' >VmWare Workstation</a> qui elle, est payante. Il dispose à peu près des mêmes fonctionnalités que son grand frère en étant clairement plus rapide sur les accès disques et moins intrusif sur le système hôte (en tout cas sous Linux). Sa licence GPL lui permet quant à elle d'être directement intégré dans la majorité des distributions récentes (Mandriva, Ubuntu, etc.). Enfin, elle tourne comme la Workstation sur Windows et Linux, mais aussi sous MacOS. 
</p>

<p>
  Un beau produit comme on les aime, a suivre de très près...
</p>
    ]]></content>
  </entry>
  <entry>
    <title>Bloc-note &#039;QEmu&#039;</title>
    <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1015" />
    <id>http://artisan.karma-lab.net/node/1015</id>
    <published>2006-10-08T11:11:35+02:00</published>
    <updated>2007-07-04T03:04:49+02:00</updated>
    <author>
      <name>Ulhume</name>
    </author>
    <category term="Virtualisation" />
    <category term="Aucun" />
    <category term="Note" />
    <category term="OK" />
    <summary type="html"><![CDATA[<p>Bloc-Notes sur Qemu</p>    ]]></summary>
    <content type="html"><![CDATA[<p>Bloc-Notes sur Qemu</p><!--break-->

	<a name='chapter_3'></a>
  <h2>Création d'une image disque</h2>
	

  <div class='code-block code-block-fragment'>
  <div class='container'>
  qemu-img create -f win.img 4G
  </div>
  
  </div>

	<a name='chapter_4'></a>
  <h2>montage d'une image disque</h2>
	

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <a target="blank" href="http://pwet.fr/man/linux/commandes/mount"><span class="kw2">mount</span></a> -o loop,<span class="re2">offset=</span><span class="nu0">32256</span> win.img dossier
  </div>
  
  </div>
<p>
  ceci est applicable à n'importe quelle image de disque (par exemple créee par un dd if=/dev/hda of=img). La valeur 32256 est en fait la position du 62° secteur de 512 octets.
</p>  
<p>
  D'un point de vue plus général, il suffit de taper :
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  fdisk -l -u <span class="sy0">/</span>dev<span class="sy0">/</span>sda
  </div>
  
  </div>
</p>
<p>Vous devez initialiser cylindres.</p>
<p>Vous pouvez faire cela à partir du menu des fonctions additionnelles.</p>

  <div class='code-block code-block-fragment'>
  <div class='container'>
  Disque res.img: 0 Mo, 0 octets<br />
2 têtes, 32 secteurs/piste, 0 cylindres, total 0 sectors<br />
Unités = secteurs de 1 * 512 = 512 octets<br />
<br />
Périphérique Boot &nbsp; Start &nbsp; &nbsp; End &nbsp; Blocks&nbsp; Id &nbsp;System<br />
/dev/sda1 &nbsp;*&nbsp; &nbsp; &nbsp; &nbsp;32 &nbsp; &nbsp;31359&nbsp; &nbsp; &nbsp;15664&nbsp; &nbsp;1 &nbsp;FAT12
  </div>
  
  </div>
<p>On en déduit que le secteur de démarrage est 32*512=16384</p>
    ]]></content>
  </entry>
</feed>
