diff options
Diffstat (limited to 'doc/manual/fr_FR/user_Technical.xml')
-rw-r--r-- | doc/manual/fr_FR/user_Technical.xml | 1251 |
1 files changed, 642 insertions, 609 deletions
diff --git a/doc/manual/fr_FR/user_Technical.xml b/doc/manual/fr_FR/user_Technical.xml index 7b757e81..080f1d4d 100644 --- a/doc/manual/fr_FR/user_Technical.xml +++ b/doc/manual/fr_FR/user_Technical.xml @@ -2,192 +2,201 @@ <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd"> <chapter id="TechnicalBackground"> - <title>Technical background</title> + <title>Sous-bassements techniques</title> - <para>The contents of this chapter are not required to use VirtualBox - successfully. The following is provided as additional information for - readers who are more familiar with computer architecture and technology and - wish to find out more about how VirtualBox works "under the hood".</para> + <para>Le contenu de ce chapitre n'est pas indispensable pour utiliser + VirtualBox avec succès. Nous indiquons ce qui suit à titre informatif pour + ceux qui sont plus familiers de la technologie et de l'architecture informatique + et qui veulent en savoir davantage sur la manière fonctionne VirtualBox "sous + le capeau".</para> <sect1 id="vboxconfigdata"> - <title>Where VirtualBox stores its files</title> + <title>Où VirtualBox stocke ses fichiers</title> - <para>In VirtualBox, a virtual machine and its settings are described in a - virtual machine settings file in XML format. In addition, most virtual - machine have one or more virtual hard disks, which are typically - represented by disk images (e.g. in VDI format). Where all these files are - stored depends on which version of VirtualBox created the machine.</para> + <para>Dans VirtualBox, une machine virtuelle et ses paramètres sont + déscrits dans un fichier de paramètres de la machine virtuelle, au format + XML. De plus, la plupart des machines virtuelles ont un ou plusieurs + disques durs qui leur sont en général présentés par des images de disque + (comme au format VDI). L'endroit où sont stockés tous ces fichiers + dépend de la version de VirtualBox qui a créé la machine.</para> <sect2> - <title>Machines created by VirtualBox version 4.0 or later</title> + <title>Machines créées par VirtualBox version 4.0 ou supérieur</title> - <para>Starting with version 4.0, by default, each virtual machine has - one directory on your host computer where all the files of that machine - are stored -- the XML settings file (with a - <computeroutput>.vbox</computeroutput> file extension) and its disk - images.</para> + <para>À partir de la version 4.0, par défaut, chaque machine virtuelle + dispose d'un répertoire sur votre ordinateur hôte (où tous les fichiers + de cette machine sont stockés -- le fichier des paramètres XML (avec une + extension de fichier <computeroutput>.vbox</computeroutput>) et ses + images de disque.</para> - <para>By default, this "machine folder" is placed in a common folder - called "VirtualBox VMs", which VirtualBox creates in the current system - user's home directory. The location of this home directory depends on - the conventions of the host operating system:</para> + <para>Par défaut, ce "dossier machine" se trouve dans un dossier ordinaire + appelé "VirtualBox VMs", créé par VirtualBox dans le dossier personnel + de l'utilisateur du système actuel. L'emplacement de ce répertoire personnel + dépend des conventions du système d'exploitation hôte :</para> <itemizedlist> <listitem> - <para>On Windows, this is - <computeroutput>%HOMEDRIVE%%HOMEPATH%</computeroutput>; typically - something like <computeroutput>C:\Documents and - Settings\Username\</computeroutput>.</para> + <para>Sur Windows, il s'agit de + <computeroutput>%HOMEDRIVE%%HOMEPATH%</computeroutput>; en général + quelque chose comme <computeroutput>C:\Documents and + Settings\NomUtilisateur\</computeroutput>.</para> </listitem> <listitem> - <para>On Mac OS X, this is - <computeroutput>/Users/username</computeroutput>.</para> + <para>Sur Mac OS X, il s'agit de + <computeroutput>/Users/nomutilisateur</computeroutput>.</para> </listitem> <listitem> - <para>On Linux and Solaris, this is - <computeroutput>/home/username</computeroutput>.</para> + <para>Sur Linux et Solaris, il s'agit de + <computeroutput>/home/nomutilisateur</computeroutput>.</para> </listitem> </itemizedlist> - <para>For simplicity, we will abbreviate this as - <computeroutput>$HOME</computeroutput> below. Using that convention, the - common folder for all virtual machines is + <para>Par simplicité, nous abrègerons cela ci-dessous par + <computeroutput>$HOME</computeroutput>. En utilisant cette convention, le + dossier ordinaire de toutes les machines virtuelles est <computeroutput>$HOME/VirtualBox VMs</computeroutput>.</para> - <para>As an example, when you create a virtual machine called "Example - VM", you will find that VirtualBox creates<orderedlist> + <para>Par exemple, quand vous créez une machine virtuelle qui s'appelle + "VM Exemple", vous verrez que VirtualBox crée<orderedlist> <listitem> - <para>the folder <computeroutput>$HOME/VirtualBox VMs/Example - VM/</computeroutput> and, in that folder,</para> + <para>le dossier <computeroutput>$HOME/VirtualBox VMs/VM Exemple/</computeroutput> + et, dans ce dossier,</para> </listitem> <listitem> - <para>the settings file <computeroutput>Example - VM.vbox</computeroutput> and</para> + <para>le fichier des paramètres <computeroutput>VM Exemple.vbox</computeroutput> et</para> </listitem> <listitem> - <para>the virtual disk image <computeroutput>Example - VM.vdi</computeroutput>.</para> + <para>l'image de disque virtuel <computeroutput>VM Example.vdi</computeroutput>.</para> </listitem> </orderedlist></para> - <para>This is the default layout if you use the "Create new virtual - machine" wizard as described in <xref linkend="gui-createvm" />. Once - you start working with the VM, additional files will show up: you will - find log files in a subfolder called - <computeroutput>Logs</computeroutput>, and once you have taken - snapshots, they will appear in a - <computeroutput>Snapshots</computeroutput> subfolder. For each VM, you - can change the location of its snapsnots folder in the VM - settings.</para> - - <para>You can change the default machine folder by selecting - "Preferences" from the "File" menu in the VirtualBox main window. Then, - in the window that pops up, click on the "General" tab. Alternatively, - use <computeroutput>VBoxManage setproperty - machinefolder</computeroutput>; see <xref + <para>C'est le rangement par défaut si vous utilisez l'assistant "Créer + une nouvelle machine virtuelle" comme décrit au <xref linkend="gui-createvm" />. Une fois que + vous commencez à travailler avec la VM, des fichiers supplémentaires + apparaîtront : vous trouverez des fichiers journaux dans un + sous-dossier qui s'appelle + <computeroutput>Logs</computeroutput>, and une fois que vous aurez pris + des instantanés, ils apparaîtront dans un sous-dossier + <computeroutput>Snapshots</computeroutput>. Pour chaque VM, vous pouvez + modifier l'emplacement de son dossier d'instantanés dans les paramètres + de la VM.</para> + + <para>Vous pouvez changer le dossier machine par défaut en sélectionnant + "Préférences" du menu "Fichier" de la fenêtre principale de VirtualBox. + Puis, dans la fenêtre qui apparaît, cliquez sur l'onglet "Général". Sinon, + utilisez <computeroutput>VBoxManage setproperty + machinefolder</computeroutput> ;; voir le <xref linkend="vboxmanage-setproperty" />.</para> </sect2> <sect2> - <title>Machines created by VirtualBox versions before 4.0</title> - - <para>If you have upgraded to VirtualBox 4.0 from an earlier version of - VirtualBox, you probably have settings files and disks in the earlier - file system layout.</para> - - <para>Before version 4.0, VirtualBox separated the machine settings - files from virtual disk images. The machine settings files had an - <computeroutput>.xml</computeroutput> file extension and resided in a - folder called "Machines" under the global VirtualBox configuration - directory (see the next section). So, for example, on Linux, this was - the hidden <computeroutput>$HOME/.VirtualBox/Machines</computeroutput> - directory. The default hard disks folder was called "HardDisks" and - resided in the <computeroutput>.VirtualBox</computeroutput> folder as - well. Both locations could be changed by the user in the global - preferences. (The concept of a "default hard disk folder" has been - abandoned with VirtualBox 4.0, since disk images now reside in each - machine's folder by default.)</para> - - <para>The old layout had several severe disadvantages.<orderedlist> + <title>Machines créées par des versions de VirtualBox antérieures à 4.0</title> + + <para>Si vous avez mis à jour vers VirtualBox 4.0 en partant d'une ancienne + version de VirtualBox, vous aurez probablement vos fichiers de paramètres + et les disques selon l'organisation du szstème de fichiers d'alors.</para> + + <para>Avant la version 4.0, VirtualBox séparait les fichiers des + paramètres de la machine des images de disque virtuel. Les fichiers de + paramétrages de la machine avaient une extension + <computeroutput>.xml</computeroutput> et se trouvaient dans un dossier + appelé "Machines" dans le répertoire de configuration global de VirtualBox + (voir la prochaine section). Donc, par exemple, sur Linux, il s'agissait + du répertoire caché <computeroutput>$HOME/.VirtualBox/Machines</computeroutput>. + Le dossier par défaut des disques durs s'appelait "HardDisks" et se trouvait + également dans le dossier <computeroutput>.VirtualBox</computeroutput>. + L'utilisateur pouvait changer les deux endroits dans les préférences + globales (le concept de "dossier par défaut des disques durs" a été + abandonné avec VirtualBox 4.0, vu que les images de disque se trouvent + désormais par défaut dans le dossier de chaque machine.)</para> + + <para>L'ancienne organisation avait plusieurs gros inconvénients.<orderedlist> <listitem> - <para>It was very difficult to move a virtual machine from one - host to another because the files involved did not reside in the - same folder. In addition, the virtual media of all machines were - registered with a global registry in the central VirtualBox - settings file + <para>Il était très difficile de déplacer une machine virtuelle + d'un hôte à l'autre car les fichiers concernés ne se trouvaient pas + dans le même dossier. De plus, les médias virtuels de toutes les + machines étaient enregistrés avec un registre global dans le + fichier des paramètres transversaux de VirtualBox. (<computeroutput>$HOME/.VirtualBox/VirtualBox.xml</computeroutput>).</para> - <para>To move a machine to another host, it was therefore not - enough to move the XML settings file and the disk images (which - were in different locations), but the hard disk entries from the - global media registry XML had to be meticulously copied as well, - which was close to impossible if the machine had snapshots and - therefore differencing images.</para> + <para>Pour déplacer une machine sur un autre hôte, il n'était donc + pas suffisant de déplacer le fichier des paramètres XML et les images + de disque (qui se trouvaient à des endroits différents), mais + il fallait en plus copier méticuleusement les entrées du disque + dur à partir du XML du registre de médias global, ce qui était + presqu'impossible si la machine avait des instantanés et, donc, des + images de différenciation.</para> </listitem> <listitem> - <para>Storing virtual disk images, which can grow very large, - under the hidden <computeroutput>.VirtualBox</computeroutput> - directory (at least on Linux and Solaris hosts) made many users - wonder where their disk space had gone.</para> + <para>Le stockage des images de disque virtuel, qui peuvent beaucoup + grossir, sous le répertoire caché + <computeroutput>.VirtualBox</computeroutput> (au moins sur les hôtes + Linux et Solaris) amenait de nombreux utilisateurs à se demander + ce qu'était devenu leur espace disque.</para> </listitem> </orderedlist></para> - <para>Whereas new VMs created with VirtualBox 4.0 or later will conform - to the new layout, for maximum compatibility, old VMs are - <emphasis>not</emphasis> converted to the new layout. Otherwise machine - settings would be irrevocably broken if a user downgraded from 4.0 back - to an older version of VirtualBox.</para> + <para>Si les nouvelles VMs créées avec VirtualBox 4.0 ou supérieur + respecteront la nouvelle organisation, pour une compatibilité maximum, les + anciennes VMs <emphasis>ne sont pas</emphasis> converties en nouvelle + organisation. Sans cela, les paramètres de la machine seraient immanquablement + cassés si l'utilisateur rétrogradait de la 4.0 à une version plus ancienne + de VirtualBox.</para> </sect2> <sect2> - <title>Global configuration data</title> - - <para>In addition to the files of the virtual machines, VirtualBox - maintains global configuration data. On Windows, Linux and Solaris, this - is in <computeroutput>$HOME/.VirtualBox</computeroutput> (which makes it - hidden on Linux and Solaris), whereas on a Mac this resides in - <computeroutput>$HOME/Library/VirtualBox</computeroutput>.</para> - - <para>VirtualBox creates this configuration directory automatically if - necessary. Optionally, you can supply an alternate configuration - directory by setting the - <computeroutput><literal>VBOX_USER_HOME</literal></computeroutput> - environment variable. (Since the global - <computeroutput>VirtualBox.xml</computeroutput> settings file points to - all other configuration files, this allows for switching between several - VirtualBox configurations entirely.)</para> - - <para>Most importantly, in this directory, VirtualBox stores its global - settings file, another XML file called - <computeroutput>VirtualBox.xml</computeroutput>. This includes global - configuration options and the list of registered virtual machines with - pointers to their XML settings files. (Neither the location of this file - nor its directory has changed with VirtualBox 4.0.)</para> - - <para>Before VirtualBox 4.0, all virtual media (disk image files) were - also contained in a global registry in this settings file. For - compatibility, this media registry still exists if you upgrade - VirtualBox and there are media from machines which were created with a - version before 4.0. If you have no such machines, then there will be no - global media registry; with VirtualBox 4.0, each machine XML file has - its own media registry.</para> - - <para>Also before VirtualBox 4.0, the default "Machines" folder and the - default "HardDisks" folder resided under the VirtualBox configuration - directory (e.g. - <computeroutput>$HOME/.VirtualBox/Machines</computeroutput> on Linux). - If you are upgrading from a VirtualBox version before 4.0, files in - these directories are not automatically moved in order not to break - backwards compatibility.</para> + <title>Données globales de configuration</title> + + <para>Outre les fichiers des machines virtuelles, VirtualBox gère des + données globales de configuration. Sur Linux et Solaris, depuis as of VirtualBox 4.3 + elles se trouvent dans le répertoire caché <computeroutput>$HOME/.config/VirtualBox</computeroutput> + même si <computeroutput>$HOME/.VirtualBox</computeroutput> sera utilisé + s'il existe pour rester compatible avec les anciennes versions ; sur + un Mac, elles se trouvent + dans <computeroutput>$HOME/Library/VirtualBox</computeroutput>.</para> + + <para>VirtualBox crée automatiquement ce répertoire de configuration si + nécessaire. Vous pouvez éventuellement fournir un répertoire de configuration + alternatif en réglant la variable d'environnement + <computeroutput><literal>VBOX_USER_HOME</literal></computeroutput> ou, + en plus, sur Linux ou Solaris, en utilisant la variable standard + <computeroutput><literal>XDG_CONFIG_HOME</literal></computeroutput> (car le + fichier des paramètres globaux de <computeroutput>VirtualBox.xml</computeroutput> + pointe vers tous les autres fichiers de configuration, ce qui permet + de naviguer entre plusieurs configurations de VirtualBox.</para> + + <para>VirtualBox stocke essentiellement dans ce répertoire son fichier + de paramètres globaux, un autre fichier XMK appelé + <computeroutput>VirtualBox.xml</computeroutput>. Cela comprend des + options de configuration globales et la liste des machines virtuelles + enregistrées avec des pointeurs vers leurs fichiers de paramètres XML. + Ni l'emplacement du fichier ni son répertoire n'ont changé avec + VirtualBox 4.0.)</para> + + <para>Avant VirtualBox 4.0, tous les médias virtuels (fichiers images + de disque) étaient également stockés dans un registre global de ce + fichier de paramètres. Par compatibilité, ce registre de médias existe + toujours si vous mettez à jour VirtualBox et s'il y a des médias + issus de machines créées avec une version inférieure à 4.0. Si vous + n'avez pas de telles machines, ce ne sera pas des retistres de médias + globaux ; avec VirtualBox 4.0, chaque fichier XML d'une machine a + son propre registre de médias.</para> + + <para>De même, avant VirtualBox 4.0, le dossier "Machines" par défaut + et le dossier "HardDisks" par défaut se trouvaient dans le répertoire de + configuration de VirtualBox (par exemple, <computeroutput>$HOME/.VirtualBox/Machines</computeroutput> + sur Linux). Si vous mettez à jour à partir d'une version de VirtualBox + inférieure à la 4.0, les fichiers de ce répertoire ne sont pas déplacés + automatiquement afin de ne pas casser la rétro compatibilité.</para> </sect2> <sect2> - <title>Summary of 4.0 configuration changes</title> + <title>Résumé des des modifications de la configuration de 4.0</title> <table> <title>ignoreme</title> @@ -197,13 +206,13 @@ <row> <entry></entry> - <entry><emphasis role="bold">Before 4.0</emphasis></entry> + <entry><emphasis role="bold">Avant 4.0</emphasis></entry> - <entry><emphasis role="bold">4.0 or above</emphasis></entry> + <entry><emphasis role="bold">4.0 ou supérieur</emphasis></entry> </row> <row> - <entry>Default machines folder</entry> + <entry>Dossier par défaut des machines</entry> <entry><computeroutput>$HOME/.VirtualBox/Machines</computeroutput></entry> @@ -212,7 +221,7 @@ </row> <row> - <entry>Default disk image location</entry> + <entry>Emplacement des images de disque</entry> <entry><computeroutput>$HOME/.VirtualBox/HardDisks</computeroutput></entry> @@ -220,7 +229,7 @@ </row> <row> - <entry>Machine settings file extension</entry> + <entry>Extension des fichiers de paramètres de la machine</entry> <entry><computeroutput>.xml</computeroutput></entry> @@ -228,20 +237,20 @@ </row> <row> - <entry>Media registry</entry> + <entry>Registre de médias</entry> - <entry>Global <computeroutput>VirtualBox.xml</computeroutput> - file</entry> + <entry>Fichier <computeroutput>VirtualBox.xml</computeroutput> + global</entry> - <entry>Each machine settings file</entry> + <entry>Chaque fichier des paramètres d'une machine</entry> </row> <row> - <entry>Media registration</entry> + <entry>Enregistrement des médias</entry> - <entry>Explicit open/close required</entry> + <entry>Ouverture/fermeture explicite obligatoire</entry> - <entry>Automatic on attach</entry> + <entry>Automatique après la connexion</entry> </row> </tbody> </tgroup> @@ -249,643 +258,667 @@ </sect2> <sect2> - <title>VirtualBox XML files</title> + <title>Fichiers XML de VirtualBox</title> - <para>VirtualBox uses XML for both the machine settings files and the - global configuration file, + <para>VirtualBox utilise l'XML tant pour les fichiers des paramètres + de la machine que pour le fichier de configuration global, <computeroutput>VirtualBox.xml</computeroutput>.</para> - <para>All VirtualBox XML files are versioned. When a new settings file - is created (e.g. because a new virtual machine is created), VirtualBox - automatically uses the settings format of the current VirtualBox - version. These files may not be readable if you downgrade to an earlier - version of VirtualBox. However, when VirtualBox encounters a settings - file from an earlier version (e.g. after upgrading VirtualBox), it - attempts to preserve the settings format as much as possible. It will - only silently upgrade the settings format if the current settings cannot - be expressed in the old format, for example because you enabled a - feature that was not present in an earlier version of - VirtualBox.<footnote> - <para>As an example, before VirtualBox 3.1, it was only possible to - enable or disable a single DVD drive in a virtual machine. If it was - enabled, then it would always be visible as the secondary master of - the IDE controller. With VirtualBox 3.1, DVD drives can be attached - to arbitrary slots of arbitrary controllers, so they could be the - secondary slave of an IDE controller or in a SATA slot. If you have - a machine settings file from an earlier version and upgrade - VirtualBox to 3.1 and then move the DVD drive from its default - position, this cannot be expressed in the old settings format; the - XML machine file would get written in the new format, and a backup - file of the old format would be kept.</para> - </footnote> In such cases, VirtualBox backs up the old settings file - in the virtual machine's configuration directory. If you need to go back - to the earlier version of VirtualBox, then you will need to manually - copy these backup files back.</para> - - <para>We intentionally do not document the specifications of the - VirtualBox XML files, as we must reserve the right to modify them in the - future. We therefore strongly suggest that you do not edit these files - manually. VirtualBox provides complete access to its configuration data - through its the <computeroutput>VBoxManage</computeroutput> command line - tool (see <xref linkend="vboxmanage" />) and its API (see <xref + <para>Tous les fichiers XML de VirtualBox sont versionnés. Quand un nouveau + fichier de paramètres est créé (par exemple parce qu'on crée une nouvelle + machine virtuelle), VirtualBox utilise automatiquement le format des + paramètres de la version actuelle de VirtualBox. Il se peut que ces + fichiers ne soient pas lus si vous rétrogradez à une version plus + ancienne de VirtualBox. Cependant, quand VirtualBox rencontre un fichier + de paramètres d'une ancienne version (comme après une mise à jour de + VirtualBox), il essaie autant que possible de garder le format des + paramètres. Il ne mettra à jour en silence les fichiers des paramètres + que si les paramètres actuels ne peuvent pas être exprimés dans l'ancien + format, par exemple parce que vous avez activé une fonction qui n'était + pas présente dans l'ancienne version de VirtualBox.<footnote> + <para>Par exemple, avant VirtualBox 3.1, il n'était possible que d'activer + ou de désactiver un seul lecteur DVD dans une machine virtuelle. + S'il a été activé, cela serait toujours possible sur le deuxième + maître du contrôleur IDE. Avec VirtualBox 3.1, on peut connecter + des lecteurs DVD à un slot de son choix sur un contrôleur de son choix, + donc ils pourraient être sur le deuxième esclave d'un contrôleur IDE + ou sur un slot SATA. Si vous avez un fichier de paramètres d'une + machine d'une ancienne version et si vous mettez à jour + VirtualBox vers la 3.1 et si vous déplacez le lecteur DVD de sa + position par défaut, on ne peut pas l'exprimer dans l'ancien format + des paramètres ; le fichier XML de la machine serait écrit dans + le nouveau format et une copie de sauvegarde de l'ancien format serait + gardée.</para> + </footnote> Dans ces cas-là, VirtualBox sauvegarde le fichier des anciens + paramètres dans le répertoire de configuration de la machine virtuelle. + Si vous avez besoin de revenir à une ancienne version de VirtualBox, + vous devrez recopier à la main ces fichiers de sauvegarde.</para> + + <para>Nous ne documentons volontairement pas les spécifications des fichiers + XML de VirtualBox car nous nous réservons le droit de les modifier à l'avenir. + Nous vous suggérons donc fortement de ne pas éditer ces fichiers à la main. + VirtualBox offre un accès complet à ses données de configuration par son + outil en ligne de commande <computeroutput>VBoxManage</computeroutput> + (voir le <xref linkend="vboxmanage" />) et son API (voir le <xref linkend="VirtualBoxAPI" />).</para> </sect2> </sect1> <sect1 id="technical-components"> - <title>VirtualBox executables and components</title> + <title>Exécutables et composants de VirtualBox</title> - <para>VirtualBox was designed to be modular and flexible. When the - VirtualBox graphical user interface (GUI) is opened and a VM is started, - at least three processes are running:<orderedlist> + <para>VirtualBox a été conçu pour être modulaire et flexible. Quand on ouvre + l'interface graphique (GUI) de VirtualBox et qu'on démarre une VM, + au moins trois processus fonctionnent :<orderedlist> <listitem> - <para><computeroutput>VBoxSVC</computeroutput>, the VirtualBox - service process which always runs in the background. This process is - started automatically by the first VirtualBox client process (the - GUI, <computeroutput>VBoxManage</computeroutput>, - <computeroutput>VBoxHeadless</computeroutput>, the web service or - others) and exits a short time after the last client exits. The - service is responsible for bookkeeping, maintaining the state of all - VMs, and for providing communication between VirtualBox components. - This communication is implemented via COM/XPCOM.<note> - <para>When we refer to "clients" here, we mean the local clients - of a particular <computeroutput>VBoxSVC</computeroutput> server - process, not clients in a network. VirtualBox employs its own - client/server design to allow its processes to cooperate, but - all these processes run under the same user account on the host - operating system, and this is totally transparent to the - user.</para> + <para><computeroutput>VBoxSVC</computeroutput>, le processus du service + de VirtualBox qui fonctionne toujours en tâche de fond. Ce processus + est lancé automatiquement par le processus du premier client + VirtualBox (la GUI, <computeroutput>VBoxManage</computeroutput>, + <computeroutput>VBoxHeadless</computeroutput>, le service web ou + autres) et il s'arrête peu de temps après que le dernier client a + quitté. Le service est responsable d'archiver, maintenir l'état de + toutes les VMS et de la communication entre les composants de VirtualBox. + Cette communication est implémentée via COM/XPCOM.<note> + <para>Quand nous parlons de "clients" ici, nous voulons dire + les clients locaux d'un processus serveur + <computeroutput>VBoxSVC</computeroutput> en particulier, pas les + clients sur un réseau. VirtualBox utilise son propre concept + client/serveur pour permettre à ses processus de coopérer, mais + tous ces processus tournent sous le même compte utilisateur du + système d'exploitation hôte, et c'est entièrement transparent + pour l'utilisateur.</para> </note></para> </listitem> <listitem> - <para>The GUI process, <computeroutput>VirtualBox</computeroutput>, - a client application based on the cross-platform Qt library. When - started without the <computeroutput>--startvm</computeroutput> - option, this application acts as the VirtualBox manager, displaying - the VMs and their settings. It then communicates settings and state - changes to <computeroutput>VBoxSVC</computeroutput> and also - reflects changes effected through other means, e.g., + <para>Le processus de la GUI,, <computeroutput>VirtualBox</computeroutput>, + une application client basée sur la bibliothèque multiplateformes + Qt. Lancée sans l'option <computeroutput>--startvm</computeroutput>, + cette application agit comme un gestionnaire de VirtualBox, en + affichant les VMs et leurs paramètres. Elle communique alors les + paramètres et les changements d'état à <computeroutput>VBoxSVC</computeroutput> + et elle répercute les changements subis par d'autres moyens comme <computeroutput>VBoxManage</computeroutput>.</para> </listitem> <listitem> - <para>If the <computeroutput>VirtualBox</computeroutput> client - application is started with the - <computeroutput>--startvm</computeroutput> argument, it loads the - VMM library which includes the actual hypervisor and then runs a - virtual machine and provides the input and output for the - guest.</para> + <para>Si on lance l'application client <computeroutput>VirtualBox</computeroutput> + avec l'argument <computeroutput>--startvm</computeroutput>, elle + charge la bibliothèque VMM qui inclut l'hyperviseur proprement dit + et qui lance une machine virtuelle et offre une entrée et une sortie + à l'invité.</para> </listitem> </orderedlist></para> - <para>Any VirtualBox front-end (client) will communicate with the service - process and can both control and reflect the current state. For example, - either the VM selector or the VM window or VBoxManage can be used to pause - the running VM, and other components will always reflect the changed - state.</para> + <para>Toutes les interfaces de VirtualBox (client) communiqueront avec le + processus du service et elles peuvent contrôler et répercuter l'état actuel. + Par exemple, tant le selecteur de VM que la fenêtre de VM ou VBoxManage peuvent + être utilisés pour mettre en pause la VM en fonction, les autres composants + reflèteront toujours le changement d'état.</para> - <para>The VirtualBox GUI application is only one of several available - front ends (clients). The complete list shipped with VirtualBox - is:<orderedlist> + <para>La GUI de VirtualBox n'est qu'une des nombreuses interfaces (client) + disponibles. La liste complète comprise dans VirtualBox est :<orderedlist> <listitem> - <para><computeroutput>VirtualBox</computeroutput>, the Qt front end - implementing the manager and running VMs;</para> + <para><computeroutput>VirtualBox</computeroutput>, l'interface Qt + implémentant le gestionnaire et les VMS en fonction ;</para> </listitem> <listitem> - <para><computeroutput>VBoxManage</computeroutput>, a less - user-friendly but more powerful alternative, described in <xref + <para><computeroutput>VBoxManage</computeroutput>, une alternative + moins conviviale mais plus puissante, décrite au <xref linkend="vboxmanage" />.</para> </listitem> <listitem> - <para><computeroutput>VBoxSDL</computeroutput>, a simple graphical - front end based on the SDL library; see <xref + <para><computeroutput>VBoxSDL</computeroutput>, une interface graphique + simple basée sur la bibliothèque SDL ; voir <xref linkend="vboxsdl" />.</para> </listitem> <listitem> - <para><computeroutput>VBoxHeadless</computeroutput>, a VM front end - which does not directly provide any video output and keyboard/mouse - input, but allows redirection via VirtualBox Remote Desktop Extension; - see <xref linkend="vboxheadless" />.</para> + <para><computeroutput>VBoxHeadless</computeroutput>, une interface de + VM qui ne fournit pas directement de sortie graphiqke et d'entrée + clavier/souris, + mais qui permet une redirection par VirtualBox Remote Desktop Extension; + voir <xref linkend="vboxheadless" />.</para> </listitem> <listitem> - <para><computeroutput>vboxwebsrv</computeroutput>, the VirtualBox - web service process which allows for controlling a VirtualBox host - remotely. This is described in detail in the VirtualBox Software - Development Kit (SDK) reference; please see <xref - linkend="VirtualBoxAPI" /> for details.</para> + <para><computeroutput>vboxwebsrv</computeroutput>, le processus du + service web de VirtualBox qui permet de contrôler un hôte VirtualBox à + distance. Ceci est décrit en détails dans le manuel de référence + du VirtualBox Software Development Kit (SDK) ; merci de voir le + <xref linkend="VirtualBoxAPI" /> pour des détails.</para> </listitem> <listitem> - <para>The VirtualBox Python shell, a Python alternative to - VBoxManage. This is also described in the SDK reference.</para> + <para>Le shell Python de VirtualBox, une alternative en Python à + VBoxManage. Elle est aussi décrite dans le manuel de référence du SDK.</para> </listitem> </orderedlist></para> - <para>Internally, VirtualBox consists of many more or less separate - components. You may encounter these when analyzing VirtualBox internal - error messages or log files. These include:</para> + <para>En interne, VirtualBox consiste beaucoup plus d'interfaces + séparées. Vous pourriez les rencontrer en analysant les messages d'erreur + internes ou les fichiers journaux. Parmi elles, on compte :</para> <itemizedlist> <listitem> - <para>IPRT, a portable runtime library which abstracts file access, - threading, string manipulation, etc. Whenever VirtualBox accesses host - operating features, it does so through this library for cross-platform - portability.</para> + <para>IPRT, une bibliothèque d'exécution portable qui forme une couche + d'abstraction d'accès aux fichiers, du filage (threading), la manipulation + de chaînes, etc. Chaque fois que VirtualBox accède aux fonctions du + système hôte, il le fait via cette bibliothèque pour une portabilité + multiplateformes.</para> </listitem> <listitem> - <para>VMM (Virtual Machine Monitor), the heart of the - hypervisor.</para> + <para>VMM (Virtual Machine Monitor), le cœur de l'hyperviseur.</para> </listitem> <listitem> - <para>EM (Execution Manager), controls execution of guest code.</para> + <para>EM (Execution Manager), contrôle l'exécution d'un code invité.</para> </listitem> <listitem> - <para>REM (Recompiled Execution Monitor), provides software emulation - of CPU instructions.</para> + <para>REM (Recompiled Execution Monitor), fournit une émulation logicielle + des instructions du processeur.</para> </listitem> <listitem> - <para>TRPM (Trap Manager), intercepts and processes guest traps and - exceptions.</para> + <para>TRPM (Trap Manager), intercepte et traite les traps et les + exceptions de l'invité.</para> </listitem> <listitem> - <para>HWACCM (Hardware Acceleration Manager), provides support for - VT-x and AMD-V.</para> + <para>HWACCM (Hardware Acceleration Manager), offre un support pour + VT-x et AMD-V.</para> </listitem> <listitem> - <para>PDM (Pluggable Device Manager), an abstract interface between - the VMM and emulated devices which separates device implementations - from VMM internals and makes it easy to add new emulated devices. - Through PDM, third-party developers can add new virtual devices to - VirtualBox without having to change VirtualBox itself.</para> + <para>PDM (Pluggable Device Manager), une interface abstraite entre le + VMM et les périphériques émulés qui sépare lese implémentations du + périphérique de l'intérieur du VMM et qui facilite l'ajout de nouveaux + périphériques émulés. Par PDM, des développeurs tiers peuvent ajouter + de nouveaux périphériques virtuels à VirtualBox, sans devoir modifier + VirtualBox lui-même.</para> </listitem> <listitem> - <para>PGM (Page Manager), a component controlling guest paging.</para> + <para>PGM (Page Manager), un composant contrôlant la pagination de + l'invité.</para> </listitem> <listitem> - <para>PATM (Patch Manager), patches guest code to improve and speed up - software virtualization.</para> + <para>PATM (Patch Manager), corrige le code de l'invité pour améliorer + et accélérer la virtualisation logicielle.</para> </listitem> <listitem> - <para>TM (Time Manager), handles timers and all aspects of time inside - guests.</para> + <para>TM (Time Manager), gère les horloges et tous les aspects de l'heure + des invités.</para> </listitem> <listitem> - <para>CFGM (Configuration Manager), provides a tree structure which - holds configuration settings for the VM and all emulated - devices.</para> + <para>CFGM (Configuration Manager), fournit une structure arborescente + qui garde les paramètres de configuration de la VM et tous les périphériques + émulés.</para> </listitem> <listitem> - <para>SSM (Saved State Manager), saves and loads VM state.</para> + <para>SSM (Saved State Manager), enregistre et charge l'état d'une VM.</para> </listitem> <listitem> - <para>VUSB (Virtual USB), a USB layer which separates emulated USB - controllers from the controllers on the host and from USB devices; - this also enables remote USB.</para> + <para>VUSB (Virtual USB), une couche USB qui sépare les contrôleurs USB + émulés des contrôleurs de l'hôte et des périphériques USB ; ceci + active également l'USB distant.</para> </listitem> <listitem> - <para>DBGF (Debug Facility), a built-in VM debuger.</para> + <para>DBGF (Debug Facility), un débogueur de VM intégré.</para> </listitem> <listitem> - <para>VirtualBox emulates a number of devices to provide the hardware - environment that various guests need. Most of these are standard - devices found in many PC compatible machines and widely supported by - guest operating systems. For network and storage devices in - particular, there are several options for the emulated devices to - access the underlying hardware. These devices are managed by + <para>VirtualBox émule un certain nombre de périphériques pour offrir + l'environnement matériel dont ont besoin divers invités. La plupart de + ces périphériques standards se trouvent dans beaucoup de machines + compatibles PC et sont largement supportés par les systèmes d'exploitation + invités. Pour les périphériques réseaux et de stockage en particulier, + il existe plusieurs options pour que les périphériques émulés accèdent + au matériel sous-jacent. Ces périphériques sont gérés par PDM.</para> </listitem> <listitem> - <para>Guest Additions for various guest operating systems. This is - code that is installed from within a virtual machine; see <xref + <para>Les suppléments invité pour divers systèmes d'exploitation invités. + Il s'agit de code installé dans les machines virtuelles ; voir <xref linkend="guestadditions" />.</para> </listitem> <listitem> - <para>The "Main" component is special: it ties all the above bits - together and is the only public API that VirtualBox provides. All the - client processes listed above use only this API and never access the - hypervisor components directly. As a result, third-party applications - that use the VirtualBox Main API can rely on the fact that it is - always well-tested and that all capabilities of VirtualBox are fully - exposed. It is this API that is described in the VirtualBox SDK - mentioned above (again, see <xref linkend="VirtualBoxAPI" />).</para> + <para>Le composant "Main" est spécial : il croise tous les bits + ci-dessus et c'est la seule API publique fournie par VirtualBox. Tous + les processus clients listés ci-dessus n'utilisent que cettte API et + n'accèdent jamais directement aux composants de l'hyperviseur. Il s'en + suit que des applications tierces utilisant l'API principale de VirtualBox + peuvent s'appuyer sur le fait qu'elle est toujours bien testée et que + toutes les possibilités de VirtualBox sont complètement présentées. C'est + cette API qui est décrite dans le manuel de référence du SDK de + VirtualBox indiqué ci-dessus (de nouveau, voir le <xref linkend="VirtualBoxAPI" />).</para> </listitem> </itemizedlist> </sect1> <sect1 id="hwvirt"> - <title>Hardware vs. software virtualization</title> - - <para>VirtualBox allows software in the virtual machine to run directly on - the processor of the host, but an array of complex techniques is employed - to intercept operations that would interfere with your host. Whenever the - guest attempts to do something that could be harmful to your computer and - its data, VirtualBox steps in and takes action. In particular, for lots of - hardware that the guest believes to be accessing, VirtualBox simulates a - certain "virtual" environment according to how you have configured a - virtual machine. For example, when the guest attempts to access a hard - disk, VirtualBox redirects these requests to whatever you have configured - to be the virtual machine's virtual hard disk -- normally, an image file - on your host.</para> - - <para>Unfortunately, the x86 platform was never designed to be - virtualized. Detecting situations in which VirtualBox needs to take - control over the guest code that is executing, as described above, is - difficult. There are two ways in which to achive this:<itemizedlist> + <title>Virtualisation matérielle vs. logicielle</title> + + <para>VirtualBox permet aux logiciels de la machine virtuelle de s'exécuter + directement sur le processeur de l'hôte, mais il utilise une gamme de + techniques complexes pour intercepter les opérations interférant avec votre + hôte. Chaque fois que l'invité essaie de faire quelque chose de potentiellement + dangereux pour votre ordinateur et ses données, VirtualBox s'interpose et + rentre en action. En particulier, pour beaucoup de matériel auquel croit + avoir accès l'invité, VirtualBox simule un certain environnement "virtuel" + selon la façon dont vous avez configuré une machine virtuelle. Par exemple, + quand l'invité cherche à accéder à un disque dur, VirtualBox redirige ces + requêtes vers ce que vous avez configuré comme étant le disque dur virtuel + de la machine virtuelle -- en principe, un fichier image sur votre hôte.</para> + + <para>Malheureusement, la plateforme x86 n'a jamais été conçue pour pour + être virtualisée. La détection des + situations où VirtualBox doit contrôler le code invité qui s'exécute, comme + décrit ci-dessus, est difficile. Il existe deux façons de faire cela :<itemizedlist> <listitem> - <para>Since 2006, Intel and AMD processors have had support for - so-called <emphasis role="bold">"hardware - virtualization"</emphasis>. This means that these processors can - help VirtualBox to intercept potentially dangerous operations that a - guest operating system may be attempting and also makes it easier to - present virtual hardware to a virtual machine.</para> - - <para>These hardware features differ between Intel and AMD - processors. Intel named its technology <emphasis - role="bold">VT-x</emphasis>; AMD calls theirs <emphasis - role="bold">AMD-V</emphasis>. The Intel and AMD support for - virtualization is very different in detail, but not very different - in principle.<note> - <para>On many systems, the hardware virtualization features - first need to be enabled in the BIOS before VirtualBox can use - them.</para> + <para>Depuis 2006, les processeurs Intel et AMD supportent ce qu'on + appelle la <emphasis role="bold">"virtualisation matérielle"</emphasis>. + Cela signifie que ces processeurs peuvent aider VirtualBox à intercepter + des opérations potentiellement dangereuses que pourrait essayer de + faire le système d'exploitation invité et ils facilitent la présentation + de matériel virtuel à une machine virtuelle.</para> + + <para>Ces fonctionnalités du matériel diffèrent entre les processeurs + Intel et AMD. Intel a appelé sa techno <emphasis + role="bold">VT-x</emphasis> ;; AMD a nommé la leur <emphasis + role="bold">AMD-V</emphasis>. Le support d'Intel et d'AMD de la + virtualisation est très différent dans le détail, mais pas si différent + dans le principe.<note> + <para>Sur de nombreux szstèmes, les fonctions de virtualisation + matérielle doivent être préalablement activées dans le BIOS avant + de pouvoir être utilisées par VirtualBox.</para> </note></para> </listitem> <listitem> - <para>As opposed to other virtualization software, for many usage - scenarios, VirtualBox does not <emphasis>require</emphasis> hardware - virtualization features to be present. Through sophisticated - techniques, VirtualBox virtualizes many guest operating systems - entirely in <emphasis role="bold">software</emphasis>. This means - that you can run virtual machines even on older processors which do - not support hardware virtualization.</para> + <para>Contrairement aux autres logiciels de virtualisation, pour + de nombreux scénari d'utilisation, VirtualBox <emphasis>n'exige pas</emphasis> + que les fonctions de virtualisation matérielle soient présentes. + Par des techniques sophistiquées, VirtualBox virtualise beaucoup + de systèmes d'exploitation invités complets de manière + <emphasis role="bold">logicielle</emphasis>. Cela signifie que vous + pouvez lancer des machines virtuelles même sur d'anciens processeurs + qui ne supportent pas la virtualisation matérielle.</para> </listitem> </itemizedlist></para> - <para>Even though VirtualBox does not always require hardware - virtualization, enabling it is <emphasis>required</emphasis> in the - following scenarios:<itemizedlist> + <para>Même si VirtualBox n'exige pas toujours la virtualisation matérielle, + son activation est <emphasis>nécessaire</emphasis> dans les scénari suivants :<itemizedlist> <listitem> - <para>Certain rare guest operating systems like OS/2 make use of - very esoteric processor instructions that are not supported with our - software virtualization. For virtual machines that are configured to - contain such an operating system, hardware virtualization is enabled - automatically.</para> + <para>Certains systèmes d'exploitation, rares, comme OS/2, utilisent + des instructions processeur très ésotériques qui ne sont pas supportées + par notre virtualisation logicielle. Pour les machines virtuelles + configurées pour contenir un tel système d'exploitation, la + virtualisation matérielle est activée automatiquement.</para> </listitem> <listitem> - <para>VirtualBox's 64-bit guest support (added with version 2.0) and - multiprocessing (SMP, added with version 3.0) both require hardware - virtualization to be enabled. (This is not much of a limitation - since the vast majority of today's 64-bit and multicore CPUs ship - with hardware virtualization anyway; the exceptions to this rule are - e.g. older Intel Celeron and AMD Opteron CPUs.)</para> + <para>Le support des invités 64 bits de VirtualBox (ajouté avec la + version 2.0) et le multiprocessing (SMP, ajouté avec la version 3.0) + exigent tous deux l'activation de la virtualisation matérielle (ce n'est + tout de même pas une grosse limite vu l'immense majorité des processeurs + 64 bits et multi cœurs actuels incluant lavirtualisation matérielle ; + les exceptions à cette règle étant par exemple les anciens processeurs + Intel Celeron et AMD Opteron.)</para> </listitem> </itemizedlist></para> <warning> - <para>Do not run other hypervisors (open-source or commercial - virtualization products) together with VirtualBox! While several - hypervisors can normally be <emphasis>installed</emphasis> in parallel, - do not attempt to <emphasis>run</emphasis> several virtual machines from - competing hypervisors at the same time. VirtualBox cannot track what - another hypervisor is currently attempting to do on the same host, and - especially if several products attempt to use hardware virtualization - features such as VT-x, this can crash the entire host. Also, within - VirtualBox, you can mix software and hardware virtualization when - running multiple VMs. In certain cases a small performance penalty will - be unavoidable when mixing VT-x and software virtualization VMs. We - recommend not mixing virtualization modes if maximum performance and low - overhead are essential. This does <emphasis>not</emphasis> apply to - AMD-V.</para> + <para>Ne lancez pas d'autres hyperviseurs (produits de virtualisation + open-source ou propriétaires) en même temps que VirtualBox ! Si + plusieurs hyperviseurs peuvent, en principe, être <emphasis>installés</emphasis> + en parallèle, n'essayez pas de <emphasis>lancer</emphasis> plusieurs + machines virtuelles à partir d'hyperviseurs concurrents en même temps. + VirtualBox ne peut pas savoir ce qu'un autre hyperviseur essaie de faire + sur un même hôte, et surtout si plusieurs produits essaient d'utiliser la + virtualisation matérielle, les fonctions telles que VT-x, cela peut planter + tout l'hôte. De plus, dans VirtualBox, vous pouvez mélanger la virtualisation + logicielle et matérielle quand vous lancez plusieurs VMs. Dans certains cas, + une petite perte de performances sera inévitable si vous mélangez des + VMs avec virtualisation VT-x et logicielle. Nous recommandons de ne pas + mélanger les modes de virtualisation si la performance maximum et + une faible overhead sont essentiels. Cela <emphasis>ne s'applique pas</emphasis> + à AMD-V.</para> </warning> </sect1> <sect1> - <title>Details about software virtualization</title> - - <para>Implementing virtualization on x86 CPUs with no hardware - virtualization support is an extraordinarily complex task because the CPU - architecture was not designed to be virtualized. The problems can usually - be solved, but at the cost of reduced performance. Thus, there is a - constant clash between virtualization performance and accuracy.</para> - - <para>The x86 instruction set was originally designed in the 1970s and - underwent significant changes with the addition of protected mode in the - 1980s with the 286 CPU architecture and then again with the Intel 386 and - its 32-bit architecture. Whereas the 386 did have limited virtualization - support for real mode operation (V86 mode, as used by the "DOS Box" of - Windows 3.x and OS/2 2.x), no support was provided for virtualizing the - entire architecture.</para> - - <para>In theory, software virtualization is not overly complex. In - addition to the four privilege levels ("rings") provided by the hardware - (of which typically only two are used: ring 0 for kernel mode and ring 3 - for user mode), one needs to differentiate between "host context" and - "guest context".</para> - - <para>In "host context", everything is as if no hypervisor was active. - This might be the active mode if another application on your host has been - scheduled CPU time; in that case, there is a host ring 3 mode and a host - ring 0 mode. The hypervisor is not involved.</para> - - <para>In "guest context", however, a virtual machine is active. So long as - the guest code is running in ring 3, this is not much of a problem since a - hypervisor can set up the page tables properly and run that code natively - on the processor. The problems mostly lie in how to intercept what the - guest's kernel does.</para> - - <para>There are several possible solutions to these problems. One approach - is full software emulation, usually involving recompilation. That is, all - code to be run by the guest is analyzed, transformed into a form which - will not allow the guest to either modify or see the true state of the - CPU, and only then executed. This process is obviously highly complex and - costly in terms of performance. (VirtualBox contains a recompiler based on - QEMU which can be used for pure software emulation, but the recompiler is - only activated in special situations, described below.)</para> - - <para>Another possible solution is paravirtualization, in which only - specially modified guest OSes are allowed to run. This way, most of the - hardware access is abstracted and any functions which would normally - access the hardware or privileged CPU state are passed on to the - hypervisor instead. Paravirtualization can achieve good functionality and - performance on standard x86 CPUs, but it can only work if the guest OS can - actually be modified, which is obviously not always the case.</para> - - <para>VirtualBox chooses a different approach. When starting a virtual - machine, through its ring-0 support kernel driver, VirtualBox has set up - the host system so that it can run most of the guest code natively, but it - has inserted itself at the "bottom" of the picture. It can then assume - control when needed -- if a privileged instruction is executed, the guest - traps (in particular because an I/O register was accessed and a device - needs to be virtualized) or external interrupts occur. VirtualBox may then - handle this and either route a request to a virtual device or possibly - delegate handling such things to the guest or host OS. In guest context, - VirtualBox can therefore be in one of three states:</para> + <title>Détails sur la virtualisation logicielle</title> + + <para>L'implémentation de la virtualisation sur les processeurs x86 sans + le support de la virtualisation matérielle est une tâche extraordinairement + complexe car l'architecture du processeur n'a pas été conçue pour être + virtualisée. On peut résoudre en général les problèmes, mais au prix de + performances réduites. Ainsi, il existe un conflit constant entre les + performances de virtualisation et et son soin.</para> + + <para>Le jeu d'instructions x86 a été conçu au départ dans les années 1970 et + subi des modifications significatives avec l'ajout d'un mode protégé dans + les années 1980s avec l'architecture du processeur 286, puis à nouveau avec + l'Intel 386 et l'architecture 32 bits. Alors que le 386 avait un + support de virtualisation vraiment limité pour les opérations en mode réel, + (le mode V86, utilisé par la "DOS Box" de Windows 3.x et d'OS/2 2.x), aucun + pport n'existait pour virtualiser toute l'architecture.</para> + + <para>En théorie, la virtualisation logicielle n'est pas complexe en soi. + Outre les quatre niveaux de privilèges ("rings") fournis par le matériel + (dont en général on n'utilise que deux : ring 0 pour le mode noyau et ring 3 + pour le mode utilisateur), il faut faire la différence entre le "contexte + hôte" et le "contexte invité".</para> + + <para>Dans le "contexte hôte", tout est comme s'il n'y avait pas d'hyperviseur + actif. Cela pourrait être le mode actif si une autre application de votre + hôte consomme du temps processeur ; dans ce cas, il existe un mode + ring 3 hôte et un mode ring 0 hôte. L'hyperviseur n'est pas impliqué.</para> + + <para>Par contre, dans le "contexte invité", une machine virtuelle est active. + Tant que le code invité s'exécute en ring 3, ce n'est pas très problématique + vu qu'un hyperviseur peut paramétrer les tableaux des pages correctement et + exécuter ce code de manière native sur le processeur. Les problèmes arrivent + sur la manière d'intercepter ce que fait le noyau de l'invité.</para> + + <para>Il y a plusieurs solutions possibles à ces problèmes. Une approche + est l'émulation logicielle totale, ce qui implique généralement une recompilation. + A savoir que tout le code qui doit être exécuté par l'invité est analysé, + transformé sous une forme qui n'autorisera pas l'invité à modifier et à + voir l'état réel du processeur, lequel l'exécutera simplement. Ce processus + est bien sûr très complexe et coûteux en termes de performances. (VirtualBox + contient un recompilateur basé sur QEMU qu'on peut utiliser pour une + émulation logicielle pure, mais le recompilateur n'est activé que dans + des situations particulières, décrites ci-dessous.)</para> + + <para>Une autre solution possible est la paravirtualisation, où seuls les + OS invités spécialement modifiés sont autorisés à s'exécuter. De cette manière, + la plupart des accès matériels sont rendus abstraits et toutes les fonctions + qui accèderaient normalement au matériel ou à l'état privilégié du processeur + se basent plutôt sur l'hyperviseur. La paravirtualisation peut donner + de bonnes fonctionnalités et de bonnes performances sur des processeurs + x86 standards, mais cela ne peut marcher que si l'OS invité peut être + modifié, ce qui n'est évidemment pas toujours le cas.</para> + + <para>VirtualBox choisit une approche différente. Quand uo démarre une + machine virtuelle par son pilote noyau du support ring-0, VirtualBox a + réglé le système hôte pour qu'il puisse lancer nativement la plupart du + code invité, mais il s'insère lui-même "en bas" de l'image. Il peut alors + supposer le contrôle lorsque c'est nécessaire -- si une instruction privilégiée + est exécutée, l'invité plante (traps) (en particulier car un accès au registre + E/S a été tenté et un périphérique doit être virtualisé) ou car des interruptions se produisent. VirtualBox peut + alors gérer cela et soit acheminer une requête vers un périphérique virtuel, + soit, si possible, déléguer la gestion de tels éléments à l'OS hôte ou + invité. Dans le contexte invité, VirtualBox peut être donc dans un des trois + états :</para> <para><itemizedlist> <listitem> - <para>Guest ring 3 code is run unmodified, at full speed, as much as - possible. The number of faults will generally be low (unless the - guest allows port I/O from ring 3, something we cannot do as we - don't want the guest to be able to access real ports). This is also - referred to as "raw mode", as the guest ring-3 code runs - unmodified.</para> + <para>Le code invité ring 3 s'exécute sans modifications, à pleine + vitesse, autant que possible. Le nombre de fautes sera généralement + faible (sauf si l'invité autorise l'E/S du port depuis ring 3, + chose que nous ne pouvons pas faire car nous ne voulons pas que + l'invité puisse accéder aux ports réels). On parle aussi de "mode brut", + car le code ring-3 de l'invité s'exécute sans modifications.</para> </listitem> <listitem> - <para>For guest code in ring 0, VirtualBox employs a nasty trick: it - actually reconfigures the guest so that its ring-0 code is run in - ring 1 instead (which is normally not used in x86 operating - systems). As a result, when guest ring-0 code (actually running in - ring 1) such as a guest device driver attempts to write to an I/O - register or execute a privileged instruction, the VirtualBox - hypervisor in "real" ring 0 can take over.</para> + <para>Mour le code invité en ring 0, VirtualBox utilise une astuce + savoureuse : il reconfigure l'invité pour que son code ring-0 + se lance plutôt en ring 1 (ce qui n'est en principe pas utilisé sur les + systèmes d'exploitation x86). Il s'en suit que lorsque le code ring-0 + de l'invité (qui s'exécute en fait en ring 1) tel que le pilote d'un + périphérique invité, essaie d'écrire sur un registre E/S ou d'exécuter + une instruction non privilégiée, l'hyperviseur de VirtualBox en ring + 0 "réel" peut prendre le dessus.</para> </listitem> <listitem> - <para>The hypervisor (VMM) can be active. Every time a fault occurs, - VirtualBox looks at the offending instruction and can relegate it to - a virtual device or the host OS or the guest OS or run it in the - recompiler.</para> - - <para>In particular, the recompiler is used when guest code disables - interrupts and VirtualBox cannot figure out when they will be - switched back on (in these situations, VirtualBox actually analyzes - the guest code using its own disassembler). Also, certain privileged - instructions such as LIDT need to be handled specially. Finally, any - real-mode or protected-mode code (e.g. BIOS code, a DOS guest, or - any operating system startup) is run in the recompiler - entirely.</para> + <para>L'hyperviseur (VMM) peut être actif. Chaque fois qu'une erreur + survient, VirtualBox regarde l'instruction problématique et il peut + la reléguer à un périphérique virtuel, à l'OS hôte, à l'invité ou + il peut le lancer dans le recompilateur.</para> + + <para>En particulier, on utilise le recompilateur quand le code invité + désactive les interruptions et VirtualBox ne peut pas savoir quand + on y reviendra (dans ces situations, VirtualBox analyse en fait le + code invité en utilisant son propre désassembleur). De plus, certaines + instructions privilégiées telles que LIDT doivent être gérées à part. + Enfin, tout le code en mode réel ou protégé (comme le code du BIOS, + un invité DOS ou un démarrage de système d'exploitation) se lance + complètement dans un recompilateur.</para> </listitem> </itemizedlist></para> - <para>Unfortunately this only works to a degree. Among others, the - following situations require special handling:</para> + <para>Malheureusement, cela ne fonctionne que dans une certaine mesure. + Entre autres, les situations suivantes nécessitent une gestion spéciale :</para> <para><orderedlist> <listitem> - <para>Running ring 0 code in ring 1 causes a lot of additional - instruction faults, as ring 1 is not allowed to execute any - privileged instructions (of which guest's ring-0 contains plenty). - With each of these faults, the VMM must step in and emulate the code - to achieve the desired behavior. While this works, emulating - thousands of these faults is very expensive and severely hurts the - performance of the virtualized guest.</para> + <para>L'exécution de code ring 0 en ring 1 provoque beaucoup d'erreurs + d'instructions supplémentaires car ring 1 n'est pas autorisé à exécuter + des instructions privilégiées (dont le ring-0 de l'invité en contient + beaucoup). Avec chacune de ces erreurs, le VMM doit s'arrêter et + émuler le code pour obtenir le comportement désiré. Si cela fonctionne, + l'émulation de milliers d'erreurs est très coûteuse et très pénalisante + en performances de l'invité virtualisé.</para> </listitem> <listitem> - <para>There are certain flaws in the implementation of ring 1 in the - x86 architecture that were never fixed. Certain instructions that - <emphasis>should</emphasis> trap in ring 1 don't. This affect for - example the LGDT/SGDT, LIDT/SIDT, or POPF/PUSHF instruction pairs. - Whereas the "load" operation is privileged and can therefore be - trapped, the "store" instruction always succeed. If the guest is - allowed to execute these, it will see the true state of the CPU, not - the virtualized state. The CPUID instruction also has the same - problem.</para> + <para>Il existe des défauts dans l'implémentation de ring 1 de + l'architecture x86 qui n'ont jamais été corrigés. Certaines instructions + qui <emphasis>planteraient</emphasis> même en ring 1 ne le font pas. + Cela concerne par exemple les paires d'instructions LGDT/SGDT, LIDT/SIDT, + ou POPF/PUSHF. Alors que l'opçration "load" est privilégiée et peut + donc planter, l'instruction "store" réussit toujours. Si l'invité est + autorisé à les exécuter, il verra l'état réel du PC et pas celui + virtualisé. L'instruction CPUID a également le même problème.</para> </listitem> <listitem> - <para>A hypervisor typically needs to reserve some portion of the - guest's address space (both linear address space and selectors) for - its own use. This is not entirely transparent to the guest OS and - may cause clashes.</para> + <para>Un hyperviseur a en général besoin de réserver certaines parties + de l'espace d'adresse de l'invité (tant l'espace d'adresse liénaire + que les sélecteurs) pour son propre usage. Ce n'est pas complètement + transparent pour l'OS invité et cela peut provoquer des conflits.</para> </listitem> <listitem> - <para>The SYSENTER instruction (used for system calls) executed by - an application running in a guest OS always transitions to ring 0. - But that is where the hypervisor runs, not the guest OS. In this - case, the hypervisor must trap and emulate the instruction even when - it is not desirable.</para> + <para>L'instruction SYSENTER (utilisée pour les appels système) exécutée + par une application en fonction dans un OS invité transite toujours + par le ring 0. Mais c'est là où l'hyperviseur se lance et pas l'OS + invité. Dans ce cas, l'hyperviseur doit bloquer et émuler l'instruction + même quand ce n'est pas souhaitable.</para> </listitem> <listitem> - <para>The CPU segment registers contain a "hidden" descriptor cache - which is not software-accessible. The hypervisor cannot read, save, - or restore this state, but the guest OS may use it.</para> + <para>Les registres de segments du processeur contiennent un cache + de descripteur "caché" inaccessible de manière logicielle. L'hyperviseur + ne peut pas lire, enregistrer ou restaurer cet état, mais l'OS invité + peut l'utiliser.</para> </listitem> <listitem> - <para>Some resources must (and can) be trapped by the hypervisor, - but the access is so frequent that this creates a significant - performance overhead. An example is the TPR (Task Priority) register - in 32-bit mode. Accesses to this register must be trapped by the - hypervisor, but certain guest operating systems (notably Windows and - Solaris) write this register very often, which adversely affects - virtualization performance.</para> + <para>Certaines ressources doivent (et peuvent) être neutralisées par + l'hyperviseur, mais l'accès est si fréquent que cela crée une perte + significative de performances. Un exemple réside dans le registre + TPR (Task Priority) en mode 32 bits. Les accès à ce registre doivent + être bloqués par l'hyperviseur, mais certains szstèmes d'exploitation + invités (en particulier Windows et Solaris) écrivent très souvent + dans ce registre, ce qui porte une atteinte certaine aux performances + de virtualisation.</para> </listitem> </orderedlist></para> - <para>To fix these performance and security issues, VirtualBox contains a - Code Scanning and Analysis Manager (CSAM), which disassembles guest code, - and the Patch Manager (PATM), which can replace it at runtime.</para> - - <para>Before executing ring 0 code, CSAM scans it recursively to discover - problematic instructions. PATM then performs <emphasis>in-situ - </emphasis>patching, i.e. it replaces the instruction with a jump to - hypervisor memory where an integrated code generator has placed a more - suitable implementation. In reality, this is a very complex task as there - are lots of odd situations to be discovered and handled correctly. So, - with its current complexity, one could argue that PATM is an advanced - <emphasis>in-situ</emphasis> recompiler.</para> - - <para>In addition, every time a fault occurs, VirtualBox analyzes the - offending code to determine if it is possible to patch it in order to - prevent it from causing more faults in the future. This approach works - well in practice and dramatically improves software virtualization - performance.</para> + <para>Pour corriger ces problèmes de performances et de sécurité, VirtualBox + contient un gestionnaire d'analyse et de scan de code + (Code Scanning and Analysis Manager (CSAM)), qui désassemble le code invité, + et un gestionnaire de correctifs (Patch Manager (PATM)), qui peut le remplacer + pendant l'exécution.</para> + + <para>Avant d'exécuter du code ring 0, CSAM le scanne de manière récursive + pour trouver des instructions problématiques. PATM le corrige <emphasis>in-situ + </emphasis>, c'est-à-dire qu'il remplace l'instruction par un passage à la + mémoire de l'hyperviseur, où un générateur intégré a mis une implémentation + plus convenable. En réalité, c'est une tâche très complexe car il existe + de nombreuses situations compliquées à trouver et à gérer correctement. Donc, + vu son actuelle complexité, vous pourriez trouver que PATM est un recompilateur + avancé <emphasis>in-situ</emphasis> recompiler.</para> + + <para>De plus, à chaque fois qu'une erreur survient, VirtualBox analyse + le code problématique pour déterminer s'il est possible de le corriger afin + de l'empêcher de provoquer davantage futures d'erreurs. Cette approche + fonctionne bien en pratique et améliore de façon drastique les performances + de la virtualisation logicielle.</para> </sect1> <sect1> - <title>Details about hardware virtualization</title> + <title>Détails sur la virtualisation matérielle</title> - <para>With Intel VT-x, there are two distinct modes of CPU operation: VMX - root mode and non-root mode.<itemizedlist> + <para>Avec VT-x d'Intel, il existe deux modes opératoires du processeur : + le mode racine VMM et le mode non-racine.<itemizedlist> <listitem> - <para>In root mode, the CPU operates much like older generations of - processors without VT-x support. There are four privilege levels - ("rings"), and the same instruction set is supported, with the - addition of several virtualization specific instruction. Root mode - is what a host operating system without virtualization uses, and it - is also used by a hypervisor when virtualization is active.</para> + <para>En mode racine, le processeur se comporte beaucoup comme les + anciennes générations de processeurs sans le support VT-x. Il y a quatre + niveaux de privilèges ("rings") et le même jeu d'instructions est + supporté avec, en plus, des instructions spécifiques de virtualisation. + Le mode racine est ce que le système d'exploitation hôte utilise sans + virtualisation, et il est aussi utilisé par l'hyperviseur quand la + virtualisation est active.</para> </listitem> <listitem> - <para>In non-root mode, CPU operation is significantly different. - There are still four privilege rings and the same instruction set, - but a new structure called VMCS (Virtual Machine Control Structure) - now controls the CPU operation and determines how certain - instructions behave. Non-root mode is where guest systems - run.</para> + <para>En mode non-racine, le fonctionnement du processeur est très + différent. Il y a toujours quatre niveaux de privilèges et le même + jeu d'instructions, mais une nouvelle structure, qui s'appelle VMCS + (Virtual Machine Control Structure), contrôle désormais le fonctionnement + du processeur et elle détermine la manière dont se comportent certaines + instructions. Le mode non-racine est celui dans lequel les systèmes invités + fonctionnent.</para> </listitem> </itemizedlist></para> - <para>Switching from root mode to non-root mode is called "VM entry", the - switch back is "VM exit". The VMCS includes a guest and host state area - which is saved/restored at VM entry and exit. Most importantly, the VMCS - controls which guest operations will cause VM exits.</para> - - <para>The VMCS provides fairly fine-grained control over what the guests - can and can't do. For example, a hypervisor can allow a guest to write - certain bits in shadowed control registers, but not others. This enables - efficient virtualization in cases where guests can be allowed to write - control bits without disrupting the hypervisor, while preventing them from - altering control bits over which the hypervisor needs to retain full - control. The VMCS also provides control over interrupt delivery and - exceptions.</para> - - <para>Whenever an instruction or event causes a VM exit, the VMCS contains - information about the exit reason, often with accompanying detail. For - example, if a write to the CR0 register causes an exit, the offending - instruction is recorded, along with the fact that a write access to a - control register caused the exit, and information about source and - destination register. Thus the hypervisor can efficiently handle the - condition without needing advanced techniques such as CSAM and PATM - described above.</para> - - <para>VT-x inherently avoids several of the problems which software - virtualization faces. The guest has its own completely separate address - space not shared with the hypervisor, which eliminates potential clashes. - Additionally, guest OS kernel code runs at privilege ring 0 in VMX - non-root mode, obviating the problems by running ring 0 code at less - privileged levels. For example the SYSENTER instruction can transition to - ring 0 without causing problems. Naturally, even at ring 0 in VMX non-root - mode, any I/O access by guest code still causes a VM exit, allowing for - device emulation.</para> - - <para>The biggest difference between VT-x and AMD-V is that AMD-V provides - a more complete virtualization environment. VT-x requires the VMX non-root - code to run with paging enabled, which precludes hardware virtualization - of real-mode code and non-paged protected-mode software. This typically - only includes firmware and OS loaders, but nevertheless complicates VT-x - hypervisor implementation. AMD-V does not have this restriction.</para> - - <para>Of course hardware virtualization is not perfect. Compared to - software virtualization, the overhead of VM exits is relatively high. This - causes problems for devices whose emulation requires high number of traps. - One example is the VGA device in 16-color modes, where not only every I/O - port access but also every access to the framebuffer memory must be - trapped.</para> + <para>Le passage du mode racine au mode non racine s'appelle "l'entré1 VM", + celui en sens invers s'appelle "Quitter VM". Le VMCS inclut une zone d'état + invité et hôte sauvegardée/restaurée à chaque entrée et sortie en VM. + Surtout, les VMMS contrôlent les opérations de l'invité qui feront quitter + la VM.</para> + + <para>Les VMCS permettent un contrôle très fin via ce que les invités + peuvent et ne peuvent pas faire. Par exemple, un hyperviseur peut autoriser + un invité à écrire certains bits dans des registres de contrôle protégés, + mais pas dans d'autres. Cela permet une virtualisation efficace dans des cas + où les invités peuvent être autorisés à écrire des bits de contrôle sans + gêner l'hyperviseur, tout en les empêchant de modifier les bits de contrôle + dont l'hyperviseur a besoin pour avoir un contrôle total. Le VMMS fournit + aussi un contrôle via l'affichage d'interruptions et les exceptions.</para> + + <para>Chaque fois qu'une instruction ou un événement fait quitter une VM, + le VMCS contient des informations sur les raisons de la sortie, ainsi que, + souvent, des détails environnants. Par exemple, si une écriture dans le + registre CR0 fait quitter, l'instruction en cause est enregistrée, ainsi + que le fait qu'un accès en écriture sur le registre de contrôle a prurnqué + la sortie, et des informations sur la le registre source et destination. + L'hyperviseur peut ainsi gérer efficacement la condition sans avoir besoin + de techniques avancées telles que CSAM et PATM décrits ci-dessus.</para> + + <para>VT-x évite intrinsèquement plusieurs problèmes qui se posent avec la + virtualisation logicielle. L'invité a son propre espace d'adresse distinct, + qu'il ne partage pas avec l'hyperviseur, ce qui élimine les plantages + potentiels. De plus, le code du noyau de l'OS invité se lance avec le + privilège ring 0 en mode non racine VMX, rendant inopérants les problèmes + d'exécution de code en ring 0 sur des niveaux moins privilégiés. Par exemple, + l'instruction SYSENTER peut faire une transition vers le ring 0 sans problèmes. + Naturellement, même en ring 0 en mode non-racine VMX, tous les accès E/S par + le code invité amène toujours la VM à quitter, permettant l'émulation + de périphérique.</para> + + <para>La plus grosse différence entre VT-x et AMD-V est qu'AMD-V fournit + en environnement de virtualisation plus complet. VT-x exige que le code + non-racine VMX s'exécute en mode pagination activée, ce qui rejette la + virtualisation matérielle de logiciels dont le code est en mode réel et en + mode protégé non paginé. Cela n'inclut en général que les firmwares et les + chargeurs d'OS, néanmoins cela complique l'implémentation d'un hyperviseur + avec VT-x. AMD-V n'a pas cette restriction.</para> + + <para>Bien entendu, la virtualisation matérielle n'est pas parfaite. Par + rapport à la virtualisation logicielle, la charge des fins des VMs est + relativement élevée. Cela pose des problèmes aux périphériques dont l'émulation + requiet un grand nombre de blocages (trass). Par exemple, avec le périphérique + VGA en mode 16 couleurs, mon seulement tous les accès au port en E/S, mais + aussi tous les accès à la mémoire tampon (framebuffer) doivent être + bloqués.</para> </sect1> <sect1 id="nestedpaging"> - <title>Nested paging and VPIDs</title> + <title>Vagination nestée et VPIDs</title> - <para>In addition to "plain" hardware virtualization, your processor may - also support additional sophisticated techniques:<footnote> - <para>VirtualBox 2.0 added support for AMD's nested paging; support - for Intel's EPT and VPIDs was added with version 2.1.</para> + <para>En plus de la virtualisation matérielle "brute", votre processeur peut + supporter aussi des techniques sophistiquées supplémentaires :<footnote> + <para>VirtualBox 2.0 a ajouté le support de la pagination nestée d'AMD ; + le support de l'EPT et des VPIDs d'Intel a été ajouté à la version 2.1.</para> </footnote><itemizedlist> <listitem> - <para>A newer feature called <emphasis role="bold">"nested - paging"</emphasis> implements some memory management in hardware, - which can greatly accelerate hardware virtualization since these - tasks no longer need to be performed by the virtualization - software.</para> - - <para>With nested paging, the hardware provides another level of - indirection when translating linear to physical addresses. Page - tables function as before, but linear addresses are now translated - to "guest physical" addresses first and not physical addresses - directly. A new set of paging registers now exists under the - traditional paging mechanism and translates from guest physical - addresses to host physical addresses, which are used to access - memory.</para> - - <para>Nested paging eliminates the overhead caused by VM exits and - page table accesses. In essence, with nested page tables the guest - can handle paging without intervention from the hypervisor. Nested - paging thus significantly improves virtualization - performance.</para> - - <para>On AMD processors, nested paging has been available starting - with the Barcelona (K10) architecture -- they call it now "rapid - virtualization indexing" (RVI). Intel added support for nested - paging, which they call "extended page tables" (EPT), with their - Core i7 (Nehalem) processors.</para> - - <para>If nested paging is enabled, the VirtualBox hypervisor can - also use <emphasis role="bold">large pages</emphasis> to reduce TLB - usage and overhead. This can yield a performance improvement of up - to 5%. To enable this feature for a VM, you need to use the + <para>Une fonctionnalité récente, qui s'appelle la + <emphasis role="bold">"pagination nestée"</emphasis> implémente la + gestion de la mémoire dans le matériel, ae qui peut beaucoup accélérer + la virtualisation matérielle puisque ces tâches n'ont plus besoin d'être + accomplies par le logiciel de virtualisation.</para> + + <para>Avec la pagination nested, le matériel fournit un autre niveau + d'indirection en passant du linéaire aux adresses physiques. Les + tables de page fonctionnent comme avant mais les adresses linéaires + sont désormais d'abord traduites en adresses physiques de "l'invité" + et pas directement en adresses physiques. Il existe maintenant un + nouveau jeu de registres de pagination sous le mécanisme depagination + traditionnel et qui traduit les adresses physiques invitées en adresses + physiques de l'hôte, qui sont utilisées pour accéder à la mémoire.</para> + + <para>La pagination nested élimine la charge causée par les fins de + VM et les accès aux tables de pages. Par définition, avec les tables + de pages nested, l'invité peut gérer la pagination sans que l'hyperviseur + n'intervienne. La pagination nestée améliore ainsi substantiellement + les performances de virtualisation.</para> + + <para>Sur les processeurs AMD, la pagination nested est disponible + depuis l'architecture Barcelona (K10) -- on l'appelle maintenant la + "rapid virtualization indexing" (RVI). Intel a ajouté le support de + la pagination nested, qu'ils appellent la "extended page tables" (EPT), + à leurs processeurs Core i7 (Nehalem).</para> + + <para>Si la pagination nested est activée, l'hyperviseur de VirtualBox + peut également utiliser <emphasis role="bold">large pages</emphasis>, + pour réduire l'utilisation du TLB et la charge. Cela peut provoquer + une amélioration jusqu'à 5% des performances. Pour activer cette + fonctionnalité pour une VM, vous avez besoin d'utiliser la commande <computeroutput>VBoxManage modifyvm - </computeroutput><computeroutput>--largepages</computeroutput> - command; see <xref linkend="vboxmanage-modifyvm" />.</para> + </computeroutput><computeroutput>--largepages</computeroutput> ; + voir <xref linkend="vboxmanage-modifyvm" />.</para> </listitem> <listitem> - <para>On Intel CPUs, another hardware feature called <emphasis - role="bold">"Virtual Processor Identifiers" (VPIDs)</emphasis> can - greatly accelerate context switching by reducing the need for - expensive flushing of the processor's Translation Lookaside Buffers - (TLBs).</para> - - <para>To enable these features for a VM, you need to use the - <computeroutput>VBoxManage modifyvm --vtxvpid</computeroutput> and - <computeroutput>--largepages</computeroutput> commands; see <xref + <para>Sur les processeurs Intel, une autre fonction matérielle, qui + s'appelle <emphasis role="bold">"Virtual Processor Identifiers" (VPIDs)</emphasis>, + peut beaucoup accélérer le changement de contexte en réduisant le + besoin de flasher beaucoup les Translation Lookaside Buffers + (TLBs) du processeur.</para> + + <para>Pour activer ces fonctions pour une VM, vous devez utiliser + les commandes <computeroutput>VBoxManage modifyvm --vtxvpid</computeroutput> and + <computeroutput>--largepages</computeroutput> ; voir <xref linkend="vboxmanage-modifyvm" />.</para> </listitem> </itemizedlist></para> |