Developer Insigma Technology | Written in C | |
![]() | ||
Working state Seems abandoned, last update in 2014 Latest preview 1.0-rc2 / January 16, 2014; 3 years ago (2014-01-16) |
Longene is an operating system kernel intended to be binary compatible with application software and device drivers made for Microsoft Windows and Linux. In order to accomplish this, key features of the Windows kernel are ported to the Linux kernel.
Contents
- Features
- Development
- Development strategy
- Version history
- Current and future development
- Available Open Source resources
- Users
- Hardware requirements
- Architecture support
- References
Longene is written in the C programming language and is free and open source software. It is licensed under the terms of the GNU General Public License version 2 (GPLv2).
Although the project is in the alpha stage of development as of 2015, many Windows programs already work well.
Features
Longene aims to add all Windows kernel mechanisms, including system calls, Windows Registry, Windows Driver Model, Deferred Procedure Call, and others, into the Linux kernel to form a new kernel. The new kernel will allow both Linux and Windows applications and device drivers to work without virtualization or emulation. In order to prevent bloating, if a function is available in both the ReactOS and Linux kernel, the Linux implementation is used. Functions are implemented using Linux loadable kernel modules, so they can be loaded and unloaded easily.
Longene has two sets of system calls and their corresponding tables: a Windows syscall set and a Linux syscall set. Windows applications call the syscall table via software interrupt "int 0x2e". Linux applications call the syscall table via "int 0x80".
The Longene project does not develop the Windows and the Linux userland libraries. Those libraries are offered by others projects, such as Wine, ReactOS, GNU, and NDISwrapper.
Development
In September 2005, the Longene project gained sponsorship from Insigma Technology (浙大网新), a China-based IT consulting corporation. The project leader, Decao Mao (毛德操), proposed the idea and route of the Longene. He wrote a series of articles about the market, the intellectual property rights and the techniques to explain why people needed the project and how to implement the Longene. The articles Mao wrote were then compiled to form the white paper of the project.
According to the white paper, to implement the Longene, one needs to add several parts to the Linux kernel:
Development strategy
Longene uses Wine as a base for implementing the Windows API. The project re-implements Wine's modules for use as part of the joint kernel. Longene defers from using Wine modules that have not been sufficiently implemented for the project. Versions of Longene are released when several of the Wine modules have been successfully implemented into the kernel. The new stable version will then be used as a base for implementing future modules. Windows API that have not been implemented by Wine are developed into modules from scratch.
For device drivers, Longene imports NDISwrapper into the kernel. Modifications are made to NDISwrapper for missing functionality of the Windows Driver Model using ReactOS code as a reference. The Windows Driver Kit implementation is based on ReactOS code. It uses a combination of redirecting drivers to Linux kernel resources and additional libraries that implement functions that cannot be implemented in Linux.
Version history
An earlier version, unifiedkernel-2.6.13, released in February 15, 2006. This version actualized the Windows system call mechanism.
Current and future development
Developers are currently working on Longene 2.0, which will support the Windows applications run on non-x86 architecture machine, such as ARM architecture machine and Loongson architecture machine. And the developers are also working on the AMD64 support and porting NDISWrapper code to the project.
Not yet implemented (but planned):
Available Open Source resources
- System call interface – Some of them can be taken from the appropriate Linux system calls, or partially reuse the code from corresponding Linux system calls. The rest that have no counterpart in Linux need to use low-level Linux kernel functions in their implementation.
- Device driver framework – The device driver interrupt service register is using the Linux interrupt mechanism, the device drivers perceive running Windows kernel, which is mapped to the Linux kernel running underneath. Device driver DPC requests are translated to Linux-bh functions.
- The Microsoft Windows native system files that are copyrighted by Microsoft — The category of .sys modules used for common external devices, such as disk, USB, graphics devices, network equipment and so on, for which there are corresponding functions in the Linux kernel. To drive those devices, it is only required to build a bridge and there is no need to create .sys modules. For the rest of .sys modules that have no the corresponding objects in the Linux kernel, an emulation is required.
- Windows DDK – The majority of device driver interface functions and data structures have counterparts in the Linux kernel. Some functions have no exact equivalent in the Linux kernel, and there is a need to build a wrapper using Linux kernel stuff. In practice, some resource calls and references can be redirected or adapted to Linux kernel counterparts, and the rest need to be implemented from scratch.
Users
MagicLinux – MagicLinux is a Chinese Linux distribution based on Red Hat Linux. Version 2.1 of MagicLinux, released on December 15, 2008, includes a main version (DVD, with Linux kernel 2.6.25.20), a compact version (CD, with Linux kernel 2.6.25.20) and a Longene version (CD, with Longene 0.2.2).
Hardware requirements
The minimum hardware requirements to run are: