dischord.org » Booting 64-bit Snow Leopard on a 2008 13″ Unibody MacBook

October 11, 2009

According to this post, booting into a 64-bit kernel in Snow Leopard on the ‘original’ 13″ Unibody MacBook is artificially crippled by Apple, despite the hardware being perfectly capable:

$ ioreg -p IODeviceTree -w0 -l | grep firmware-abi
| |   "firmware-abi" = <"EFI64">

This is somewhat annoying given that I’m a proud owner of said machine.  Why bother, you might ask?  Is it worth it?  Well that’s up to you, but significant performance increases have been reported especially in applications like Lightroom and Photoshop, so for me it’s worthwhile.

Anyway, the trick – as that article describes – is to modify the list of 64-bit capable models in boot.efi, and it’s more straightforward than you might think.

Firstly you’ll need to download an application called HexEdit from here, and then copy the boot.efi file somewhere for editing:

$ sudo cp /System/Library/CoreServices/boot.efi ~/Desktop/

Fire up HexEdit, and then open up the boot.efi file on your desktop.  Select Find / Go To Address from the menubar, and enter 0x266E8 as the address to jump to. You’ll see the following:

0x266E0: 38 47 01 00 00 00 00 00 00 00 00 00 00 00 00 00

Amend this to say:

0x266E0: 38 47 01 00 00 00 00 00 04 00 00 00 00 00 00 00

Be careful that you overwrite those values, and not accidentally insert.  Save the file, go back to the terminal and enter the following commands:

$ cd /System/Library/CoreServices
$ sudo chflags nouchg boot.efi
$ sudo cp boot.efi boot.efi.old
$ sudo cp ~/Desktop/boot.efi .
$ sudo chown root:wheel boot.efi
$ sudo chflags uchg boot.efi
$ sudo bless --folder /System/Library/CoreServices --file /System/Library/CoreServices/boot.efi

Note that we took a copy of the original boot.efi, just in case things happen to go awry.  You’ll also need to tell SL to boot the 64bit kernel by default, so do the following:

$ sudo vi /Library/Preferences/SystemConfiguration/com.apple.Boot.plist

And amend the Kernel Flags to read:

<key>Kernel Flags</key>
<string>arch=x86_64</string>

This will make your change to a 64-bit kernel the default.  If you wish to revert to the 32-bit kernel, press and hold 32 on the keyboard as your computer boots.

If all’s well, System Profiler should report that you’re running a 64-bit Kernel and Extensions:

Leave a Comment

Previous post:

Next post: