¿Puedo tomar un kernel de Linux y usarlo con, por ejemplo, FreeBSD y viceversa (kernel de FreeBSD en, por ejemplo, un Debian)? ¿Hay una respuesta universal? ¿Cuáles son las limitaciones? ¿Cuáles son las obstrucciones?
linux
kernel
bsd
architecture
RonJohn
fuente
fuente
/proc
u otras campanas y silbatos específicos de Linux.Respuestas:
No, los núcleos de diferentes implementaciones de sistemas operativos de estilo Unix no son intercambiables, en particular porque todos presentan interfaces diferentes al resto del sistema (espacio de usuario): sus llamadas al sistema (incluidos los
ioctl
detalles), los diversos sistemas de archivos virtuales que utilizan. ..Lo que es intercambiable hasta cierto punto, a nivel fuente, es la combinación del núcleo y la biblioteca C, o más bien, las API de nivel de usuario que el núcleo y las bibliotecas exponen (esencialmente, la vista en la capa descrita por POSIX, sin considerando si en realidad es POSIX). Ejemplos de esto incluyen Debian GNU / kFreeBSD , que construye un sistema Debian sobre un núcleo FreeBSD, y Debian GNU / Hurd , que construye un sistema Debian sobre Hurd.
Esto no está en el nivel de intercambiabilidad del kernel, pero ha habido intentos de estandarizar una interfaz binaria de aplicación común, para permitir que los binarios se usen en varios sistemas sin necesidad de recompilación. Un ejemplo es el Estándar de compatibilidad binaria de Intel , que permite que los binarios que se ajustan a él se ejecuten en cualquier sistema Unix que lo implemente, incluidas las versiones anteriores de Linux con la capa iBCS 2. Usé esto a fines de los 90 para ejecutar WordPerfect en Linux.
Vea también Cómo construir un chroot de FreeBSD dentro de Linux .
fuente
Algunos núcleos tienen compatibilidad binaria que le permite mezclar programas de espacio de usuario con diferentes ABI (p. Ej., Freebsd puede trabajar con binarios linux hasta cierto punto); sin embargo, los binarios principales (p. Ej., El programa init, el cargador de módulos, las herramientas de configuración del controlador del dispositivo, la biblioteca C , las herramientas necesarias para configurar los sistemas de archivos ...) en la práctica tendrán demasiada necesidad de saber acerca de las interfaces de nivel de kernel para arrancar un sistema con un kernel extraño con éxito.
Además, los sistemas de archivos tendrían que ser compatibles. Además, las opciones de compatibilidad binaria tendrían que compilarse "duro" en el núcleo; cualquier cosa implementada como un módulo del núcleo desearía fallar porque no podría ejecutar el cargador de módulos.
Como se mencionó, los entornos de usuario tienden a ser algo portátiles si está dispuesto a recompilar, como los sistemas debian basados en freebsd, o configurar el sistema netbsd pkgsrc en linux (¡absolutamente no trivial, pero compatible y posible!).
fuente