Czy mój procesor jest 64 czy 32-bitowy?

41

Jestem na Ubuntu i wykonałem to polecenie:

$ uname -a
Linux slabrams-desktop 2.6.32-29-generic #58-Ubuntu SMP Fri Feb 11 19:00:09 UTC 2011 i686 GNU/Linux

Czy to oznacza, że ​​korzystam z procesora 32-bitowego lub 64-bitowego?

Próbuję to rozgryźć, ponieważ dostaję błędy, które wyglądały tak:

cannot execute binary file

a od Googlinga myślałem, że to problem z procesorem. Jakieś pomysły?

Genadinik
źródło
Sprawdź ten link . Szczegółowy opis twojego problemu jest podany.
Prateek

Odpowiedzi:

32

Oznacza to, że używasz 32-bitowego jądra, co oznacza, że ​​możesz uruchamiać tylko aplikacje 32-bitowe bez użycia emulatora lub wirtualizacji.

Jeśli chcesz sprawdzić, czy Twój procesor jest 64-bitowy, poszukaj lmflag wymienionych na liście /proc/cpuinfo.

Ignacio Vazquez-Abrams
źródło
27
Również lscpumoże być używany i jest bardziej przyjazny.
enzotib
@Ignacio Więc mam 32-bitowy procesor, który będzie musiał uruchomić coś, co jest przeznaczone dla 64-bitów. Czy to w ogóle możliwe?
Genadinik,
4
Nie jestem Ignacio, ale ogólnie tak nie jest. Możesz jednak zainstalować maszynę wirtualną za pomocą produktu, który pozwala emulować system 64-bitowy na platformie 32-bitowej.
Eduardo I.
Znacznie lżejsza niż VM jest pojemnik chroot lub lxc połączony z QEMU. Wszystko zależy od tego, czego naprawdę potrzebujesz.
Ken Sharp
84

Możesz użyć lscpu.

someuser@somelaptop:~$ lscpu
Architecture:          i686           # <-- your kernel is 32 bit
CPU op-mode(s):        32-bit, 64-bit # <-- your cpu can handle 32 or 64 bit instructions
CPU(s):                4
Thread(s) per core:    2
Core(s) per socket:    2
CPU socket(s):         1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 37
Stepping:              5
CPU MHz:               1199.000
Virtualisation:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              3072K

Dalsze objaśnienie dziedziny architektury:

X86, i686, or i386      means you are running a 32 bit kernel.
X86_64 , amd64 , or X64 means you are running a 64 bit kernel.
Eric Johnson
źródło
1
@slm: pole architektury dotyczy jądra, a nie procesora. Zredagowałem swoją odpowiedź, aby była bardziej przejrzysta.
Eric Johnson
7

Można również sprawdzić architekturę binarny, który próbujesz uruchomić za pomocą pliku: file filetocheck. Wspomni on o wersji 32-bitowej lub 64-bitowej.

Eduardo I.
źródło
To powinna być pierwsza rzecz, która jest sprawdzana. 👍
Ken Sharp,
3

Podstawowy pomysł:

x86_64 jest procesorem obsługującym 64 bity, a i386 ma 32 bity.

Z lscpu

Długa odpowiedź: lscpu

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                2
On-line CPU(s) list:   0,1
Thread(s) per core:    1
Core(s) per socket:    2
Socket(s):             1
NUMA node(s):          1
Vendor ID:             AuthenticAMD
CPU family:            17
Model:                 3
Stepping:              1
CPU MHz:               550.000
BogoMIPS:              4397.92
Virtualization:        AMD-V
L1d cache:             64K
L1i cache:             64K
L2 cache:              512K
NUMA node0 CPU(s):     0,1

Krótka odpowiedź lscpu | awk '/CPU op-mode/ {print}

Wynik : CPU op-mode(s): 32-bit, 64-bit

Z lshw

Długa odpowiedź: biegnij sudo lshw

Nieco krótsza odpowiedź: sudo lshw -c cpu

Wynik:

 *-cpu                   
       description: CPU
       product: AMD Turion(tm) X2 Dual-Core Mobile RM-75
       vendor: Advanced Micro Devices [AMD]
       physical id: 4
       bus info: cpu@0
       version: Turion X2 Mobile RM-75
       slot: Socket M2/S1G1
       size: 550MHz
       capacity: 4GHz
       width: 64 bits
       clock: 200MHz
       capabilities: fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp x86-64 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc extd_apicid pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch osvw skinit hw_pstate lbrv svm_lock nrip_save vmmcall cpufr

Jeszcze krótsza odpowiedź: sudo lshw -c cpu | grep width

Wynik: width: 64 bits

Sergiy Kolodyazhnyy
źródło
2

uname -ppodać architekturę procesora. Jeśli daje x86_64, oznacza to, że procesor jest 64-bitowy.

Anand
źródło
1
Nie zawsze jest to słuszne, tho.
Braiam
2
@Braiam: Byłoby wspaniale, gdybyś mógł wyjaśnić dlaczego.
jobin
5
@Jobin: uname drukuje informacje dotyczące działającego jądra, a nie procesora. Na przykład możesz uruchomić 32-bitowe jądro na 64-bitowym procesorze.
Cristian Ciupitu
To zdecydowanie niepoprawne.
Ken Sharp