Zum Inhalt springen

Cooperative Linux

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 23. Oktober 2004 um 18:44 Uhr durch Ollinaie (Diskussion | Beiträge). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Cooperative Linux, oder abgekürzt coLinux ist ein Softwaresystem das es Linux ermöglicht als Prozess in Microsoft Windows zu laufen.

Der Erstsemesterstudent der Informatik (B.Sc ) Dan Aloni, begann das OpenSource Projekt, Helfende Hände sind immer Willkommen!

CoLinux steht (neben dem Quelltext) als Windowsinstaller-Paket zur Verfügung. Darin enthalten sind als Hauptbestandteil eine virtuelle Netzwerkkartentreiber und ein modifizierter Kernel. Zum Betrieb sind ferner eine Festplattenimage-Datei oder eine Linuxpartition auf der Festplatte erforderlich. Es stehen fertige Images zum Download bereit aber natürlich auch Anleitungen, wie man Eigene erstellt. Auch Linuxpartitionen in DualBoot-Systemen lassen sich verwenden.

CoLinux läuft unter 32-bit Windows (NT/2000/XP). Es läuft "native" d.h. es benötigt keinen virtuellen PC wie VMware. Um X-Window Applikationen zu benutzen wird ein X-Server für Windows benötigt, wie er z.B. mit GNU Cygwin/X als OpenSource zur Verfügung steht. KDE und/oder GNOME können so benutzt werden, wie beinahe alle Linux Programme und Distributionen. Debian und Gentoo erfreuen sich in der CoLinux-Gemeinde besonderer Beliebtheit, die mit Rat (und Tat) zur Seite steht. CoLinux ist eine hervorragende Umgebung zum lernen, experimentieren und testen, u.a. weil man Linux benutzen kann, ohne die Festplatte umpartitionieren zu müssen und sich dabei dem Risiko des Dateverlusts auszusetzen.

CoLinux basiert auf dem eher selten eingesetzten Konzept einer Cooperative Virtual Machine, statt konventioneller VMs, die unpriveligiert sind und unter der kompletten Kontrolle des Wirtssystems stehen. Verkürzt erklärt werden die Kernprozesse beider Betriebsysteme zu zwei großen coroutine die volle Prozessor und Adressraumkontrolle haben und eigenständig entscheiden, wann sie diese an ihren Partner abgeben.

Allerdings beansprucht CoLinux keinen Zugriff auf physische Hardware sondern arbeitet mit einer virtuellen Hardware Abstraktionsschicht (v HAL). Das Wirtssystem kann daher jedes Betriebssystem sein das Methoden zu Verfügung stellt, die es dem CoLinuxtreiber ermöglichen im CPL0-Mode (ring 0) zu laufen und Speicher zu reservieren.
(...that exports ?? basic primitives ?? that provide the Cooperative Linux ?? portable ?? driver to run in [[CPL0]...)

Im Moment wird CoLinux hauptsächlich für Windows und Linux entwickelt, prinzipiell läuft der Code aber mit geringsten Änderungen mit allen Betriebssystemen für die gleiche Hardwarearchitektur die die obige Bedingung erfüllen.

Dieser Ansatz ist der wesentliche Unterschied zu traditionellen Virtualisierungslösungen wie VMware, plex86, Virtual PC, oder anderen wie Xen. Er ermöglichte nicht nur die sehr gute Performance von CoLinux sondern auch die weitreichende Vereinfachung des Softwaredesigns. Hierdurch gelang es in nur einem Monat Entwicklungszeit aus dem Nichts die Betaversion zu erstellen und KDE auf einer modifizierten vanilla Linux 2.4.23-pre9 release zum Laufen zu bringen.

Es gibt leider auch zwei Nachteile, Stabilität und Sicherheit. CoLinux kann potentiell zum Systemabsturz führen wenn es instabil wird. Gegenmaßnahmen wurden ergriffen, in dem sich CoLinux beim ersten Oops oder Panic sauber beendet. Zur Sicherheit ist zu sagen, das CoLinux mit root-Rechten des Wirtssystems gestartet werden muss. Ein sehr versierter Angreifer könnte somit eventuell Sicherheitslücken finden und sich Rootrechte zum Wirtssystem verschaffen.

Da Windows als Betriebssystem selbst über ausreichende bekannte und noch unbekannte Sicherheitslücken verfügt und mehr als 80% der Windowsbenutzer ständig als Root arbeiten und Internetexplorer und/oder Outlook(-express) verwenden, dürfte vorstehender Hinweis jedoch eher von theoretischer Relevanz sein.

Die meisten Änderungen des Cooperative Linux Patch liegen im i386 Zweig, der zur Zeit einzigen unterstützten Architektur. Es sind im Wesentlichen Erweiterungen virtueller Treiber: cobd (Blockgerät), conet (Netzwerk), und cocon (Konsole), und zwar vor allem Code zur Einrichtung und Initialisierung. Es ist erklärtes Ziel beim Kernel-Design so nah wie möglich am Standardkern zu bleiben und Änderungen so lokal und minimal wie möglich zu gestalten.