Why does 'uname -m' says 'i386' even if I'm on Macbook Pro on Intel Core 2 Duo?

Solution 1:

It's because, by default, Mac OS X boots in 32-bit, excepts some recent models.

Quoted from Apple KB Mac OS X v10.6: Macs that use the 64-bit kernel :

This Mac uses the 64-bit kernel by default in Mac OS X v10.6 : 

 - Mac Pro (Mid 2010)

These Macs use the 64-bit kernel by default in Mac OS X Server 10.6 :

 - Xserve (Early 2008) and later
 - Mac Pro (Early 2008) and later
 - Mac mini (Mid 2010)

These Macs support the 64-bit kernel, but do not use it by default : 

 - iMac (Early 2008) and later
 - MacBook Pro (Early 2008) and later

Here is a little software that can help you to boot in 64-bit if your hardware supports it.

Solution 2:

uname is intended to be a very broad brush. It's of use to find out the continent on which you have landed soon after arrival on planet UNIX. Your kernel is 32 bit with that i386 answer.

system_profiler SPHardwareDataType and system_profiler SPSoftwareDataType are the tools for figuring detailed processor and kernel specifics at runtime.