Apple ist 2006 von der PowerPC-Plattform auf Intel umgestiegen und hat somit in Verbindung mit der Software BootCamp die Möglichkeit geschaffen Windows-Systeme (ab Windows XP) parallel auf dem Mac zu installieren. Apple hat den Sprung auf Intel-Prozessoren genutzt um die aktuellsten Techniken zu nutzen. Somit verwenden Intel-Mac EFI statt dem veralteten BIOS um ihr System zu starten und setzen ebenfalls auf GPT statt des veralteten MBR als Partitionsschema.
Diese Konstellation ist zwingend notwendig um Mac OS X zu starten. Dem gegenüber steht, dass Windows XP weder EFI noch GPT unterstützt (ich hoffe ich irre hier nicht). Um dieses Manko zu beheben wird der EFI durch BootCamp dazu gebracht dem zu installierenden Windows ein BIOS vor zu gaukeln. Damit all dies noch funktioniert ist es wichtig, dass das Partitionsschema von OS X nicht zerstört wird. Genau dies macht jedoch der Installer von FreeBSD bei einer Standardinstallation und verhindert somit, dass die installierten Systeme noch booten können.
Im Folgenden möchte ich zusammenfassen wie ich ein FreeBSD auf einen Intel Mac neben ein installiertes Mac OS X installiert habe. Ich gebe natürlich wie immer keine Garantie auf dem Inhalt dieses Textes. Zudem wurde der Inhalt lediglich auf dem unten genannten Gerät getestet und ist daher nicht als allgemeingültig zu betrachten.
Mittels Bootcamp wird unter Mac OS X eine leere Partition für FreeBSD angelegt. Auf die Frage ob man direkt mit der Installation beginnen möchte wird mit Beenden & später installieren geantwortet. Anschließend wird der Mac mit eingelegter FreeBSD-Installations-CD neu gestartet und dabei die Alt-Taste gedrückt. Im erscheinenden Bootmenü wird die CD (welche lustigerweise Windows heißt) ausgewählt.
Die Installation erfolgt analog zur „normalen“ Installation bis zum Punkt Partitionierung wie sie im Artikel Installation beschrieben wird. Im Folgenden wird erklärt wie, abweichend von der Standardinstallation, die Partitionierung vorzunehmen ist um ein lauffähiges System zu installieren.
Die Besonderheit am Mac ist, dass ein genaues Partitionsschema eingehalten werden muss damit das System booten kann. Um dies zu ermöglichen müssen nun einige Schritte von Hand erfolgen. In die Partitionierung wird über die Auswahl <Shell> eingestiegen woraufhin nach einem kurzen Begrüßungstext eine Shell zur Eingabe fordert.
Es hat sich als problematisch erwiesen die Partitionierung über das Programm gpart durchzuführen. Wenngleich es sich dabei um die moderne Variante handelt (welche im Allgemeinen auch vorzuziehen ist) hat dies auf dem Mac zu unzähligen Problemen geführt. Daher wird nun mit dem veralteten fdisk gearbeitet.
Die Eingabe von
# fdisk ada0
sollte nun eine Partitionstabelle liefern. Die dritte Partition ist hierbei von Interesse. Die genauen Werte der Partition sollten nach Möglichkeit notiert werden um sie später zu vergleichen.
Zunächst muss die BootCamp-Partition in eine FreeBSD-Slice geändert und aktiv geschaltet werden. Dies wird mittels fdisk durchgeführt.
# fdisk -u -3 ada0
Die Frage:
Do you want to change our idea of what BIOS thinks ? [n]
wird mit n beantwortet.
Nun wird die aktuelle Einstellung für die BootCamp-Partition (Partition Nr.3) angezeigt. Auf die Frage:
Do you want to change it? [n]
wird mit y geantwortet.
Die neue SysID wird abgefragt
Supply a decimal value for "syid (165=FreeBSD)" [11]
und mit 165 beantwortet.
Der Startwert der Partition bleibt erhalten:
Supply a decimal value for "start" [113920000]
(der hintere Wert kann abweichen) wird mit Return bestätigt
Und auch die Partitionsgröße wird nicht verändert:
Supply a decimal value for "size" [42381312]
(der hintere Wert kann abweichen) wird mit Return bestätigt
Fdisk wird sich nun vermutlich beschweren, dass die Partition nicht richtig in die Grenzen passen würde und bietet an dies zu berichtigen. Diese Warnung ist ein altes Relikt und würde uns nun alles zu Nichte machen. Daher muss
correct this automatically? [n]
mit n beantwortet werden.
Den Start und das Ende der Partition kann fdisk selbstständig festlegen. Hierbei hatte fdisk jedoch bei vorherigen Versuchen die Partition zerstört. Daher wird die Frage
Explicitly specify beg/end address ? [n]
mit y beantwortet.
Für die nun abgefragten Werte werden einfach die schon gültigen Werte übernommen.
Supply a decimal value for "beginning cylinder" [1023]
(der hintere Wert kann abweichen) wird mit Return bestätigt.
Supply a decimal value for "beginning head" [254]
(der hintere Wert kann abweichen) wird ebenfalls mit Return bestätigt.
Supply a decimal value for "beginning sector" [63]
(der hintere Wert kann abweichen) wird mit Return bestätigt.
Supply a decimal value for "ending cylinder" [1023]
(der hintere Wert kann abweichen) wird mit Return bestätigt.
Supply a decimal value for "ending head" [254]
(der hintere Wert kann abweichen) wird mit Return bestätigt.
Supply a decimal value for "ending sector" [63]
(der hintere Wert kann abweichen) wird mit Return bestätigt.
Damit wurden die Originalwerte der Partition übernommen.
Abschließend werden wir gefragt ob alles in Ordnung ist und wir bestätigen
Are you happy with this entry [n]
mit y.
Nun muss die Partition noch aktiv gesetzt werden und es wird auf die Frage
Do you want to change the active partition? [n]
ebenfalls mit y geantwortet.
Die darauf folgende Aufforderung:
Supply a decimal value for "active partition" [1]
wird mit 3 beantwortet um die BootCamp-Partition anzupassen.
Wieder werden wir gefragt ob alles passt und es wird
Are you happy with this choice [n]
ebenfalls mit y beantwortet.
Eine letzte Frage
Should we write new partition table? [n]
die mit y beantwortet wird und die Partition ist angepasst.
Zum Abschluss wird noch der Bootcode in den MBR der Festplatte geschrieben.
fdisk -B ada0
Hier muss ebenfalls wieder die Frage:
Do you want to change the boot code? [n]
mit y bestätigt werden.
Und ein allerletztes mal wird die Partitionierung samt Bootcode geschrieben wenn die Frage:
Should we write new partition table? [n]
mit y beantwortet wurde.
Nun wird innerhalb der FreeBSD-Slice ein eigenes Partitionsschema gesetzt und der Bootcode in die Slice geschrieben.
Mit dem folgenden Befehl wird innerhalb der BootCamp-Partition (Slice) eine einzige große FreeBSD-Partition (bsdlabel) angelegt und mit dem nötigen Bootcode versehen.
# bsdlabel -wB /dev/ada0p3
Die Partitionierung innerhalb ada0p3 kann nun angepasst werden um z.B. eine swap-Partition zu schaffen und ggf. um weitere Unterteilungen zu machen:
bsdlabel -e /dev/ada0p3
Anbei eine Beispielkonfiguration mit 2GB swap und dem Rest für eine einzige große /-Partition. Der Punkt c: muss erhalten bleiben wie er automatisch angelegt wurde, da dies die komplette Partition (Slice) widerspiegelt (an der ja im Moment nichts verändert werden soll):
# /dev/ada0p3: 8 partitions: # size offset fstype [fsize bsize bps/cpg] a: * 16 4.2BSD 0 0 b: 2G * swap c: 42381312 0 unused 0 0 # "raw" part, don't edit
Die swap-Partition muss nicht formatiert werden da sie als Rohdatenspeicher dient. Jedoch zur Formatierung der Datenpartition (und entsprechend jeder weiteren falls zusätzliche angelegt wurden) wird wie folgt vorgegangen:
# newfs -j -L ROOT /dev/ada0p3a
Um das System zu installieren muss die Partition nach /mnt gemountet werden. Soll das System auf mehrere Partitionen gesplittet werden müssen diese entsprechend in den Baum unterhalb mnt mit eingebunden werden.
# mount /dev/ufs/ROOT /mnt
Wie im Begrüungstext beim Betreten der Shell mitgeteilt wurde muss nun noch eine fstab Datei angelegt werden welche es dem System ermöglicht später von der richtigen Festplatte zu booten.
Hierzu wird die Datei /tmp/bsdinstall_etc/fstab in einem Editor geöffnet (z.B. vi oder ee) und wie folgt angepasst:
/dev/ada0p3b none swap sw 0 0 /dev/ufs/ROOT / ufs rw 1 1
Zusätzlich angelegte Partitionen müssen hier natürlich auch Erwähnung finden.
Nun muss nur noch die Shell verlassen werden und die normale Installation kann weiter gehen.
# exit
Wurde das System fertig installiert und ein Neustart durchgeführt kann bei gedrückter ALT-Taste während des Hochfahrens gewählt werden welches System gestartet werden soll. Das installierte FreeBSD wird als Windows im Bootmenü angezeigt.
Alternativ kann auch unter OS X der Bootmanager http://refit.sourceforge.net rEFIt installiert werden um zur Bootzeit ein elegantes Menü angezeigt zu bekommen.