9

Linux カーネルが 32 ビットか 64 ビットかを確認する bash スクリプトを作成する必要があります。

uname -aコマンドを使用していますが、 x86_64の結果が得られます。ただし、x86 以外のアーキテクチャを使用している場合は結果が異なる可能性があるため、一般的な方法では使用できないと思います。

Linux の 32 ビット / 64 ビット カーネルを確認するにはどうすればよいですか?

4

7 に答える 7

18

問題はむしろ、あなたが32歳か64歳かを知ることによって何を達成するつもりですか?仮想の128ビット環境にいることの結果は何ですか?そして、実際にどの部分がNビットネスについてテストされていますか?CPUは64ビットモードでの実行をサポートする場合がありますが、環境は32ビットです。さらに、環境自体が混合モードである可能性があります。32ビットユーザースペースで64ビットカーネルを実行することを検討してください(少数の従来のRISCで実行されます)。そして、ユーザースペースが同種のビットネス/実行可能形式でない場合はどうなりますか?getconf LONG_BITそれがコンパイルされた方法に依存するので、それが同じように使用するのが無意味である理由です。

$ /rt64/usr/bin/getconf LONG_BIT
64
$ /usr/bin/getconf LONG_BIT
32
$ file /usr/bin/getconf /rt64/usr/bin/getconf
/usr/bin/getconf:      ELF 32-bit MSB executable, SPARC32PLUS, V8+ Required, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.4, not stripped
/rt64/usr/bin/getconf: ELF 64-bit MSB executable, SPARC V9, relaxed memory ordering, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.4, not stripped
$ uname -m
sparc64
于 2012-04-13T12:38:16.297 に答える
7

のサイズをシステムに照会できますlong int

getconf LONG_BIT

しかし、これがすべての異なるアーキテクチャに完全に移植できるかどうかはわかりません。

于 2012-04-13T09:10:55.730 に答える
2

私は次のことを思いつきました。が使用されていることinit(一部のディストリビューションは他のローダーに切り替えていますが、合理的に頻繁に使用されるもののリストを取得するのは簡単なはずです) であり、現在使用されてELFいるa.out. これらは、ほとんどのシステムにとって正しい仮定のように見えますが、おそらく組み込みシステムなどでは壊れている可能性があります。それでも、一般的な考え方は適応できるはずです (initプロセスまたは同等のものを取得し、 を使用してそのビット数を確認しますfile)。root として実行している場合は、ファイルのパスをたどる代わりに、使用できますfile $(sudo readlink -e /proc/1/exe)(PID 1initは、そのパスについて何かを想定するよりも移植性が高いでしょう)。

if file /sbin/init | fgrep 'ELF 64-bit' &>/dev/null; then
    echo "64-bit"
else
    echo "not 64-bit"
fi
于 2012-04-13T10:07:32.457 に答える
1

/proc/cpuinfo で lm (ロング モード) フラグを検索します。これが当てはまる場合は、64 ビット プロセッサを使用していることを意味します。簡単な grep でこの情報が得られるはずです。

カーネルのバージョンに関しては、una​​me -a 情報をいつでも grep できます。悪意のあるホスト名による不一致を軽視できるように、uname プログラムのソースを見つけることをお勧めします。

于 2012-04-13T09:39:55.963 に答える
0

探しているものに応じて、64 ビット proc に 32 ビットでインストールされたマシンがあります。私の場合、上記のすべてが 32 ビットを返します。

しかし、Ubuntu の lshw (lshw -c cpu) というハードウェアを見ると、cpu の説明から 64 ビット CPU が使用されていることが明確に示されているため、64 ビット バージョンの Ubuntu をインストールできたはずです。

/proc/cpuinfo は、lm フラグがロング モードを表すように、ハードウェアに関する優れた情報源でもあります。

良い1日を。ジャック。

于 2016-10-27T16:17:02.197 に答える
-2

uname 出力で '64' を grep する

uname -a | grep 64 
于 2012-04-13T08:52:57.683 に答える