Я не совсем понимаю. Запуск Fedora Linux lscpu
дает:
Architecture: i686
CPU op-mode(s): 32-bit, 64-bit
...
Но когда я пытаюсь установить 64-битную программу (Chrome), я получаю сообщение об ошибке:
Пакет /....x86_64.rpm имеет несовместимую архитектуру x86_64. Допустимые архитектуры: ['i686', 'i586', 'i486', i386 ']
Меня меньше интересует возможность установки Chrome и больше интересует, почему lscpu
говорится, что мой процессор может работать в 64-битном режиме; очевидно, это не значит, что я могу запускать 64-битные программы. Кто-нибудь может уточнить?
cat /proc/cpu
, я думаю, при загрузке вы можете выбрать, хотите ли вы загружаться в 64 или 32-битном режиме/proc/cpuinfo
. Но это поднимает более любопытные вопросы. Эти*_lm
флаги указывают обе мои процессоры поддерживают длительный режим, но размеры адрес являются «36 бит физического,» ..Ответы:
lscpu
говорит вам, что ваша архитектура i686 (32-разрядный процессор Intel), и что ваш процессор поддерживает как 32-разрядный, так и 64-разрядный режимы работы. Вы не сможете установить x64-приложения, поскольку они созданы специально для x64-архитектур.Ваш конкретный процессор может работать со встроенными пакетами i386 или i686. Есть несколько способов проверить вашу архитектуру и настройки ОС.
lscpu
Как вы уже знаете, вы можете использовать команду lscpu. Он хорошо дает вам приблизительное представление о том, на что способен ваш процессор.
/ Proc / CPUInfo
На самом деле это данные, предоставляемые ядром, которые большинство инструментов, например,
lscpu
используют для отображения. Я нахожу этот вывод немного приятным в том, что он показывает некоторую информацию о номере модели вашего конкретного процессора. Также он покажет вам раздел для каждого ядра, которое может иметь ваш процессор.Вот вывод для одного ядра:
Вот как выглядят первые 3 строки каждого раздела для ядра:
Выходные данные
/proc/cpuinfo
также могут сказать вам тип архитектуры, которую ваш процессор предоставляет через различные флаги, которые он показывает. Обратите внимание на эти строки из приведенной выше команды:Флаги, заканчивающиеся на,
_lm
говорят вам, что ваш процессор поддерживает «длинный режим». Длинный режим - это другое название для 64-битного.uname
Эта команда может использоваться, чтобы определить, какую платформу поддерживает ваше ядро. Например:
64-битное ядро
32-битное ядро
Этот выход может быть уточнен немного дальше с помощью переключателей,
[-m|--machine]
,[-p|--processor]
, и[-i|--hardware-platform]
.Вот этот вывод для тех же систем выше.
64-битный
32-битный
ПРИМЕЧАНИЕ. Существует также краткая версия,
uname -m
которую вы можете запустить как отдельную командуarch
. Возвращает точно так же, какuname -m
. Вы можете прочитать больше оarch
команде в документации coreutils .выдержка
HWiNFO
Наверное, лучший инструмент для анализа вашего оборудования должен быть
hwinfo
. Этот пакет может показать вам практически все, что вы хотите / должны знать о любом из ваших аппаратных средств, прямо с терминала. Это спасло меня в десятки раз, когда мне понадобилась бы некоторая информация о чипе на материнской плате системы или мне нужно было узнать ревизию платы в слоте PCI.Вы можете запросить его в отношении различных подсистем компьютера. В нашем случае мы будем смотреть на
cpu
подсистему.Опять же, аналогично
/proc/cpuinfo
этой команде показывает состав каждого отдельного ядра в многоядерной системе. Вот первая строка из каждого раздела ядра, просто чтобы дать вам представление.getconf
Это, вероятно, самый очевидный способ сказать, какую архитектуру ваш процессор представляет ОС. Используя
getconf
ваш запрос к системной переменной LONG_BIT. Это не переменная окружения.lshw
Еще один инструмент, похожий по возможностям на
hwinfo
. Вы можете запросить практически все, что вы хотите знать о базовом оборудовании. Например:Операционные режимы процессора?
Некоторые из команд сообщают, что 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-битной, используйте эти команды:
Если, с другой стороны, вы хотите знать архитектуру процессора, используйте эти команды:
В частности, вы хотите искать поля, в которых говорится что-то вроде «ширина: 64» или «ширина: 32», если вы используете инструмент, подобный
lshw
, или искать флаги:lm
: Длинный режим (x86-64: amd64, также известный как Intel 64, то есть 64-разрядный)lahf_lm
: LAHF / SAHF в длинном режимеПрисутствие этих двух флагов говорит о том, что процессор 64-битный. Их отсутствие говорит вам, что он 32-битный.
Посмотрите эти URL для получения дополнительной информации о флагах процессора.
Ссылки
страницы руководства
статьи:
источник
lscpu
это несколько вводит в заблуждение, поскольку «архитектура: i686» на самом деле относится к запуску 32-разрядной ОС.Если ваше ядро является 32-битным ядром Linux, вы не сможете запускать 64-битные программы, даже если ваш процессор его поддерживает.
Установите 64-битное ядро (и, конечно, всю ОС), чтобы запустить 64-битное
источник
Для полноты: поскольку на большинстве 64-разрядных архитектур можно запускать 32-разрядный код как в пространстве ядра, так и в пространстве пользователя, не следует забывать, что на самом деле существует 4 возможных комбинации:
uname
это обычный способ определения варианта ядра. Для пользовательского пространстваfile
достаточно хорош для распознавания исполняемых файлов:file $SHELL
илиfile /sbin/init
являются удобными идиомами. Просто наличие обоих/lib/*.so
и/lib64/*.so
обычно является хорошим показателем того, что система поддерживает оба варианта пространства пользователя.источник
Чтобы узнать, установлен ли Ubuntu на 32 или 64 бита:
а) getconf LONG_BIT
б) uname -m
Если он показывает i686 или i386, это означает 32 бита. Если он показывает x86_64, это означает 64 бита.
Если процессор 32-битный, Ubuntu должен быть 32-битным. Если процессор имеет 64 бита, он может работать в 64 или 32 битах. Таким образом, мы можем выбрать: Ubuntu может иметь 32 или 64 бита.
Чтобы узнать, имеет ли процессор 32 или 64 бита:
а) grep -w lm / proc / cpuinfo
Если мы видим, что красный lm имеет 64 бита. В противном случае имеет 32 бита.
б) судо лшв | grep "описание: CPU" -A 12 | ширина grep
Это ясно говорит о том, что мы хотим знать.
Команда для обеих сведений:
lscpu
Нам просто нужно взглянуть на первые 2 строки вывода: «Architecture» сообщает об установленной версии Linux: «i686» представляет собой один из 32 битов, а «x86_64» - 64-битный. «CPU op-mode (s)» информирует о процессоре. «32-разрядный» представляет один из 32-разрядных, а «32-разрядный, 64-разрядный» или «64-разрядный» означает 64-разрядный.
источник