lscpu
говорит вам, что ваша архитектура i686 (32-разрядный процессор Intel), и что ваш процессор поддерживает как 32-разрядный, так и 64-разрядный режимы работы. Вы не сможете установить x64-приложения, поскольку они созданы специально для x64-архитектур.
Ваш конкретный процессор может работать со встроенными пакетами i386 или i686. Есть несколько способов проверить вашу архитектуру и настройки ОС.
Как вы уже знаете, вы можете использовать команду lscpu. Он хорошо дает вам приблизительное представление о том, на что способен ваш процессор.
$ 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
На самом деле это данные, предоставляемые ядром, которые большинство инструментов, например, lscpu
используют для отображения. Я нахожу этот вывод немного приятным в том, что он показывает некоторую информацию о номере модели вашего конкретного процессора. Также он покажет вам раздел для каждого ядра, которое может иметь ваш процессор.
Вот вывод для одного ядра:
$ 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:
Вот как выглядят первые 3 строки каждого раздела для ядра:
$ 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
Выходные данные /proc/cpuinfo
также могут сказать вам тип архитектуры, которую ваш процессор предоставляет через различные флаги, которые он показывает. Обратите внимание на эти строки из приведенной выше команды:
$ 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
Флаги, заканчивающиеся на, _lm
говорят вам, что ваш процессор поддерживает «длинный режим». Длинный режим - это другое название для 64-битного.
Эта команда может использоваться, чтобы определить, какую платформу поддерживает ваше ядро. Например:
64-битное ядро
$ 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
32-битное ядро
$ 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
Этот выход может быть уточнен немного дальше с помощью переключателей, [-m|--machine]
, [-p|--processor]
, и [-i|--hardware-platform]
.
Вот этот вывод для тех же систем выше.
64-битный
$ uname -m; uname -p; uname -i
x86_64
x86_64
x86_64
32-битный
$ uname -m; uname -p; uname -i
i686
i686
i386
ПРИМЕЧАНИЕ. Существует также краткая версия, uname -m
которую вы можете запустить как отдельную команду arch
. Возвращает точно так же, как uname -m
. Вы можете прочитать больше о arch
команде в документации coreutils .
выдержка
arch выводит имя оборудования машины и эквивалентно 'uname -m'.
Наверное, лучший инструмент для анализа вашего оборудования должен быть hwinfo
. Этот пакет может показать вам практически все, что вы хотите / должны знать о любом из ваших аппаратных средств, прямо с терминала. Это спасло меня в десятки раз, когда мне понадобилась бы некоторая информация о чипе на материнской плате системы или мне нужно было узнать ревизию платы в слоте PCI.
Вы можете запросить его в отношении различных подсистем компьютера. В нашем случае мы будем смотреть на cpu
подсистему.
$ 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
Опять же, аналогично /proc/cpuinfo
этой команде показывает состав каждого отдельного ядра в многоядерной системе. Вот первая строка из каждого раздела ядра, просто чтобы дать вам представление.
$ 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"
Это, вероятно, самый очевидный способ сказать, какую архитектуру ваш процессор представляет ОС. Используя getconf
ваш запрос к системной переменной LONG_BIT. Это не переменная окружения.
# 64-bit system
$ getconf LONG_BIT
64
# 32-bit system
$ getconf LONG_BIT
32
Еще один инструмент, похожий по возможностям на hwinfo
. Вы можете запросить практически все, что вы хотите знать о базовом оборудовании. Например:
# 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
Операционные режимы процессора?
Некоторые из команд сообщают, что 32-разрядный процессор поддерживает 32-разрядный и 64-разрядный режимы. Это может немного сбивать с толку и вводить в заблуждение, но если вы понимаете историю процессоров, в частности Intel, вы будете знать, что у них есть история игр с их продуктами, где процессор может иметь набор инструкций, который поддерживает 16-битные но может адресовать больше оперативной памяти, чем 2 ^ 16.
То же самое происходит с этими процессорами. Большинство людей знают, что 32-разрядный процессор может адресовать только 2 ^ 32 = 4 ГБ оперативной памяти. Но есть версии процессоров, которые могут адресовать больше. Эти процессоры часто используют ядро Linux с суффиксом PAE - расширение физического адреса . Использование ядра с поддержкой PAE вместе с этим оборудованием позволит вам адресовать до 64 ГБ в 32-битной системе.
Тогда вы можете подумать, зачем мне 64-битная архитектура? Проблема с этими процессорами заключается в том, что пространство одного процесса ограничено 2 ^ 32, поэтому, если у вас есть большая имитационная или вычислительная программа, которой требуется больше 2 ^ 32 адресуемого пространства в ОЗУ, то это не помогло бы вам с этим.
Взгляните на страницу википедии по микроархитектуре P6 (i686) для получения дополнительной информации.
TL; DR - Так какого черта архитектура моего процессора?
В общем, это может сбить с толку, потому что ряд команд и методологий выше используют термин «архитектура» свободно. Если вас интересует, является ли базовая ОС 32-битной или 64-битной, используйте эти команды:
- lscpu
- getconf LONG_BIT
- uname
Если, с другой стороны, вы хотите знать архитектуру процессора, используйте эти команды:
- / Proc / CPUInfo
- HWiNFO
- lshw
В частности, вы хотите искать поля, в которых говорится что-то вроде «ширина: 64» или «ширина: 32», если вы используете инструмент, подобный lshw
, или искать флаги:
lm
: Длинный режим (x86-64: amd64, также известный как Intel 64, то есть 64-разрядный)
lahf_lm
: LAHF / SAHF в длинном режиме
Присутствие этих двух флагов говорит о том, что процессор 64-битный. Их отсутствие говорит вам, что он 32-битный.
Посмотрите эти URL для получения дополнительной информации о флагах процессора.
Ссылки
страницы руководства
статьи:
cat /proc/cpu
, я думаю, при загрузке вы можете выбрать, хотите ли вы загружаться в 64 или 32-битном режиме