ist sozusagen der Nachfoler des BIOS.
Wer mehr dazu erfahren will: http://de.wikipedia.org/wiki/Extensible_Firmware_Interface
Auf Macs werden vitale Hardware-Informationen die f�r die Inbetriebnahme des Betriebssystem erforderlich sind, durch EFI �bergeben. Da wir auf unseren normalo-PC's aber kein EFI besitzen, sondern nur das veraltete BIOS, m�ssen wir diese Informationen irgendwie an das Betriebssystem �bergeben. Fr�her wurden Kernel und bestimmte Kexte gepatcht, damit das System bootet. Heutzutage haben wir Bootloader, die die notwendigsten Informationen um Vanilla-Kernel/Kexte zu benutzen setzen. Um den, in meinen Augen besten Bootloader zu nennen, Chameleon. Doch das ist bei weitem nicht alles was dieser Bootloader kann. Auf der Homepage findet ihr eine vollst�ndige Liste der Features.
Ok, wir k�nnen nun Vanilla-Kernel/Kexte benutzen, aber wie sieht es mit der Grafikkarte, Soundkarte und Netzwerk aus?
Hier kommen so genannte Injektoren ins Spiel. Ursrp�nglich als Kexte gef�hrt (werden sie heute in Form von NVkush und Natit immernoch) injezieren sie bestimmte Informationen in die IORegistry, damit OS X wei�, welche Grafikkarte wir haben und welchen Treiber es laden muss. Die Richtigkeit dieser injezierten Werte ist immens wichtig, da auch nur ein kleiner Fehler bedeuten kann, dass falsche Treiber oder gar keine geladen werden. Eine andere M�glichkeit diese Werte zu injezieren sind "device-properties" Strings. Modifizierte Bootloader wie Chameleon unterst�tzen diese, wie ihr sie erstellt zeige ich euch weiter unten in diesem Thread. Die neueste Methode diese Werte zu injezieren ist per DSDT, doch dazu erz�hle ich euch in einem anderen Thread mehr.
F�r Soundkarten reicht es eigentlich die "layout-id" zu injezieren damit die AppleHDA.kext geladen wird, dennoch ist dies bei weitem nicht genug (au�er bei einem ALC889 codec) um Sound zum Laufen zu brigen. Ihr m�sst auch noch die AppleHDA.kext patchen, dazu gibts im Web recht gute und verst�ndliche Anleitungen (Google liebt dich). Da aber zurzeit an einem universellen Treiber gearbeitet wird lohnt es sich kaum noch sich mit diesem Thema zu befassen und deshalb werde ich auch nicht n�her darauf eingehen.
F�r Netzwerk werden wir nur eins injezieren, n�mlich "built-in". Dies ist erforderlich, da ansonsten Time-Machine ihren Dienst verweigern k�nnte.
"device-properties"-string erstellen f�r die GRAFIKKARTE
Wit brauchen folgendes:
- Passender Bootloader installiert (Chameleon)
- gfxutil
- Property List Editor
Die Tools bekommst du HIER
Einen funktionierenden Injector (Natit/Nvinject/NvinjectGo/Atiinject/NVkush....)
Einen Beispiel-String:
- NVIDIA GeForce 7xxx http://www.mediafire.com/?cytghb0gvnj
- NVIDIA GeForce 7400GO http://www.mediafire.com/?7txyld0dcxl
- NVIDIA GeForce 7300GT http://www.mediafire.com/?bnz5ntvxw99
- NVIDIA GeForce 7300GT EBERTS http://www.mediafire.com/?1s1wdyd3dqx
- NVIDIA GeForce 8600 http://www.mediafire.com/?1dnv0vjbmyz
- NVIDIA GeForce 8800 http://www.mediafire.com/?9mo4340bbdp
- NVIDIA GeForce 7950GT 256MB http://www.mediafire.com/?3z3iyxmxuln
- NVIDIA GeForce 7950GT 512MB http://www.mediafire.com/?1sd9nce4txo
- ATI X1900 http://www.mediafire.com/?8dn9lzwxxg5
- ATI 2400,2600,2900 http://www.mediafire.com/?frzxxyyh1s1
- Intel GMA 950 http://www.mediafire.com/?0dsmxvy1mbi
Nun gehts ans Eingemachte:
- Terminal �ffnen (/Anwendungen/Dienstprogramme/Terminal.app)
- cd "Ordner indem sich GFXUTIL befindet"
- ./gfxutil -f display
Nun spuckt euch das Tool den device-path eurer Grafikkarte aus, sieht ca. so aus:
CODE
DevicePath = PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)
Lasst dieses Fenster offen oder kopiert euch diesen String ab PciRoot.
Sofern in den Dateien mit dem Beispiels String, die ihr runtergeladen habt, keine Plist vorhanden ist, m�ssen wir diese zuerst generieren. Andernfalls muss die vorhandene Plist modifiziert werden.
- ./gfxutil -i hex -o xml "hier die hex datei ins terminal ziehen" string.plist

hier hervogehoben ist der Device-Path, ersetzt diesen mit eurem (siehe Punkt 2)
- Konsole �ffnen (/Anwendungen/Dienstprogramm/Console.app)
- Links system.log ausw�hlen
- rechts oben im Suchfeld euren Injector eingeben (zB NVinject)
schaut dann ca. so aus:CODENVinject: Probing.
NVinject: Setting NVPM=<data not shown>
NVinject: Setting @0,device_type=display
NVinject: Setting NVCAP=<data not shown>
NVinject: Setting @0,compatible=NVDA,NVMac
NVinject: Setting model=Graphics by NVIDIA
NVinject: Setting @1,name=NVDA,Display-B
NVinject: Setting device_type=NVDA,Parent
NVinject: Setting name=display
NVinject: Setting rom-revision=NVinject 0.2.1
NVinject: Setting @0,name=NVDA,Display-A
NVinject: Setting @1,compatible=NVDA,NVMac
NVinject: Setting @1,device_type=display - tragt diese Infos nun in eure Plist ein
- �ndert nur die Werte die ihr von der Konsole bekommen habt
NVCAP und NVPM erhalten wir mit (oder andere Werte die als <data not shown> angezeigt werden):
- ioreg -lw 0 -p IODeviceTree | grep NVCAP
- ioreg -lw 0 -p IODeviceTree | grep NVPM
- ./gfxutil -i xml -o hex EUER_STRING.plist EUER_STRING.hex
Unser String befindet sich jetzt in EUER_STRING.hex (k�nnt ihr mit TextEdit �ffnen)
- Backup der Boot.plist: cp /Library/Preferences/SystemConfiguration/com.apple.Boot.plist /Library/Preferences/SystemConfiguration/com.apple.Boot.plist.old
- �ffnet die Boot.plist mit Property List Editor
- klickt auf Root -> New Child "device-properties" ; Class = String ; Value = Euer generierter hex-string

- speichert die plist in einem Ordner auf den du Zugriff hast, zB Desktop
- Nun die modifizierte Boot.plist in den richtigen Ordner kopieren: sudo cp ~/Desktop/com.apple.Boot.plist /Library/Preferences/SystemConfiguration/
Nun, wir w�ren fertig
Eins noch: der Injector muss deaktiviert werden, das machen wir mit:
- sudo mv /System/Library/Extensions/"euer Injector".kext /System/Library/Extensions/"euer Injector".kext.old
- sudo touch /System/Library/Extensions/
Rebooten und viel Gl�ck
Ob der String auch �bergeben wurde �berpr�ft ihr mit:
- ioreg -lw 0 -p IODeviceTree | grep device-prop
"device-properties"-string erstellen f�r die NETZWERKKARTE
Wit brauchen folgendes:
- Passender Bootloader installiert (Chameleon)
- gfxutil
- Property List Editor
Die Tools bekommst du HIER
- Terminal �ffnen (/Anwendungen/Dienstprogramme/Terminal.app)
- cd "Ordner indem sich GFXUTIL befindet"
- ./gfxutil -f ethernet
Nun spuckt euch das Tool den device-path eurer Netzwerkkarte aus, sieht ca. so aus:
CODE
DevicePath = PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)
Lasst dieses Fenster offen oder kopiert euch diesen String ab PciRoot.
Sofern ihr schon einen String f�r eure Grafikkarte erstellt habt, �ffnet diesen und f�gt einfach einen zweiten device-path hinzu, ansonten erstellt einen neuen mit Property List Editor:
Speichere die modifizierte Plist ab.
- ./gfxutil -i xml -o hex EUER_STRING.plist EUER_STRING.hex
Unser String befindet sich jetzt in EUER_STRING.hex (k�nnt ihr mit TextEdit �ffnen)
- Backup der Boot.plist: cp /Library/Preferences/SystemConfiguration/com.apple.Boot.plist /Library/Preferences/SystemConfiguration/com.apple.Boot.plist.old
- �ffnet die Boot.plist mit Property List Editor
- klickt auf Root -> New Child "device-properties" ; Class = String ; Value = Euer generierter hex-string

- speichert die plist in einem Ordner auf den du Zugriff hast, zB Desktop
- Nun die modifizierte Boot.plist in den richtigen Ordner kopieren: sudo cp ~/Desktop/com.apple.Boot.plist /Library/Preferences/SystemConfiguration/
Nun, wir w�ren fertig
Reboot, viel Gl�ck.