Linuxでの32bit/64bitの確認方法(CPU、カーネルのBit数)

契約しているVPSサーバ(OSはLinux)が、64bitなのか32bitなのかを再確認する必要があったため、コマンドを調べていたが、いくつか方法があり、少し紛らわしかったため、以下にまとめてみた。

Linuxで、cpuとカーネルについての情報を表示するコマンドは、以下のようなものがある。

getconf LONG_BIT コマンド

これが一番簡単で分かりやすい。Linux のカーネルの bit数を確認できます。

表示された数値が32なら32bit。64なら64bitということです。

$ getconf LONG_BIT

64     ← 上記コマンド実行結果

uname コマンド

コンピュータのシステム情報を表示します。「-a」オプションだと全てのオプションで得られる情報を表示しますが、「-m」オプションでハードウェア情報の絞ったほうが分かりやすいかもしれません。

この結果がx86_64だったら64bitになります。i686等だったら32bitです。

$ uname –a
Linux plus-idea.net 2.6.18-028stab091.2 #1 SMP Fri Jun 3 00:02:40 MSD 2011 x86_64 x86_64 x86_64 GNU/Linux

$ uname -m
x86_64

/proc/cpuinfo ファイル情報の表示

このファイルには、CPUの情報が格納されています。この情報の中で、「flags」の項目を確認し、そこに、「lm」という値があれば、64bitだということになります。ちなみに、「lm」は「Long Mode」のことで、64bitマシンのことになります。

似た値として、「lahf_lm」も表示されることがありますが、これは、「Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode」のことで、直接は関係ありません。

なお、マルチコアの場合はそれぞれのCPUの情報が表示されますので、複数回表示されることになります。この場合、大量の情報が表示されるので、grepで絞ったほうが良いかもしれません。

grep flags /proc/cpuinfo

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx rdtscp lm constant_tsc nonstop_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm