In contrast to traditional virtual machines, the CVM shares resources that already exist in the host OS.
In effect Cooperative Linux turns the two different operating system kernels into two big coroutines.
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.
The other changes are mostly additions of virtual drivers: cobd (block device), conet (network), and cocon (console).
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.