What does i386 mean on macOS Mojave?

6,907

Solution 1

According to this SO answer, arch distinguishes between PowerPC (ppc) and Intel (i386), not between 32- and 64-bit kernels on x86. So in this context, i386 means an x86 CPU.

Check the output of uname -m to find out your machine type. (On Linux, arch is the equivalent of uname -m.)

See also this Ask Different Q&A.

Solution 2

On a macOS system, as on other BSD systems, you should use the machine utility:

$ arch
i386
$ machine
x86_64h

The i386 is misleading if you're used to the arch utility on other systems. On macOS Mojave, i386 means it's capable of running 32-bit software compiled for the Intel family of processors. Note that the arch utility on macOS is used for quite different things compared to on e.g. Linux (see its manual).

You may also use uname -m as on Linux:

$ uname -m
x86_64

Solution 3

I feel that using the "traditional" utilities (e.g. arch, uname, sw_vers) to discover your Mac's hardware or software may not be very reliable. It's certainly inconsistent! Even the system manuals are rife with inconsistencies.

This is not to say that you can't get useful information from these utilities, it's only to say that unless you know what you're looking for, you may get results that are different from what you get on other systems.

For example:

$ arch
i386

No! (Unless you're using a really old computer.)

Another example is the OS version. man sw_vers and man uname both claim to report "OS Version":

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.14.4
BuildVersion:   18E226

$ uname -v
Darwin Kernel Version 18.5.0 ....  # output snipped 

Which is all well and good - we're aware that kernel and distro release version numbering is different, but the system manuals for both of these commands say you get OS Version. Understanding the genesis of the current macos explains some of this, but it doesn't explain why the system manuals are inconsistent.

And so, to the OP's question regarding how to get clear and reliable information on a system, I feel the answer should be to use system_profiler for both hardware and software:

$ system_profiler SPHardwareDataType
Hardware:

    Hardware Overview:

      Model Name: MacBook Pro
      Model Identifier: MacBookPro13,3
      Processor Name: Intel Core i7
      Processor Speed: 2.9 GHz
      Number of Processors: 1
      Total Number of Cores: 4
      L2 Cache (per Core): 256 KB
      L3 Cache: 8 MB
      Memory: 16 GB
      Boot ROM Version: 254.0.0.0.0
      SMC Version (system): 2.38f7
      Serial Number (system): C02*********
      Hardware UUID: ********-****-****-****-************

$ system_profiler SPSoftwareDataType
Software:

    System Software Overview:

      System Version: macOS 10.14.4 (18E226)
      Kernel Version: Darwin 18.5.0
      Boot Volume: Macintosh HD
      Boot Mode: Normal
      Computer Name: MacBook No 2
      User Name: Seamus (seamus)
      Secure Virtual Memory: Enabled
      System Integrity Protection: Enabled
      Time since boot: 13:13

Also, the system manual for system_profiler seems to be maintained to a more current state.

And finally, as to the Headline Question: "What does [the output of arch] i386 mean on macOS Mojave?". Answer: Unfortunately, it means that Apple has not maintained their documentation and/or apps properly.

Share:
6,907

Related videos on Youtube

WobblyWindows
Author by

WobblyWindows

Updated on September 18, 2022

Comments

  • WobblyWindows
    WobblyWindows almost 2 years

    I'm on a second-hand MacBook Pro from late 2013 (Mojave 10.14.3) and when I type arch on the Terminal, I get back i386. Shouldn't it be a x86_64? Did the seller misrepresent the item? Please see the screenshot below of 'About this Mac'. screenshot

  • Seamus
    Seamus about 5 years
    Not to make a mountain of a molehill, but AFAIK, there's no documentation from Apple to indicate that i386 designation implies it's capable of running 32-bit software... man arch certainly doesn't suggest that. IMHO, Apple's just dropped the ball, and allowed things to get a bit messy - perhaps in the name of backward compatibility?
  • WobblyWindows
    WobblyWindows about 5 years
    yep! I did uname -m and it gave me x86_64. So I guess it's a 64 bit CPU architecture. I tried arch just to try out a cmd that I had bumped into while studying for a Linux certification.