uname(1)
命令行实用程序有-m
选项,用于打印"机器硬件名称"。
在Linux上,此字段来自machine
的{{1}}成员,由uname(2)
系统调用填充。
许多其他语言API都会返回此信息:
os.uname()
和platform.machine()
php_uname()
"机器"的可能值是多少?字段吗
答案 0 :(得分:12)
(v4.12 - 2017年7月)
让我们来参考newuname系统调用的来源。
由于Linux具有UTS namespaces,init_uts_ns
machine
字段由UTS_MACHINE
宏初始化,因此对此进行跟踪很复杂,这是根据架构定义的
更复杂的问题是,machine
可以通过override_architecture()
覆盖,如果进程是在32位" compat"个性,COMPAT_UTS_MACHINE
。
UTS_MACHINE
默认Makefile
与ARCH
相同。但是,许多平台在同一arch
目录下具有单独的子架构,因此他们自己设置UTS_MACHINE
使用arch/
中的目录列表以及Linux内核源grep
和git grep 'UTS_MACHINE\s*:='
的一点git grep COMPAT_UTS_MACHINE
,我们可以到达此列表:
alpha
arc
arm
aarch64_be
(arm64
)aarch64
(arm64
)armv8b
(arm64
compat) armv8l
(arm64
compat)
blackfin
c6x
cris
frv
h8300
hexagon
ia64
m32r
m68k
metag
microblaze
mips
(原生或兼职)mips64
(mips
)mn10300
nios2
openrisc
parisc
(原生或兼职)parisc64
(parisc
)ppc
(powerpc
native or compat)ppc64
(powerpc
)ppcle
(powerpc
native or compat)ppc64le
(powerpc
)s390
(s390x
compat)s390x
score
sh
sh64
(sh
)sparc
(原生或兼职)sparc64
(sparc
)tile
unicore32
i386
(x86
)i686
(x86
compat)x86_64
(x64
)xtensa