Questa guida è divisa in tre parti: Introduzione, Video, Audio.
La versione originale in inglese è stata creata da MoDs nel forum del sito di Netkas, a cui vanno tutti i ringraziamenti, e da me è stata rivista e tradotta, aggiungendo alcuni dati mancanti.
PC_EFI?
PC_ECI ha cambiato l'intera scena del mondo OSx86. Questo emulatore di EFI ci permette in determinati PC, di far funzionare le kexts e i kernel originali. Alcune periferiche (che non esistono nel mondo Mac) hanno bisogno di particolari fix per funzionare.
Come funzionano queste fix?
La maggiorparte sono kexts (estensioni del kernel) e sono situate in /System/Library/Extensions/.
Mac OS usa una mappa chiamata "Device Tree". Questa mappa indica al kernel, durante il boot, quali driver caricare. Le kexts non fanno altro che "passare" i dati necessari al "Device Tree" durante il boot.
NVinject, Titan, Natit (injectors) non fanno altro che determinare la sk video usata e passare i dati al "Device Tree".
ALCinject fa lo stesso per l'audio.
Naturalmente anche se i dati per il video o l'audio sono passati al "Device Tree" dagli injectors, ma non sono presenti i drivers (kexts) per quella periferica questa non funzionerà.
PC_EFI Strings
Attualmente PC_EFI supporta le cosidette "pluggable strings" usate per aggiungere o passare dati al "Device Tree" durante il boot.
Queste "strings" sono serie molto lunghe di caratteri inserite nel file "/Library/Preferences/SystemConfiguration/com.apple.Boot.plist".
CODE
a603000001000000010000009a0300001400000002010c00d041030a000000000101060
00010101060000007fff040014000000400032002c006e0061006d00650000001100000073656e73
f722d706172656e7436000000400032002c00680077006300740072006c002d00700061007200610
6d0073002d00760065007200730069006f006e00000008000000000000021c000000640065007600
900630065005f0074007900700065000000100000004e5644412c4765466f7263650e0000006e006
006d00650000000f0000004e5644412c506172656e7422000000400030002c006400650076006900
30065005f00740079007000650000000b000000646973706c6179100000006d006f00640065006c0
00001e0000004e5649444941204765466f7263652037363030204754204546492200000040003100
c006400650076006900630065005f00740079007000650000000b000000646973706c61791200000
400032002c007200650067000000080000000000000222000000400032002c006400650076006900
30065005f0074007900700065000000120000004e5644412c6770752d64696f64652000000040003
002c0063006f006d00700061007400690062006c0065000000160000004e5644412c73656e736f72
d706172656e7422000000400032002c002300730069007a0065002d00630065006c006c007300000
080000000000000020000000400031002c0063006f006d00700061007400690062006c0065000000
e0000004e5644412c4e564d616314000000400030002c006e0061006d0065000000120000004e564
412c446973706c61792d413a000000400032002c0068007700730065006e0073006f0072002d0070
06100720061006d0073002d00760065007200730069006f006e00000008000000000000022600000
400032002c0023006100640072006500730073002d00630065006c006c0073000000080000000000
00114000000400031002c006e0061006d0065000000120000004e5644412c446973706c61792d422
000000400030002c0063006f006d00700061007400690062006c00650000000e0000004e5644412c
e564d61631e00000072006f006d002d007200650076006900730069006f006e00000008000000333
3232100000004e00560043004100500000001800000004000000000003000c000000000000070000
0000e0000004e00560050004d0000002000000001000000000000000000000000000000000000000
00000000000000
00010101060000007fff040014000000400032002c006e0061006d00650000001100000073656e73
f722d706172656e7436000000400032002c00680077006300740072006c002d00700061007200610
6d0073002d00760065007200730069006f006e00000008000000000000021c000000640065007600
900630065005f0074007900700065000000100000004e5644412c4765466f7263650e0000006e006
006d00650000000f0000004e5644412c506172656e7422000000400030002c006400650076006900
30065005f00740079007000650000000b000000646973706c6179100000006d006f00640065006c0
00001e0000004e5649444941204765466f7263652037363030204754204546492200000040003100
c006400650076006900630065005f00740079007000650000000b000000646973706c61791200000
400032002c007200650067000000080000000000000222000000400032002c006400650076006900
30065005f0074007900700065000000120000004e5644412c6770752d64696f64652000000040003
002c0063006f006d00700061007400690062006c0065000000160000004e5644412c73656e736f72
d706172656e7422000000400032002c002300730069007a0065002d00630065006c006c007300000
080000000000000020000000400031002c0063006f006d00700061007400690062006c0065000000
e0000004e5644412c4e564d616314000000400030002c006e0061006d0065000000120000004e564
412c446973706c61792d413a000000400032002c0068007700730065006e0073006f0072002d0070
06100720061006d0073002d00760065007200730069006f006e00000008000000000000022600000
400032002c0023006100640072006500730073002d00630065006c006c0073000000080000000000
00114000000400031002c006e0061006d0065000000120000004e5644412c446973706c61792d422
000000400030002c0063006f006d00700061007400690062006c00650000000e0000004e5644412c
e564d61631e00000072006f006d002d007200650076006900730069006f006e00000008000000333
3232100000004e00560043004100500000001800000004000000000003000c000000000000070000
0000e0000004e00560050004d0000002000000001000000000000000000000000000000000000000
00000000000000
Ad esempio ecco il file com.Apple.Boot.plist prima della modifica:
CODE
<?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>Kernel</key>
<string>mach_kernel</string>
<key>Kernel Flags</key>
<string></string>
</dict>
</plist>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Kernel</key>
<string>mach_kernel</string>
<key>Kernel Flags</key>
<string></string>
</dict>
</plist>
Per aggiungere la stringa aggiungi una nuova key chiamate "device-properties" al file come nell'esempio seguente:
CODE
<?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>Kernel</key>
<string>mach_kernel</string>
<key>Kernel Flags</key>
<string></string>
<key>device-properties</key>
<string>c50400000100000002000000230100000700000002010c00d0...</string>
</dict>
</plist>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Kernel</key>
<string>mach_kernel</string>
<key>Kernel Flags</key>
<string></string>
<key>device-properties</key>
<string>c50400000100000002000000230100000700000002010c00d0...</string>
</dict>
</plist>
Nota: non si può editare il com.Apple.Boot.plist nella cartella in cui è situato se non via terminale. Se volete usare Textedit o altro, modificate il file nel dekstop e rimpiazzatelo.
Perche usare queste "strings"?
1) Non dipendere da injectors vari, ma solo dalle presenza o meno di driver.
2) Rendere il PC più simile ad un Mac.
3) Tutto l'hardware che vi interessa (sino a 4 periferiche) sarà caricato in un solo file (in caso di rispistino basta backapparlo)
Devo sapere altro?
Si possono inserire indicare sino a 4 periferiche al "Device Tree".
Ad esempio: Video, Audio, Ethernet, Controller SATA (ICH8R), IDE (JMicron) ecc...
Il file com.Apple.Boot.plist non può avere dimensioni superiori a 16384 Byte.
Prossimamente le "strings" saranno indicate anche come "HEX String" e avranno estensione .hex.
Scaricatevi questo programma (l'ultima versione) da link http://forum.netkas.org/index.php/topic,64.0.html, vi servirà per convertire i file plist in hex e viceversa.
Consiglio anche in installarvi Xcode 3.0 per avere maggiori strumenti anche visuali per effettuare le modifiche e leggere il "Device Tree".
Prosegue.
