¿Qué le permite a BSD ejecutar binarios de Linux, pero no al revés?
42
¿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?
No sé, pero la respuesta podría tener algo que ver con sus licencias. Me imagino que BSD no es compatible con GPL, eso y la mayoría de los desarrolladores de Linux simplemente no mencionan el argumento BSD, es una palabra silenciosa.
Respuestas:
55
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?
Linux tiene la infraestructura para ejecutar binarios no nativos a través del binfmt_miscmó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.
KutuluMike
Esto fue realmente útil. Estaba mirando los manuales de FreeBSD (antes de hacer una pregunta), y decía que BSD puede manejar binarios cross- * nix, y Linux no podía, pero no lo explicó. Eso tiene sentido, aunque honestamente esperaba una razón más técnica, en lugar de que las fuerzas del mercado fueran la causa, pero honestamente parece que [las razones técnicas y la popularidad] están mucho más conectadas que yo.
No Time
3
Tenga en cuenta que no se trata solo de BSD. Ve exactamente esta misma tendencia en todos los Unices: en el pasado, Linux podía ejecutar casi cualquier binario de Unix: iBCS era compatible con Solaris, 386BSD, FreeBSD, NetBSD, BSDI / 386, SVR4 (Interactive, Unixware, USL, Dell, etc.) , SVR3 genérico, SCO, SCO OpenServer 5, Wyse V / 386, Xenix V / 386, Xenix 286 y probablemente algunos otros. Hoy en día, es al revés: todos los Unices modernos admiten la ejecución de binarios de Linux. ¡Hay dos ejemplos en los que esta característica se consideró tan importante que el proveedor incluso la puso en el nombre! (IBM AIX 5L para "Linux", HP-UX 11i para "integración".)
Jörg W Mittag
1
@ JörgWMittag Ni AIX 5L ni HP-UX 11i realmente ejecutan binarios de Linux, sin mencionar que no admiten la arquitectura x86 en primer lugar. Lo que podrían proporcionar es un entorno de desarrollo GNU que facilite la creación de binarios de AIX y HP-UX a partir del código fuente.
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.
FreeBSD ; OpenBSD ; NetBSD
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?
fuente
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.