XNU

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
XNU
Entwickler Apple
Lizenz(en) APSL 2.0[1]
Erstveröff. Dezember 1996
Akt. Version 4903.221.2 (macOS 10.14.1) (2019)[2]
Architektur(en) Aktuell: x64, ARM64
Historisch: PPC, x86, ARM32
Abstammung OSF MK + FreeBSD
↳ XNU
Sonstiges Kernel der Betriebs­systeme Darwin, macOS, iOS etc.
opensource.apple.com und github.com/apple/darwin-xnu

XNU ist ein Kernel, der in dem freien Basisbetriebssystem (core operating system) Darwin verwendet wird. Darwin bildet die Grundlage von Apples Betriebssystem-Varianten macOS, iOS, iPadOS, tvOS und watchOS. XNU wird als freie Software unter Version 2 der Apple Public Source License (APSL) veröffentlicht. Seinen Ursprung hat der Kernel u. a. im Betriebssystem NeXTStep.

Namensgebung[Bearbeiten | Quelltext bearbeiten]

XNU leitet sich einerseits von X is Not Unix[3] ab, in Anlehnung an GNU ebenfalls ein Akronym. Andererseits steht es vermutlich auch für Mac OS X NuKernel.[4] Der NuKernel war ein Mach-3.0-Kernel für das Projekt Copland, der zwischen 1994 und 1997 komplett neu geschrieben worden war. Copland sollte der Nachfolger des veralteten System 7 werden, doch es gelang Apple nicht den Kernel zu stabilisieren. Die einzigen je veröffentlichen Entwicklerversionen von Copland zeigten ständige Abstürze aufgrund des instabilen NuKernel. Erst mit OPENSTEP der Firma NeXT hatte Apple einen stabilen Mach-2.5-Kernel in der Hand, auf dessen Grundlage ein stabiler Mach-3.0-Kernel für das Nachfolgebetriebssystem von Mac OS entwickelt werden konnte.

Kernel-Design[Bearbeiten | Quelltext bearbeiten]

XNU ist ein hybrider Kernel, bestehend aus Teilen des Mach3-Microkernels OSF MK und des monolithischen FreeBSD-Kernels, aber auch aus Teilen von MkLinux, NetBSD und OpenBSD.[4] Der XNU-Kernel von Darwin Version 7 entspricht dabei dem FreeBSD-Kernel in Version 5.[5]

Im BSD-Teil wird das Mehrbenutzersystem (Benutzer-IDs, Rechte), der TCP/IP-Stack (auch die Firewall), die Synchronisierung und die Prozessaufteilung gesteuert. Der Mach-Teil ist verantwortlich für Multitasking, Speicherverwaltung und Fehlerbehandlung. Das I/O-Kit verwaltet Plug and Play, Hotplugging, Energiemanagement und Extensionsverwaltung.[5]

Im Laufe der Entwicklung wurden diverse Sicherheitsmechanismen in den Kernel eingebaut. So wird in der Intel-Version von Mac OS X Tiger (XNU-Version 792.x, Anfang 2006) das NX-Bit unterstützt, um vor der Ausführung von böswillig überschriebenem Stack mit einer dort platzierten Schadfunktion zu schützen. Auch integriert wurde ab Mac OS X Leopard (XNU-Version 933.x, Ende 2007) und iOS 4.3 (XNU-Version 1735.x, Mitte 2011) Address Space Layout Randomization (ASLR) und seit iPhone OS 2.0 (XNU-Version 1228.x, Mitte 2008) auch Funktionen für Code Signing, damit keine unsignierten Treiber geladen werden können. Letzteres fand im Herbst 2012 als Gatekeeper auch in OS X Mountain Lion (XNU-Version 2050.x) Einzug und wurde auch in Mac OS X Lion 10.7.5 (XNU-Version 1699.x) rückportiert.

Geschichte[Bearbeiten | Quelltext bearbeiten]

Der Kernel wurde ursprünglich von NeXT für deren Betriebssystem NeXTStep entwickelt. Bis Version 3.3 hieß das Betriebssystem NeXTStep (ab Version 3.1 in der Schreibweise NeXTSTEP und schließlich NEXTSTEP), ab Version 4.0 wurde es in OPENSTEP umbenannt und Ende 1996 von Apple aufgekauft. Da man dort nach einem Nachfolger für das als veraltet geltende System 7 suchte wurde OPENSTEP im Projekt Rhapsody (Version 5.0 bis 5.6) zu einem Nachfolger für das klassische Mac OS weiterentwickelt. Dabei wurde die Grundlage von OPENSTEP, BSD4.3 und Mach 2.5, ebenfalls erneuert. Rhapsody wie auch Mac OS X bieten ein Unix-System, das auf BSD4.4-Lite und Mach 3.0 basiert – wie bei FreeBSD wurde jedoch aus Kompatibilitätsgründen auch bei XNU Mach 3.0 nicht zu 100 % umgesetzt. Während der Rhapsody-Entwicklung wurde der Unix-Teil als Darwin (ein BSD-Betriebssystem ähnlich FreeBSD) – mit XNU als dessen Kernel – zusammengefasst, die Darwin-Versionsnummer startete wieder bei 1.0 und wurde ab Version 5.1 (mit einem Sprung von Darwin 1.4.1 auf 5.1) mit der Build-Nummer von Mac OS X (ab Version 10.1.1, November 2001) synchronisiert. Darwin wurde zur Grundlage von Mac OS X, das ab 2012 OS X heißt (ohne „Mac“ im Namen) und ab 2016 in vereinheitlichter Schreibweise macOS. Darwin ist ebenfalls die Grundlage des seit 2007 verfügbaren iOS (ursprünglich „iPhone OS“ und „iPad OS“, ab Version 4.2.1 als „iOS“ zusammengeführt) und dessen Abkömmlingen tvOS und watchOS.

Versionsgeschichte[Bearbeiten | Quelltext bearbeiten]

XNU für macOS kann bei Apple angesehen und heruntergeladen werden, nicht aber jene Kernel für iOS.[6] Die Version folgt in keiner Weise der Version von Darwin, macOS oder iOS. Welche XNU-Version auf einem System läuft kann mit uname -v ausgelesen werden, z. B. bei Mac OS X 10.7.2: Darwin Kernel Version 11.2.0: Tue Aug 9 20:54:00 PDT 2011; root:xnu-1699.24.8~1/RELEASE_X86_64.

Unter der ersten Developer Preview gibt der Mach-Kernel der Installations-CD im Einzelbenutzermodus (englisch Single User Mode, Tastenkombination ⌘ Befehl + S) folgende Version aus: Mac OS Kernel Version 10.0: Fri Apr 30 23:26:14 PDT 1999; root(rcbuilder):Objects/xnu-24.6.obj~2/RELEASE_PPC. Es ist die erste bekannte Veröffentlichung von XNU.

Version von
XNU Darwin macOS, OS X, Mac OS X bzw. iOS (soweit verfügbar)
24.6 0.1 Mac OS X Developer Preview (retronym auch kurz DP1); das Betriebssystem weist sich als „Mac OS X 10.0“ aus, nicht als „Darwin 0.1“.
44 0.2 Mac OS X Developer Preview 2 (kurz: DP2)
59.10 1.0 Mac OS X Developer Preview 3 (kurz: DP3)
74.7 1.1 Mac OS X Developer Preview 4 (kurz: DP4)
103.x 1.2 Mac OS X Public Beta „Kodiak“; Build 1H38: XNU 103; Build 2E14: XNU 103.1
123.5 1.3.1 Mac OS X 10.0.0 „Cheetah“
124.x Mac OS X 10.0.1–10.0.4 „Cheetah“
201.x 1.4.x / 5.x Mac OS X 10.1.x „Puma“
344.x 6.x Mac OS X 10.2.x „Jaguar“
517.x 7.x Mac OS X 10.3.x „Panther“
792.x 8.x Mac OS X 10.4.x „Tiger“
933.x 9.x iPhone OS / iPad OS 1.x; erste ARM-Version
1228.x Mac OS X 10.5.x „Leopard“; letzte PowerPC-Version; iPhone OS / iPad OS 2.x
1357.x 10.x iPhone OS / iPad OS 3.0–3.1.3
1456.1.26 Mac OS X 10.6–10.6.1 „Snow Leopard“
1486.2.11 Mac OS X 10.6.2 „Snow Leopard“
1504.x Mac OS X 10.6.3–10.6.8 „Snow Leopard“; iPad OS 3.2, iOS 4.0–4.2.1
1699.x 11.x Mac OS X 10.7.x „Lion“
1735.x iOS 4.3–4.3.5
1878.x iOS 5.x
2050.x 12.x OS X 10.8.x „Mountain Lion“
2107.x 13.x iOS 6.x
2422.x OS X 10.9.x „Mavericks“
2423.x 14.x iOS 7.x
2782.x OS X 10.10.x „Yosemite“
2783.x iOS 8.0–8.2
2784.x iOS 8.3–8.4.1
3247.x 15.x OS X 10.11–10.11.1 „El Capitan“
3248.x iOS 9.x, OS X 10.11.2–10.11.6 „El Capitan“
3789.x 16.x iOS 10.x, macOS 10.12.x „Sierra“
4570.x 17.x macOS 10.13.x „High Sierra“, iOS 11.x
4903.x 18.x macOS 10.14.x „Mojave“, iOS 12.x

Trivia[Bearbeiten | Quelltext bearbeiten]

In iOS 11 wurde auch eine Apple-eigene Umsetzung des L4-Mikrokernels für die Secure Enclave hinzugefügt. Dieser läuft auf einem im ARM-Prozessor Apple T1, S2 und S3 sowie der späteren A-Serie integrierten Koprozessor als Teil der Boot Chain und wird u. a. für Aktualisierungen, Touch ID / Face ID und Apple Pay genutzt. Dieser L4-Kernel ist jedoch nicht Teil von XNU oder Darwin.[7]

Weblinks[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. Luke Jones: Apple Takes Open Source Step with XNU Kernel Release. Long-time restricted software has been a staple of Apple over the years, but the company is loosening towards open source with the release of XNU kernel on GitHub. In: WinBuzzer News. 2. Oktober 2017, abgerufen am 24. März 2019 (englisch).
  2. XNU (Apple Source Browser). Abgerufen am 24. März 2019 (englisch).
  3. Porting UNIX/Linux Applications to OS X: Glossary (englisch), abgerufen am 3. August 2012
  4. a b Amit Singh: Mac OS X Internals: A Systems Approach. Addison-Wesley Professional, 2006, ISBN 978-0-13-270226-3, S. 36 (Volltext in der Google-Buchsuche).
  5. a b Mac OS X Internals: What is Mac OS X? (englisch), Amit Singh, Dezember 2003, abgerufen am 12. Dezember 2015
  6. XNU (Apple Source Browser). Abgerufen am 9. November 2017 (englisch).
  7. iOS Security Guide – White Paper. (PDF; 475 kB) Apple, Januar 2018, S. 7 ff., abgerufen am 4. August 2018 (englisch).