From owner-svn-doc-all@freebsd.org Sun Apr 16 16:26:30 2017 Return-Path: Delivered-To: svn-doc-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 8DE4ED40A30; Sun, 16 Apr 2017 16:26:30 +0000 (UTC) (envelope-from blackend@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 2BA971F0C; Sun, 16 Apr 2017 16:26:30 +0000 (UTC) (envelope-from blackend@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3GGQTJY006076; Sun, 16 Apr 2017 16:26:29 GMT (envelope-from blackend@FreeBSD.org) Received: (from blackend@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3GGQTWd006075; Sun, 16 Apr 2017 16:26:29 GMT (envelope-from blackend@FreeBSD.org) Message-Id: <201704161626.v3GGQTWd006075@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: blackend set sender to blackend@FreeBSD.org using -f From: Marc Fonvieille Date: Sun, 16 Apr 2017 16:26:29 +0000 (UTC) To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-head@freebsd.org Subject: svn commit: r50172 - head/fr_FR.ISO8859-1/books/handbook/linuxemu X-SVN-Group: doc-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-doc-all@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the entire doc trees \(except for " user" , " projects" , and " translations" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Apr 2017 16:26:30 -0000 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 --> - Compatibilité binaire avec Linux + Compatibilité binaire avec &linux; JimMockRestructuré et en partie mis à jour par @@ -30,67 +30,46 @@ Linux - &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. - - 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 &staroffice;, - la version Linux de &netscape;, - &adobe; &acrobat;, - &realplayer;, - VMware, - &oracle;, - &wordperfect;, Doom, - Quake, et plus. On rapporte + &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. + sont plus performants sous &os; que sous &linux;,. 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. + + Le support de la compatibilité &linux; pour les binaires + 64bits a été ajouté avec &os; 10.3. + + Après la lecture de ce chapitre, vous connaîtrez: Comment activer la compatibilité binaire avec - Linux sur votre système. + &linux; sur un système &os;. - Comment installer des bibliothèques partagées Linux + Comment installer des bibliothèques partagées &linux; supplémentaires. - Comment installer des application Linux sur votre + Comment installer des application &linux; sur un système &os;. Les détails de l'implémentation de la - compatibilité Linux sous &os;. + compatibilité &linux; sous &os;. @@ -98,280 +77,208 @@ - Savoir comment installer des logiciels tiers - (). + Savoir comment installer des logiciels tiers. - Installation + Configurer la compatibilité binaire avec &linux; + + Catalogue des logiciels portés - KLD (kernel loadable object) + 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. - 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 - linux (Kernel LoaDable - object—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 - root: + Avant de tenter de compiler un logiciel, charger le module + du noyau &linux;, sinon la compilation risque d'échouer: &prompt.root; kldload linux - Si vous désirez que la compatibilité Linux soit - toujours activée, alors vous devrez ajouter la ligne - suivante au fichier /etc/rc.conf: + Pour une compatibilité en 64bits: - linux_enable="YES" + &prompt.root; kldload linux64 - La commande &man.kldstat.8; peut être utilisée - pour vérifier que le KLD est chargé: + Pour vérifier que le module est bien chargé: &prompt.user; kldstat -Id Refs Address Size Name - 1 2 0xc0100000 16bdb8 kernel - 7 1 0xc24db000 d000 linux.ko + Id Refs Address Size Name + 1 2 0xc0100000 16bdb8 kernel + 7 1 0xc24db000 d000 linux.ko + + Le logiciel précompilé + emulators/linux_base-c6 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;. + + &prompt.root; printf "compat.linux.osrelease=2.6.18\n" >> /etc/sysctl.conf +&prompt.root; sysctl compat.linux.osrelease=2.6.18 +&prompt.root; pkg install emulators/linux_base-c6 + + Pour activer au démarrage la compatibilité &linux;, ajouter + ligne suivante au fichier + /etc/rc.conf: + + linux_enable="YES" + + Sur les machines 64bits, /etc/rc.d/abi + chargera automatiquement le module pour l'émulation + 64bits. options du noyau - LINUX + COMPAT_LINUX - 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 options - COMPAT_LINUX à votre fichier de configuration du noyau. - Puis installez votre noyau comme décrit dans la + Les utilisateurs préférant lier statiquement la + compatibilité binaire &linux; dans leur noyau devront ajouter + options COMPAT_LINUX à leur fichier de + configuration du noyau. Puis compiler et installer le nouveau + noyau comme décrit dans la . - - Installer les bibliothèques Linux + + Installer des bibliothèques supplémentaires à la main + - Linux - installer les bibliothèques Linux + bibliothèques partagées - Cela peut être fait de deux manières, soit - en utilisant le logiciel porté - linux_base, soit - en les installant à la main. - - - Installation à l'aide du logiciel porté - linux_base - catalogue des logiciels - portés - - 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 - catalogue - des logiciels portés. - Faites ce qui suit: - - &prompt.root; cd /usr/ports/emulators/linux_base-fc4 -&prompt.root; make install distclean - - 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. - - Il peut y avoir de multiples versions disponibles - du logiciel porté emulators/linux_base, 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. - - - - Installer les bibliothèques à la main - - 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”), - /compat/linux, 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, /lib/libc.so, - &os; essayera d'abord d'ouvrir - /compat/linux/lib/libc.so, puis si - cette bibliothèque n'existe pas, - /lib/libc.so. Les bibliothèques - partagées doivent donc être installées - sous l'arborescence /compat/linux/lib - plutôt que sous les chemins d'accès - mentionnés par la commande Linux - ld.so. - - 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. - - - - Comment installer des bibliothèques - partagées supplémentaires - bibliothèques - partagées - - Que faire si vous avez installé le logiciel - porté linux_base 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 - root). - - 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: - - - Supposons que vous veniez de télécharger - le binaire Linux de Doom, - 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 - ldd linuxdoom: + 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;, 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: - &prompt.user; ldd linuxdoom + &prompt.user; ldd linuxdoom 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 - liens symboliques - Vous devrez récupérer tous les - fichiers mentionnés dans la dernière colonne, - et les installer sous /compat/linux, - 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;: + + liens symboliques + + + Ensuite, copier tous les fichiers mentionnés dans la + dernière colonne, du système sous &linux; vers + /compat/linux 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;: - /compat/linux/usr/X11/lib/libXt.so.3.1.0 + /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 -
- - 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 ldd, 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: + 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. - /compat/linux/lib/libc.so.4.6.27 + Par exemple, les bibliothèques suivantes existent déjà sur + le système &os;: + + /compat/linux/lib/libc.so.4.6.27 /compat/linux/lib/libc.so.4 -> libc.so.4.6.27 - et que vous avez un nouveau binaire qui - d'après le résultat de la commande - ldd semble avoir besoin d'une - version plus récente: - - libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29 - Si vous n'avez qu'une ou deux versions de retard - sur le dernier indice, alors ne vous souciez pas - d'installer la version - /lib/libc.so.4.6.29 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 - libc.so, ce qui devrait vous - donner quelque chose comme: + et ldd indique qu'un binaire a besoin + d'une version plus récente: + + libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29 - /compat/linux/lib/libc.so.4.6.29 + 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 + libc.so existante avec la version plus + récente: + + /compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29 - -
-
- - 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. - -
-
-
+ 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.
- Installer des binaires Linux ELF + Installer des binaires &linux; <acronym>ELF</acronym> Linux binaires ELF 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: + nécessaire pour les binaires ELF. Quand + un binaire ELF non marqué est exécuté, une + erreur sera générée:
&prompt.user; ./mon-binaire-elf-linux ELF binary type not known Abort - Pour que le noyau &os; puisse distinguer un binaire ELF - &os; d'un binaire Linux, vous devez employer l'utilitaire - &man.brandelf.1;: + Pour que le noyau &os; puisse distinguer un binaire + ELF &os; d'un binaire &linux;, vous devez + employer l'utilitaire &man.brandelf.1;: &prompt.user; brandelf -t Linux mon-binaire-elf-linux outils GNU 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. + les marques nécessaires dans les binaires ELF, + cette étape n'est généralement pas nécessaire. + + + + Installer une application &linux; basée sur + <acronym>RPM</acronym> + + Pour installer une application &linux; basée sur + RPM, installer en premier le logiciel + précompilé ou porté archivers/rpm4. Une + fois installé, root + peut utiliser la commande suivante pour installer un + .rpm: + + &prompt.root; cd /compat/linux +&prompt.root; rpm2cpio < /path/to/linux.archive.rpm | cpio -id + + Si nécessaire, utiliser brandelf sur + les binaires ELF installés. Il faut noter + que cela empêchera une desinstallation propre. Configurer le résolveur de noms de domaines - Si le DNS ne fonctionne pas, ou si vous avez les - messages: + Si le DNS ne fonctionne pas, ou si cette + erreur apparaît:: resolv+: "bind" is an invalid keyword resolv+: "hosts" is an invalid keyword @@ -383,19 +290,21 @@ Abort order hosts, bind multi on - Où l'ordre ci-dessus spécifie qu'il faut tout + Cela indique qu'il faut tout d'abord regarder dans le fichier /etc/hosts - puis interroger le DNS. Quand le fichier + puis interroger le DNS. Quand le fichier /compat/linux/etc/host.conf n'existe pas, - les applications Linux trouvent le fichier - /etc/host.conf de &os; et se plaignent de + les applications &linux; trouvent le fichier + /etc/host.conf et se plaignent de sa syntaxe &os; incompatible. Supprimez - bind si vous n'avez pas configuré de - serveur de noms avec le fichier + bind si un serveur de noms n'est pas configuré + avec le fichier /etc/resolv.conf.
+ Installer &mathematica; @@ -3693,34 +3602,26 @@ options SHMMAXPGS=393216 + ?> Sujets avancés - 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 + Cette section décrit comment la + compatibilité binaire avec &linux; fonctionne, et est basée + sur un courrier électronique de Terry Lambert tlambert@primenet.com envoyé à la &a.chat; (Message ID: <199906020108.SAA07001@usr09.primenet.com>). - - Comme ça marche? - - chargeur de classe d'exécution + chargeur de classe + d'exécution &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;. - 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 - #! pour exécuter n'importe quel - interpréteur de commandes ou procédure. - - Historiquement, l'unique chargeur sur les plate-formes + 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. - - Cette hypothèse est celle par défaut quelque - soit l'interpréteur de commandes actuel. + d'interpréteur. Cette hypothèse était celle par défaut + quelque soit l'interpréteur de commandes + actuel. Plus tard, une modification a été faite sur &man.sh.1; pour examiner les deux premiers caractères, et s'ils étaient :\n, 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). + à la place. + + &os; 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. - Ce que fait maintenant &os; est de parcourir une liste de - chargeurs, avec un chargeur #! - 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 /bin/sh. - ELF - - 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). - Solaris + + ELF + - Le chargeur ELF recherche une marque - spécifique, qui se trouve dans une section de commentaire + + Solaris + + + Pour le support de l'ABI &linux;, &os; + 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; ELF. - Pour que les binaires Linux puissent fonctionner, ils + Pour que les binaires &linux; puissent fonctionner, ils doivent être marqués sous le type Linux avec &man.brandelf.1;: &prompt.root; brandelf -t Linux file - Quand cela est fait, le chargeur ELF verra le marquage - Linux sur le fichier. ELF marquage @@ -3778,7 +3674,7 @@ options SHMMAXPGS=393216 Lorsque le chargeur ELF voit le marquage Linux, le chargeur remplace un pointeur dans la structure proc. 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 sysent[], 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. + &linux;. - Le vecteur d'appel système Linux contient, entre + Le vecteur d'appel système &linux; contient, entre autres, une liste des entrées sysent[] dont les adresses résident dans le noyau. @@ -3798,76 +3694,52 @@ options SHMMAXPGS=393216 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, + système, et utilise les points d'entrée &linux;, et non pas &os;, de d'appel système. - De plus, le mode Linux redéfinit dynamiquement - l'origine des requêtes; c'est, en effet, ce qu'effectue - l'option (pas le - type de système de fichiers - unionfs!) de montage des systèmes de + Le mode &linux; redéfinit dynamiquement + l'origine des requêtes. C'est, en effet, équivalent à + l'option de montage des systèmes de fichiers. Tout d'abord, une tentative est faite pour - rechercher le fichier dans le répertoire /compat/linux/chemin-origine, - puis uniquement si cela échoue, la + rechercher le fichier dans le répertoire /compat/linux/chemin-origine. + Si cela échoue, la recherche est effectuée dans le répertoire - /chemin-origine. + /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 + 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 /compat/linux pour vous - assurer que les binaires Linux ne puissent pas dire qu'ils ne - tournent pas sous Linux. + assurer que les binaires &linux; ne puissent pas dire qu'ils ne + tournent pas sous &linux;. - En effet, il y a un noyau Linux dans le noyau &os;; les + 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 glue de &os;, et les - binaires Linux celles de Linux (les plus anciens - systèmes d'exploitation avaient uniquement leurs - propres fonctions de glue: les adresses - des fonctions dans une structure sysent[] - statique globale, au lieu des adresses des fonctions - déréférencées d'un pointeur - initialisé dynamiquement pointant vers la structure - proc du processus faisant l'appel). - - 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 glue de &os; sont liées en statique dans le noyau, les fonctions - glue Linux peuvent être + glue &linux; peuvent être liées statiquement, ou l'on peut y accéder via un module du noyau. - 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é. - - 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”. - + 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 &os; exécutait les binaires &linux; + n'était pas vrai, jusqu'à ce le code de support &linux; soit + compilé ou le module soit chargé.