¿Qué le permite a BSD ejecutar binarios Linux (y otros similares a Unix), pero Linux (y otros similares a Unix en su mayor parte) no pueden ejecutar binarios BSD?
¿Qué le permite a BSD ejecutar binarios Linux (y otros similares a Unix), pero Linux (y otros similares a Unix en su mayor parte) no pueden ejecutar binarios BSD?
Respuestas:
Las fuerzas del mercado.
Hay muchos más programas dirigidos específicamente a Linux que a * BSD. Una gran cantidad de código fuente de software es lo suficientemente portátil como para que pueda compilarse en ambos, pero muchos productores de software que envían binarios de Linux no se molestan en hacerlo para los BSD, ya que tienen cuotas de mercado más pequeñas que Linux, en general. ¹
Si una pieza de software solo está disponible en forma binaria para un sistema operativo diferente, la emulación ABI es una forma de hacer que se ejecute, que es lo que hacen los BSD.
Érase una vez, cuando x86 Unix tenía una mayoría de mercado sobre Linux, la característica iBCS se agregó a Linux para permitirle ejecutar binarios creados para SCO Unix y demás . El interés en esta característica disminuyó a medida que aumentó la participación de mercado de Linux, por lo que se dejó caer en mal estado durante la serie de desarrollo Linux 2.3 .³ Las demandas de SCO ayudaron a sacar esta característica de Linux, pero creo que eso es secundario a la pérdida del mercado fuerza que dio origen a la característica.
No hay ninguna razón técnica por la que Linux algún día no pueda obtener una característica similar a iBCS para ejecutar binarios BSD, pero no es probable a menos que las posiciones de mercado de BSD y Linux cambien por alguna razón.
Hoy en día, hay poca necesidad de tal cosa. ¿De cuántos programas binarios solo para BSD conoce, que tampoco están diseñados para Linux? Debe haber algunos, pero supongo que la mayoría de ellos son para BSD integrados, como Junos . Dicha característica no se creará si no permite que se ejecute un conjunto importante de programas en Linux que de otro modo no se ejecutarían.
Notas al pie:
No estoy contando OS X como un BSD aquí, ya que es un problema de compatibilidad binaria separado. FreeBSD, OpenBSD y NetBSD usan ELF en x86, mientras que OS X usa un formato ejecutable completamente diferente . El enlace dinámico también es muy diferente en OS X que en los BSD x86 tradicionales.
Consulte esta pregunta para obtener más información sobre la historia de compatibilidad binaria de Linux ⇔ OS X.
Al igual que con ciertas especies de tiburones , el software que deja de avanzar muere. Llamamos a este fenómeno podredumbre en lugar de asfixia cuando le sucede al software, pero la causa y el efecto son los mismos.
Contraste NDISwrapper , que permite que Linux ejecute controladores de tarjeta de red solo binarios escritos para Windows XP. Se identifica una necesidad y se llena una necesidad. ¿Dónde está esta necesidad de ejecutar binarios solo BSD?
binfmt_misc
módulo, lo que le permite registrar controladores de formato binario arbitrarios. Algunas personas ejecutan aplicaciones Mono de esta manera, aunque creo que es raro. Pero como usted dice, nadie ha tenido muchas razones para escribir un controlador * BSD binfmt.