私のLinuxシステムは、次のように "uname -a"出力を報告します。
[root@tom i386]# uname -a
Linux tom 2.6.9-89.ELsmp #1 SMP Mon Apr 20 10:34:33 EDT 2009 i686 i686 i386 GNU/Linux
[root@tom i386]#
uname のマニュアルページによると、「i686 i686 i386」の項目は次のことを意味します。
- マシンハードウェア名(i686)
- プロセッサタイプ(i686)
- ハードウェアプラットフォーム(i386)
追加情報:
[root@tom i386]# cat /proc/cpuinfo
<snip>
vendor_id : GenuineIntel
CPU family : 6
model : 15
model name : Intel(R) Xeon(R) CPU 5148 @ 2.33 GHz
stepping : 6
CPU MHz : 2328.038
cache size : 4096 KB
</snip>
これら3つの項目(「i686 i686 i386」)をどのように区別できますか?
答え1
簡単に言うと、ハードウェアプラットフォーム(uname -i
) ==>オペレーティングシステムの種類です。 32ビットまたは64ビット。 32ビットオペレーティングシステムを使用してコードをコンパイルするために必要なパッケージとプラグインをインストールした後、これを64ビットオペレーティングシステムに変更しようとすると問題が発生する可能性があります。したがって、32ビットオペレーティングシステムに依存するプラグインを削除するか、32ビットオペレーティングシステム自体を維持することをお勧めします。
Machine( uname -m
) ===> プロセッサが内蔵マザーボードだと思います。
プロセッサ ( uname -p
) ==> CPU アーキテクチャは命令セットによって異なります。
重要:
マシンとプロセッサは同じでなければなりません。 32ビットでも64ビットでも、違いはありません。
ハードウェアプラットフォームは、マシンとプロセッサと同じかそれ以下でなければなりません。
答え2
プロセッサタイプ(または名前)は、プロセッサのアーキテクチャを表します。
ハードウェアコンピュータ名はプロセッサタイプと互換性がなければなりません。つまり、プロセッサの種類と同じでなければなりません。
最後に、ハードウェアプラットフォームは、ハードウェアがそれを処理するために使用する一連の命令のすべてを指し、プロセッサタイプよりも高いバージョンではありません。
たとえば、i386 プロセッサでは i686 命令セットを実行できません。
i686は64ビットプロセッサとアーキテクチャを意味しますが、プラットフォームを意味します。これは命令チャネル(64ビット)を意味するx686またはx86_64を意味します。
i386 = 32ビット
答え3
次のオプションを使用すると、これら3つの項目(「i686 i686 i386」)を区別できます。
[root@tom i386]# uname -a
Linux tom 2.6.9-89.ELsmp #1 SMP Mon Apr 20 10:34:33 EDT 2009 i686 i686 i386
GNU/Linux
[root@tom i386]#uname -m; -->machine hardware name
i686
[root@tom i386]#uname -p; -->processor type
i686
and last one is hardware platform(i386).