git: 242a3dbe76 - main - fr/books/handbook/linuxemu/: Update to 1ad517b

From: Marc Fonvieille <blackend_at_FreeBSD.org>
Date: Wed, 09 Mar 2022 18:12:43 UTC
The branch main has been updated by blackend:

URL: https://cgit.FreeBSD.org/doc/commit/?id=242a3dbe7661e1a9b41d7e6ea4ec2bb77c8fdf24

commit 242a3dbe7661e1a9b41d7e6ea4ec2bb77c8fdf24
Author:     Marc Fonvieille <blackend@FreeBSD.org>
AuthorDate: 2022-03-09 18:10:24 +0000
Commit:     Marc Fonvieille <blackend@FreeBSD.org>
CommitDate: 2022-03-09 18:10:24 +0000

    fr/books/handbook/linuxemu/: Update to 1ad517b
---
 .../content/fr/books/handbook/linuxemu/_index.adoc | 184 +++++++++++++--------
 1 file changed, 115 insertions(+), 69 deletions(-)

diff --git a/documentation/content/fr/books/handbook/linuxemu/_index.adoc b/documentation/content/fr/books/handbook/linuxemu/_index.adoc
index f93683057b..05710c9660 100644
--- a/documentation/content/fr/books/handbook/linuxemu/_index.adoc
+++ b/documentation/content/fr/books/handbook/linuxemu/_index.adoc
@@ -1,15 +1,17 @@
 ---
-title: Chapitre 10. Compatibilité binaire avec Linux®
+title: Chapitre 10. Compatibilité binaire avec Linux
 part: Partie II. Tâches courantes
 prev: books/handbook/printing
 next: books/handbook/partiii
+description: FreeBSD offre une compatibilité binaire avec Linux, permettant aux utilisateurs d'installer et exécuter la plupart des binaires Linux sur un système FreeBSD sans avoir à modifier ce binaire
+tags: ["linux", "linuxulator", "émulation", "binaire", "compatibilité"]
 showBookMenu: true
 weight: 13
 path: "/books/handbook/"
 ---
 
 [[linuxemu]]
-= Compatibilité binaire avec Linux(R)
+= Compatibilité binaire avec Linux
 :doctype: book
 :toc: macro
 :toclevels: 1
@@ -49,99 +51,144 @@ endif::[]
 [[linuxemu-synopsis]]
 == Synopsis
 
-FreeBSD fournit une compatibilité binaire avec Linux(R), permettant aux utilisateurs d'installer et d'exécuter la plupart des applications Linux(R) sur un système FreeBSD sans avoir à modifier ces applications. On rapporte également que dans certaines situations, les binaires Linux sont plus performants sous FreeBSD que sous Linux(R),.
+FreeBSD fournit en option une compatibilité binaire avec Linux(R), permettant aux utilisateurs d'installer et d'exécuter desapplications Linux, sans avoir à les modifier, sur un système FreeBSD.
+Cette option est disponible pour les architectures i386, amd64, et arm64.
 
-Il existe cependant certaines caractéristiques spécifiques à Linux(R), qui ne sont pas supportées sous FreeBSD. Par exemple, des binaires Linux(R) ne fonctionneront pas sous FreeBSD s'ils utilisent massivement des appels i386(TM) spécifiques, comme activation du mode virtuel 8086.
 
-[NOTE]
-====
-Le support de la compatibilité Linux(R) pour les binaires 64bits a été ajouté avec FreeBSD 10.3.
-====
+Certaines caractéristiques spécifiques au système Linux ne sont pas encore supportées sous FreeBSD; cela concerne principalement des fonctionnalités spécifiques au matériel ou relatives à la gestion du système, comme les cgroups ou les espaces de noms.
 
 Après la lecture de ce chapitre, vous connaîtrez:
 
-* Comment activer la compatibilité binaire avec Linux(R) sur un système FreeBSD.
-* Comment installer des bibliothèques partagées Linux(R) supplémentaires.
-* Comment installer des applications Linux(R) sur un système FreeBSD.
-* Les détails de l'implémentation de la compatibilité Linux(R) sous FreeBSD.
+* Comment activer la compatibilité binaire avec Linux sur un système FreeBSD.
+* Comment installer des bibliothèques partagées Linux supplémentaires.
+* Comment installer des applications Linux sur un système FreeBSD.
+* Les détails de l'implémentation de la compatibilité Linux sous FreeBSD.
 
 Avant de lire ce chapitre, vous devrez:
 
 * Savoir comment installer des crossref:ports[ports,logiciels tiers].
 
 [[linuxemu-lbc-install]]
-== Configurer la compatibilité binaire avec Linux(R)
+== Configurer la compatibilité binaire avec Linux
 
-Par défaut, les bibliothèques Linux(R) ne sont pas installées et la compatibilité binaire avec Linux n'est pas activée. Les bibliothèques Linux(R) peuvent être installées soit manuellement soit à partir du catalogue des logiciels portés.
+Par défaut, la compatibilité binaire avec Linux n'est pas activée.
+Pour l'activer au démarrage, ajoutez cette ligne au fichier [.filename]#/etc/rc.conf#:
 
-Avant de tenter de compiler un logiciel, charger le module du noyau Linux(R), sinon la compilation risque d'échouer:
+[.programlisting]
+....
+linux_enable="YES"
+....
 
+Une fois activée, elle peut être lancée sans redémarrer en exécutant:
 [source,shell]
 ....
-# kldload linux
+# service linux start
 ....
 
-Pour une compatibilité en 64bits:
+La procédure [.filename]#/etc/rc.d/linux# changera les modules noyau nécessaires et montera sous [.filename]#/compat/linux# les systèmes de fichiers attendus par les applications Linux.
+Ceci est suffisant pour faire fonctionner les binaires Linux statiques.
+Ils peuvent être lancés de la même manière qu'un binaire natif FreeBSD; ils se comportent exactement de la même manière que des processus natifs et peuvent être suivis et debogués avec les méthodes habituelles.
+
+Les binaires Linux liés de manière dynamique (c'est la vaste majorité des cas) demandent à ce que les bibliothèques dynamiques partgées Linux soient installées - ils peuvent être exécutés par le noyau FreeBSD, mais ne peuvent pas utiliser les bibliothèques FreeBSD; c'est semblable au principe des binaires 32bits qui ne peuvent pas utiliser les bibliothèques natives 64bits.
+Il existe plusieurs méthodes pour mettre à disposition ces
+bibliothèques: on peut les copier à partir d'une installation Linux
+existante utilisant la même architecture, les installer à partir des
+paquets binaires FreeBSD, ou les installer en utilisant
+man:deboostrap[8] (à partir de package:sysutils/debootstrap[]), etc.
+
+[[linuxemu-packages]]
+== Système de base CentOS à partir des paquets binaires FreeBSD
+
+[NOTE]
+====
+Cette méthode n'est pas encore applicable sous arm64.
+====
+
+La méthode la plus simple pour installer les bibliotèques Linux est
+d'installer la version pré-compilée ou la version compilée à partir du catalogue des logiciels portés package:emulators/linux_base-c7[], qui placera le système de base dérivé de CentOS 7 dans le répertoire [.filename]#/compat/linux#:
 
 [source,shell]
 ....
-# kldload linux64
+# pkg install linux_base-c7
 ....
 
-Pour vérifier que le module est bien chargé:
-
+FreeBSD fournit les paquets des binaires Linux de certaines applications.
+Par exemple, pour installer Sublime Text 4, avec les bibliothèques Linux
+nécessaires, exécuter la commande suivante:
 [source,shell]
 ....
-% kldstat
-      Id Refs Address    Size     Name
-      1    2 0xc0100000 16bdb8   kernel
-      7    1 0xc24db000 d000     linux.ko
+# pkg install linux-sublime-text4
 ....
 
-Le logiciel précompilé package:emulators/linux_base-c7[] 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(R) sur un système FreeBSD. Pour installer le logiciel porté:
+[[linuxemu-debootstrap]]
+== Système de base Debian / Ubuntu avec man:debootstrap[8]
+
+Une autre solution pour disposer des bibliothèques partagées Linux est
+l'utilisation de package:sysutils/debootstrap[].
+Cela a pour avantage de disposer d'une distribution complète Debian ou
+Ubuntu.  Pour l'utiliser, suivez les instructions données sur le Wiki
+FreeBSD: https://wiki.freebsd.org/LinuxJails[FreeBSD Wiki - Linux Jails].
+
+Après cette installation, utilisez man:chroot[8] dans le répertoire nouvellement créé et installez le logiciel suivant la manière classique sous la distribution Linux installée, par exemple:
 
 [source,shell]
 ....
-# pkg install emulators/linux_base-c7
+# chroot /compat/ubuntu /bin/bash
+root@hostname:/# apt update
 ....
 
-Pour activer au démarrage la compatibilité Linux(R), ajouter ligne suivante au fichier [.filename]#/etc/rc.conf#:
+Il est possible d'utiliser debootstrap dans le répertoire [.filename]#/compat/linux#, mais cela est déconseillé pour éviter les colisions avec les fichiers installés à partir des logiciels portés ou pré-compilés FreeBSD.
+A la place, utilisez un nom de répertoire dérivé du nom ou de la version de la distribution, e.g., [.filename]#/compat/ubuntu#.
+Si l'instance debootstrap est destinée à fournir des bibliothèques partagées Linux sans utiliser explicitement chroot ou les jails, on peut faire pointer le noyau dessus en modifiant le paramètre sysctl `compat.linux.emul_path` et en ajoutant une ligne comme ce qui suit au fichier [.filename]#/etc/sysctl.conf#:
 
 [.programlisting]
 ....
-linux_enable="YES"
+compat.linux.emul_path="/compat/ubuntu"
 ....
 
-Sur les machines 64bits, [.filename]#/etc/rc.d/abi# chargera automatiquement le module pour l'émulation 64bits.
+Ce paramètre sysctl contrôle le mécanisme de traduction du chemin du noyau, consultez man:linux[4] pour plus de détails.
+Veuillez noter que ce changement peut être à l'origine de problèmes pour les applications Linux installées à partir des paquets binaires FreeBSD; une des raisons est que beaucoup de ces applications sont toujours en 32bits, alors qu'Ubuntu semble abandonner le support des bibliothèques 32bits.
+
+[[linuxemu-advanced]]
+== Sujets avancés
+
+La couche de compatibilité Linux est un travail en constante progression.
+Consultez https://wiki.freebsd.org/Linuxulator[FreeBSD Wiki - Linuxulator] pour plus d'informations.
 
-Depuis qu'à été ajouté le support pour l'exécution des binaires Linux(R) 32 et 64 bits à la couche de compatibilité Linux(R) (sur les hôtes 64 bits de type x86), il n'est plus possible d'ajouter l'émulation en statique dans un noyau personnalisé.
+Tous les paramètres man:sysctl[8] relatifs à Linux peuvent être trouvés dans la page de manuel man:linux[4].
 
-Pour certaines applications, [.filename]#/compat/linux/proc#,
-[.filename]#/compat/linux/sys#, et [.filename]#/compat/linux/dev/shm#
-pourront nécessiter d'être montés.  Ajoutez la ligne suivante au fichier
-[.filename]#/etc/fstab#:
+Certaines applications ont besoin que des systèmes de fichiers spécifiques soient montés.
+Cela est normalement géré par la procédure [.filename]#/etc/rc.d/linux#, mais peut être désactivé en ajoutant la ligne suivante au fichier [.filename]#/etc/rc.conf#:
 
+[.programlisting]
 ....
-linprocfs  /compat/linux/proc     linprocfs   rw            0   0
-linsysfs   /compat/linux/sys      linsysfs    rw            0   0
-tmpfs      /compat/linux/dev/shm  tmpfs       rw,mode=1777  0   0
+linux_mounts_enable="NO"
 ....
 
-Puis montez les systèmes de fichiers en conséquence:
+Les systèmes de fichiers montés par la procédure rc ne fonctionneront
+pas pour les processus Linux à l'intérieur de jail ou chroot; si
+nécessaire, configurez-les dans [.filename]#/etc/fstab#:
+....
+devfs      /compat/linux/dev      devfs      rw,late                    0  0
+tmpfs      /compat/linux/dev/shm  tmpfs      rw,late,size=1g,mode=1777  0  0
+fdescfs    /compat/linux/dev/fd   fdescfs    rw,late,linrdlnk           0  0
+linprocfs  /compat/linux/proc     linprocfs  rw,late                    0  0
+linsysfs   /compat/linux/sys      linsysfs   rw,late                    0  0
+....
 
-[source,shell]
-----
-# mount /compat/linux/sys
-# mount /compat/linux/proc
-# mount /compat/linux/dev/shm
-----
+Depuis qu'à été ajouté le support pour l'exécution des binaires Linux 32 et 64 bits à la couche de compatibilité Linux (sur les hôtes 64 bits de type x86), il n'est plus possible d'ajouter l'émulation en statique dans un noyau personnalisé.
 
 [[linuxemu-libs-manually]]
 === Installer des bibliothèques supplémentaires à la main
 
-Si une application Linux(R) se plaint de l'absence d'une bibliothèque partagée après avoir configuré la compatibilité binaire Linux(R), déterminez quelle est la bibliothèque partagée nécessaire au binaire Linux(R) et installez-la à la main.
+[NOTE]
+====
+Pour un système de base dont l'arborescence a été créée avec man:debootstrap[8], utilisez les instructions données plus haut.
+====
+
+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.
 
-A partir d'un système Linux(R), la commande `ldd` 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 à `linuxdoom`, exécuter cette commande à partir d'un système Linux(R) où est installé Doom:
+A partir d'un système Linux utilisant un processeur de même architecture, la commande `ldd` 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 à `linuxdoom`, exécuter cette commande à partir d'un système Linux où est installé Doom:
 
 [source,shell]
 ....
@@ -151,7 +198,7 @@ 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
 ....
 
-Ensuite, copier tous les fichiers mentionnés dans la dernière colonne, du système sous Linux(R) vers [.filename]#/compat/linux# sur le système FreeBSD. 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 FreeBSD:
+Ensuite, copier tous les fichiers mentionnés dans la dernière colonne, du système sous Linux vers [.filename]#/compat/linux# sur le système FreeBSD. 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 FreeBSD:
 
 [source,shell]
 ....
@@ -163,7 +210,7 @@ Ensuite, copier tous les fichiers mentionnés dans la dernière colonne, du syst
 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29
 ....
 
-Si une bibliothèque Linux(R) 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 `ldd`, 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.
+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 `ldd`, 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.
 
 Par exemple, les bibliothèques suivantes existent déjà sur le système FreeBSD:
 
@@ -188,11 +235,12 @@ Etant donné que la bibliothèque existante n'a qu'une ou deux versions de retar
 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29
 ....
 
-Généralement, vous ne devrez chercher à savoir de quelles bibliothèques partagées dépendent les binaires Linux(R) que les premières fois que vous installerez des programmes Linux(R) sur le système FreeBSD. Au bout d'un moment, il y aura un ensemble suffisant de bibliothèques partagées Linux(R) sur le système pour être en mesure d'exécuter les binaires Linux(R) nouvellement importés sans effort supplémentaire.
+Généralement, vous ne devrez chercher à 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 FreeBSD. 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.
 
-=== Installer des binaires Linux(R) ELF
+=== Marquage des binaires Linux ELF
 
-Une étape supplémentaire est parfois nécessaire pour les binaires ELF. Quand un binaire ELF non marqué est exécuté, une erreur sera générée:
+Le noyau FreeBSD utilise plusieurs méthodes pour déterminer si le binaire à exécuter est pour Linux: il contrôle le marquage dans l'entête ELF du fichier, recherche les chemins connus vers l'interpréteur ELF et contrôle les notes dans le fichier ELF; enfin, par défaut, les exécutables ELF non marqués sont considérés comme étant pour Linux.
+Si toutes ces méthodes échouent, une tentative pour exécuter le binaire pourra générer une erreur:
 
 [source,shell]
 ....
@@ -201,18 +249,16 @@ ELF binary type not known
 Abort
 ....
 
-Pour que le noyau FreeBSD puisse distinguer un binaire ELF FreeBSD d'un binaire Linux(R), vous devez employer l'utilitaire man:brandelf[1]:
+Pour que le noyau FreeBSD puisse distinguer un binaire ELF FreeBSD d'un binaire Linux, vous devez employer l'utilitaire man:brandelf[1]:
 
 [source,shell]
 ....
 % brandelf -t Linux mon-binaire-elf-linux
 ....
 
-Les outils GNU incorporent désormais automatiquement les marques nécessaires dans les binaires ELF, cette étape n'est généralement pas nécessaire.
-
-=== Installer une application Linux(R) basée sur RPM
+=== Installer une application Linux basée sur RPM
 
-Pour installer une application Linux(R) basée sur RPM, installer en premier le logiciel précompilé ou porté package:archivers/rpm4[]. Une fois installé, `root` peut utiliser la commande suivante pour installer un [.filename]#.rpm#:
+Pour installer une application Linux basée sur RPM, installer en premier le logiciel précompilé ou porté package:archivers/rpm4[]. Une fois installé, `root` peut utiliser la commande suivante pour installer un [.filename]#.rpm#:
 
 [source,shell]
 ....
@@ -240,16 +286,16 @@ order hosts, bind
 multi on
 ....
 
-Cela indique qu'il faut tout d'abord regarder dans le fichier [.filename]#/etc/hosts# puis interroger le DNS. Quand le fichier [.filename]#/compat/linux/etc/host.conf# n'existe pas, les applications Linux(R) trouvent le fichier [.filename]#/etc/host.conf# et se plaignent de sa syntaxe FreeBSD incompatible. Supprimez `bind` si un serveur de noms n'est pas configuré avec le fichier [.filename]#/etc/resolv.conf#.
+Cela indique qu'il faut tout d'abord regarder dans le fichier [.filename]#/etc/hosts# puis interroger le DNS. Quand le fichier [.filename]#/compat/linux/etc/host.conf# n'existe pas, les applications Linux trouvent le fichier [.filename]#/etc/host.conf# et se plaignent de sa syntaxe FreeBSD incompatible. Supprimez `bind` si un serveur de noms n'est pas configuré avec le fichier [.filename]#/etc/resolv.conf#.
 
-[[linuxemu-advanced]]
-== Sujets avancés
+[[linuxemu-misc]]
+=== Divers
 
-Cette section décrit comment la compatibilité binaire avec Linux(R) fonctionne, et est basée sur un courrier électronique de Terry Lambert mailto:tlambert@primenet.com[tlambert@primenet.com] envoyé à la {freebsd-chat} (Message ID: `199906020108.SAA07001@usr09.primenet.com`).
+Cette section décrit comment la compatibilité binaire avec Linux fonctionne, et est basée sur un courrier électronique de Terry Lambert mailto:tlambert@primenet.com[tlambert@primenet.com] envoyé à la {freebsd-chat} (Message ID: `199906020108.SAA07001@usr09.primenet.com`).
 
 FreeBSD possède une abstraction appelée "chargeur de classe d'exécution". C'est une portion de l'appel système man:execve[2].
 
-Historiquement, le chargeur UNIX(R) 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 c'était le cas, invoquait le chargeur binaire.
+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 c'était le cas, invoquait le chargeur binaire.
 
 Si ce n'était pas le type de binaire du 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. Cette hypothèse était celle par défaut "quel que soit l'interpréteur de commandes actuel".
 
@@ -257,23 +303,23 @@ Plus tard, une modification a été faite sur man:sh[1] pour examiner les deux p
 
 FreeBSD possède désormais une liste de chargeurs, avec un chargeur par défaut, `#!`, pour exécuter les interpréteurs ou les procédures de commandes.
 
-Pour le support de l'ABI Linux(R), FreeBSD voit le nombre magique comme un binaire ELF. Le chargeur ELF recherche une _marque_ 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(TM) ELF.
+Pour le support de l'ABI Linux, FreeBSD voit le nombre magique comme un binaire ELF. Le chargeur ELF recherche une _marque_ 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(TM) ELF.
 
-Pour que les binaires Linux(R) puissent fonctionner, ils doivent être _marqués_ sous le type `Linux` avec man:brandelf[1]:
+Pour que les binaires Linux puissent fonctionner, ils doivent être _marqués_ sous le type `Linux` avec man:brandelf[1]:
 
 [source,shell]
 ....
 # brandelf -t Linux file
 ....
 
-Lorsque le chargeur ELF voit le marquage `Linux`, le chargeur remplace un pointeur dans la structure `proc`. Tous les appels système sont indexés par l'intermédiaire de ce pointeur (dans un système UNIX(R) traditionnel, cela serait la structure `sysent[]`, contenant les appels système). De plus, le processus est marqué pour une gestion spéciale du vecteur d'interruption ("trap") pour le signal de code "trampoline", et plusieurs autres corrections (mineures) qui sont gérées par le noyau Linux(R).
+Lorsque le chargeur ELF voit le marquage `Linux`, le chargeur remplace un pointeur dans la structure `proc`. Tous les appels système sont indexés par l'intermédiaire de ce pointeur (dans un système UNIX traditionnel, cela serait la structure `sysent[]`, contenant les appels système). De plus, le processus est marqué pour une gestion spéciale du vecteur d'interruption ("trap") pour le signal de code "trampoline", et plusieurs autres corrections (mineures) qui sont gérées par le noyau Linux.
 
-Le vecteur d'appel système Linux(R) contient, entre autres, une liste des entrées `sysent[]` dont les adresses résident dans le noyau.
+Le vecteur d'appel système Linux contient, entre autres, une liste des entrées `sysent[]` dont les adresses résident dans le noyau.
 
-Quand un appel système est effectué par le binaire Linux, le code "trap" déréférence de la structure `proc` le pointeur de la fonction de l'appel système, et utilise les points d'entrée Linux(R), et non pas FreeBSD, de l'appel système.
+Quand un appel système est effectué par le binaire Linux, le code "trap" déréférence de la structure `proc` le pointeur de la fonction de l'appel système, et utilise les points d'entrée Linux, et non pas FreeBSD, de l'appel système.
 
-Le mode Linux(R) _redéfinit dynamiquement_ l'origine des requêtes. C'est, en effet, équivalent à l'option `union` 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#. Si cela échoue, la recherche est effectuée dans le répertoire [.filename]#/chemin-origine#. Cela permet de s'assurer que les binaires nécessitant d'autres binaires puissent s'exécuter. Par exemple, l'ensemble des outils Linux(R) peuvent tourner sous l'ABI Linux(R). Cela signifie également que les binaires Linux(R) peuvent charger et exécuter les binaires FreeBSD, s'il n'y a pas de binaires Linux(R) correspondant présents, et vous pourriez placer une commande man:uname[1] dans l'arborescence [.filename]#/compat/linux# pour vous assurer que les binaires Linux(R) ne puissent pas dire qu'ils ne tournent pas sous Linux(R).
+Le mode Linux _redéfinit dynamiquement_ l'origine des requêtes. C'est, en effet, équivalent à l'option `union` 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#. Si cela échoue, la recherche est effectuée dans le répertoire [.filename]#/chemin-origine#. 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 charger et exécuter les binaires FreeBSD, s'il n'y a pas de binaires Linux correspondant présents, et vous pourriez placer une commande man:uname[1] dans l'arborescence [.filename]#/compat/linux# pour vous assurer que les binaires Linux ne puissent pas dire qu'ils ne tournent pas sous Linux.
 
-En effet, il y a un noyau Linux(R) dans le noyau FreeBSD. 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 FreeBSD et Linux(R): les opérations sur les systèmes de fichiers, les opérations sur la mémoire virtuelle, la gestion des signaux, iet l'IPC System V. La seule différence est que les binaires FreeBSD utilisent les fonctions _glue_ de FreeBSD, et les binaires Linux(R) celles de Linux(R). Les fonctions _glue_ de FreeBSD sont liées en statique dans le noyau, les fonctions _glue_ Linux(R) peuvent être liées statiquement, ou l'on peut y accéder via un module du noyau.
+En effet, il y a un noyau Linux dans le noyau FreeBSD. 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 FreeBSD et Linux: les opérations sur les systèmes de fichiers, les opérations sur la mémoire virtuelle, la gestion des signaux, iet l'IPC System V. La seule différence est que les binaires FreeBSD utilisent les fonctions _glue_ de FreeBSD, et les binaires Linux celles de Linux. Les fonctions _glue_ de FreeBSD sont liées en statique dans le noyau, les fonctions _glue_ Linux peuvent être liées statiquement, ou l'on peut y accéder via un module du noyau.
 
-Techniquement, ce n'est pas vraiment de l'émulation, c'est l'implémentation d'une interface binaire pour les applications (ABI). Cela est parfois appelé "émulation Linux(R)" 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 FreeBSD exécutait les binaires Linux(R) n'était pas vrai, jusqu'à ce le code de support Linux(R) soit compilé ou le module soit chargé.
+Techniquement, ce n'est pas vraiment de l'émulation, c'est l'implémentation d'une interface binaire pour les applications (ABI). Cela est parfois appelé "émulation Linux" 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 FreeBSD exécutait les binaires Linux n'était pas vrai, jusqu'à ce le code de support Linux soit compilé ou le module soit chargé.