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
グヌ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)にある場合があります。
たとえば、同じハードウェアクラスで共有するカーネルモジュールと、特定のハードウェア実装に固有のモジュールを区別するために使用されます。