Cooperative Linux
   HOME

TheInfoList



OR:

Cooperative Linux, abbreviated as coLinux, is software which allows Microsoft Windows and the Linux kernel to run simultaneously in parallel on the same machine. Cooperative Linux utilizes the concept of a Cooperative Virtual Machine (CVM). In contrast to traditional
virtual machine In computing, a virtual machine (VM) is the virtualization/ emulation of a computer system. Virtual machines are based on computer architectures and provide functionality of a physical computer. Their implementations may involve specialized h ...
s, the CVM shares resources that already exist in the host OS. In traditional VM hosts, resources are virtualized for every (guest) OS. The CVM gives both OSs complete control of the host machine while the traditional VM sets every guest OS in an unprivileged state to access the real machine.


Overview

The term "cooperative" is used to describe two entities working in parallel. In effect Cooperative Linux turns the two different operating system kernels into two big
coroutine Coroutines are computer program components that generalize subroutines for non-preemptive multitasking, by allowing execution to be suspended and resumed. Coroutines are well-suited for implementing familiar program components such as cooperative ...
s. Each kernel has its own complete CPU context and address space, and each kernel decides when to give control back to its partner. However, while both kernels theoretically have full access to the real hardware, modern PC hardware is not designed to be controlled by two different operating systems at the same time. Therefore, the host kernel is left in control of the real hardware and the guest kernel contains special drivers that communicate with the host and provide various important devices to the guest OS. The host can be any OS kernel that exports basic primitives that allow the Cooperative Linux portable driver to run in CPL0 mode (ring 0) and allocate memory.


History

Dan Aloni originally started the development of Cooperative Linux as a research project based on similar work with
User-mode Linux User-mode Linux (UML) is an architectural port of the Linux kernel to its own system call interface, which enables multiple virtual Linux kernel-based operating systems (known as guests) to run as an application within a normal Linux system (know ...
. He announced the development on 25 Jan 2004. In July 2004 he presented a paper at the Linux Symposium. The
source Source may refer to: Research * Historical document * Historical source * Source (intelligence) or sub source, typically a confidential provider of non open-source intelligence * Source (journalism), a person, publication, publishing institute o ...
was released under the
GNU General Public License The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the four freedoms to run, study, share, and modify the software. The license was the first copyleft for general ...
. Other developers have since contributed various patches and additions to the software.


Comparisons

Cooperative Linux is significantly different from full
x86 virtualization x86 virtualization is the use of hardware-assisted virtualization capabilities on an x86/x86-64 CPU. In the late 1990s x86 virtualization was achieved by complex software techniques, necessary to compensate for the processor's lack of hardware-as ...
, which generally works by running the guest OS in a less privileged mode than that of the host kernel, and having all resources delegated by the host kernel. In contrast, Cooperative Linux runs a specially modified Linux kernel that is ''Cooperative'' in that it takes responsibility for sharing resources with the NT kernel and not instigating
race conditions A race condition or race hazard is the condition of an electronics, software, or other system where the system's substantive behavior is dependent on the sequence or timing of other uncontrollable events. It becomes a bug when one or more of ...
.


Distribution

Most of the changes in the Cooperative Linux patch are on the
i386 The Intel 386, originally released as 80386 and later renamed i386, is a 32-bit microprocessor introduced in 1985. The first versions had 275,000 transistorsLinux kernel and a virtual network device and can run simultaneously under a version of the Windows operating system such as
Windows 2000 Windows 2000 is a major release of the Windows NT operating system developed by Microsoft and oriented towards businesses. It was the direct successor to Windows NT 4.0, and was released to manufacturing on December 15, 1999, and was officiall ...
or
Windows XP Windows XP is a major release of Microsoft's Windows NT operating system. It was released to manufacturing on August 24, 2001, and later to retail on October 25, 2001. It is a direct upgrade to its predecessors, Windows 2000 for high-end and ...
. It does not use a
virtual machine In computing, a virtual machine (VM) is the virtualization/ emulation of a computer system. Virtual machines are based on computer architectures and provide functionality of a physical computer. Their implementations may involve specialized h ...
such as
VMware VMware, Inc. is an American cloud computing and virtualization technology company with headquarters in Palo Alto, California. VMware was the first commercially successful company to virtualize the x86 architecture. VMware's desktop software ru ...
. Debian,
Ubuntu Ubuntu ( ) is a Linux distribution based on Debian and composed mostly of free and open-source software. Ubuntu is officially released in three editions: '' Desktop'', ''Server'', and ''Core'' for Internet of things devices and robots. All ...
, Fedora and Gentoo are especially popular with the coLinux users. Due to the rather unusual structure of the virtual hardware, installing Linux distributions under coLinux is generally difficult. Therefore, users in most cases use either an existing Linux installation on a real partition or a ready made filesystem image distributed by the project. The filesystem images are made by a variety of methods, including taking images of a normal Linux system, finding ways to make installers run with the strange hardware, building up installs by hand using the package manager or simply upgrading existing images using tools like yum and
apt Apt. is an abbreviation for apartment. Apt may also refer to: Places * Apt Cathedral, a former cathedral, and national monument of France, in the town of Apt in Provence * Apt, Vaucluse, a commune of the Vaucluse département of France * A ...
. An easier way to get an up-to-date filesystem image is to use
QEMU QEMU is a free and open-source emulator (Quick EMUlator). It emulates the machine's central processing unit, processor through dynamic binary translation and provides a set of different hardware and device models for the machine, enabling it t ...
to install Linux and "convert" the image by stripping off the first 63 512-byte blocks as described in the coLinux wiki. Since coLinux does not have access to native graphics hardware,
X Window The X Window System (X11, or simply X) is a windowing system for bitmap displays, common on Unix-like operating systems. X provides the basic framework for a GUI environment: drawing and moving windows on the display device and interacting wit ...
or X Servers will not run under coLinux directly, but one can install an X Server under Windows, such as
Cygwin/X Cygwin/X is an implementation of the X Window System that runs under Microsoft Windows. It is part of the Cygwin project, and is installed using Cygwin's standard setup system. Cygwin/X is free software, licensed under the X11 License. Cygwin/ ...
or
Xming Xming is an X11 display server for Microsoft Windows operating systems, including Windows XP and later. Features Xming provides the X Window System display server, a set of traditional sample X applications and tools, as well as a set of fonts. ...
and use
KDE KDE is an international free software community that develops free and open-source software. As a central development hub, it provides tools and resources that allow collaborative work on this kind of software. Well-known products include the ...
or GNOME and almost any other Linux application and distribution. All of these issues are fixed by using coLinux based distributions such as andLinux, based on Ubuntu, or TopologiLinux, based on
Slackware Slackware is a Linux distribution created by Patrick Volkerding in 1993. Originally based on Softlanding Linux System, Slackware has been the basis for many other Linux distributions, most notably the first versions of SUSE Linux distributio ...
.


Emulated hardware

* Ethernet network via TAP,
PCAP In the field of computer network administration, pcap is an application programming interface (API) for capturing network traffic. While the name is an abbreviation of ''packet capture'', that is not the API's proper name. Unix-like systems ...
, NDIS and
SLiRP Slirp (sometimes capitalized SLiRP) is a software program that emulates a PPP, SLIP, or CSLIP connection to the Internet using a text-based shell account. Its original purpose became largely obsolete as dedicated dial-up PPP connections and b ...
.


Limitations

* Does not yet support 64-bit Windows or Linux (nor utilize more than 4GB memory), but a port is under development by the community. * No multi-processor (SMP) support. Linux applications and the underlying kernel are able to use only one CPU.coLinux FAQ
/ref>


See also

* Win32-loader *
Platform virtualization Hardware virtualization is the virtualization of computers as complete hardware platforms, certain logical abstractions of their componentry, or only the functionality required to run various operating systems. Virtualization hides the physica ...
*
Comparison of platform virtualization software Platform virtualization software, specifically emulators and hypervisors, are software packages that emulate the whole physical computer machine, often providing multiple virtual machines on one physical platform. The table below compares basic i ...
* Cygwin *
MSYS MinGW ("Minimalist GNU for Windows"), formerly mingw32, is a free and open source software development environment to create Microsoft Windows applications. MinGW includes a port of the GNU Compiler Collection (GCC), GNU Binutils for Windows ...
*
Wubi (installer) Wubi ("Windows-based Ubuntu Installer") is a free software Ubuntu (operating system), Ubuntu installer, that was the official Microsoft Windows, Windows-based software, from 2008 until 2013, to install Ubuntu from within Windows, to a single fil ...
* Longene *
Chroot A chroot on Unix and Unix-like operating systems is an operation that changes the apparent root directory for the current running process and its children. A program that is run in such a modified environment cannot name (and therefore normall ...
*
Windows Subsystem for Linux Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for ser ...


References


External links

* *
coLinux on GitHub
* * * {{Linux kernel Free virtualization software Virtualization software Windows-only free software Linux kernel variant Virtualization software for Linux