GNU/Linux >> Tutoriales Linux >  >> Linux

¿Los diferentes kernels de Linux/Unix son intercambiables?

No, los núcleos de diferentes implementaciones de sistemas operativos de estilo Unix no son intercambiables, especialmente porque todos presentan diferentes interfaces con el resto del sistema (espacio de usuario), sus llamadas al sistema (incluidas ioctl específicos), los diversos sistemas de archivos virtuales que utilizan...

Lo que es intercambiable hasta cierto punto, a nivel de fuente, es la combinación del kernel y la biblioteca C, o más bien, las API de nivel de usuario que exponen el kernel y las bibliotecas (esencialmente, la vista en la capa descrita por POSIX, sin considerando si es en realidad 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á exactamente al nivel de la 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 volver a compilarlos. Un ejemplo es Intel Binary Compatibility Standard, que permite que los archivos binarios que se ajusten a él se ejecuten en cualquier sistema Unix que lo implemente, incluidas las versiones anteriores de Linux con la capa iBCS 2. Lo usé a finales de los 90 para ejecutar WordPerfect en Linux.

Vea también Cómo construir un chroot de FreeBSD dentro de Linux.


Algunos núcleos tienen compatibilidad binaria que le permite mezclar programas de espacio de usuario con diferentes ABI (por ejemplo, freebsd puede funcionar con binarios de Linux hasta cierto punto); sin embargo, los binarios centrales (por ejemplo, el programa init, el cargador de módulos, las herramientas de configuración del controlador de 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 externo con éxito.

Además, los sistemas de archivos tendrían que ser compatibles. Además, las opciones de compatibilidad binaria tendrían que compilarse "fuertemente" en el núcleo:todo lo que se implemente como un módulo del núcleo podrí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 sistemas debian basados ​​en freebsd, o configurar el sistema netbsd pkgsrc en linux (absolutamente no trivial, ¡pero soportado y posible!).


Linux
  1. Cómo verificar la versión del Kernel en Linux

  2. Linux:¿métodos de invocación de llamadas al sistema en el nuevo kernel?

  3. Comprobar e imprimir quién está iniciando sesión en Linux/Unix

  4. Principales diferencias entre el kernel de Linux y UNIX

  5. Kernel UNIX:Kernels reentrantes, sincronización y secciones críticas

Cómo cambiar entre diferentes kernels de Linux en Arch Linux

¿Linux es un sistema operativo o un kernel?

Historia de Unix y Linux

¿Sistema Linux congelado? Aquí hay 3 formas de lidiar con eso

Linux frente a Unix

¿Por qué los números de llamada del sistema Linux en x86 y x86_64 son diferentes?