COOPERATIVE LINUX


COOPERATIVE LINUX, abbrieviated as coLinux, is a software that lets Microsoft Windows cooperate with the Linux kernel, to run both in parallel, on the same machine. Cooperative Linux utilizes the concept of a Cooperative Virtual Machine (CVM). In contrast to the traditional Virtual Machines(VMs), the CVM shares, the resources that already exist in the host OS. In traditional (host) VMs, resources are virtualized for every (guest) OS. The Cooperative Virtual Machine(CVM) gives both operating systems complete control of the host machine, while the traditional VM sets every guest OS in an unprivileged state to access the real machine.

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 *coroutines. Each kernel has its own complete CPU context and address space. Each kernel also 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 incompatibly 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, while the guest kernel contains special drivers that communicates with the host and provide various important devices to the guest OS. *program components that generalize subroutines to allow multiple entry points and suspending and resuming of execution at certain locations.

Cooperative Linux is significantly different from traditional virtualization solutions such as VMware, Plex86, Virtual PC, QEMU and other methods such as Xen, which generally work by running the guest OS in a less privileged mode than that of the host kernel. In contrast, the CPL0 approach simplified design with an early-beta development cycle of only one month -- starting from scratch by modifying the vanilla Linux 2.4.23-pre9 release until reaching to the point where KDE could run.

The only downsides to the CPL0 approach are stability and security. If it's unstable, it has the potential to crash the system (on earlier releases before ioperm was disabled, attempting to start a normal X server under coLinux would crash the host). However, measures can be taken, such as cleanly shutting it down on the first internal Oops or panic. Another disadvantage is security. Acquiring root user access on a Cooperative Linux machine can potentially lead to root on the host machine if the attacker loads specially crafted kernel module or (if the coLinux kernel was compiled without module support) the attacker finds some other way to inject code into the running coLinux kernel

coLinux is an extremely interesting new approach to virtualization allowing you to run Linux parallel to your Windows platform. coLinux approaches the experimenting Linux novice - who does not actually want to install the operating system on a fresh machine. Another target group is the Linux enthusiast, in that coLinux also makes it possible for him to run Linux on his Windows machine without using a standard virtualization product with large requirements to system resources.
coLinux seems to be a promising ongoing project - and a worthy competitor to other virtualization products on the market. It might not be completely fool proof for beginners, but it may become more so as it matures.