lscpu
ti sta dicendo che la tua architettura è i686 (una CPU Intel a 32 bit) e che la tua CPU supporta entrambe le modalità operative a 32 e 64 bit. Non sarai in grado di installare applicazioni x64 poiché sono state create appositamente per architetture x64.
La tua particolare CPU può gestire i pacchetti integrati i386 o i686. Esistono diversi modi per verificare le preferenze dell'architettura e del sistema operativo.
Come già sapete, è possibile utilizzare il comando lscpu. Funziona bene nel darti un'idea di cosa sia capace la tua CPU.
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
CPU(s): 4
Thread(s) per core: 2
Core(s) per socket: 2
CPU socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 37
Stepping: 5
CPU MHz: 1199.000
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 3072K
NUMA node0 CPU(s): 0-3
Questi sono in realtà i dati forniti dal kernel che la maggior parte degli strumenti come lscpu
utilizzati per visualizzare. Trovo questo output un po 'carino nel fatto che ti mostra alcune informazioni sul numero di modello sulla tua particolare CPU. Inoltre ti mostrerà una sezione per ogni core che potrebbe avere la tua CPU.
Ecco l'output per un singolo core:
$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 37
model name : Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz
stepping : 5
cpu MHz : 1466.000
cache size : 3072 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
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 pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt aes lahf_lm ida arat tpr_shadow vnmi flexpriority ept vpid
bogomips : 5319.74
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
Ecco come appaiono le prime 3 righe di ogni sezione per un core:
$ grep processor -A 3 /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 37
--
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 37
--
processor : 2
vendor_id : GenuineIntel
cpu family : 6
model : 37
--
processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 37
L'output di /proc/cpuinfo
può anche dirti il tipo di architettura che la tua CPU sta fornendo attraverso i vari flag che mostra. Notare queste righe dal comando sopra:
$ grep /proc/cpuinfo | head -1
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 pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt aes lahf_lm ida arat tpr_shadow vnmi flexpriority ept vpid
I flag che finiscono _lm
indicano che il tuo processore supporta la "modalità lunga". La modalità lunga è un altro nome per 64 bit.
Questo comando può essere usato per determinare quale piattaforma è stata costruita per supportare il kernel. Per esempio:
Kernel a 64 bit
$ uname -a
Linux grinchy 2.6.35.14-106.fc14.x86_64 #1 SMP Wed Nov 23 13:07:52 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
Kernel a 32 bit
$ uname -a
Linux skinner.bubba.net 2.6.18-238.19.1.el5.centos.plus #1 SMP Mon Jul 18 10:07:01 EDT 2011 i686 i686 i386 GNU/Linux
Questa uscita può essere raffinato un po 'più con gli interruttori, [-m|--machine]
, [-p|--processor]
, e[-i|--hardware-platform]
.
Ecco quell'output per gli stessi sistemi precedenti.
64-bit
$ uname -m; uname -p; uname -i
x86_64
x86_64
x86_64
32-bit
$ uname -m; uname -p; uname -i
i686
i686
i386
NOTA: C'è anche una versione in forma abbreviata di uname -m
che è possibile eseguire un comando come stand-alone, arch
. Restituisce esattamente la stessa cosa di uname -m
. Puoi leggere di più sul arch
comando nella documentazione di coreutils .
estratto
arch stampa il nome dell'hardware della macchina ed equivale a "uname -m".
Probabilmente deve essere lo strumento migliore per analizzare il tuo hardware hwinfo
. Questo pacchetto può mostrarti praticamente tutto ciò che vorresti / dovresti sapere su qualsiasi tuo hardware, direttamente dal terminale. Mi salva decine di volte quando ho bisogno di alcune informazioni da un chip sulla scheda madre di un sistema o di dover conoscere la revisione di una scheda in uno slot PCI.
Puoi interrogarlo contro i diversi sottosistemi di un computer. Nel nostro caso vedremo il cpu
sottosistema.
$ hwinfo --cpu
01: None 00.0: 10103 CPU
[Created at cpu.301]
Unique ID: rdCR.a2KaNXABdY4
Hardware Class: cpu
Arch: X86-64
Vendor: "GenuineIntel"
Model: 6.37.5 "Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz"
Features: 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,pbe,syscall,nx,rdtscp,lm,constant_tsc,arch_perfmon,pebs,bts,rep_good,xtopology,nonstop_tsc,aperfmperf,pni,pclmulqdq,dtes64,monitor,ds_cpl,vmx,smx,est,tm2,ssse3,cx16,xtpr,pdcm,sse4_1,sse4_2,popcnt,aes,lahf_lm,ida,arat,tpr_shadow,vnmi,flexpriority,ept,vpid
Clock: 2666 MHz
BogoMips: 5319.74
Cache: 3072 kb
Units/Processor: 16
Config Status: cfg=new, avail=yes, need=no, active=unknown
Ancora una volta, simile a /proc/cpuinfo
questo comando mostra la composizione di ogni singolo core in un sistema multi-core. Ecco la prima riga di ogni sezione di un core, solo per darti un'idea.
$ hwinfo --cpu | grep CPU
01: None 00.0: 10103 CPU
Model: 6.37.5 "Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz"
02: None 01.0: 10103 CPU
Model: 6.37.5 "Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz"
03: None 02.0: 10103 CPU
Model: 6.37.5 "Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz"
04: None 03.0: 10103 CPU
Model: 6.37.5 "Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz"
Questo è probabilmente il modo più ovvio per dire quale architettura presenta la tua CPU al sistema operativo. Facendo uso di getconf
, si esegue una query sulla variabile di sistema LONG_BIT. Questa non è una variabile d'ambiente.
# 64-bit system
$ getconf LONG_BIT
64
# 32-bit system
$ getconf LONG_BIT
32
Ancora un altro strumento, simile nelle capacità a hwinfo
. Puoi interrogare praticamente tutto ciò che vuoi sapere sull'hardware sottostante. Per esempio:
# 64-bit Kernel
$ lshw -class cpu
*-cpu
description: CPU
product: Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz
vendor: Intel Corp.
physical id: 6
bus info: cpu@0
version: Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz
slot: None
size: 1199MHz
capacity: 1199MHz
width: 64 bits
clock: 133MHz
capabilities: fpu fpu_exception wp 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 pbe syscall nx rdtscp x86-64 constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt aes lahf_lm ida arat tpr_shadow vnmi flexpriority ept vpid cpufreq
configuration: cores=2 enabledcores=2 threads=4
# 32-bit Kernel
$ lshw -class cpu
*-cpu:0
description: CPU
product: Intel(R) Core(TM)2 CPU 4300 @ 1.80GHz
vendor: Intel Corp.
physical id: 400
bus info: cpu@0
version: 6.15.2
serial: 0000-06F2-0000-0000-0000-0000
slot: Microprocessor
size: 1800MHz
width: 64 bits
clock: 800MHz
capabilities: boot fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe x86-64 constant_tsc pni monitor ds_cpl est tm2 ssse3 cx16 xtpr lahf_lm
configuration: id=1
*-logicalcpu:0
description: Logical CPU
physical id: 1.1
width: 64 bits
capabilities: logical
*-logicalcpu:1
description: Logical CPU
physical id: 1.2
width: 64 bits
capabilities: logical
Modalità operativa CPU?
Numerosi comandi segnalano che quella che sembra essere una CPU a 32 bit supporta le modalità a 32 e 64 bit. Questo può essere un po 'confuso e fuorviante, ma se capisci la storia della CPU, in particolare Intel, saprai che hanno una storia di giochi con i loro prodotti in cui una CPU potrebbe avere un set di istruzioni che supporta 16 bit, ma può indirizzare più RAM di 2 ^ 16.
La stessa cosa sta succedendo con queste CPU. Molte persone sanno che una CPU a 32 bit può indirizzare solo 2 ^ 32 = 4 GB di RAM. Ma ci sono versioni di CPU che possono indirizzare di più. Queste CPU farebbero spesso uso di un kernel Linux con il suffisso PAE - Physical Address Extension . L'uso di un kernel abilitato per PAE insieme a questo hardware consente di indirizzare fino a 64 GB su un sistema a 32 bit.
Potresti pensare bene, allora perché ho bisogno di un'architettura a 64 bit? Il problema con queste CPU è che lo spazio di un singolo processo è limitato a 2 ^ 32, quindi se hai una simulazione di grandi dimensioni o un programma computazionale che richiede più di 2 ^ 32 di spazio indirizzabile nella RAM, questo non ti avrebbe aiutato con quello.
Dai un'occhiata alla pagina di Wikipedia sulla microarchitettura P6 (i686) per maggiori informazioni.
TL; DR - Cosa diavolo è l'architettura della mia CPU?
In generale, può diventare confuso perché una serie di comandi e metodologie di cui sopra utilizzano il termine "architettura" in modo approssimativo. Se sei interessato a sapere se il sistema operativo sottostante è a 32 o 64 bit, usa questi comandi:
- lscpu
- getconf LONG_BIT
- il tuo nome
Se invece vuoi conoscere l'architettura della CPU usa questi comandi:
- / Proc / cpuinfo
- hwinfo
- lshw
In particolare, si desidera cercare campi in cui si dice cose come "larghezza: 64" o "larghezza: 32" se si utilizza uno strumento simile lshw
o cercare i flag:
lm
: Modalità lunga (x86-64: amd64, noto anche come Intel 64, ovvero compatibile con 64 bit)
lahf_lm
: LAHF / SAHF in modalità lunga
I presenti di questi 2 flag indicano che la CPU è a 64 bit. Le loro assenze ti dicono che è a 32 bit.
Vedi questi URL per ulteriori informazioni sui flag della CPU.
Riferimenti
pagine man
articoli:
cat /proc/cpu
, penso che all'avvio puoi selezionare se vuoi avviare in modalità 64 o 32 bit