MkLinux –Microkernel Linux – ist einquelloffenes undfreiesUnix-artiges Betriebssystem, das auf einemMach-3.0-Mikrokernel basiert, auf den einLinux als Server aufsetzt. Es wurde Mitte der 1990er Jahre gemeinsam vom Research Institute derOpen Group (vor 1996 nochOpen Software Foundation, kurz OSF) in Grenoble, Frankreich, und vonApple Computer entwickelt. Bis 1998 wurden dreiDeveloper Releases veröffentlicht, die bereits einige Macintosh-Modelle (auch PowerBooks) unterstützten.[1]
Das Userland von MkLinux entstammtRed Hat Linux.
Im Sommer 1998 wurde MkLinux von der Open Group und Apple aufgegeben und an die neu gegründete EntwicklergemeindeMkLinux Developers Association übergeben,[2] die bis 2002 zwei weitere Versionen,Release 1 und 2 veröffentlichte, mit denen eine Vielzahl weiterer Macintosh-Modelle unterstützt werden.[3]
Seit 2002 gab es keine neue MkLinux-Version und seit 2009 keine Aktualisierungen, sodass die Entwicklung von MkLinux als eingestellt betrachtet werden muss.
Bei der OSF entstanden in den 1990er Jahren Pläne, für Forschung und Entwicklung von Mikrokernel-Systemen eine Alternative zum eigenen BetriebssystemOSF/1 zu entwickeln. OSF/1 basierte ebenfalls auf einem Mach[4] Mikrokernel, aber der darauf aufsetzendePersonality-Server stand teilweise unterAT&TsSystem-V-Lizenz. Deshalb entwickelte man eine freie UNIX-kompatible Alternative und entschied sich für Linux alsSystemumgebung. Dies Projekt wurde die Grundlage von MkLinux.
Als Basis wurde OSF MK gewählt, die von der OSF weiterentwickelte Variante des Mach-3.0-Mikrokernels. Die Portierung vonOSF MK auf diePower-Macintosh-Plattform begann Anfang 1995, gleichzeitig wurde die Überarbeitung des monolithischen Linux-Kernels begonnen, um ihn als OS-Server auf dem Mach-Mikrokernel verwenden zu können. Dies erfolgte auf Intel-x86-Systemen. Erst später wurde der Linux-Server auch auf den Power Macintosh portiert.[5] Im Februar 1996 kündigte Apple die erste verfügbare Version von MkLinux für Power Macintosh für Sommer 1996 an, dasDeveloper Release 1 (DR1) wurde jedoch schon im Mai 1996 veröffentlicht.[6] Es folgte DR2 im September 1996 und DR2.1 im Januar 1997. Dieses Release wurde auf CD-ROM zusammen mit einem Referenz-Handbuch von der kleinen kalifornischen Firma Prime TimeFreeware in Kooperation mit Apple vertrieben. Im Juli 1998 erschien schließlich als letzte offizielle Version auf CD-ROM dasDeveloper Release 3 (DR3).
In den folgenden Jahren wurde ähnlich wie mit den Developer Releases davor im Wesentlichen versucht, die Unterstützung für verfügbare Hardware zu verbessern und neue Computermodelle wie z. B. neuePowerBooks undNewWorld-PowerMacs zu unterstützen. Wurde die weitere Entwicklung zunächst noch von einem kleinen Team bei Apple betreut und koordiniert, zog sich Apple bald darauf ganz aus dem Projekt zurück, so dass ab Mitte 1999 das Projekt vollständig von einer kleinen Gruppe von freien Entwicklern, der MkLinuxDevelopers Association fortgeführt wurde. Da Anwenderprogramme unter MkLinux binärkompatibel zu denen desLinuxPPC-Projektes (der Portierung des Linux-Kernels aufPowerPC-Systeme) waren, konzentrierten sich die MkLinux-Programmierer nun auf die Weiterentwicklung des Mach-Kernel/Linux-Kernel-Server-Paares. Von diesen erschienen in der Folgezeit diverse Zwischenreleases, sowie schließlich unter der BezeichnungRelease Candidates Pre1 und Pre2 für eine Version 1.0 von MkLinux.Release Candidate Pre2 im Sommer 2002 war das letzte komplette Kernel/Server-Paar.
Bei MkLinux werden die Betriebssystemfunktionen auf zwei Bereiche aufgeteilt: Der Mach-Microkernel stellt wenige grundlegende und von dem darauf aufsetzenden Betriebssystemen abstrahierte Dienste bereit. DieseKomponenten des Mach-Kernels sind: Tasks (Kontrolle von Systemressourcen), Threads (Kontrolle von CPU-Benutzung, Scheduling), Ports (Kontrollierte Kommunikation zwischen Tasks), Messages (Informationen, die über Ports ausgetauscht werden) und Memory Objects (Speicherverwaltung, Adressräume etc.).[7] Mach stellt weder ein Konzept für Prozesse bereit noch bietet es elaborierte Dienste wie Netzwerkprotokolle oder Dateisysteme. Alle diese Dinge sind Aufgabe des OS-Personality-Servers, der im Falle von MkLinux als Linux-Server diese in der Semantik von Linux (z. B./proc-Dateisystem) bereitstellt.
Virtueller Speicher wird vom Mach-Mikrokernel verwaltet, auf dessen Memory Objects die entsprechenden Linux-Datenstrukturen abgebildet werden. Das Auslagern und Einlesen von Speicherseiten auf Festplattenspeicher erledigt nicht der Kernel bzw. der Linux-Server, sondern ein separaterHintergrundprozess namensdefault_pager.
Der Linux-Server ist implementiert als sog.single server. Das bedeutet, dass der gesamte Linux-Server als ein einziger Mach-Task angelegt ist und somit einen einzigen Adressraum besitzt. Dies erhöht die Performance des Systems, da weniger Inter-Prozess-Kommunikation (IPC) notwendig ist, andererseits erschwert es die Portierbarkeit des Systems.