UPDATE: Please read Update 2 at the bottom of this post before using a 64-bit kernel as your default.
With Snow Leopard making its appearance this Friday, August 28, 2009, some people may be wondering whether they’ll be able to boot their Macs in 64-bit mode. Only Intel Xserves will boot this way by default. If you want to boot your desktop or mobile Mac in 64-bit mode, you’ll need to take some additional steps. The first is checking to see if your Mac has a 64-bit-capable EFI. If the output of the following command is EFI64, you’re good. If not, you’re out of luck.
ioreg -l -p IODeviceTree | awk -F'"' '/firmware-abi/{print $4}'
Once you’ve verified it’s possible, you have a couple options for making your Mac boot into 64-bit mode. I’d try them in this order. First, to affect the current boot only, hold down the ‘6’ and ‘4’ keys during bootup. Once you’ve verified it works and are comfortable with it, you can make the change permanent by adding an ‘arch=x86_64’ boot flag to your com.apple.Boot.plist, like so:
sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.Boot \ 'Kernel Flags' 'arch=x86_64'
UPDATE 1 (8/28/09): Apple has a couple new (and one older) knowledge-base articles pertaining to this topic.
- Mac OS X Server v10.6: Macs that use the 64-bit kernel
- Mac OS X Server v10.6: Starting up with the 32-bit or 64-bit kernel
- How to tell if your Intel-based Mac has a 32-bit or 64-bit processor
UPDATE 2 (8/29/09): This post has received quite a few hits, so I now feel the need to include some educational material about why Apple chose to make Snow Leopard boot with a 32-bit kernel by default.
The primary reason is for compatibility with third-party software, particularly software that requires kernel extensions. Probably the most widely know examples of software that depends upon kernel extensions, or kexts, are VMware Fusion and Parallels. If you use these to run Windows or Linux on your Mac, you’ll want to keep using a 32-bit kernel. Virtualization software needs direct access to the hardware normally controlled by the kernel (CPU, RAM, Disk) in order to “fool” operating systems into thinking they’re installed on “real” computers. The kernel extensions allow them to do this.
Kexts must be written specifically for 32-bit or 64-bit kernels. They are not interchangeable. Applications, on the other hand, can run at 64-bit even if the kernel is 32-bit. As far as your 64-bit CPU is concerned, the kernel is just another application. It’s a very important application — in the sense that it is code that is executed on a processor — whose job it is to arbitrate demands on the system’s resources. Most applications don’t have direct access to the CPU, RAM, or other physical devices, but make requests of the kernel instead.
UPDATE 3 (9/1/09): John Siracusa’s new article on Snow Leopard was posted today. Then entire thing is great reading, but I’m linking to the section that addresses 64-bit vs 32-bit here.
Some other cmds:
Snow Leopard 32bit or 64bit (Can also hold 32 keys to boot temporarily into 32bit or 64 for 64bit on bootup.):
ioreg -p IODeviceTree -w0 -l | grep firmware-abi
Snow Leopard 32bit or 64bit (Can also hold 32 keys to boot temporarily into 32bit or 64 for 64bit on bootup.):
uname -a
Print nvram settings:
nvram -p
Set boot-args to use 64 bit kernel:
nvram boot-args=”arch=x86_64″
Set boot-args to use 32 bit kernel:
sudo nvram boot-args=”arch=i386″
sudo nvram -d boot-args
Does not work on my MacBookPro2,2 (C2D 2,16)
Your MacBook Pro has a 32-bit EFI. Although this isn’t technically a barrier to loading a 64-bit kernel, Apple restricts loading of the 64-bit kernel to machines with 64-bit EFI.
cant boot 64bit mode anyway :
[floxy:~] root# ioreg -l -p IODeviceTree|grep abi
| | “firmware-abi” =
([floxy:~] root# nvram -p |grep arg
boot-args arch=x86_64
com.apple.Boot.plist:
Kernel Flags
arch=x86_64
[floxy:~] root# defaults find ‘Kernel Flags’
Found 1 keys in domain ‘com.apple.Boot’: {
“Kernel Flags” = “arch=x86_64”;
}
[floxy:~] root#
and anyway in About This Mac -> More info -> System:
64-bit Kernel and Extensions: No
please help..
I think this is a problem:
I have the 64-bit firmware on my imac
mymac:~ john$ sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.Boot ‘Kernel Flags’
2009-09-19 14:41:10.164 defaults[248:e07]
Rep argument is not a dictionary
Defaults have not been changed.
You left off the ‘arch=x85_64’ part. Make sure you use the whole command:
sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.Boot ‘Kernel Flags’ ‘arch=x86_64’
I tried the above-mentioned method together with the one on the Apple site under ‘Update 1’. This is the response from terminal:
Last login: Wed Sep 30 14:36:12 on console
vc-41-7-22-230:~ Chris$ sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.Boot ‘Kernel Flags’ ‘arch=x86_64′
Password:
2009-09-30 15:00:43.356 defaults[349:1707] Unexpected argument ‘arch=x86_64′; leaving defaults unchanged.
vc-41-7-22-230:~ Chris$
I own a MBP 3,1 and confirmed the EFI to be 64 compatible.
Any Thoughts?
Chris
you forgot the backslash
Just FYI: I’ve been having problems with Snow Leopard not respecting my Text Replacement preference to not substitute curly quotes in Safari forms (so any web pages HTML or CSS editing).
I’ve resorted to copying everything out to TextWrangler and then back into the browser for minor edits.
Something to be aware of.
Hey friend, congrats!Very good post.
I only have one question, do we have reports of MacBook 5,1 booting in 64 bit kernel mode?
The MacBook 5,1 does not come with a 64-bit EFI, so without a hack you can’t boot in 64-bit mode. Amit Singh wrote about such a hack on his blog. Check neat the end of the page.
nope, my Macbook does have a 64 bit EFI, that means that i can boot in 64 bit kernel mode?
Nope. MacBook 5,1 seems to be 32bit only
I tried it, and it still boots in 32bit mode
My macbook has the same configuration. MacBook 5,1 w/ 64-bit EFI, 8GB, Intel Core 2 Duo
I used the program described here: http://www.ahatfullofsky.comuv.com/English/Programs/SMS/SMS.html
Set to start in 64bit mode and Activity Monitor reports that kernal is 32bit
How to tell if your Intel-based Mac has a 32-bit or 64-bit processor
Processor Name 32- or 64-bit
Intel Core Solo 32 bit
Intel Core Duo 32 bit
Intel Core 2 Duo 64 bit
Intel Quad-Core Xeon 64 bit
The Mac Pro from End 2006 returns 32, and can’t get it to 64.
Snow Leopard runs fine on it of course.
The iMac 24″ from Early 2009 returns 64, and boots fine in 64.
And Snow Leopard runs fine on it too.
Powerbook from End 2005 of course won’t run Snow Leopard at all.
That’s my experience.
Thanks for this article!
Hi. I got:
MacBookPro3,1
Intel Core 2 Duo 2.4 GHz
Mac OS X 10.6.2
I did
sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.Boot ‘Kernel Flags’ ‘arch=x86_64’
and when checking System Software Overview, the 64-bit Kernel and Extensions says No. ¿any ideas?
also when typing nvram -p in Terminal, I get boot-args arch=x86_64
Have you rebooted?
Hello, I have a Macbook 4,1
2.4GHz Core 2 Duo
In terminal, i typed:
ioreg -l -p IODeviceTree | awk -F'”‘ ‘/firmware-abi/{print $4}’
I got back:
EFI64
Then typed:
sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.Boot ‘Kernel Flags’ ‘arch=x86_64’
I checked the preference list and everything was changed accordingly.
However everytime I reboot, it doesn’t go into 64-bit. In sys info it says:
64-bit Kernel and extentions: no
Why is this?
Have you tried:
I did, and terminal said:
nvram: Error setting variable – ‘boot-args’: (iokit/common) general error
Apparently Apple has hardcoded Macbook’s to not run 64-bit, is this just a myth?
I get the same error as Sam. Doesn’t boot into x64 ever. Not holding down 6+4 on boot, not running the terminal commands. 2007 Macbook Pro.
I was considering booting up my iMac 21.5″ late 2009 in 64 bit but now I realised that Parallels would have problems.
I’m guessing other software would work fine if I did launch in 64 bit.
Also I installed Adobe Master Collection CS5 64 bit – will it perform like a 64bit application even if I launch OSX Snow Leopard in 32 bit mode?
Parallels 6 and the most recent version of Parallels 5 will work when your Mac is booted in 64-bit kernel mode. I’d give 64-bit booting a try. If things work for you, there’s no reason not to use it permanently.
Oh really? That’s awesome thanks – I’ll give it a try later on and let you know if it works. If it does I’m making 64 bit permenant. :P
Ha, only a geek could get happy over this lol – I have a sad life :D
Hi there,
You have a comprehensive write up on enabling 64bit kernel in MacOS. I have researched a fair bit and tried, however still no luck.
I did the following, however terminal uname -a still shows 32bit.
1. sudo systemsetup -setkernelbootarchitecture x86_64
x86_64
Kernel Flags
arch=x86_64
2. nvram -p shows
boot-args arch=x86_64
3. ioreg -l -p IODeviceTree | awk -F’”‘ ‘/firmware-abi/{print $4}’
Yes I got EFI64
Macbook model 6,1.
Intel Core 2 Duo
Please help
i have macbook 5,1 and dual boot to windows 7 64-bit, windoze uses 64-bit kernel and dlls, so macbook is capable, fuck Jobs, what an asshole.
specs, late 2008, alum, core2, 2.4ghz, 8gb ram
What are you trying to do on your MacBook that will benefit from a 64-bit kernel so much?
I have a strange problem, possibly related, where I’m having nightmarish problems with libiconv.2.dylib and processor architectures. My system is good to go for 64 bit Kernel and Extension and i’ve set the the Boot.plist to x86_64.
So, ‘uname -m’ reports:
x86_64
‘uname -p’ reports:
i386
‘arch’ reports:
i386
I’m going crazy trying to figure out how to get ‘arch’ to return x86_64. When i try to compile programs from source my processor architecture is reported as i386:
checking build system type… i386-apple-darwin10.7.3
checking host system type… i386-apple-darwin10.7.3
checking target system type… i386-apple-darwin10.7.3
I’ve tried using configure with CFLAGS to force the arch type, but it still reports i386-apple-darwin10.7.3. This causes libiconv.2.dylib to not get loaded due to the architecture type mis-match between what ./configure detects and the arch-type of libiconv.2.dylib.
$ lipo -info /opt/local/lib/libiconv.2.dylib
Non-fat file: /opt/local/lib/libiconv.2.dylib is architecture: x86_64
Please someone help me before my MacBook gets launched out a window.
-Shawn
Hi i have a problem with my iMac i heard on a website that you could change your computer which is set to 32bit processor, to a use apps which require 64bit processors i went onto the apple boot.plist and change the text between the and to arch x86_64 and restarted it but now it will get to the white screen and keep flashing between the apple icon and an error sign, then occasionally a folder with a question mark will flash. But it repeatedly does this and will not load. Can anyone help me to reset the text back to normal or to force load the mac. Because i am not able to get on to change it to normal. What should i do?
You should boot your iMac from its install DVD and then use the Terminal app to change the boot.plist back to what it was. Also you don’t need to change your Mac to boot in 64-bit mode to use 64-bit apps. This ‘trick’ only changes how the kernel runs — not apps.
Hi!
I hope you guys (Pmbuko) are still there somewhere!! :)
I can’t get my mac into 64 bit. Sure, I am a absolute amateur but still. I think I did what was mentioned above. I someone can give me the winning advice, that would be great.
(I can send pictures (email) screenshots from the terminal if that helps…)
My Mac:
Mac Pro 1,1
Mac OS X 10.6.8
2 x 2.66 Ghz Dual-Core Intel Xeon
processors 2
Cores 4
Serielcode (I can give that if necessary).
1)
Macintosh:~ myname$ nvram boot-args=”arch=x86_64″
nvram: Error setting variable – ‘boot-args’: (iokit/common) general error
2)
Macintosh:~ myname$ uname -a
Darwin Macintosh.local 10.8.0 Darwin Kernel Version 10.8.0: Tue Jun 7 16:33:36 PDT 2011; root:xnu-1504.15.3~1/RELEASE_I386 i386
3)
Macintosh:~ dirkkamsteeg$ uname -m
i386
4)
Macintosh:~ myname$ *sudu nvram boot-args=”arch=x86_64″
-bash: *sudu: command not found
Macintosh:~ myname$ nvram -p
platform-uuid %00%00%00%00%00%00%10%00%80%00%00%17%f2%0c}%a6
SystemAudioVolume
5)
I also tried the thing with pressing 6 and 4 by starting the computer….
Thank you so much in advance. I never use these kind of blogs. So I will wait and see.
Dirk
Amsterdam – Netherlands
nobody…? s#cks