It is still ok but there are more easy ways to do it.
I am reposting the guide here with solars premissions.
Any questions can be asked at irc.osx86.hu #snowleopard
The Guide was ment for 10A380 but the same do apply for 10A432.
But for 10A421 and 10A432 you need to use the new dsmos from netkas.
dsmos
My hardware is pretty much compatible with Mac OS without much fuss.. I built this machine specifically for doing Mac OS stuff so as to make this easier and more vanilla, but with some hacking you should be able to apply this method to any Leopard/Snow Leopard installation.. it's the concepts that are important to understand, not the exact steps.
What you need
A computer that can run Mac OS:
Something with an Intel chipset from the past year or two is ideal.
Intel Core 2 Duo processor of some sort
BIOS set to AHCI for your SATA
SATA or USB hard drive and SATA cd/dvd drive
USB keyboard/mouse (as this is what Macs have)
Fairly recent NVidia or ATI video card
Here is what I used:
Gigabyte EP45T-UD3P motherboard
Intel E8600 Processor
NVidia 7950 GT PCI Express graphics card
Microsoft USB wired keyboard
Microsoft USB wired optical mouse
8GB OCZ DDR3 Memory
1.5TB SATA hard disk (this MUST be partitioned into smaller chunks; the bootloader will not work with a single 1.5TB partition)
About DSDT
The first challenge is booting. In order to successfully boot you need a cool bootloader like PC EFI v9 or Chameleon 2.0 RC1.
My computer worked fine in Leopard (10.5) but I couldn't get things to boot right in 10.6 until I created a DSDT patch.
The DSDT is part of the ACPI stuff which is part of the BIOS.. basically it's like a program that tells the operating system what hardware the computer has and how to access it.
It is not the only way the operating system discovers hardware but it is one of the ways and Mac OS expects certain devices to look a certain way. Computers are all different and made by different companies and people so there's a lot of variation in the general PC market, but Apple's obviously only got 4-5 computers they manufacture so they aren't writing their code to account for every variation.
Anyway, you will likely need to fix your DSDT. The nice thing about these great bootloaders we have available for OSX86 is that they not only emulate EFI for us, but they allow manipulating the DSDT by creating a patch file and putting it in the right place for the bootloader to find. The bootloader will replace the in-memory DSDT table with the one we provide before executing the operating system, so we have a chance to tweak things and make them look the way Mac OS wants.
The first tool you need for this is DSDT Patcher. Read the thread here or Google for it.
This includes iasl which is what you need to compile/decompile the DSDT, and includes a tool to make some fixes for you automatically. This is good to get started with, but you should get familiar with what's going on, how to decompile by hand and how to compile by hand as you will probably want to tweak it further.
The other tool I found useful is ACPI Patcher. Read the thread here to learn more about it.
You need some way to boot into Leopard to use some of this stuff, but if you're creative enough you can get your DSDT other ways (Linux, Windows)
Leopard is also a good way to test your DSDT prior to trying it with Snow Leopard. Most things are fixable through the DSDT if your computer is compatible with Mac OS already.
I got the sound on my motherboard (alc889a) to work without a modified kext by editing the DSDT.
Here is my DSDT compiled: EP45T-UD3P-DSDT.aml
And here it is decompiled: EP45T-UD3P-DSDT.dsl
Hint: to decompile an .aml file, use:
CODE
iasl -d /Path/DSDT.aml
to compile the .aml file from a .dsl file, use:
CODE
iasl -ta /Path/DSDT.dsl
Notable things to look at are the HDEF (just search the dsl file) - this makes my AppleHDA work with no modification, and the HPET which makes the AppleIntelCPUPowerManagement.kext load without kernel panic (but it is still preferred to block it, more about this later)
BIOS setup
This is for my motherboard, but the same ideas should apply for any others.
NOTE: right now each time I boot snow leopard I lose my BIOS settings. It's annoying but one way to make it a little less annoying is to save your settings in a profile inside the BIOS (F11) and after you reboot go back into the BIOS and load it with F12
UPDATE: CMOS reset fixed thanks to Stellarola. Make your RTC device look like this in your DSDT. It might be called RTC0, doesn't matter..
CODE
Device (RTC)
{
Name (_HID, EisaId ("PNP0B00"))
Name (_CRS, ResourceTemplate()
{
IO (Decode16, 0x0070, 0x0070, 0x00, 0x02)
})
}
{
Name (_HID, EisaId ("PNP0B00"))
Name (_CRS, ResourceTemplate()
{
IO (Decode16, 0x0070, 0x0070, 0x00, 0x02)
})
}
I have 6 yellow SATA ports that are from the Intel ICH10 and a few purple SATA ports + IDE port which are added by Gigabyte (I think it's JMicron). You need to turn off the 'Onboard' controller in the BIOS. It will disable the purple ports + IDE port.
Make sure you set the SATA mode to 'AHCI' not raid or IDE.
Enable the HPET and put in 64 bit mode (in Power management settings)
Disable the UART serial ports and the parallel port.
Set onboard azalia audio to Auto so you get sound.
Enable the gigabit LAN ports.
Enable firewire/USB 2.0
Files for installation
You are going to need Snow Leopard. The one that was given out at WWDC was build 10A380. As of this writing the most current is 10A394 but it is only distributed through Software Update. So basically start with an actual install disc (or dmg) of whatever the latest Snow Leopard is.
At the minimum you need a decrypt kext. The popular ones floating around are dsmos.kext and AppleDecrypt.kext. Note that you can use old ones from Leopard but one of the big features of Snow Leopard is the 64 bit kernel, which means you'll need new kext which include both a 32 bit and a 64 bit version in the binary, if you want to be able to boot in 64 bit mode.
I have collected the following kexts which in my opinion make for a perfect install:
dsmos - required to decrypt encrypted binaries
NullCPUPowerManagement - attaches in place of the real AppleIntelCPUPowerManagement which doesn't work right on PCs (kernel panic, cpu running hot)
OpenHaltRestart - very simple kext that makes reboot and shutdown work on PCs
PlatformUUID - sets the platform UUID so that you have a uniform UUID from the very start of the boot.. this UUID is used in your preferences files (among other things) and I think it is important for a clean install to have this right from the first boot.
Bootloader files:
These are for the first boot:
PCefi_v9_Installer_Final 2.dmg
boot - snowboot file (goes in /boot)
This is what we want to end up using in the end:
Chameleon-2.0-r431.pkg
smbios.plist - modify this to your tastes
You also need an EFI string for your video card. Search the forums, this is pretty easy to come by.
Installation
The easiest way to do this is by using an already working system. If you have a working Intel Mac with Snow Leopard running already, that's ideal. Basically the idea is to boot the working system, connect the target drive to that computer, and use the OSInstall.mpkg to install. There are lots of guides about how to do this on Leopard already but it boils down to this:
1. Connect the target drive.
2. Use Disk Utility to partition in using GPT - GUID Partition Table
Important: Right click on the new volume on your desktop, Get Info, Click the little lock icon in the bottom right corner to authenticate and UNCHECK 'Ignore ownership on this volume' or else the permissions will be all screwed up after you install.
3. Make sure that the new volume's root directory is owned by the root user.
CODE
sudo chown 0:0 /Volumes/Snow # substitute whatever you called your volume in place of Snow
4. Mount the Mac OS X Snow Leopard DVD (or image)
5. In terminal:
CODE
open /Volumes/Mac\ OS\ X\ Install\ DVD/System/Installation/Packages/OSInstall.mpkg
If you don't have a working Snow Leopard system to do it from, you can use Leopard maybe, but I had problems with the install failing at the end under Leopard.. It should certainly be doable but might require a little more effort.
First boot
You should have ended up with a stock, never booted system on your target drive.
Now to make it bootable..
The reason we're doing this 2-phase boot is because Chameleon 2.0 RC1 cannot yet make the .mkext archive for Snow Leopard on its own, so we need to boot with something else the first time.
NOTE: Here is my Extensions.mkext that works for me.. If this works for you, then you can skip this first boot step entirely and go right to chameleon, but if you need other kexts besides the 4 I'm using here then you'll have to make it yourself.
Extensions.mkext
NOTE: You can actually make the mkext in Leopard but just make sure you're specifying the proper directories like /Volumes/Snow Leopard/System/Library/Extensions not /System/Library/Extensions
1. Install PC EFI v9 on the target disk.
2. Replace the boot file in the root of the target volume with the snow boot file I linked to above.
3. Copy the 4 kexts I linked above into /System/Library/Extensions on the target volume (make sure you're not doing this to your working system.. /Volumes/Whatever/System/Library/Extensions)
4. Copy the DSDT.aml you created to the root of the new volume
5. Edit the UUID in the PlatformUUID.kext's Info.plist. Make it the same as the UUID in the smbios.plist file (which we aren't using yet), but will when we get chameleon installed. You can just generate a new UUID or use the one I generated in the smbios.plist. Google around if you don't know how to generate one.
6. Edit your /Library/Preferences/SystemConfiguration/com.apple.Boot.plist and add your EFI string. For me it looked like this:
CODE
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//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>b20200000100000001000000a60200001000000002010c00d041030a01000000010106000001
0101060000007fff04000e0000004e00560050004d00000020000000010000000000000000000000
0
000000000000000000000000000000024000000400030002c00630061006e002d0068006f0074002
d
0070006c0075006700000004000000220000004100410050004c002c0067007200610079002d0070
0
0610067006500000008000000010000001c0000006400650076006900630065005f0074007900700
0
650000000f0000004e5644412c506172656e740e0000006e0061006d00650000000b000000646973
7
06c617922000000400030002c006400650076006900630065005f00740079007000650000000b000
0
00646973706c6179100000006d006f00640065006c000000130000004765466f7263652037393530
2
0475422000000400031002c006400650076006900630065005f00740079007000650000000b00000
0
646973706c617920000000400031002c0063006f006d00700061007400690062006c00650000000e
0
000004e5644412c4e564d616314000000400030002c006e0061006d0065000000120000004e56444
1
2c446973706c61792d4114000000400031002c006e0061006d0065000000120000004e5644412c44
6
973706c61792d421200000049004f004e0061006d00650000000b000000646973706c61792000000
0
400030002c0063006f006d00700061007400690062006c00650000000e0000004e5644412c4e564d
6
16324000000400031002c00630061006e002d0068006f0074002d0070006c0075006700000004000
0
00100000004e00560043004100500000001800000004000000000003000c00000000000007000000
0
01e00000072006f006d002d007200650076006900730069006f006e0000000e0000004746582d535
4
52494e47</string>
</dict>
</plist>
<!DOCTYPE plist PUBLIC "-//Apple Computer//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>b20200000100000001000000a60200001000000002010c00d041030a01000000010106000001
0101060000007fff04000e0000004e00560050004d00000020000000010000000000000000000000
0
000000000000000000000000000000024000000400030002c00630061006e002d0068006f0074002
d
0070006c0075006700000004000000220000004100410050004c002c0067007200610079002d0070
0
0610067006500000008000000010000001c0000006400650076006900630065005f0074007900700
0
650000000f0000004e5644412c506172656e740e0000006e0061006d00650000000b000000646973
7
06c617922000000400030002c006400650076006900630065005f00740079007000650000000b000
0
00646973706c6179100000006d006f00640065006c000000130000004765466f7263652037393530
2
0475422000000400031002c006400650076006900630065005f00740079007000650000000b00000
0
646973706c617920000000400031002c0063006f006d00700061007400690062006c00650000000e
0
000004e5644412c4e564d616314000000400030002c006e0061006d0065000000120000004e56444
1
2c446973706c61792d4114000000400031002c006e0061006d0065000000120000004e5644412c44
6
973706c61792d421200000049004f004e0061006d00650000000b000000646973706c61792000000
0
400030002c0063006f006d00700061007400690062006c00650000000e0000004e5644412c4e564d
6
16324000000400031002c00630061006e002d0068006f0074002d0070006c0075006700000004000
0
00100000004e00560043004100500000001800000004000000000003000c00000000000007000000
0
01e00000072006f006d002d007200650076006900730069006f006e0000000e0000004746582d535
4
52494e47</string>
</dict>
</plist>
Unmount the volume and boot it up on your real system. Use -v in the bootloader so you can see the messages as it boots. Add -x64 to boot the 64 bit kernel instead of the 32 bit. This only applies to the first bootloader, not to Chameleon, which we will install after. At this point you should be seeing the Welcome video if your graphics string is right. You might even hear sound if your HDEF device is working. The only thing wrong with your system at this point is that your smbios will be messed up. When you go through the registration process your system will have a weird name, whatever it gets from smbios, instead of 'MacBook' or 'Mac Pro' or whatever. We will fix this later.
Go through the registration to create your user account, etc.
UPDATE: As an alternative to registering with the PC EFI v9 boot (with no smbios stuff) you can just boot single user mode and instead of keeping your Extensions.mkext in /Extra you can just go ahead and put it where it really belongs. This simplifies things a great deal and this is what I recommend now. If you do this you can just move on to installing Chameleon after you do the kextcache thing in single user mode, as it will then be able to boot with Chameleon. As an alternative, skip the EFI v9 thing and use EFI v10. It's the concepts that are important here not the exact steps, remember that!
Boot in single user mode by using the boot parameter -s
Use the following commands:
CODE
mount -uw /
kextcache -v 1 -t -l -m /System/Library/Caches/com.apple.kext.caches/Startup/Extensions.mkext /System/Library/Extensions /Extra/AdditionalExtensions # remove /Extra/AdditionalExtensions if you don't keep any under there
kextcache -v 1 -t -l -m /System/Library/Caches/com.apple.kext.caches/Startup/Extensions.mkext /System/Library/Extensions /Extra/AdditionalExtensions # remove /Extra/AdditionalExtensions if you don't keep any under there
Permanent boot
Now, we want to install Chameleon. The only catch is that Chameleon 2.0 RC1 needs you to create an Extensions.mkext for it (the -f thing doesn't work yet with it for snow leopard). So, install the Chameleon package. If you choose the Chameleon EFI it will read the com.apple.Boot.plist from your hidden EFI partition instead of from the normal partition. If you don't know how to do this then just use the regular one. Don't install the extra kexts, but you can install the themes.
1. Now, remove anything it put in /Extra/Extensions. Just remove the whole directory.
2. Create /Extra/AdditionalExtensions (or whatever you want to call it, just not Extensions, because chameleon can't yet process them into a mkext on its own)
CODE
sudo mkdir /Extra/AdditionalExtensions
3. Move the 4 kexts you installed in /System/Library/Extensions to your /Extra/AdditionalExtesions directory
CODE
sudo mv /System/Library/Extensions/dsmos.kext /Extra/AdditionalExtensions/
sudo mv /System/Library/Extensions/NullCPUPowerManagement.kext /Extra/AdditionalExtensions/
sudo mv /System/Library/Extensions/PlatformUUID.kext /Extra/AdditionalExtensions/
sudo mv /System/Library/Extensions/OpenHaltRestart.kext /Extra/AdditionalExtensions/
sudo mv /System/Library/Extensions/NullCPUPowerManagement.kext /Extra/AdditionalExtensions/
sudo mv /System/Library/Extensions/PlatformUUID.kext /Extra/AdditionalExtensions/
sudo mv /System/Library/Extensions/OpenHaltRestart.kext /Extra/AdditionalExtensions/
4. Make sure your filesystem root is owned by the root user
CODE
sudo chown 0:0 /
5. Remove the caches if they exist
CODE
sudo rm -fr /System/Library/Caches
6. Create the Extensions.mkext for Chameleon
CODE
sudo kextcache -v 1 -t -l -m /Extra/Extensions.mkext /Extra/AdditionalExtensions /System/Library/Extensions
Here is a script you can keep in /Extra to help you with this later.. just rename it to .sh (take off the .txt) and chmod 755 it:
make-mkext.sh
7. Put your smbios.plist into /Extra
8. You can also move the DSDT.aml into /Extra (Chameleon will read it from either place)
9. Copy your /Library/Preferences/SystemConfiguration/com.apple.Boot.plist to /Extra (edit if needed too, you can add Timeout, etc)
CODE
sudo cp /Library/Preferences/SystemConfiguration/com.apple.Boot.plist /Extra/
Hopefully it'll work! At this point you should be able to have a perfect system.
When booting with chameleon you can select which kernel to boot by using the parameter arch=i386 for 32 bit or arch=x86_64 for 64 bit. It will boot the 64 bit kernel by default if your system is capable. Don't use -f.
To fix your machine's name, go to System Preferences -> Sharing and change it to Soandso's Mac Pro or whatever
Turn off the sleep in Energy saver settings as it causes problems for a lot of people (it might not wake up).
-solar
Reason for edit: Guide is outdated.





Aug 15 2009, 08:46 PM






