# Apple Partition Map

Die Apple Partition Map, kurz APM, bezeichnet eine Partitionstabelle für m68k- und PowerPC-basierte Computer des US-amerikanischen Unternehmens Apple. Sie wurde mit dem Macintosh II 1987 eingeführt und 2006 mit dem Übergang zur Intel-Architektur durch die GUID Partition Table (GPT) ersetzt.
Zur Adressierung wird ein Speichermedium in logische Blöcke von üblicherweise 512 Bytes aufgeteilt, wobei der erste Datenblock Block 0 die Apple-spezifische “Driver Descriptor Map” enthält und ab dem zweiten Datenblock die eigentliche Partitionstabelle beginnt. In dieser sind die einzelnen Blöcke über 32-Bit breite Adressen definiert, woraus sich eine partitionierbare Gesamtgröße von maximal 2 TiB ergibt.
Als eine Besonderheit der Apple-Partitionstabelle gilt, dass sie sich selbst ebenfalls als Partition definiert, ebenso wie freier Speicher auf dem Speichermedium als spezielle Partition definiert ist. Damit ist mit der Ausnahme des Block 0 jeder logische Block auf dem Medium einer Partition zugehörig.
Auch auf Hybrid-CDs findet APM gemeinsam mit dem ISO-9660-Dateisystem Verwendung, um (wie Microsoft mit der Joliet-Erweiterung) Interoperabilität bei gleichzeitig voller Funktionalität zu bieten.

## Intel-basierte Macs

Für den Zugriff auf Partitionen und die enthaltenen Dateisysteme können ab Mac OS X Tiger (ab 10.4.2, 2005) sowohl APM- als auch GPT-partitionierte Speichermedien in üblicher Weise verwendet werden. Für den Betriebssystemstart (Booten) ist jedoch auf PowerPC-basierten Macs APM Voraussetzung, wohingegen auf Intel-basierten Macs GPT verwendet wird.
Macintosh-Computer, die mit Mac OS X Tiger (10.4, 2005) oder Mac OS X Leopard (10.5, 2007) ausgeliefert wurden, können sowohl von APM- als auch von GPT-partitionierten Speichermedien starten, sofern die Methode unterstützt ist und ein passendes Betriebssystem enthalten ist. Dieser Umstand ist der Kompatibilität der Betriebssysteme für sowohl PowerPC- als auch Intel-Macs geschuldet, da die Installationsmedien dieser Mac-OS-X-Versionen eine APM-Partitionierung verwenden (müssen) um auf PowerPC-basierten Macs startfähig zu bleiben. Auf Intel-basierten Macs verwehrt das Installationsprogramm dennoch die Auswahl einer APM-Partition als Installationsziel. Einzig für externe Speichermedien existiert eine offizielle Anleitung von Apple, wie man ein Mac-OS-X-Leopard-(10.5)-Betriebssystem so auf einer APM-partitionierten externen Festplatte installiert, dass es auf beiden Architekturen startfähig ist.

## Aufbau

Ein Eintrag in der Partitionstabelle hat jeweils eine Größe von einem Datenblock, was normalerweise 512 Bytes entspricht. Jeder Eintrag in die Partitionstabelle belegt somit 512 Bytes oder einen Sektor. Da die Partitionstabelle selbst auch einen Eintrag darstellt, gibt die Größe der ersten Partition die mögliche Anzahl an Partitionen an sich vor.
Normalerweise umfasst die Partitionstabelle selbst 63 Blöcke (Sektoren), kann also 62 zusätzliche Partitionen beherbergen. Zusammen mit der Driver Descriptor Map sind im Normalfall also die ersten 64 Sektoren (64 × 512 = 32 kB) belegt.
Jeder Eintrag in der Partitionstabelle enthält neben dem Startsektor und der Größe auch einen Namen, einen Typ, die Position des Datenbereichs und eines etwaigen Startprogramms auch die gesamte Anzahl der Partitionen in der Partitionstabelle. So weiß z. B. die Firmware bereits beim Einlesen des ersten Partitionseintrags, wie viele weitere Sektoren à 512 Bytes noch eingelesen werden müssen, damit alle Einträge verarbeitet wurden.
| Adresse | Adresse | Größe in Byte | Inhalt | Erforderlich? |
| Bytes | Hex | Größe in Byte | Inhalt | Erforderlich? |
| 0-1 | 0x0000 | 2 | Signatur (0x504D, ASCII „PM“) | Nein |
| 2-3 | 0x0002 | 2 | reserviert | Nein |
| 4-7 | 0x0004 | 4 | Anzahl Partitionen (gesamt) | Ja |
| 8-11 | 0x0008 | 4 | Startsektor der Partition | Ja |
| 12-15 | 0x000C | 4 | Größe der Partition (in Sektoren) | Ja |
| 16-47 | 0x0010 | 32 | Name der Partition (in ASCII) | Nein |
| 48-79 | 0x0030 | 32 | Typ der Partition (in ASCII) | Nein |
| 80-83 | 0x0050 | 4 | Startsektor des Datenbereichs auf der Partition | Nein |
| 84-87 | 0x0054 | 4 | Größe des Datenbereichs auf der Partition (in Sektoren) | Nein |
| 88-91 | 0x0058 | 4 | Status der Partition | Nein |
| 92-95 | 0x005C | 4 | Startsektor des Startprogramms (englisch boot code) | Nein |
| 96-99 | 0x0060 | 4 | Größe des Startprogramms (englisch boot code) (in Bytes) | Nein |
| 100-103 | 0x0064 | 4 | Adresse des Bootloaders (englisch boot loader code) | Nein |
| 104-107 | 0x0068 | 4 | reserviert | Nein |
| 108-111 | 0x006C | 4 | englisch boot code entry point | Nein |
| 112-115 | 0x0070 | 4 | reserviert | Nein |
| 116-119 | 0x0074 | 4 | Prüfsumme des Startprogramms (englisch boot code) | Nein |
| 120-135 | 0x0078 | 16 | Prozessortyp | Nein |
| 136-511 | 0x0088 | 376 | reserviert | Nein |

### Partitionstypen

| Identifier / Typ | Inhalt / Dateisystem | Name (typisch) | Beschreibung / Bemerkungen |
| Apple_Boot | Bootloader | MOSX_OF3_Booter, eXternal booter | Da zum Starten ein Dateisystem benötigt wird, das von der Open Firmware (“New World”: Open Firmware 3.0 und neuer) gelesen werden kann, wird diese Partition für BootX verwendet, wenn sich die Installation von Mac OS X nicht auf einem von der Open Firmware lesbaren Dateisystem befindet. Das ist z. B. bei Software-RAID-Konfigurationen der Fall oder wenn ein UFS-Dateisystem oder ein HFS+-Dateisystem, welches “case-sensitive” ist, verwendet wird. |
| Apple_Boot_RAID | Bootloader | Raid Partition | |
| Apple_Bootstrap | NewWorld bootblock | | Diese allgemeine Bootpartition der Open Firmware (New World) wird hauptsächlich von yaboot verwendet. Die Partition beinhaltet ein HFS-Dateisystem, das von der Open Firmware gelesen werden kann. |
| Apple_Driver | Gerätetreiber | Macintosh | Treiber-Partition von Mac OS (Classic). |
| Apple_Driver43 | SCSI-Manager 4.3 (Gerätetreiber) | Macintosh | Treiber-Partition von Mac OS (Classic). |
| Apple_Driver43_CD | SCSI-CD-ROM-Treiber | Macintosh | Treiber-Partition von Mac OS (Classic). |
| Apple_Driver_ATA | ATA-Treiber | Macintosh | Treiber-Partition von Mac OS (Classic). |
| Apple_Driver_ATAPI | ATAPI-Treiber | Macintosh | Treiber-Partition von Mac OS (Classic). |
| Apple_Driver_IOKit | IOKit-Treiber | Macintosh | Treiber-Partition von Mac OS (Classic). |
| Apple_Driver_OpenFirmware | | Macintosh | |
| Apple_Extra | unbenutzt | | Dieser Partitionstyp kennzeichnet eine unbenutzte Partition. |
| Apple_Free | freier Speicher | Extra | Dieser Partitionstyp markiert freien Speicherplatz. Hier zeigt sich deutlich die Besonderheit der Apple Partition Map: selbst freier Speicher ist einer Partition zugeordnet. |
| Apple_FWDriver | FireWire-Treiber | Macintosh | Treiber-Partition von Mac OS (Classic). |
| Apple_HFS | Hierarchical File System | Apple_HFS | Wird von Mac OS und Mac OS X normalerweise mit dem HFS- oder HFS+-Dateisystem verwendet, kann jedoch auch ein „MS-DOS-Dateisystem“ (File Allocation Table) enthalten, auf das ebenfalls von Mac OS und Mac OS X zugegriffen werden kann. |
| Apple_HFSX | HFS Plus | | Diese Partition enthält ein HFS+-Dateisystem ohne “HFS wrapper”, wodurch es nicht mehr direkt startbar ist. HFSX wurde mit Mac OS X Panther (10.3, 2003) eingeführt und wird nur in besonderen Fällen verwendet, etwa wenn ein HFS+ in der Variante “case-sensitive” verwendet wird. HFSX ist der Standard-GUID-Partitionstyp auf Intel-basierten Macs. |
| Apple_Loader | – | SecondaryLoader | Beinhaltet BootX, den Bootloader für Mac OS X, analog zu Apple_Boot, jedoch für “Old World”-Macs. Diese Partition beinhaltet kein Dateisystem, sondern ausführbaren BootX-Code im XCOFF-Format. Diese Partition wurde unter Mac OS X Server und unter Mac OS X bis Mac OS X 10.2 („Jaguar“, 2002) verwendet, wenn das Betriebssystem auf einem UFS- oder einem HFS+-Dateisystem, welches “case-sensitive” ist, installiert wurde. |
| Apple_MFS | Macintosh File System | | Dieser Partitionstyp wird von Mac OS für das Dateisystem Macintosh File System (MFS), wie es 1984 mit dem Macintosh 128k eingeführt wurde, verwendet. |
| Apple_Partition_Map | Partitionstabelle | Apple | Die Partitionstabelle selbst ist auch eine eigene Partition. Die Größe dieser Partition setzt gleichzeitig das Limit, wie viele Partition insgesamt definiert werden können. |
| Apple_Patches | patches | Patch Partition | Korrektur-Partition von Mac OS (Classic). |
| Apple_PRODOS | Apple ProDOS | | Dieser Partitionstyp wird von Apple ProDOS verwendet. |
| Apple_RAID | RAID | Apple_RAID_OfflineV2 | Dieser Typ markiert eine Software-RAID-Partition, wie sie von Mac OS X verwendet wird. Normalerweise beinhaltet sie ein HFS, HFS+- oder UFS-Dateisystem. |
| Apple_Rhapsody_UFS | Unix File System | Mac OS X Server | Dieser Partitionstyp beinhaltet ein Unix File System (UFS), wie es von Apple für das Rhapsody-Betriebssystem (die Entwicklung von OPENSTEP zu Mac OS X) und auch Mac OS X Server 1.0 bis 1.2v3 verwendet wurde. |
| Apple_Scratch | leer | | Dieser Partitionstyp markiert eine leere Partition. |
| Apple_Second | | | Dieser Partitionstyp beinhaltet einen Second stage bootloader. |
| Apple_UFS | Unix File System | Mac OS X, Apple_UFS | Dieser Partitionstyp beinhaltet ein Unix File System (UFS) wie es von Mac OS X und Mac OS X Server (ab Version 10.0) und vielen weiteren unixoiden Betriebssystemen genutzt wird. |
| Apple_UNIX_SVR2 | A/UX | | Ursprünglich stammt dieser Partitionstyp von A/UX (das Apple Unix-Betriebssystem basierend auf System V Release 2, daher SVR2) auf der Rechnerarchitektur m68k, es wurde aber später von MkLinux mit dem ext2-Dateisystem wiederverwendet. Es ist der Standard-Partitionstyp von vielen unixoiden Betriebssystemen wie etwa Linux und NetBSD. Diese Partition enthält ein Dateisystem, welches das Betriebssystem unterstützt oder vorgibt. Wenn es startfähig sein soll, muss ein Dateisystem verwendet werden, das vom Bootloader der Partition Apple_Bootstrap (z. B. yaboot) gelesen werden kann. |
| Apple_Void | ISO 9660 Padding | | Eine Dummy-Partition zur korrekten Ausrichtung (englisch Padding) auf startfähigen Speichermedien. |
| Be_BFS | Be File System | | Diese Partition beinhaltet ein Be File System (BFS) und wird normalerweise nur von BeOS verwendet. |

### Partitionsstatus

| Wert | Bedeutung | System |
| 0x00000001 | Eintrag ist gültig (englisch valid) | A/UX |
| 0x00000002 | Eintrag ist bereitgestellt (englisch allocated) | A/UX |
| 0x00000004 | Eintrag ist in Verwendung (englisch in use) | A/UX |
| 0x00000008 | Eintrag enthält Startinformationen (englisch boot information) | A/UX |
| 0x00000010 | Partition ist lesbar (englisch readable) | A/UX |
| 0x00000020 | Partition ist beschreibbar (englisch writable) | Macintosh, A/UX |
| 0x00000040 | Startprogramm ist positionsunabhängig | A/UX |
| 0x00000100 | Partition enthält chain-ladbaren Treiber | Macintosh |
| 0x00000200 | Partition enthält realen Treiber | Macintosh |
| 0x00000400 | Partition enthält Chain-Treiber | Macintosh |
| 0x40000000 | Partition beim Starten automatisch einbinden | Macintosh |
| 0x80000000 | Partition ist die Startpartition | Macintosh |