该uname(1)命令行实用程序具有-m它打印“机器硬件名称”选项。
uname(1)
-m
在Linux上,此字段来自的machine成员(struct utsname由uname(2)系统调用填充)。
machine
struct utsname
uname(2)
许多其他语言API返回此信息:
os.uname()
platform.machine()
php_uname()
“机器”字段的可能值是什么?
(v4.12-2017年7月)
让我们参考newuname系统调用的源代码。
由于Linux具有UTS命名空间,因此要对此进行跟踪非常复杂,但是该字段是由按架构定义的宏初始化的。init_uts_ns machine``UTS_MACHINE
init_uts_ns
machine``UTS_MACHINE
如果进程在32位“ compat”字符下运行,则machine可以通过覆盖 进一步复杂的问题,override_architecture()方法是to COMPAT_UTS_MACHINE。
override_architecture()
COMPAT_UTS_MACHINE
UTS_MACHINE默认Makefile与相同ARCH。但是,许多平台在同一arch目录下有单独的子体系结构,因此它们可以UTS_MACHINE自行设置
UTS_MACHINE
Makefile
ARCH
arch
使用目录列表arch/以及grepLinux内核源代码(git grep 'UTS_MACHINE\s*:='和git grep COMPAT_UTS_MACHINE)的少量添加,我们可以得出以下列表:
arch/
grep
git grep 'UTS_MACHINE\s*:='
git grep COMPAT_UTS_MACHINE
alpha
arc
arm
aarch64_be(arm64)
aarch64_be
arm64
aarch64
armv8b
armv8l(arm64兼容)
armv8l
blackfin
c6x
cris
frv
h8300
hexagon
ia64
m32r
m68k
metag
microblaze
mips
mips64
mn10300
nios2
openrisc
parisc
parisc64
ppc
powerpc
ppc64
ppcle
ppc64le
s390
s390x
score
sh
sh64
sparc
sparc64
tile
unicore32
i386
x86
i686
x86_64
x64
xtensa