Articulo de referencia

Longene

Longene ( en chino : 龙井 ) es un núcleo de sistema operativo basado en Linux , diseñado para ser compatible binariamente con software de aplicación y controladores de dispositivo...

Longene ( en chino :龙井) es un núcleo de sistema operativo basado en Linux , diseñado para ser compatible binariamente con software de aplicación y controladores de dispositivos creados para Microsoft Windows y Linux. A partir de la versión 1.0-rc2, consta de un módulo del núcleo de Linux que implementa aspectos del núcleo de Windows y una distribución Wine modificada , diseñada para aprovechar la interfaz más nativa. Longene está escrito en el lenguaje de programación C y es software libre y de código abierto . Está licenciado bajo los términos de la Licencia Pública General GNU versión 2 (GPLv2).

Aunque el proyecto se encuentra en la fase alfa de desarrollo desde 2015, muchos programas de Windows ya funcionan correctamente.

Su sitio web oficial desapareció en agosto, pero fue restaurado en 2019. Mientras tanto, el código fuente sigue disponible en GitHub . [ 1 ]

Características

Longene pretende integrar todos los mecanismos del kernel de Windows, incluyendo llamadas al sistema, el Registro de Windows , el Modelo de Controladores de Windows , la Llamada a Procedimiento Diferido y otros, en el kernel de Linux para crear un nuevo kernel. Este nuevo kernel permitirá que tanto las aplicaciones como los controladores de dispositivos de Linux y Windows funcionen sin virtualización ni emulación. Para evitar la sobrecarga, si una función está disponible tanto en el kernel de ReactOS como en el de Linux, se utiliza la implementación de Linux. Las funciones se implementan mediante módulos del kernel cargables de Linux, lo que facilita su carga y descarga.

Longene dispone de dos conjuntos de llamadas al sistema y sus tablas correspondientes: un conjunto de llamadas al sistema para Windows y otro para Linux. Las aplicaciones de Windows acceden a la tabla de llamadas al sistema mediante la interrupción de software "int 0x2e". Las aplicaciones de Linux acceden a la tabla de llamadas al sistema mediante la interrupción "int 0x80".

El proyecto Longene no desarrolla las bibliotecas de espacio de usuario de Windows y Linux . Dichas bibliotecas son ofrecidas por otros proyectos, como Wine , ReactOS , GNU y NDISwrapper . [ 2 ]

Desarrollo

En septiembre de 2005, el proyecto Longene obtuvo el patrocinio de Insigma Technology (浙大网新), una empresa de consultoría informática con sede en China. El líder del proyecto, Decao Mao (毛德操), propuso la idea y el desarrollo de Longene. Escribió una serie de artículos sobre el mercado, los derechos de propiedad intelectual y las técnicas para explicar la necesidad del proyecto y cómo implementar Longene. Estos artículos se recopilaron para conformar el libro blanco del proyecto.

Según el libro blanco, para implementar Longene, es necesario agregar varias partes al kernel de Linux:

  • Un marco de trabajo que se ajusta a las propiedades y requisitos de los controladores de dispositivos de Windows (es decir, el marco de trabajo de controladores de dispositivos de Windows) para que se puedan cargar varios módulos de controladores de dispositivos de Windows en el núcleo, manteniendo su relación y condiciones de ejecución como en Windows.
  • Conjunto de funciones de exportación definidas por la interfaz de funciones de exportación del kernel de Windows (WDK). Para los programas de controladores de dispositivos, estas funciones son como las funciones de biblioteca proporcionadas por el kernel.
  • API nativa de Windows. Microsoft no ha hecho pública su API nativa, pero la "Referencia de la API nativa de Windows NT/2000" y otros materiales han revelado esta información. Implementar la API del sistema Windows en el núcleo de Linux podría compararse con la implementación de un lenguaje de alto nivel en lenguaje ensamblador, ya que dentro del núcleo las funciones utilizables ya no se implementan mediante la API externa del núcleo de Linux, sino mediante funciones internas del núcleo de Linux.
  • El proyecto Longene genera parches para el kernel de Linux con el fin de lograr su objetivo. Los desarrolladores del proyecto esperan que estos parches se integren finalmente en el árbol principal del kernel de Linux. De esta manera, quienes programan en la plataforma Windows podrán desarrollar aplicaciones y controladores de dispositivos para Linux o portar sus productos a Linux a bajo costo.

Estrategia de desarrollo

Longene utiliza Wine como base para implementar la API de Windows. El proyecto reimplementa los módulos de Wine para su uso en el núcleo conjunto. Longene evita utilizar módulos de Wine que no estén suficientemente implementados para el proyecto. Se publican versiones de Longene cuando varios módulos de Wine se han implementado con éxito en el núcleo. La nueva versión estable se utilizará como base para la implementación de futuros módulos. Los módulos de la API de Windows que no han sido implementados por Wine se desarrollan desde cero. Dado que el núcleo de Longene realiza el trabajo del núcleo de Windows NT, no se necesita la emulación del núcleo en espacio de usuario de Wine (wineserver).

Para los controladores de dispositivos, Longene importa NDISwrapper al kernel. Se realizan modificaciones a NDISwrapper para subsanar las deficiencias del modelo de controladores de Windows, utilizando el código de ReactOS como referencia. La implementación del kit de controladores de Windows se basa en el código de ReactOS . Utiliza una combinación de redireccionamiento de controladores a recursos del kernel de Linux y bibliotecas adicionales que implementan funciones que no se pueden implementar en Linux.

Historial de versiones

Una versión anterior, unifiedkernel-2.6.13, [ 3 ] se publicó el 15 de febrero de 2006. Esta versión actualizó el mecanismo de llamadas al sistema de Windows .

Desarrollo actual y futuro

Actualmente, los desarrolladores están trabajando en Longene 2.0, que permitirá la compatibilidad con aplicaciones de Windows que se ejecutan en hardware con arquitectura distinta a x86, como ARM y Loongson . Además, están trabajando en la compatibilidad con AMD64 y en la adaptación del código de NDISWrapper al proyecto.

Aún no se ha implementado (pero está previsto):

  • Integración de código QEMU
  • El marco de controladores de dispositivos WDM
  • El mecanismo DPC de Windows
  • Funciones del kernel exportadas definidas por Windows DDK

Recursos de código abierto disponibles

núcleo de Linux
Longene se basa en el kernel de Linux. Implementa sus funciones en los módulos del kernel cargables de Linux (LKM). A diferencia de ReactOS, que implementa funciones desde cero, Longene aprovecha el abundante código y la documentación del kernel de Linux para crear sus funciones. Estos son los principales enfoques para implementar mecanismos de Windows en Longene:
  1. Interfaz de llamadas al sistema: algunas pueden tomarse de las llamadas al sistema Linux correspondientes o reutilizar parcialmente el código de dichas llamadas. Las demás, que no tienen equivalente en Linux, requieren el uso de funciones de bajo nivel del kernel de Linux para su implementación.
  2. Marco de controladores de dispositivos: el registro del servicio de interrupción del controlador de dispositivos utiliza el mecanismo de interrupción de Linux. Los controladores de dispositivos perciben el kernel de Windows en ejecución, que se asigna al kernel de Linux subyacente. Las solicitudes DPC del controlador de dispositivos se traducen a funciones de Linux-bh.
  3. Los archivos del sistema nativo de Microsoft Windows, cuyos derechos de autor pertenecen a Microsoft, son módulos .sys que se utilizan para dispositivos externos comunes, como discos duros, unidades USB, dispositivos gráficos, equipos de red, etc., para los cuales existen funciones correspondientes en el kernel de Linux. Para controlar estos dispositivos, solo se requiere crear un puente y no es necesario crear módulos .sys. Para el resto de módulos .sys que no tienen objetos correspondientes en el kernel de Linux, se requiere emulación.
  4. Windows DDK: La mayoría de las funciones y estructuras de datos de la interfaz del controlador de dispositivos tienen equivalentes en el kernel de Linux. Algunas funciones no tienen un equivalente exacto en el kernel de Linux, por lo que es necesario crear una capa de abstracción utilizando componentes del kernel. En la práctica, algunas llamadas y referencias a recursos pueden redirigirse o adaptarse a sus equivalentes en el kernel de Linux, mientras que el resto debe implementarse desde cero.
ReactOS
ReactOS es un clon de MS Windows escrito desde cero. Longene utiliza el código de ReactOS como referencia para implementar algunos mecanismos básicos del sistema operativo Microsoft Windows. Esto incluye la implementación del marco de controladores de dispositivos de Windows, NDIS, la interfaz de llamadas al sistema, la administración de procesos y recursos, la interfaz de controladores de dispositivos, etc.
Vino
Wine implementa una capa de compatibilidad , proporcionando implementaciones alternativas de las DLL que llaman los programas de Windows y procesos para sustituir el kernel de Windows NT. A diferencia de Longene, que utiliza las funciones del microkernel para implementar la API de Windows en el espacio del kernel, Wine utiliza la API del sistema operativo host de macros para implementar la API de Windows en el espacio de usuario. Longene ofrece la administración de procesos, subprocesos y objetos de Windows, etc., en el kernel; Wine las ofrece mediante wineserver, que se ejecuta en el espacio de usuario. Longene depende de Wine para las bibliotecas de usuario (los archivos .dll). La mayoría de las DLL de Wine pueden ser utilizadas directamente por Longene. Se puede hacer referencia al código de Wine (como la tabla del Registro de Windows) para implementar algunas funciones. En la fase de transición, Longene utiliza Wine para ofrecer aquellas funciones que aún no se han completado.
Kernel-Win32
Kernel-Win32 es un proyecto destinado a trasladar algunas funciones de Wineserver al kernel de Linux para acelerar Wine. El proyecto Longene adaptó (y reimplementó parcialmente) Kernel-Win32 a Longene para implementar el mecanismo de llamadas al sistema de Windows.
NDISwrapper
NDISWrapper recreó una parte del kernel de Windows NT en un módulo del kernel de Linux, lo que permite ejecutar controladores modernos de Windows dentro de un entorno Linux. NDISWrapper consta de una API NTOSKRNL, un controlador WDM básico y un conjunto de adaptadores de llamadas de Windows, como Wireless/NDIS/USB/PnP, a las API de Linux. NDISWrapper no se limita a ejecutar solo controladores NDIS; se pueden usar otros controladores WDM siempre que no llamen a funciones de la API de Windows no implementadas. El primer paso para la implementación de WDM en Longene será importar NDISWrapper. Luego, el equipo del proyecto Longene implementará su WDM modificando NDISwrapper y agregando funciones, tomando como referencia el código de ReactOS.
QEMU
Para ejecutar aplicaciones binarias de Windows x86 directamente en la arquitectura ARM, es necesaria la emulación. QEMU es un emulador de código abierto en Linux que puede ejecutar Wine, pero el resultado es inaceptablemente lento. QEMU interpreta todas las instrucciones x86 en el espacio de usuario (incluido el código de Wine); solo en el caso de las llamadas al sistema Linux la aplicación se ejecuta a máxima velocidad. El resultado es lento porque las aplicaciones pasan la mayor parte del tiempo en el espacio de usuario emulado y menos tiempo en el kernel. Sin embargo, si las DLL de la API de Windows, proporcionadas por Wine, pudieran usarse fuera de QEMU, se ejecutarían a máxima velocidad, ya que se pueden compilar de forma nativa, y la velocidad de ejecución general mejoraría significativamente. Esta forma de combinar Wine y QEMU, e integrar las funciones de Wineserver en el kernel, es la idea de Longene 2.0.

Usuarios

Magic Linux – Magic Linux es una distribución china de Linux basada en Red Hat Linux . La versión 2.1 de Magic Linux, lanzada el 15 de diciembre de 2008, incluye una versión principal (DVD, con el kernel de Linux 2.6.25.20), una versión compacta (CD, con el kernel de Linux 2.6.25.20) y una versión Longene (CD, con Longene 0.2.2). [ 5 ]

Requisitos de hardware

Los requisitos mínimos de hardware para su funcionamiento son:

  • Procesador IA-32
  • 128  MB de RAM
  • Disco duro IDE o SATA
  • Tarjeta de video compatible con VGA
  • Teclado estándar (PS/2 o USB)
  • Ratón compatible con PS/2 o ratón serie compatible con Microsoft Mouse.

Soporte de arquitectura

  • IA-32 (en funcionamiento)
  • x86-64 (no funciona, en desarrollo)
  • Loongson 3 (no funciona, en desarrollo)
  • ARM (no funciona, en progreso)
  • Longene también puede ejecutarse en software que emula o virtualiza el hardware mencionado anteriormente, como VMware y VirtualBox .

Véase también

Referencias

  1. ^ "archivo-longene/longene-1.0-rc2" . GitHub . Consultado el 21 de agosto de 2018 .
  2. Núcleo unificado de Linux 0.2.4.1 "El proyecto LUK no desarrolla las bibliotecas de espacio de usuario de Windows y Linux. Dichas bibliotecas son ofrecidas por el proyecto Wine (o Microsoft Windows/ReactOS) y el proyecto Linux."
  3. unifiedkernel-2.6.13
  4. "Longene 2.0 será compatible con las aplicaciones de Windows que se ejecutan en máquinas con arquitectura distinta a x86" . Archivado del original el 3 de marzo de 2014. Consultado el 9 de abril de 2014 .
  5. Magic Linux 2.5 rc2 Publicado y archivado el 20 de abril de 2014 en Wayback Machine