¿Es posible cambiar el núcleo en un sistema UNIX / Linux?

16

Quería saber si es posible cambiar los núcleos, por ejemplo, reemplazando el núcleo Linux de Fedora por el de FreeBSD.

Ahora, ya existía Debian GNU / kFreeBSD . ¿Es posible para mí personalizar una distribución de Linux para contener un núcleo BSD?

Cambiar
fuente
3
MacOSX es un núcleo basado en BSD totalmente compatible con POSIX. Y a diferencia de Linux, que afirma no ser un sistema Unix, OSX ES un sistema Unix (está certificado por The Open Group, propietario de la marca registrada Unix). No puede ejecutar aplicaciones de Linux en Mac y no puede ejecutar aplicaciones de Mac en Linux a pesar de que ambas se ejecutan en CPU Intel (bueno, técnicamente AMD64)
slebetman

Respuestas:

21

No, cada núcleo implementa sus propias características a su manera. Hay una gran cantidad de compatibilidad POSIX, pero una vez que salga de eso, los ejecutables deben compilarse con los mecanismos del kernel ya establecidos. Muchos proyectos contienen código fuente que solo se compila si dice explícitamente que está compilando para FreeBSD o Linux. Eso es esencialmente lo que es kFreeBSD. Las herramientas son compatibles con el núcleo de FreeBSD, pero deben compilarse para ello.

Por ejemplo, si intenta usar epoll_createen FreeBSD, las cosas no funcionarán como se esperaba.

Por supuesto, puede realizar una compilación cruzada de las herramientas desde un sistema BSD al estilo LFS, pero es probable que tome una eternidad. No es tan simple como compilar un nuevo núcleo.

Bratchley
fuente
1
Me gustaría escuchar su opinión sobre el núcleo MOOL , ya hay un sistema operativo que lo adapta, BOSS Linux.
Sri Harsha Chilakapati
Será interesante ver qué sucede, pero no lo he investigado lo suficiente como para decir algo inteligente al respecto.
Bratchley
1
Entonces, lo que dice es que si quiero crear un sistema BSD basado en el usuario GNU, debo recompilar todo el software GNU para el kernel BSD. ¿Estoy en lo correcto?
Cambie el
1
Cualquier cosa que utilice Linux-isms que sería casi todo. Puede ser más fácil comenzar con kFreeBSD e ir desde allí.
Bratchley
16

FreeBSD no usa un kernel de Linux, como su nombre lo indica, usa un kernel BSD.

Es posible reemplazar un kernel de Linux con un kernel de Linux diferente (ya sea uno que construyó usted mismo o uno que extrajo de una distribución). Tenga en cuenta que los programas de espacio de usuario en su distribución pueden depender de características particulares del núcleo que se compilarán, y pueden no funcionar correctamente si los ejecuta en un núcleo construido sin esas características. Por ejemplo, una distribución basada en systemd requerirá cgroups en el kernel.

Para el ejemplo que menciona, sí, se puede construir una distribución GNU para un kernel de Linux o para un kernel BSD. En muchos casos, existen diferencias en el tiempo de compilación (por ejemplo #ifdef) entre los programas compilados para los dos, incluso si los núcleos anuncian el mismo ABI. Como mínimo, las bibliotecas de bajo nivel, como la Biblioteca de tiempo de ejecución C, tienen que acomodar las diferentes ABI del núcleo.

Toby Speight
fuente
Impulsar para mencionar el cambio de biblioteca de tiempo de ejecución C.
Joshua
2

Kernel es la parte independiente y se reemplaza habitualmente durante las actualizaciones del sistema operativo. Algunos controladores propietarios (NVIDIA, etc.) tienen los scripts de instalación que conectan el controlador a la fuente del núcleo, construyen ese núcleo y reemplazan el núcleo actual con él. Por lo tanto, si desarrolla su propia versión del kernel que puede realizar todas las funciones requeridas, no debería ser un gran problema plantarlo y dejar el resto del sistema operativo. Sin embargo, con mayor frecuencia este "nuevo núcleo" se deriva de la versión oficial reciente.

El núcleo de Solaris se ha portado de esta manera en cierto grado, lo que resulta en que OpenSolaris ejecute el entorno Gnome.

Aún así, poner el núcleo completamente diferente es el esfuerzo significativo, ya que las interfaces deben ser puenteadas. Es probable que esto requiera mucha programación en C y no se trata solo del script de compilación.

h22
fuente