# Cooperative Linux

Cooperative Linux (kurz coLinux) ist eine Implementierung einer Cooperative Virtual Machine (CVM), die es erlaubt, Linux ohne zusätzliche Virtualisierung auf Windows zu betreiben.

## Konzept

coLinux basiert auf dem Konzept einer kooperierenden virtuellen Maschine. Während traditionelle Virtualisierungslösungen wie VMware, Virtual PC und Xen unprivilegiert sind und daher unter der kompletten Kontrolle des Wirtssystems stehen, werden bei coLinux die Kernprozesse beider Betriebssysteme zu zwei großen Koroutinen, die volle Prozessor- und Adressraumkontrolle haben und eigenständig entscheiden, wann sie diese an ihren Partner abgeben.
Vorteil dieses Ansatzes ist eine gute Leistung bei vergleichsweise geringer Entwicklungszeit. Nachteilig ist, dass gegebenenfalls Instabilitäten und Sicherheitslücken des Gastsystems sich auf das Wirtssystem übertragen. Stürzt bei einer traditionellen Virtualisierungslösung das Gastsystem ab, kann es über das Wirtssystem beendet und neu gestartet werden. Bei einer Cooperative Virtual Machine kann auch das Wirtssystem abstürzen. Wegen seiner tiefen Eingriffe in das Wirtssystem muss coLinux mit Administratorrechten laufen und dementsprechend hat auch bösartige Software des Gastsystems vollen Zugriff auf das Wirtssystem.
Im Moment wird coLinux hauptsächlich für Windows und Linux entwickelt, prinzipiell sollte der Code aber mit geringen Änderungen mit allen Betriebssystemen für die gleiche Hardwarearchitektur laufen, die Methoden zur Verfügung stellen, die es dem coLinux-Treiber ermöglichen, im CPL0-Mode (ring 0) zu laufen und Speicher zu reservieren. coLinux beansprucht keinen Zugriff auf physische Hardware, sondern arbeitet mit einer virtuellen Hardwareabstraktionsschicht, die Hardware-Zugriffe auf das Windows-API abbildet. Dasselbe Konzept, aber mit Abbildung auf die Linux-API wird bei User Mode Linux verwendet, um einen Linux-Kernel unter Linux zu betreiben.
coLinux ist derzeit nicht auf 64-Bit Windows-Versionen lauffähig, sondern läuft nur unter 32-bit Versionen.

## Installation

coLinux steht als Quelltext und als Windows-Installer-Paket zur Verfügung. Darin enthalten sind ein virtueller Netzwerkkartentreiber und ein modifizierter Linux-Kernel. Zum Betrieb sind ferner eine Festplattenimage-Datei oder eine Linuxpartition auf der Festplatte erforderlich. Um X-Window-System-Programme zu benutzen, wird ein X-Server für Windows benötigt, z. B. Xming. coLinux bietet eine Möglichkeit, mit Linux zu arbeiten, ohne die Festplatte umpartitionieren zu müssen und sich dabei dem Risiko des Datenverlusts auszusetzen.

## Distributionen
### andLinux

andLinux ist eine auf Ubuntu basierende CoLinux-Distribution für Windows. Die native grafische Anzeige stellt Xming als X-Window-Server unter Windows (2000, XP, 2003, Vista, 7; 32 Bit) bereit; PulseAudio die Sound-Ausgabe. Das coLinux File System (CoFS) oder Samba realisieren den Dateizugriff durch den Midnight Commander oder Thunar. Die Linux-Version von Firefox erlaubt den sicheren Internet-Zugang. Auch Xfce oder KDE laufen direkt unter Windows. AndLinux fährt in der Standardeinstellung mit Windows hoch und ist sofort einsatzbereit.
andLinux wird nicht mehr weiterentwickelt.

### speedLinux

Ursprünglich freetzLinux genannt, ist speedLinux eine angepasste, an Entwickler gerichtete CoLinux-Distribution für Windows. Die native grafische Anzeige stellt Xming als X Window-Server unter Windows (2000, XP, 2003, Vista, 7; 32 Bit) bereit; PulseAudio die Sound-Ausgabe. Das eigentliche Linux-System wird ab Version 3001 auch zum Installieren angeboten, es kann auch ein base.drv System Image aus einer anderen Distribution verwendet werden. Zur Auswahl an vorbereiten LINUX-Systemen stehen momentan Ubuntu 9.04 und Ubuntu 12.04 Develop in zwei Versionen. Der Funktionsumfang ist dann ähnlich wie bei andLinux, jedoch angepasst für die Verwendung von Freetz und speed-to-fritz. Es ist wie andLinux nutzbar. Bei Problemen mit andlinux ist es immer einen Versuch wert, da sich einige wenige Teile doch unterscheiden. Xming-Version und coLinux-Version sind unterschiedlich. Netzwerk-Bridge ist aktiviert damit Pings und FTP-Transfer funktionieren.