Da aktuell immer mehr von Euch anfangen mit Clover zu experimentieren und dabei recht schnell feststellen, das Clover um einiges komplizierter zu installieren ist als Chameleon oder Chimera versuche ich mal eine kleine Anleitung zu schreiben, wie sich Clover installieren und konfigurieren lässt und wobei man dabei achten muss.
Was wird benötigt:
USB Stick
PLIST Editor (entweder XCODE oder plistedit pro)
Was ist Clover eigentlich und welchen Vorteil habe ich durch Clover?
Anders als beispielsweise Chameleon oder Chimera ist Clover weniger ein in Bootloader im eigentlichen Sinne sondern vielmehr eine EFI Simulation die in Echtzeit funktioniert und es so möglich macht OSX mit seinem eigenen Bootloader zu starten. Einfach ausgedrückt hängt sich Clover so in den Bootprozess ein, dass es nach dem BIOS Post die Hardware analysiert und aus der gefundenen Hardware ein vollständig Apple kompatibles EFI Bios erzeugt. Hier ein Vergleich der Bootprozesse mit Chameleon/Chimera und Clover:
- Chimera/Chameleon: Bios->boot0->boot1->BootLoader->mach_kernel
- Clover: BIOS->boot0->boot1->BOOT->CLOVERX64.efi->Apple's boot.efi->mach_kernel
Während also Chameleon/Chimera Apples eigenen Bootloader umgehen um den Kernel zu starten gibt Clover nach kompletter EFI Simulation die Kontrolle an den AppleBootloader zurück was gleich mehrere Vorteile hat wobei der bedeutendste wohl die Tatsache ist, dass Clover OSX ermöglicht Informationen aus dem EFI zur Laufzeit zu bekommen was keiner der anderen Bootloader ermöglicht. Apple legt diverse Informationen zur Hardware im NVRAM des MACs ab was zur Laufzeit in Kombination mit dem aus dem EFI gelesenen Informationen passiert um im Anschluss die dort gespeicherten Informationen für verschiedenen Dienste und Services zu benutzen. Dieser Mechanismus funktioniert analog auch auf Hackintosh Systemen allerdings nur soweit, wie der Bootloader die nötigen Informationen zur Verfügung stellt. Bei Chimera oder Chameleon und deren derivaten sind einige, wenige dieser Werte so zu sagen unveränderbar hardcodiert vorhanden viele von Ihnen werden aber nicht bereit gestellt, weil sie für den Betrieb bisher nicht notwendig waren und genau diese Lücke schließt Clover damit, dass es OSX nicht einfach über einen alternativen Loader startet sondern anstelle dessen lieber dafür sorgt, dass OSX ein Umfeld vorfindet das so nah an einem echten MAC ist, das apples eigener Loader Einsatz finden kann.
Wie Installiere ich Clover?:
Zunächst auf keinen Fall direkt auf die Festplatte sondern zum testen und ausprobieren immer erst mal auf einen USB Stick um ein bootfähiges System in der Hinterhand zu haben, falls was schief geht. Den USB Stick bereiten wir uns mit dem Festplattendienstprogramm für die Installation von Clover vor indem wir ihm im GUID Layout partitionieren und anschließend MAC OS Extended (Journaled) formatieren. Die Größe des Sticks spielt fast keine Rolle, er sollte nur nicht kleiner als 512MB sein damit sich neben Clover noch einige Tools auf ihm unterbringen lassen. Wenn der Stick bereit ist kann das Installations Programm gestartet werden.
Als Ziel wählt Ihr natürlich Euren USB Stick aus. Wichtig ist, dass die Standardinstallation in vielen Fällen nicht funktioniert und Ihr jetzt über anpassen die zu Eurem System passenden Einstellungen wählen müsst. Je nach dem ob Ihr ein Board mit BIOS oder UEFI einsetzt müsst Ihr die entsprechenden Optionen wählen:
- Für klassisches Bios: BIOS MBR boot0hfs und je nachdem ob Ihr den 64Bit oder 32Bit Kernel starten möchtet für 2. die entsprechende EFI Variante (32 od. 64Bit)
- Für UEFI Mainboards: UEFI Boot und je nachdem ob Ihr den 64Bit oder 32Bit Kernel starten möchtet für 2. die entsprechende EFI Variante (32 od. 64Bit)
Beachtet bitte, dass die unter 2. gewählte Option das Verhalten von OSX entscheidend beeinflussen kann. Habt Ihr an dieser Stelle 32Bit gewählt wird ein 32Bit EFI emuliert was unter anderem dazu führt, dass ML nicht startet oder installiert werden kann, da es nicht auf MAC´s mit 32Bit EFI läuft und Lion den 64Bit Mode verweigert da auch dieser auf 32Bit EFI Systemen normalerweise nicht lauffähig ist. Solange es keine zwingende Notwendigkeit gibt auf 32Bit EFI zu gehen solltet Ihr die 64Bit Variante einsetzen. Wenn Ihr alles eingestellt habt klickt Ihr nun nur noch auf Installieren, gebt Euer Kennwort ein und wartet bis der Installer seine Arbeit erledigt hat. Die Installation des Sticks ist damit abgeschlossen. Bitte jetzt das System nicht mit dem Stick booten, denn noch sind wir nicht fertig...
Clover für den ersten Start konfigurieren:
Von Chameleon und dessen Derivaten kennen wir die beiden Dateien SMBIOS.plist und org.chameleon.Boot.plist beide gibt es unter Clover nicht mehr, ihre Inhalte werden zusammengefasst in der config.plist im Verzeichnis EFI untergebracht. Ich benutze zum bearbeiten von plist Dateien bevorzugt PlistEdit Pro es geht aber auch jeder einfache Text oder plist Editor. Anders als die beiden aus Chameleon oder Chimera bekannten Dateien bietet die config.plist von Clover jede Menge Möglichkeiten die Konfiguration zu beeinflussen. Folgende Blöcke stehen zur Verfügung:
- ACPI
- GRAPHICS
- PCI
- Pointer
- RtVariables
- SMBIOS
- SystemParameters
Auf Diese Blöcke werden wir jetzt den Inhalt unserer beiden vorhandenen plist Dateien im folgenden verteilen.
Block ACPI:
Analog zu den Einstellungen in der org.chameleon.Boot.plist kommen in diesem Block unsere Einstellungen bezüglich der Erzeugung von P und C States sowie der Name unserer ggf. eingesetzten DSDT unter wobei wir in diesem Arbeitsschritt unsere dsdt.aml sofern vorhanden auch gleich auf den Stick kopieren...
In meinem Fall sieht der Block wie folgt aus:
und die DSDT liegt hier:
Warum auch immer, aber es ist nötig die DSDT sofern sie denn vorhanden und nötig ist sowohl im ROOT als auch im /EFI/ACPI/patched Verzeichnis abzulegen damit Clover sie zuverlässig findet.
Block Graphics:
Ihr bootet mit GraphicsEnabler=Yes und/oder gebt einen bestimmten Framebuffer in der org.chameleon.Boot.plist vor? Falls ja gehören diese Einstellungen in den Block Graphics in die config.plist. Exemplarisch kann das so aussehen (ATI Karte, die GE=Yes benötigt und der Redwood Familie angehört (HD55XX)):
Bei NVidia Karten muss der Framebuffer Name nicht angegeben werden, hier reicht der 2. Key (GraphicsInjector).
Block PCI:
Dieser Block ist ziemlich wichtig da sich hier die PCIRootUID und die Device Properties festlegen lassen. Der volle Satz an Schlüsseln für den Bereich sieht wie folgt aus:
- <dict> <key>StringInjector</key>
- <string>No</string>
- <key>DeviceProperties</key>
- <string>7a00000001000000010000006e0000000200000002010c00d041030a0000000001010600001b7fff040028000000500069006e0043006f006e00660069006700750072006100740069006f006e00730000000800000001080100180000006c00610079006f00750074002d00690064000000080000000c000000</string>
- <key>PCIRootUID</key>
- <string>0</string>
- <key>HDAInjection</key>
- <string>Detect</string>
- <key>USBInjection</key>
- <string>Yes</string>
- <key>LpcTune</key>
- <string>Yes</string>
- </dict>
Zu befüllen ist das Ganze natürlich wieder analog zu Euren Einstellungen in der org.chameleon.Boot.plist. Je nachdem was dort in Richtung USBFixes und PCIRoot eingestellt gehört hierher übertragen. In Meinem Fall sieht das Ganze dann so aus. Zunächst org.chameleon.Boot.plist:
und analog dazu in der config.plist
- <key>PCI</key>
- <dict>
- <key>DeviceProperties</key>
- <string>4b00000001000000010000003f0000000100000002010c00d041030a0100000001010600041c0101060000007fff0400160000006200750069006c0074002d0069006e0000000500000001</string>
- <key>PCIRootUID</key>
- <string>0</string>
- <key>StringInjector</key>
- <string>No</string>
- </dict>
StringInjector muss in dem Fall den Wert No haben, das ansonsten Clover selbst die DeviceStrings generiert und einsetzt was Erfahrungsgemäß bei Systemen, die mit Chameleon und Device Strings aus EFI Studio installiert wurden zu Problemen führt.
Block Pointer:
Kann und darf ignoriert werden, da er lediglich angibt ob sich das EFI BootMenu von Clover mit der Mouse bedienen lassen soll oder eben nicht und falls die Bedienung mit der mouse erwünscht ist wie sich diese zu verhalten hat. Bei mir funktioniert das Ganze nicht, da ich eine Magic Mouse an Blootooth einsetze, die auf Bios Ebene noch nicht verfügbar ist.
Block RtVariables:
Jetzt wird es spannend, denn zusammen mit der Bergziege (MountainLion) hat Apple damit begonnen Dienste die bisher den iOS Geräten vorbehalten waren auch auf die MAC´s zu schaffen. Einer der prominentesten Vertreter dieser Dienste und zugleich auch der Grund dafür, warum sich plötzlich alle Welt für Clover interessiert dürfte wohl Messages sein. Neue Dienste bedeuten bei Apple auch immer neue Herausforderungen für die Hackintosh Community um diese auch auf den Hackie´s nutzen zu können. Echte MAC´s haben ein VRAM in dem diverse Informationen aus dem EFI gespeichert sind, welche dem klassischen Hackintosh fehlen einfach weil die Bootloader sie nicht bereitstellen, die Rede ist von RtVariablen die in den NvRam geschrieben werden beim Start des MAC´s und die Apple nutzt um diverse Autentifizierungen zu ermöglichen (iCloud, Messeges etc.). Neben der Seriennummer der MAC´s und dessen Mainboards befinden sich hier auch noch die MAC Adresse der Netzwerkkarte und diverse andere Informationen. Clover erlaub es uns diese Variablen zu setzen...
In den Key "MLB" Kommt Eure SerienNummer aus "Über Diesen MAC" die Ihr dann einfach auf 17 Stellen auffüllt. Den Key ROM könnt Ihr setzen, müsst es aber nicht bindend, da Clover das normalerweise automatisch erledigt. Für den KEY MLB liest man im Netz aktuell vielfach die Aussage, das es reicht hier irgendwelche 17 Zeichen einzugeben um Messages zu nutzen, ich rate davon ab und eher dazu die wirkliche Seriennummer zu verwenden und auf 17 Zeichen aufzufüllen. Bisher prüft Apple nicht ob die Seriennummer gültig ist, aber das kann sich schnell ändern.
Block SMBIOS:
Wer hätte es Gedacht, hier kommen die Informationen aus der bestehenden SMBIOS.plist rein wobei Clover hier ein Stück weiter ins Detail geht als es Chameleon und dessen Derivate tun. Keine Panik, die Informationen lassen sich leicht beschaffen. Macht man es sorgfältig sieht dieser Block wie folgt aus:
- <key>SMBIOS</key>
- <dict>
- <key>BiosReleaseDate</key>
- <string>05/03/10</string>
- <key>BiosVendor</key>
- <string>Apple Inc.</string>
- <key>BiosVersion</key>
- <string>MP31.88Z.006C.B05.0802291410</string>
- <key>Board-ID</key>
- <string>Mac-F42C88C8</string>
- <key>BoardManufacturer</key>
- <string>Apple Inc.</string>
- <key>BoardSerialNumber</key>
- <string>C020xxxxxxxxxxxxx</string>
- <key>Family</key>
- <string>MacPro</string>
- <key>Manufacturer</key>
- <string>Apple Inc.</string>
- <key>ProductName</key>
- <string>MacPro3,1</string>
- <key>SerialNumber</key>
- <string>YM812345678</string>
- <key>SmUUID</key>
- <string>6669A757-1CB8-5350-A16F-7A74DA1F41EB</string>
- <key>Version</key>
- <string>3.0</string>
- </dict>
Ich habe mir die Informationen aus ChameleonWizzard, Champlist und evermac.com zusammen gesucht ;). Die vielen "x" müsst Ihr natürlich ersetzen...
Block SystemParameters:
Ihr benutzt in der org.chameleon.Boot.plist bestimmt Bootparameter etwa Darkwake=0 etc. alles, was bei Euch als Bootflags zum Einsatz kommt gehört hier her. Zudem gehört hier mindestens folgende Einstellung rein um die im Block SMBIOS und RtVariables vorgenommen Einstellungen auch wirklich an OSX zu übergeben:
Vollständig sieht der Block bei mir so aus:
Bastelt man das alles zusammen erhält man am Ende ein Gesamtkunstwerk, dass als config.plist im Verzeichnis EFI auf dem USB Stick seinen Platz findet. Meine volle config.plist sieht wie folgt aus, Ihr dürft sie gerne kopieren und an Eure Gegebenheiten anpassen:
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
- <plist version="1.0">
- <dict>
- <key>ACPI</key>
- <dict>
- <key>DsdtName</key>
- <string>dsdt.aml</string>
- <key>GenerateCStates</key>
- <string>Yes</string>
- <key>GeneratePStates</key>
- <string>Yes</string>
- </dict>
- <key>CPU</key>
- <dict>
- <key>Turbo</key>
- <string>Yes</string>
- </dict>
- <key>Graphics</key>
- <dict>
- <key>FBName</key>
- <string>Redwood</string>
- <key>GraphicsInjector</key>
- <string>Yes</string>
- </dict>
- <key>PCI</key>
- <dict>
- <key>DeviceProperties</key>
- <string>4b00000001000000010000003f0000000100000002010c00d041030a0100000001010600041c0101060000007fff0400160000006200750069006c0074002d0069006e0000000500000001</string>
- <key>PCIRootUID</key>
- <string>0</string>
- <key>StringInjector</key>
- <string>No</string>
- </dict>
- <key>Pointer</key>
- <dict>
- <key>Speed</key>
- <string>8</string>
- </dict>
- <key>RtVariables</key>
- <dict>
- <key>MLB</key>
- <string>YMxxxxxxxxxxxxx</string>
- <key>ROM</key>
- <data>
- 1d7d9f7e
- </data>
- </dict>
- <key>SMBIOS</key>
- <dict>
- <key>BiosReleaseDate</key>
- <string>05/03/10</string>
- <key>BiosVendor</key>
- <string>Apple Inc.</string>
- <key>BiosVersion</key>
- <string>MP31.88Z.006C.B05.0802291410</string>
- <key>Board-ID</key>
- <string>Mac-F42C88C8</string>
- <key>BoardManufacturer</key>
- <string>Apple Inc.</string>
- <key>BoardSerialNumber</key>
- <string>C0xxxxxxxxxxxxxxx</string>
- <key>Family</key>
- <string>MacPro</string>
- <key>Manufacturer</key>
- <string>Apple Inc.</string>
- <key>ProductName</key>
- <string>MacPro3,1</string>
- <key>SerialNumber</key>
- <string>YMxxxxxxxxx</string>
- <key>SmUUID</key>
- <string>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</string>
- <key>Version</key>
- <string>3.0</string>
- </dict>
- <key>SystemParameters</key>
- <dict>
- <key>InjectSystemID</key>
- <string>Yes</string>
- <key>LegacyBoot</key>
- <string>PBR</string>
- <key>boot-args</key>
- <string>-v darkwake=0 arch=x86_64 Kernel=mach_kernel</string>
- <key>prev-lang:kbd</key>
- <string>en:0</string>
- </dict>
- </dict>
- </plist>
Die jeweils durch "x" ersetzten Werte findet Ihr heraus, wenn Ihr "Über diesen MAC" benutzt und hier dann "Weitere Informationen" -> "Systembericht". Die SmUUID entspricht hierbei dem Wert der unter Hardware-UUID angezeigt wird.
Nötige Kexte kopieren:
Zumindest auf meinen beiden Systemen war es notwendig die FakeSMC.kext und deren evtl. genutzten Plugins ins Verzeichnis /kexts/10.8/ auf dem Stick zu kopieren damit diese geladen wurden. Aus welchem Grund auch immer hat OSX das laden aus /S/L/E mit Clover verweigert, was nach kurzer Benutzung des Hacks natürlich zu Kernel Paniken geführt hat. Es kann, aber ausdrücklich muss nicht, ohne diesen Schritt gehen. Probiert hier einfach aus, was für Euch funktioniert und was nicht.
Wenn Ihr nun alles zusammen habt könnt Ihr Euren Hackintosh mit dem Stick booten und solltet in etwa von einem Botscreen empfangen werden, der diesem hier ähnlich sieht:
Wenn Ihr alles richtig gemacht habt und Euer Hacki mit Clover bootet, dann steht im Normalfall der Nutzung von Messages auch nichts mehr im Wege und die Probleme gehören der Vergangenheit an zumindest war es bei mir so....