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?
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?
Respuestas:
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_create
en 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.
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.
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.