I was just going through uname
and found that -m
and -p
gave same result, but -i
returns a different result.
What is the difference between i686 and i386 ?
$ uname -mpi
gives i686 i686 i386
.
Not much of an answer but...
uname -mpi gives:
On my (64bit) i7 intel xenial system:
x86_64 x86_64 x86_64
On my Ubuntu BQ Aquaris m10 tablet
aarch64 aarch64 aarch64
On an qemnu-arm emulated system
armv7l armv7l armv7l
On a 32 precise system
i686 i686 i386
The man page on xenial says
-m, --machine
print the machine hardware name
-p, --processor
print the processor type (non-portable)
-i, --hardware-platform
print the hardware platform (non-portable)
while the precise man page says
-m, --machine
print the machine hardware name
-p, --processor
print the processor type or "unknown"
-i, --hardware-platform
print the hardware platform or "unknown"
this gnu manual page provides a little more info:
processor
Print the processor type (sometimes called the instruction set architecture or ISA). Print ‘unknown’ if this information is not available. Note this is non-portable (even across GNU/Linux distributions).
machine
Print the machine hardware name (sometimes called the hardware class or hardware type).
hardware-platform
Print the hardware platform name (sometimes called the hardware implementation). Print ‘unknown’ if this information is not available. Note this is non-portable (even across GNU/Linux distributions).
It kind of makes sense that hardware-platform
says i386
as that was (I believe) the first 32bit x86 processor. (and all subsequent 32bit x86 processors were compatible with it)
I guess (non-portable) means that it might not give a sensible answer on some platforms - so for my usage I think I'm sticking with uname -m
-p == central processor
-m == mainboard (housing the periphery parts the cpu needs to be able to work)
-i == architecture the OS was compiled against
x86
refers to the 32bit intel processor architecture, of which i386
and i686
are different processor family members, that implement the same architecture but have different feature sets. As long as newer families are backwards-compatible, they belong to the same architecture.
Depending which processor architecture specification cpu / mainboard / OS are (literally) built against, you have a different CPU instruction set you can use.
Since in your case your cpu and your board support the same instruction set that your operating system uses, and your OS doesn't use features your hardware does not support, you have no issues.