MkLinux – Microkernel Linux – ist ein quelloffenes und freies Unix-artiges Betriebssystem, das auf einem Mach-3.0-Microkernel basiert, auf den ein Linux als Server aufsetzt. Es wurde Mitte der 1990er Jahre gemeinsam vom Research Institute der Open Group (vor 1996 noch Open Software Foundation, kurz OSF) in Grenoble, Frankreich, und von Apple Computer entwickelt. Bis 1998 wurden drei Developer Releases veröffentlicht, die bereits einige Macintosh-Modelle (auch PowerBooks) unterstützten.[1]
Das Userland von MkLinux entstammt Red Hat Linux.
Im Sommer 1998 wurde MkLinux von der Open Group und Apple aufgegeben und an die neu gegründete Entwicklergemeinde MkLinux 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 Betriebssystem OSF/1 zu entwickeln. OSF/1 basierte ebenfalls auf einem Mach[4] Mikrokernel, aber der darauf aufsetzende Personality-Server stand teilweise unter AT&Ts System-V-Lizenz. Deshalb entwickelte man eine freie UNIX-kompatible Alternative und entschied sich für Linux als Systemumgebung. Dies Projekt wurde die Grundlage von MkLinux.
Als Basis wurde OSF MK gewählt, die von der OSF weiterentwickelte Variante des Mach 3.0 Microkernels. Die Portierung von OSF MK auf die PowerMacintosh 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 PowerMacintosh portiert.[5] Im Februar 1996 kündigte Apple die erste verfügbare Version von MkLinux für PowerMacintosh für Sommer 1996 an, das Developer Release 1 (DR1) wurde jedoch schon im Mai 1996 veröffentlicht. 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 Time Freeware in Kooperation mit Apple vertrieben. Im Juli 1998 erschien schließlich als letzte offizielle Version auf CD-ROM das Developer 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. neue PowerBooks und NewWorld-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 MkLinux Developers Association fortgeführt wurde. Da Anwenderprogramme unter MkLinux binärkompatibel zu denen des LinuxPPC-Projektes (der Portierung des Linux-Kernels auf PowerPC-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 Bezeichnung Pre1 und Pre2 Release-Candidates für eine Version 1.0 von MkLinux. 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. Diese 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.).[6] 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 separater Hintergrundprozess namens default_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.