Linux Unified Kernel
# Linux Unified Kernel

Linux Unified Kernel, también conocido como Longene y de manera informal como LUK, es un núcleo de sistema operativo que pretende ser compatible con aplicaciones y controladores de dispositivo (drivers) hechos para Microsoft Windows y Linux.

Básicamente intenta acelerar la capa Wine en el espacio del núcleo. Con el fin de lograr esto, las características clave del núcleo de Windows son portadas al núcleo Linux.

Longene está escrito en lenguaje de programación C, y es software libre y de código abierto. Está disponible bajo los términos de la Licencia Pública General de GNU versión 2 (GPLv2). A pesar de que el proyecto está en fase alfa de desarrollo desde 2009, muchos programas de Windows funcionan bien.

## Objetivo

Longene intenta agregar todos los mecanismos del núcleo de Windows, incluyendo llamadas al sistema, el registro de Windows, el Windows Driver Model, las differed Procedure Calls, y otros mecanismos, en el núcleo Linux para formar un nuevo núcleo Linux.

El nuevo núcleo permitirá que las aplicaciones Linux y Windows y controladores de dispositivos puedan trabajar simultáneamente sin virtualización o emulación, y sin el retraso que supone correr Wine en el espacio de usuario.

En diciembre del 2013 fue publicada la primera "release candidate"

## Metodología

Aparte del núcleo linux estándar y el uso parcial de Wine, el LUK integra otros proyectos opensource para conseguir su funcionalidad:

* ReactOS. Un clónico de Windows NT en estado de desarrollo. LUK lo utiliza como referencia incluyendo el framework para drivers NDIS.
* Kernel-Win32 es un proyecto actualmente descontinuado que intentaba mover funciones del Wineserver de Wine al núcleo linux. Es el predecesor directo de LUK/Longene y se encuentra alojado en los servidores del proyecto Wine. Desgraciadamente este proyecto no tenía en cuenta la carga de drivers que se intenta conseguir con Longene.
* NDISwrapper: Este proyecto ofrecía lo que le faltaba al anterior. La carga de drivers de Windows en el Núcleo Linux. El LUK intenta integrar ambos.

Con el fin de evitar duplicación de código, si una función está disponible tanto en ReactOS como en el núcleo Linux, se utiliza la implementación de Linux. Las funciones se implementan utilizando módulos del núcleo cargables Linux, para que puedan ser cargados y descargados fácilmente.

Longene tiene dos juegos de las llamadas al sistema y sus correspondientes tablas: una syscall de Windows y de un juego syscall Linux. Aplicaciones de Windows llaman la tabla syscall a través del software de interrupción "int 0x2e". Aplicaciones Linux llaman la tabla syscall a través de "int 0x80".

El proyecto Kernel Unified Linux no se desarrolla el espacio de usuario de las bibliotecas de Windows y Linux. Esas bibliotecas son ofrecidos por otros proyectos, como el Wine, ReactOS, y GNU.

