svn commit: r50172 - head/fr_FR.ISO8859-1/books/handbook/linuxemu
Marc Fonvieille
blackend at FreeBSD.org
Sun Apr 16 16:26:30 UTC 2017
Author: blackend
Date: Sun Apr 16 16:26:29 2017
New Revision: 50172
URL: https://svnweb.freebsd.org/changeset/doc/50172
Log:
MFen 1.136 --> r49367
Modified:
head/fr_FR.ISO8859-1/books/handbook/linuxemu/chapter.xml
Modified: head/fr_FR.ISO8859-1/books/handbook/linuxemu/chapter.xml
==============================================================================
--- head/fr_FR.ISO8859-1/books/handbook/linuxemu/chapter.xml Sun Apr 16 04:57:28 2017 (r50171)
+++ head/fr_FR.ISO8859-1/books/handbook/linuxemu/chapter.xml Sun Apr 16 16:26:29 2017 (r50172)
@@ -4,10 +4,10 @@
The FreeBSD French Documentation Project
$FreeBSD$
- Original revision: 1.136
+ Original revision: 49367
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="linuxemu">
- <info><title>Compatibilité binaire avec Linux</title>
+ <info><title>Compatibilité binaire avec &linux;</title>
<authorgroup>
<author><personname><firstname>Jim</firstname><surname>Mock</surname></personname><contrib>Restructuré et en partie mis à jour
par </contrib></author>
@@ -30,67 +30,46 @@
<secondary>Linux</secondary>
</indexterm>
- <para>&os; fournit une compatibilité binaire avec plusieurs autres
- systèmes d'exploitation du type &unix;, y compris Linux.
- A ce point, vous devez vous demander pourquoi exactement
- &os; a besoin d'être capable d'exécuter des binaires Linux?
- La réponse à cette question est très simple. De
- nombreuses entreprises et de nombreux développeurs ne
- développent que pour Linux, puisque que c'est la dernière
- chose “à la mode” dans le monde de l'informatique.
- Cela ne laisse aux utilisateurs de &os; que la possibilité
- de réclamer auprès des ces mêmes entreprises
- et développeurs des versions native pour &os; de leurs
- applications. Le problème est, que la plupart de ces
- entreprises ne réalisent pas vraiment combien de personnes
- utiliseraient leur produit si il y aurait une version pour &os;
- également, et la plupart continuent de développer uniquement
- pour Linux. Donc que doit faire un utilisateur de &os;?
- C'est là que la compatibilité binaire avec Linux entre en
- scène.</para>
-
- <para>En bref, la compatibilité permet aux utilisateurs de
- &os; d'exécuter environ 90% des applications Linux
- sans aucune modification. Cela inclus des applications
- comme <application>&staroffice;</application>,
- la version Linux de <application>&netscape;</application>,
- <application>&adobe; &acrobat;</application>,
- <application>&realplayer;</application>,
- <application>VMware</application>,
- <application>&oracle;</application>,
- <application>&wordperfect;</application>, <application>Doom</application>,
- <application>Quake</application>, et plus. On rapporte
+ <para>&os; fournit une compatibilité binaire avec &linux;,
+ permettant aux utilisateurs d'installer et d'exécuter la plupart
+ des applications &linux; sur un système &os; sans avoir à modifier
+ ces applications. On rapporte
également que dans certaines situations, les binaires Linux
- sont plus performants sous &os; que sous Linux.</para>
+ sont plus performants sous &os; que sous &linux;,.</para>
<para>Il existe cependant certaines caractéristiques
- spécifiques à Linux qui ne sont pas
- supportées sous &os;. Les binaires Linux ne
+ spécifiques à &linux;, qui ne sont pas
+ supportées sous &os;. Par exemple, des binaires &linux; ne
fonctionneront pas sous &os; s'ils utilisent massivement
des appels
&i386; spécifiques, comme activation du mode virtuel
8086.</para>
+ <note>
+ <para>Le support de la compatibilité &linux; pour les binaires
+ 64bits a été ajouté avec &os; 10.3.</para>
+ </note>
+
<para>Après la lecture de ce chapitre, vous connaîtrez:</para>
<itemizedlist>
<listitem>
<para>Comment activer la compatibilité binaire avec
- Linux sur votre système.</para>
+ &linux; sur un système &os;.</para>
</listitem>
<listitem>
- <para>Comment installer des bibliothèques partagées Linux
+ <para>Comment installer des bibliothèques partagées &linux;
supplémentaires.</para>
</listitem>
<listitem>
- <para>Comment installer des application Linux sur votre
+ <para>Comment installer des application &linux; sur un
système &os;.</para>
</listitem>
<listitem>
<para>Les détails de l'implémentation de la
- compatibilité Linux sous &os;.</para>
+ compatibilité &linux; sous &os;.</para>
</listitem>
</itemizedlist>
@@ -98,280 +77,208 @@
<itemizedlist>
<listitem>
- <para>Savoir comment installer des logiciels tiers
- (<xref linkend="ports"/>).</para>
+ <para>Savoir comment installer des <link
+ linkend="ports">logiciels tiers</link>.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 xml:id="linuxemu-lbc-install">
- <title>Installation</title>
+ <title>Configurer la compatibilité binaire avec &linux;</title>
+
+ <indexterm><primary>Catalogue des logiciels portés</primary></indexterm>
- <indexterm><primary>KLD (kernel loadable object)</primary></indexterm>
+ <para>Par défaut, les bibliothèques &linux; ne sont pas installées
+ et la compatibilité binaire avec Linux n'est pas activée. Les
+ bibliothèques &linux; peuvent être installées soit manuellement
+ soit à partir du catalogue des logiciels portés.</para>
- <para>La compatibilité binaire avec Linux n'est pas
- activée par défaut. La manière la plus simple
- pour activer cette fonctionnalité est de charger le KLD
- <literal>linux</literal> (<quote>Kernel LoaDable
- object</quote>—objet chargeable par le noyau, ce que l'on
- nomme couramment un module). Vous pouvez charger ce module
- en tapant ce qui suit sous l'utilisateur
- <systemitem class="username">root</systemitem>:</para>
+ <para>Avant de tenter de compiler un logiciel, charger le module
+ du noyau &linux;, sinon la compilation risque d'échouer:</para>
<screen>&prompt.root; <userinput>kldload linux</userinput></screen>
- <para>Si vous désirez que la compatibilité Linux soit
- toujours activée, alors vous devrez ajouter la ligne
- suivante au fichier <filename>/etc/rc.conf</filename>:</para>
+ <para>Pour une compatibilité en 64bits:</para>
- <programlisting>linux_enable="YES"</programlisting>
+ <screen>&prompt.root; <userinput>kldload linux64</userinput></screen>
- <para>La commande &man.kldstat.8; peut être utilisée
- pour vérifier que le KLD est chargé:</para>
+ <para>Pour vérifier que le module est bien chargé:</para>
<screen>&prompt.user; <userinput>kldstat</userinput>
-Id Refs Address Size Name
- 1 2 0xc0100000 16bdb8 kernel
- 7 1 0xc24db000 d000 linux.ko</screen>
+ Id Refs Address Size Name
+ 1 2 0xc0100000 16bdb8 kernel
+ 7 1 0xc24db000 d000 linux.ko</screen>
+
+ <para>Le logiciel précompilé
+ <package>emulators/linux_base-c6</package> ou la version
+ compilée à partir du catalogue des logiciels portés est la
+ méthode la plus simple pour installer l'ensemble des
+ bibliothèques et binaires de base &linux; sur un système
+ &os;.</para>
+
+ <screen>&prompt.root; <userinput>printf "compat.linux.osrelease=2.6.18\n" >> /etc/sysctl.conf</userinput>
+&prompt.root; <userinput>sysctl compat.linux.osrelease=2.6.18</userinput>
+&prompt.root; <userinput>pkg install emulators/linux_base-c6</userinput></screen>
+
+ <para>Pour activer au démarrage la compatibilité &linux;, ajouter
+ ligne suivante au fichier
+ <filename>/etc/rc.conf</filename>:</para>
+
+ <programlisting>linux_enable="YES"</programlisting>
+
+ <para>Sur les machines 64bits, <filename>/etc/rc.d/abi</filename>
+ chargera automatiquement le module pour l'émulation
+ 64bits.</para>
<indexterm>
<primary>options du noyau</primary>
- <secondary>LINUX</secondary>
+ <secondary>COMPAT_LINUX</secondary>
</indexterm>
- <para>Si pour quelques raisons vous ne voulez ou pouvez charger le
- KLD, alors vous pouvez lier statiquement la compatibilité
- binaire Linux dans votre noyau en ajoutant <literal>options
- COMPAT_LINUX</literal> à votre fichier de configuration du noyau.
- Puis installez votre noyau comme décrit dans la
+ <para>Les utilisateurs préférant lier statiquement la
+ compatibilité binaire &linux; dans leur noyau devront ajouter
+ <literal>options COMPAT_LINUX</literal> à leur fichier de
+ configuration du noyau. Puis compiler et installer le nouveau
+ noyau comme décrit dans la
<xref linkend="kernelconfig"/>.</para>
- <sect2>
- <title>Installer les bibliothèques Linux</title>
+ <sect2 xml:id="linuxemu-libs-manually">
+ <title>Installer des bibliothèques supplémentaires à la main</title>
+
<indexterm>
- <primary>Linux</primary>
- <secondary>installer les bibliothèques Linux</secondary>
+ <primary>bibliothèques partagées</primary>
</indexterm>
- <para>Cela peut être fait de deux manières, soit
- en utilisant le logiciel porté
- <link linkend="linuxemu-libs-port">linux_base</link>, soit
- en les installant <link linkend="linuxemu-libs-manually">à la main</link>.</para>
-
- <sect3 xml:id="linuxemu-libs-port">
- <title>Installation à l'aide du logiciel porté
- linux_base</title>
- <indexterm><primary>catalogue des logiciels
- portés</primary></indexterm>
-
- <para>C'est de loin la méthode la plus simple pour
- installer les bibliothèques. La procédure est
- juste identique à l'installation d'un autre logiciel
- porté à partir du
- <link xlink:href="file://localhost/usr/ports/">catalogue
- des logiciels portés</link>.
- Faites ce qui suit:</para>
-
- <screen>&prompt.root; <userinput>cd /usr/ports/emulators/linux_base-fc4</userinput>
-&prompt.root; <userinput>make install distclean</userinput></screen>
-
- <para>La compatibilité binaire Linux devrait maintenant
- fonctionner. Certains programmes pourront se plaindre de
- versions mineures incorrectes de certaines bibliothèques
- systèmes. Cela semble, en général, ne pas
- vraiment être un problème.</para>
-
- <note><para>Il peut y avoir de multiples versions disponibles
- du logiciel porté <package>emulators/linux_base</package>, correspondant
- à différentes distributions et versions de Linux.
- Vous devez installez la version la plus proche de ce que
- nécessite les applications Linux que vous désirez
- installer.</para></note>
- </sect3>
-
- <sect3 xml:id="linuxemu-libs-manually">
- <title>Installer les bibliothèques à la main</title>
-
- <para>Si vous n'avez pas le catalogue des logiciels
- portés installé, vous pouvez à la
- place installer les bibliothèques à la main.
- Il vous faudra les bibliothèques partagées
- Linux dont à besoin le programme et l'éditeur
- de lien dynamiques. Vous devrez également
- créer un répertoire racine
- “masquant” (“shadow root”),
- <filename>/compat/linux</filename>, pour les
- bibliothèques Linux sur votre système &os;.
- Toute bibliothèque partagée ouverte par les
- programmes Linux exécutés sous &os; iront d'abord voir
- dans cette arborescence. Ainsi, si un programme Linux
- charge, par exemple, <filename>/lib/libc.so</filename>,
- &os; essayera d'abord d'ouvrir
- <filename>/compat/linux/lib/libc.so</filename>, puis si
- cette bibliothèque n'existe pas,
- <filename>/lib/libc.so</filename>. Les bibliothèques
- partagées doivent donc être installées
- sous l'arborescence <filename>/compat/linux/lib</filename>
- plutôt que sous les chemins d'accès
- mentionnés par la commande Linux
- <command>ld.so</command>.</para>
-
- <para>Généralement, vous ne devrez cherchez à
- savoir de quelles bibliothèques partagées
- dépendent les binaires Linux que les premières
- fois que vous installerez des programmes Linux sur votre
- système &os;. Au bout d'un moment, vous disposerez
- d'un jeu suffisant de bibliothèques partagées
- Linux sur votre système pour être en mesure
- d'exécuter les binaires Linux nouvellement
- importés sans effort supplémentaire.</para>
- </sect3>
-
- <sect3>
- <title>Comment installer des bibliothèques
- partagées supplémentaires</title>
- <indexterm><primary>bibliothèques
- partagées</primary></indexterm>
-
- <para>Que faire si vous avez installé le logiciel
- porté <filename>linux_base</filename> et que votre
- application se plaint toujours qu'il lui manque des
- bibliothèques partagées?
- Comment savoir quelles bibliothèques partagées
- ont besoin les binaires Linux, et où se les
- procurer? Il a habituellement deux possibilités
- (pour suivre les instructions ci-dessous, vous devrez
- être en session sous le compte super-utilisateur
- <systemitem class="username">root</systemitem>).</para>
-
- <para>Si vous avez accès à un système
- Linux, déterminez de quelles bibliothèques
- partagées l'application a besoin, et copiez-les sur
- votre système &os;. Soit l'exemple suivant:</para>
-
- <informalexample>
- <para>Supposons que vous veniez de télécharger
- le binaire Linux de <application>Doom</application>,
- et que vous l'avez installé sur un système
- Linux. Vous pouvez alors vérifier de quelles
- bibliothèques partagées il a besoin pour
- fonctionner avec la commande
- <command>ldd linuxdoom</command>:</para>
+ <para>Si une application &linux; se plaint de l'absence d'une
+ bibliothèque partagée après avoir configuré la compatibilité
+ binaire &linux;, déterminez quelle est la bibliothèque
+ partagée nécessaire au binaire &linux; et installez-la à la
+ main.</para>
+
+ <para>A partir d'un système &linux;, la commande
+ <command>ldd</command> peut être utilisée pour déterminer
+ quelles sont les bibliothèques partagées dont l'application a
+ besoin. Par exemple, pour contrôler quelles bibliothèques
+ partagées sont nécessaires à <command>linuxdoom</command>,
+ exécuter cette commande à partir d'un système &linux; où est
+ installé <application>Doom</application>:</para>
- <screen>&prompt.user; <userinput>ldd linuxdoom</userinput>
+ <screen>&prompt.user; <userinput>ldd linuxdoom</userinput>
libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0
libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0
libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29</screen>
- <indexterm><primary>liens symboliques</primary></indexterm>
- <para>Vous devrez récupérer tous les
- fichiers mentionnés dans la dernière colonne,
- et les installer sous <filename>/compat/linux</filename>,
- en utilisant les noms de la première colonne comme
- liens symboliques qui pointent dessus. Cela signifie
- que vous aurez éventuellement les fichiers suivants
- sur votre système &os;:</para>
+ <indexterm>
+ <primary>liens symboliques</primary>
+ </indexterm>
+
+ <para>Ensuite, copier tous les fichiers mentionnés dans la
+ dernière colonne, du système sous &linux; vers
+ <filename>/compat/linux</filename> sur le système &os;. Une
+ fois copiés, créer les liens symboliques vers les noms de
+ fichiers donnés dans la première colonne. Cet exemple donnera
+ lieu aux fichiers suivants sur le système &os;:</para>
- <screen>/compat/linux/usr/X11/lib/libXt.so.3.1.0
+ <screen>/compat/linux/usr/X11/lib/libXt.so.3.1.0
/compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0
/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -> libc.so.4.6.29</screen>
- <blockquote>
- <note>
- <para>Remarquez que si vous avez déjà
- une bibliothèque partagée de même
- numéro de version majeure que celle indiquée
- par la première colonne du résultat
- de la commande <command>ldd</command>, il est inutile
- de copier le fichier donné par la dernière
- colonne sur votre système, celui que vous
- avez déjà devrait suffire.
- Il est cependant recommandé de recopier
- malgré tout la bibliothèque partagée
- si c'est une version récente.
- Vous pouvez supprimer l'ancienne version, du moment
- que le lien symbolique pointe sur la nouvelle. Par
- exemple, si vous avez les bibliothèques suivantes
- sur votre système:</para>
+ <para>Si une bibliothèque &linux; partagée existe avec le même
+ numéro de version majeure que celle indiquée par la première
+ colonne du résultat de la commande <command>ldd</command>, il
+ est inutile de la copier vers le nom de fichier donné par la
+ dernière colonne, la bibliothèque déjà existante devrait
+ fonctionner. Il est cependant recommandé de copier malgré
+ tout la bibliothèque partagée si c'est une version récente.
+ L'ancienne version peut être supprimée, du moment que le lien
+ symbolique pointe sur la nouvelle.</para>
- <screen>/compat/linux/lib/libc.so.4.6.27
+ <para>Par exemple, les bibliothèques suivantes existent déjà sur
+ le système &os;:</para>
+
+ <screen>/compat/linux/lib/libc.so.4.6.27
/compat/linux/lib/libc.so.4 -> libc.so.4.6.27</screen>
- <para>et que vous avez un nouveau binaire qui
- d'après le résultat de la commande
- <command>ldd</command> semble avoir besoin d'une
- version plus récente:</para>
-
- <screen>libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29</screen>
- <para>Si vous n'avez qu'une ou deux versions de retard
- sur le dernier indice, alors ne vous souciez pas
- d'installer la version
- <filename>/lib/libc.so.4.6.29</filename> plus
- récente, parce que le programme devrait fonctionner
- sans problème avec une version
- légèrement antérieure.
- Vous pouvez néanmoins décider de remplacer
- <filename>libc.so</filename>, ce qui devrait vous
- donner quelque chose comme:</para>
+ <para>et <command>ldd</command> indique qu'un binaire a besoin
+ d'une version plus récente:</para>
+
+ <screen>libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29</screen>
- <screen>/compat/linux/lib/libc.so.4.6.29
+ <para>Etant donné que la bibliothèque existante n'a qu'une ou
+ deux versions de retard sur le dernier digit, le programme
+ devrait fonctionner avec la version légèrement plus ancienne.
+ Il est, néanmoins, plus sûr de remplacer la
+ <filename>libc.so</filename> existante avec la version plus
+ récente:</para>
+
+ <screen>/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -> libc.so.4.6.29</screen>
- </note>
- </blockquote>
- <blockquote>
- <note>
- <para>Le mécanisme de lien symbolique n'est
- nécessaire que pour les binaires Linux.
- L'éditeur de liens dynamiques de &os;
- se charge lui-même de trouver les numéros
- de versions majeures adéquats et vous
- n'avez pas à vous en préoccuper.</para>
- </note>
- </blockquote>
- </informalexample>
- </sect3>
+ <para>Généralement, vous ne devrez cherchez à savoir de quelles
+ bibliothèques partagées dépendent les binaires &linux; que les
+ premières fois que vous installerez des programmes &linux; sur
+ le système &os;. Au bout d'un moment, il y aura un ensemble
+ suffisant de bibliothèques partagées &linux; sur le système
+ pour être en mesure d'exécuter les binaires &linux;
+ nouvellement importés sans effort supplémentaire.</para>
</sect2>
<sect2>
- <title>Installer des binaires Linux ELF</title>
+ <title>Installer des binaires &linux; <acronym>ELF</acronym></title>
<indexterm>
<primary>Linux</primary>
<secondary>binaires ELF</secondary>
</indexterm>
<para>Une étape supplémentaire est parfois
- nécessaire pour les binaires ELF: le
- “marquage”. Si vous tentez d'exécuter un
- binaire ELF non marqué, vous obtiendrez un message
- d'erreur ressemblant à ce qui suit:</para>
+ nécessaire pour les binaires <acronym>ELF</acronym>. Quand
+ un binaire <acronym>ELF</acronym> non marqué est exécuté, une
+ erreur sera générée:</para>
<screen>&prompt.user; <userinput>./mon-binaire-elf-linux</userinput>
ELF binary type not known
Abort</screen>
- <para>Pour que le noyau &os; puisse distinguer un binaire ELF
- &os; d'un binaire Linux, vous devez employer l'utilitaire
- &man.brandelf.1;:</para>
+ <para>Pour que le noyau &os; puisse distinguer un binaire
+ <acronym>ELF</acronym> &os; d'un binaire &linux;, vous devez
+ employer l'utilitaire &man.brandelf.1;:</para>
<screen>&prompt.user; <userinput>brandelf -t Linux mon-binaire-elf-linux</userinput></screen>
<indexterm><primary>outils GNU</primary></indexterm>
<para>Les outils GNU incorporent désormais automatiquement
- les marques nécessaires dans les binaires ELF, vous
- aurez donc de moins en moins besoin de passer par cette
- étape à l'avenir.</para>
+ les marques nécessaires dans les binaires ELF,
+ cette étape n'est généralement pas nécessaire.</para>
+ </sect2>
+
+ <sect2>
+ <title>Installer une application &linux; basée sur
+ <acronym>RPM</acronym></title>
+
+ <para>Pour installer une application &linux; basée sur
+ <acronym>RPM</acronym>, installer en premier le logiciel
+ précompilé ou porté <package>archivers/rpm4</package>. Une
+ fois installé, <systemitem class="username">root</systemitem>
+ peut utiliser la commande suivante pour installer un
+ <filename>.rpm</filename>:</para>
+
+ <screen>&prompt.root; <userinput>cd /compat/linux</userinput>
+&prompt.root; <userinput>rpm2cpio < /path/to/linux.archive.rpm | cpio -id</userinput></screen>
+
+ <para>Si nécessaire, utiliser <command>brandelf</command> sur
+ les binaires <acronym>ELF</acronym> installés. Il faut noter
+ que cela empêchera une desinstallation propre.</para>
</sect2>
<sect2>
<title>Configurer le résolveur de noms de domaines</title>
- <para>Si le DNS ne fonctionne pas, ou si vous avez les
- messages:</para>
+ <para>Si le <acronym>DNS</acronym> ne fonctionne pas, ou si cette
+ erreur apparaît::</para>
<screen>resolv+: "bind" is an invalid keyword resolv+:
"hosts" is an invalid keyword</screen>
@@ -383,19 +290,21 @@ Abort</screen>
<programlisting>order hosts, bind
multi on</programlisting>
- <para>Où l'ordre ci-dessus spécifie qu'il faut tout
+ <para>Cela indique qu'il faut tout
d'abord regarder dans le fichier <filename>/etc/hosts</filename>
- puis interroger le DNS. Quand le fichier
+ puis interroger le <acronym>DNS</acronym>. Quand le fichier
<filename>/compat/linux/etc/host.conf</filename> n'existe pas,
- les applications Linux trouvent le fichier
- <filename>/etc/host.conf</filename> de &os; et se plaignent de
+ les applications &linux; trouvent le fichier
+ <filename>/etc/host.conf</filename> et se plaignent de
sa syntaxe &os; incompatible. Supprimez
- <literal>bind</literal> si vous n'avez pas configuré de
- serveur de noms avec le fichier
+ <literal>bind</literal> si un serveur de noms n'est pas configuré
+ avec le fichier
<filename>/etc/resolv.conf</filename>.</para>
</sect2>
</sect1>
+ <?ignore
+
<sect1 xml:id="linuxemu-mathematica">
<info><title>Installer &mathematica;</title>
<authorgroup>
@@ -3693,34 +3602,26 @@ options SHMMAXPGS=393216
</sect3>
</sect2>
</sect1>
+ ?>
<sect1 xml:id="linuxemu-advanced">
<title>Sujets avancés</title>
- <para>Si vous êtes curieux de savoir comment la
- compatibilité binaire avec Linux fonctionne, cette
- section est faite pour vous. La plupart de ce qui suit est
- principalement basé sur un courrier électronique
+ <para>Cette section décrit comment la
+ compatibilité binaire avec &linux; fonctionne, et est basée
+ sur un courrier électronique
de Terry Lambert <email>tlambert at primenet.com</email>
envoyé à la &a.chat; (Message ID:
<literal><199906020108.SAA07001 at usr09.primenet.com></literal>).</para>
- <sect2>
- <title>Comme ça marche?</title>
-
- <indexterm><primary>chargeur de classe d'exécution</primary></indexterm>
+ <indexterm><primary>chargeur de classe
+ d'exécution</primary></indexterm>
<para>&os; possède une abstraction appelée
“chargeur de classe d'exécution”. C'est
une portion de l'appel système &man.execve.2;.</para>
- <para>Ce qui se passe est que &os; dispose d'une liste de
- chargeurs, à la place d'un simple chargeur avec retour
- (“fallback”) vers le chargeur
- <literal>#!</literal> pour exécuter n'importe quel
- interpréteur de commandes ou procédure.</para>
-
- <para>Historiquement, l'unique chargeur sur les plate-formes
+ <para>Historiquement, le chargeur
&unix; examinait le nombre magique (généralement
les 4 ou 8 premiers octets du fichier) pour voir si
c'était un binaire connu par le système, et si
@@ -3730,46 +3631,41 @@ options SHMMAXPGS=393216
système, l'appel &man.execve.2; retournait un
échec, et l'interpréteur de commandes tentait de
l'exécuter comme une commande
- d'interpréteur.</para>
-
- <para>Cette hypothèse est celle par défaut quelque
- soit l'interpréteur de commandes actuel.</para>
+ d'interpréteur. Cette hypothèse était celle par défaut
+ <quote>quelque soit l'interpréteur de commandes
+ actuel</quote>.</para>
<para>Plus tard, une modification a été faite sur
&man.sh.1; pour examiner les deux premiers caractères,
et s'ils étaient <literal>:\n</literal>, alors elle
invoquait l'interpréteur de commandes &man.csh.1;
- à la place (nous pensons que l'entreprise SCO fut la
- première à faire cette modification).</para>
+ à la place.</para>
+
+ <para>&os; possède désormais une liste de chargeurs, avec un
+ chargeur par défaut, <literal>#!</literal>, pour exécuter les
+ interpréteurs ou les procédures de commandes.</para>
- <para>Ce que fait maintenant &os; est de parcourir une liste de
- chargeurs, avec un chargeur <literal>#!</literal>
- générique qui reconnaît les noms des
- interpréteurs qui se trouvent après le
- caractère espace suivant, puis avec un retour possible
- vers <filename>/bin/sh</filename>.</para>
- <indexterm><primary>ELF</primary></indexterm>
-
- <para>Pour le support de l'ABI Linux, &os; voit le nombre
- magique comme un binaire ELF (il ne fait pas la
- différence à ce niveau entre &os;, &solaris;,
- Linux, ou tout autre système d'exploitation qui dispose
- d'un type d'image ELF).</para>
- <indexterm><primary>Solaris</primary></indexterm>
+ <indexterm>
+ <primary>ELF</primary>
+ </indexterm>
- <para>Le chargeur ELF recherche une <emphasis>marque</emphasis>
- spécifique, qui se trouve dans une section de commentaire
+ <indexterm>
+ <primary>Solaris</primary>
+ </indexterm>
+
+ <para>Pour le support de l'<acronym>ABI</acronym> &linux;, &os;
+ voit le nombre magique comme un binaire ELF. Le chargeur ELF
+ recherche une <emphasis>marque</emphasis>
+ spécifique, qui se trouve dans une section de commentaires
dans l'image ELF, et qui n'est pas présente dans les
binaires SVR4/&solaris; ELF.</para>
- <para>Pour que les binaires Linux puissent fonctionner, ils
+ <para>Pour que les binaires &linux; puissent fonctionner, ils
doivent être <emphasis>marqués</emphasis> sous le
type <literal>Linux</literal> avec &man.brandelf.1;:</para>
<screen>&prompt.root; <userinput>brandelf -t Linux file</userinput></screen>
- <para>Quand cela est fait, le chargeur ELF verra le marquage
- <literal>Linux</literal> sur le fichier.</para>
<indexterm>
<primary>ELF</primary>
<secondary>marquage</secondary>
@@ -3778,7 +3674,7 @@ options SHMMAXPGS=393216
<para>Lorsque le chargeur ELF voit le marquage
<literal>Linux</literal>, le chargeur remplace un pointeur
dans la structure <literal>proc</literal>. Tous les appels
- système sont indéxés par
+ système sont indexés par
l'intermédiaire de ce pointeur (dans un système
&unix; traditionnel, cela serait la structure
<literal>sysent[]</literal>, contenant les appels
@@ -3787,9 +3683,9 @@ options SHMMAXPGS=393216
(“trap”) pour le signal de code
“trampoline”, et plusieurs autres corrections
(mineures) qui sont gérées par le noyau
- Linux.</para>
+ &linux;.</para>
- <para>Le vecteur d'appel système Linux contient, entre
+ <para>Le vecteur d'appel système &linux; contient, entre
autres, une liste des entrées
<literal>sysent[]</literal> dont les adresses résident
dans le noyau.</para>
@@ -3798,76 +3694,52 @@ options SHMMAXPGS=393216
binaire Linux, le code “trap”
déréférence de la structure
<literal>proc</literal> le pointeur de la fonction de l'appel
- système, et utilise les points d'entrée Linux,
+ système, et utilise les points d'entrée &linux;,
et non pas &os;, de d'appel système.</para>
- <para>De plus, le mode Linux redéfinit dynamiquement
- l'origine des requêtes; c'est, en effet, ce qu'effectue
- l'option <option>union</option> (<emphasis>pas</emphasis> le
- type de système de fichiers
- <literal>unionfs</literal>!) de montage des systèmes de
+ <para>Le mode &linux; <emphasis>redéfinit dynamiquement</emphasis>
+ l'origine des requêtes. C'est, en effet, équivalent à
+ l'option <option>union</option> de montage des systèmes de
fichiers. Tout d'abord, une tentative est faite pour
- rechercher le fichier dans le répertoire <filename>/compat/linux/chemin-origine</filename>,
- <emphasis>puis</emphasis> uniquement si cela échoue, la
+ rechercher le fichier dans le répertoire <filename>/compat/linux/<replaceable>chemin-origine</replaceable></filename>.
+ Si cela échoue, la
recherche est effectuée dans le répertoire
- <filename>/chemin-origine</filename>.
+ <filename>/<replaceable>chemin-origine</replaceable></filename>.
Cela permet de s'assurer que les binaires nécessitant
- d'autres binaires puissent s'exécuter (par exemple,
- l'ensemble des outils Linux peuvent tourner sous l'ABI Linux).
- Cela signifie également que les binaires Linux peuvent
+ d'autres binaires puissent s'exécuter. Par exemple,
+ l'ensemble des outils &linux; peuvent tourner sous l'ABI &linux;.
+ Cela signifie également que les binaires &linux; peuvent
charger et exécuter les binaires &os;, s'il n'y a pas
- de binaires Linux correspondant présents, et vous
+ de binaires &linux; correspondant présents, et vous
pourriez placer une commande &man.uname.1; dans l'arborescence
<filename>/compat/linux</filename> pour vous
- assurer que les binaires Linux ne puissent pas dire qu'ils ne
- tournent pas sous Linux.</para>
+ assurer que les binaires &linux; ne puissent pas dire qu'ils ne
+ tournent pas sous &linux;.</para>
- <para>En effet, il y a un noyau Linux dans le noyau &os;; les
+ <para>En effet, il y a un noyau &linux; dans le noyau &os;. Les
diverses fonctions sous-jacentes qui implémentent tous
les services fournis par le noyau sont identiques entre les
deux tables d'entrées des appels systèmes &os;
- et Linux: les opérations sur les systèmes de
+ et &linux;: les opérations sur les systèmes de
fichiers, les opérations sur la mémoire
- virtuelle, la gestion des signaux, l'IPC System V, etc. La
+ virtuelle, la gestion des signaux, iet l'IPC System V. La
seule différence est que les binaires &os; utilisent
les fonctions <emphasis>glue</emphasis> de &os;, et les
- binaires Linux celles de Linux (les plus anciens
- systèmes d'exploitation avaient uniquement leurs
- propres fonctions de <emphasis>glue</emphasis>: les adresses
- des fonctions dans une structure <literal>sysent[]</literal>
- statique globale, au lieu des adresses des fonctions
- déréférencées d'un pointeur
- initialisé dynamiquement pointant vers la structure
- <literal>proc</literal> du processus faisant l'appel).</para>
-
- <para>Laquelle est l'ABI native &os;? Cela n'a pas
- d'importance. Basiquement, la seule différence est que
- (actuellement, cela pourrait facilement changer dans les
- versions futures, et probablement après cela) les
+ binaires &linux; celles de &linux;. Les
fonctions <emphasis>glue</emphasis> de &os; sont liées
en statique dans le noyau, les fonctions
- <emphasis>glue</emphasis> Linux peuvent être
+ <emphasis>glue</emphasis> &linux; peuvent être
liées statiquement, ou l'on peut y accéder via
un module du noyau.</para>
- <para>Oui, mais est-ce vraiment de l'émulation? Non.
- C'est l'implémentation d'une interface binaire pour les
- applications (ABI). Il n'y a pas d'émulateur (ou de
- simulateur, pour couper court aux prochaines questions)
- impliqué.</para>
-
- <para>Mais pourquoi appelle-t-on parfois cela
- “émulation Linux”? Pour rendre difficile
- la vente des versions de &os;! Sérieusement, c'est
- dû au fait que l'implémentation historique a
- été faite à une époque où
- il n'y avait pas vraiment d'autres mots pour décrire ce
- qui était en développement; dire que &os;
- exécutait les binaires Linux n'était pas vrai si
- vous n'aviez pas compilé le code ou chargé un
- module, aussi un terme était nécessaire pour
- qualifier ce qui était chargé — donc
- l'“émulateur Linux”.</para>
- </sect2>
+ <para>Techniquement, ce n'est pas vraiment de l'émulation,
+ c'est l'implémentation d'une interface binaire pour les
+ applications (<acronym>ABI</acronym>). Cela est parfois
+ appelé <quote>émulation &linux;</quote> parce que
+ l'implémentation a été faite à une époque où il n'y avait pas
+ vraiment d'autres mots pour décrire ce qui était en
+ développement. Dire que &os; exécutait les binaires &linux;
+ n'était pas vrai, jusqu'à ce le code de support &linux; soit
+ compilé ou le module soit chargé.</para>
</sect1>
</chapter>
More information about the svn-doc-head
mailing list