uname
私のRHEL 5.4システムでは、-aの出力は次のようになります。
Linux <machine name> 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:48 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux
これは、ハードウェアが64ビット(おそらく最初のx86_64)で、OSも64ビット(最後のx86_64)という意味ですか?
また、これらのx86_64インスタンスはすべて何ですか?
32ビットオペレーティングシステムに64ビット仮想マシンをインストールできますか?それともその逆も可能ですか?
ベストアンサー1
ハードウェア、カーネル、およびユーザー空間プログラムは、単語サイズが異なる場合があります。
次の場合に確認できます。CPU
flags
ファイルの行を調べて、64ビット、32ビット、またはその両方がサポートされているかどうかを確認できます/proc/cpuinfo
。アーキテクチャスイートで考えられる兆候を理解する必要があります。たとえば、i386/amd64 プラットフォームでは、このlm
フラグは amd64 をサポートする CPU を識別します (このフラグのない CPU は i386 のみです)。grep -q '^flags *:.*\blm\b' /proc/cpuinfo # Assuming a PC
アーキテクチャを照会して、カーネルが32ビットか64ビットかを確認できます
uname -m
。たとえば、i[3456]86
32ビットですが、64ビットx86_64
です。一部のアーキテクチャでは、64ビットカーネルが32ビットユーザーモードプログラムを実行できるため、64uname -m
ビットカーネルが表示されても64ビットライブラリを使用できるという保証はありません。[ "$(uname -m)" = "x86_64" ] # Assuming a PC
クエリを使用すると、ユーザー空間で利用可能な項目を確認できます。最下位ビットサポート課
lsb_release
注文する。より正確には、サポートされているLSB機能の区切りリストをlsb_release -s
印刷します。:
すべての特徴に形があります。例えば、ix86 Cライブラリーの可用性はとしてマークされていますが、amd64用のエミュレーションライブラリーはとしてマークされています。ただし、すべてのディストリビューションが使用可能なすべてのLSBモジュールを宣言するわけではないため、この方法で検出できるよりも多くのLSBモジュールがある可能性があります。module-version-architecture
core-2.0-ia32
core-2.0-amd64
などのコマンドを使用するには、システムのアーキテクチャプログラムがどのアーキテクチャで構築されているかを確認できます
file /bin/ls
。混合システムも可能です。ls
システムに64ビットプログラムであっても、32ビットプログラムを実行するためのライブラリがインストールされている可能性があり、その逆もあります(あまり一般的ではありません)。sizeof(void*)
あるいは、(Cコンパイラが利用可能であると仮定)を印刷する5行のCプログラムをコンパイルして、開発に好まれる単語サイズを確認することもできますsizeof(size_t)
。コマンドを実行すると、少し信頼性の低い方法で同じ情報を取得できますgetconf LONG_BIT
。#include <stdio.h> int main() { printf("%d\n", (int)sizeof(void*)); return 0; }
仮想マシンの場合、32ビットシステムで64ビット仮想マシンを実行できるかどうか、またはその逆を実行できるかどうかは、仮想マシン技術によって異なります。特に参照 32ビットLinuxに64ビットLinux仮想マシンをインストールする方法は?
1 「ワード長」は「ビット数」の一般名です。²誰かが別のターゲットアーキテクチャを使用して代替Cコンパイラをインストールしたがシステムのデフォルト値をそのままにしている場合は、信頼できない可能性があり
ます。getconf