man uname
-m, --machine print the machine hardware name
-i, --hardware-platform print the hardware platform or "unknown"
这里的硬件平台到底是什么意思?它与“机器硬件名称”有何不同?我在SE上发现了一些相关问题,但接受的答案似乎存在一些矛盾。我在哪里可以找到有关此术语的准确信息?
答案1
POSIXuname
定义-m
但不是-i
.-m
输出由返回的机器名称uname(2)
系统调用,在machine
条目中utsname
结构。可能的值取决于实现;在 Linux 系统上,它是内核的架构(x86_64
, i686
...),并且可以通过进程的个性来修改。
要了解所使用的各种机器名称,请查看config.guess
:每组值的第一个元素是机器名称,您将看到macppc
, alpha
, Alpha
, 21064
...
GNU coreutils
'uname
定义-i
为输出硬件平台名称(如果可以确定)。要了解这意味着什么,您需要查看源代码。如果系统uname
是建立在支撑之上的sysinfo(SI_PLATFORM, ...)
(autoconf
宏声称是POSIX,但我无法验证),然后使用那里返回的硬件平台。例如,这适用于 SunOS 和 Solaris,但不适用于 Linux。如果sysinfo
不可用,则sys/sysctl.h
检查包含HW_MODEL
和,如果它们都定义了,则使用HW_MACHINE_ARCH
给出的模型。sysctl()
这适用于某些 BSD 类型的平台。
总之,这两个值都依赖于实现,因此很难赋予它们真正的含义。
答案2
更多信息info uname
:
`-i'
`--hardware-platform'
Print the hardware platform name (sometimes called the hardware
implementation). Print `unknown' if the kernel does not make this
information easily available, as is the case with Linux kernels.
`-m'
`--machine'
Print the machine hardware name (sometimes called the hardware
class or hardware type).
基本上分类类型 - 您可以有不同的硬件实现 (-i),但具有/在相同的硬件类 (-m) 中。
例如,用于区分同一硬件类共享的内核模块和特定于特定硬件实现的模块。