Qu'est-ce qui permet à BSD d'exécuter des binaires Linux, mais pas l'inverse?

42

Qu'est-ce qui permet à BSD d'exécuter des fichiers binaires Linux (et autres systèmes similaires à Unix), mais Linux (et les autres systèmes similaires à Unix pour la plupart) ne peut pas exécuter des fichiers binaires BSD?

Pas le temps
la source
Je ne sais pas, mais la réponse pourrait avoir quelque chose à voir avec leurs licences. J'imagine que BSD n'est pas compatible avec la GPL, et que la plupart des développeurs Linux n'évoquent tout simplement pas l'argument de BSD, c'est un mot secret.

Réponses:

55

Les forces du marché.

Il y a beaucoup plus de programmes spécifiquement conçus pour Linux que pour * BSD. Une grande partie du code source du logiciel est suffisamment portable pour pouvoir être compilée sur les deux, mais de nombreux producteurs de logiciels qui envoient des fichiers binaires Linux ne se donnent pas la peine de le faire pour les BSD car ils détiennent des parts de marché inférieures à celles de Linux. ¹

Si un logiciel est uniquement disponible sous forme binaire pour un système d'exploitation différent, l'émulation ABI est un moyen de le faire fonctionner, comme le font les BSD.²

Il était une fois, quand xix Unix détenait une majorité du marché sur Linux, la fonctionnalité iBCS a été ajoutée à Linux pour lui permettre d'exécuter des fichiers binaires conçus pour SCO Unix, etc. L' intérêt pour cette fonction refusé que la part de marché de Linux a augmenté, de sorte qu'il a été autorisé à se délabrer au cours de la série de développement Linux 2.3 .³ Les procès SCO ont aidé à ouvrir la voie de cette fonctionnalité de Linux, mais je crois que ce secondaire à la perte du marché force qui a donné naissance à la fonctionnalité.

Il n’existe aucune raison technique pour laquelle Linux ne puisse un jour avoir une fonctionnalité semblable à iBCS pour exécuter les fichiers binaires BSD, mais il est peu probable que les positions de BSD et de Linux sur le marché basculent sur le marché pour une raison quelconque.

Aujourd’hui, il ya peu d’appel pour une telle chose. Combien de programmes binaires uniquement pour BSD avez-vous connaissance, qui ne sont pas également conçus pour Linux? Il doit y en avoir, mais je suppose que la plupart d'entre eux sont destinés aux BSD intégrés, tels que Junos . Une telle fonctionnalité ne sera pas créée si elle ne permet pas à un ensemble important de programmes de s'exécuter sur Linux qui ne serait autrement pas exécuté.


Notes de bas de page:

  1. Je ne considère pas OS X comme un BSD ici, car il s’agit d’un problème distinct de compatibilité binaire. FreeBSD, OpenBSD et NetBSD utilisent ELF sur x86, alors que OS X utilise un format exécutable totalement différent . La liaison dynamique est également très différente sous OS X par rapport aux BSD x86 traditionnels.

    Voir cette question pour plus d'informations sur l'histoire de compatibilité binaire Linux ⇔ OS X.

  2. FreeBSD ; OpenBSD ; NetBSD

  3. Comme avec certaines espèces de requin , un logiciel qui cesse d'avancer meurt. Nous appelons ce phénomène le bit-rot plutôt que l’asphyxie quand il s’agit d’un logiciel, mais la cause et l’effet sont les mêmes.

  4. Contraste NDISwrapper , qui permet à Linux d’exécuter des pilotes de carte réseau binaires uniquement écrits pour Windows XP. Un besoin est identifié et un besoin est comblé. Où faut-il utiliser des fichiers binaires BSD uniquement?

Warren Young
la source
3
Linux a l'infrastructure nécessaire pour exécuter des fichiers binaires non natifs via le binfmt_miscmodule, ce qui vous permet d'enregistrer des gestionnaires de format binaires arbitraires. Certaines personnes exécutent les applications Mono de cette façon, même si je pense que c'est rare. Mais comme vous le dites, personne n’a eu beaucoup de raisons d’écrire un gestionnaire de fichiers * BSD binfmt.
KutuluMike
C'était vraiment utile. Je cherchais simplement dans les manuels de FreeBSD (avant de poser la question) et disait que BSD pouvait gérer les binaires cross-nix, et que Linux ne le pouvait pas, mais cela ne l'expliquait pas. Cela a du sens, bien que, honnêtement, je m'attendais à une raison technique plutôt qu’à la cause des forces du marché, mais honnêtement, il semble que les [raisons techniques et la popularité] soient beaucoup plus étroitement liées que moi.
No Time
3
Notez qu'il ne s'agit pas uniquement de BSD. Vous voyez cette même tendance sur tous les Unices: à l’époque, Linux pouvait exécuter à peu près tout binaire Unix: iBCS pris en charge par Solaris, 386BSD, FreeBSD, NetBSD, BSDI / 386, SVR4 (interactif, Unixware, USL, Dell, etc.). , SVR3 générique, SCO, SCO OpenServer 5, Wyse V / 386, Xenix V / 386, Xenix 286 et probablement d’autres. De nos jours, c'est l'inverse: tous les Unices modernes supportent les binaires exécutant Linux. Il y a deux exemples où cette fonctionnalité a été jugée si importante que le fournisseur l'a même nommée! (IBM AIX 5L pour "Linux", HP-UX 11i pour "l'intégration".)
Jörg W Mittag
1
@ JörgWMittag Ni AIX 5L ni HP-UX 11i n'exécutent en réalité des fichiers binaires Linux, sans compter qu'ils ne prennent pas en charge l'architecture x86 à la base. Ce qu’ils pourraient fournir, c’est un environnement de développement GNU qui facilite la construction d’AIX, ainsi que des fichiers binaires HP-UX à partir du code source.
jlliagre