ハードウェアとオペレーティングシステムのビット数を確認するにはどうすればよいですか?

ハードウェアとオペレーティングシステムのビット数を確認するにはどうすればよいですか?

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

ハードウェア、カーネル、およびユーザー空間プログラムは、単語サイズが異なる場合があります。

  • 次の場合に確認できます。CPUflagsファイルの行を調べて、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]8632ビットですが、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-architecturecore-2.0-ia32core-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

おすすめ記事