Longene
Longene is a Linux-based operating system kernel intended to be binary compatible with application software and device drivers made for Microsoft Windows and Linux. As of 1.0-rc2, it consists of a Linux kernel module implementing aspects of the Windows kernel and a modified Wine distribution designed to take advantage of the more native interface. 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.
Although the project is in the alpha stage of development as of 2015, many Windows programs already work well.
Its official website was gone in August, but was restored in 2019. Meanwhile, the source code remains available on GitHub.
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:
- A framework that matches the properties and requirements of Windows device drivers so that multiple Windows device driver modules may be loaded into the kernel, while retaining their relationship and running conditions as in Windows.
- A set of export functions defined by Windows kernel export function interface. To device driver programs, these functions are like library functions provided by kernel.
- Windows native API. Microsoft did not open their native API, but "Windows NT/2000 Native API Reference" and other materials have unveiled this information. Implementing the Windows system API in the Linux kernel could be compared to the implementation of a high level language in assembly, because inside the kernel usable functions are not implemented by the external Linux kernel API anymore but by internal Linux kernel functions.
- The Longene project produces patches for the Linux kernel to accomplish its goal. The project developers expect these patches to eventually merge into the Linux kernel main tree. Those who program on the Windows platform would then be able to develop applications and device drivers for the Linux platform or port their products to Linux platform with a low cost.
Development strategy
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 on February 15, 2006. This version actualized the Windows system call mechanism.color | meaning |
red | Release no longer supported |
yellow | Release, supported |
green | Current release |
blue | Future release |
Version | Release date | Release Information |
0.1.0 | April 30, 2006 |
|
0.2.0 | December 1, 2006 | |
0.2.1 | February 4, 2008 | |
0.2.2 | October 31, 2008 | |
0.2.2-1 | December 17, 2008 | |
0.2.3 | February 12, 2009 | |
0.2.4 | May 22, 2009 | |
0.2.4.1 | August 31, 2009 | |
0.3 | May 31, 2010 | |
0.3.1 | February 26, 2011 | |
0.3.2 | June 8, 2011 | |
1.0-rc1 | December 31, 2013 | |
1.0-rc2 | January 16, 2014 | |
2.0 | 2015 |
Current and future development
Developers are currently working on Longene 2.0, which will support Windows applications running on non-x86 architecture hardware, such as ARM and Loongson. Additionally, the developers are working on AMD64 support and porting NDISWrapper code to the project.Not yet implemented :
- QEMU code integration
- The WDM device driver framework
- The Windows DPC mechanism
- Exported kernel functions defined by Windows DDK
Users
Hardware requirements
The minimum hardware requirements to run are:- IA-32 processor
- 128 MB RAM
- IDE or SATA harddisk
- VGA compatible video card
- Standard keyboard
- PS/2 compatible mouse or Microsoft Mouse compatible serial mouse
Architecture support
- IA-32
- x86-64
- Loongson 3
- ARM
- Longene can also be run on software which emulates or virtualizes the above hardware, such as VMware and VirtualBox.