Most of us by now are familiar with the concept of running one operating system inside another through the use of a virtual machine system, or running multiple operating systems side-by-side through a hypervisor solution. But let's assume for a moment that you don't have the resources to do such a thing -- you only have one computer, running Windows, and you don't have the freedom to dual-boot or run virtualization. Under such difficult circumstances, it doesn't seem possible to run Linux at all, does it?
Using coLinux for interoperability/Linux training
Amazingly, it is possible, and it's even possible to do this without rebooting, thanks to a specially-authored distribution of Linux called Cooperative Linux, or coLinux. coLinux is a port of the Linux kernel that runs natively in 32-bit Windows, which supports most common distributions -- Debian, Gentoo, Fedora 4 through 6, Ubuntu Dapper Drake through Edgy Eft (6.10) and up and many other distributions as well (Slackware, Knoppix, etc.).
Here are some of the things an IT manager could do with coLinux:
- Get a Linux system up and running for later outwards migration. For example: create an instance of a Linux server that can then be ported to real hardware, or at least have its application/data files ported outwards after it's been running as-is for some time.
- Run side-by-side server instances. You can run two varieties of server applications, for different platforms, side-by-side on the same hardware -- whether because resources are low or because it's easier to deal with having them both on the same box, instead of in disparate machines. For instance, you could run instances of MySQL on Linux vs. SQL Server Desktop Engine on Windows in a comparative way.
- Allowing an IT admin to get used to Linux's way of operating in a controlled environment. If something goes wrong, the coLinux install can always be "rolled back" to a clean setup without ever needing a reboot. (Again, the parallels to virtual computing are strong, but coLinux doesn't require as much of the overhead traditionally needed for a VM.)
How does coLinux work?
coLinux installs its files on a disk image, similar to a virtual computer disk image; the creators of coLinux provide a disk image with Debian 3.0r2 on it to get you started, but other distributions can also be used. The administrator also needs to set how much memory for coLinux to use (much as you would set a memory allotment for a virtual machine). The smallest amount of memory that's recommended is 64MB, especially if you want to add an X server.
Any program that runs on Linux will run on coLinux, although there are a few limitations—mainly, programs that use graphics won't run at full speed, since the X terminal has to run on the Windows side, and support for audio is marginal at best. That said, applications which don't rely on audio or graphics can run more or less at native speed: database applications, Web servers, command-line/shell programs and so on all work at normal speed. Networking is also included, via a special network adapter which installs on the Windows side (no reboot is needed)
A coLinux setup works best when dealing with individual programs one at a time, rather than using whole windowing environments (i.e., GNOME or KDE), so it's not really suitable for a desktop implementation of Linux. It's possible to connect to the coLinux installation via VNC as well, although VNC will need to be installed on both the client and server to do this.
There are a few limitations. The current build of the kernel only support ISO-8859-1. Therefore, it will have to be recompiled if you want to use UTF-8; the coLinux creators recommend using Gentoo as a way to make the recompilation process all the easier. I suspect future builds of the kernel will need to be UTF-8, as this is becoming more popular. Also, coLinux cannot be run in NT 4.0, not even with SP6, it must be run in Windows 2000 or higher.
This was first published in May 2007