Estoy confundido. Ejecutando Fedora Linux, lscpu
produce:
Architecture: i686
CPU op-mode(s): 32-bit, 64-bit
...
Pero cuando intento instalar un programa de 64 bits (Chrome) me sale un error como:
El paquete /....x86_64.rpm tiene una arquitectura incompatible x86_64. Las arquitecturas válidas son ['i686', 'i586', 'i486', i386 ']
Estoy menos interesado en poder instalar Chrome y más interesado en por qué lscpu
dice que mi CPU puede ejecutarse en modo de 64 bits; claramente esto no puede significar que puedo ejecutar programas de 64 bits. ¿Alguien puede aclarar?
cat /proc/cpu
, creo que en el arranque se puede seleccionar si desea arranque en modo de 64 o 32 bits/proc/cpuinfo
. Pero esto plantea preguntas más curiosas. Las*_lm
banderas indican mis dos procesadores son compatibles con el modo de tiempo, pero los tamaños de dirección son "36 bits física," ..Respuestas:
lscpu
le dice que su arquitectura es i686 (una CPU Intel de 32 bits) y que su CPU admite los modos operativos de 32 y 64 bits. No podrá instalar aplicaciones compiladas x64 ya que están construidas específicamente para arquitecturas x64.Su CPU particular puede manejar los paquetes integrados i386 o i686. Hay varias formas de verificar sus preferencias de arquitectura y sistema operativo.
lscpu
Como ya sabe, puede usar el comando lscpu. Funciona bien para darle una idea aproximada de lo que su CPU es capaz de hacer.
/ proc / cpuinfo
En realidad, estos son los datos proporcionados por el núcleo que la mayoría de las herramientas, como el
lscpu
uso, muestran. Este resultado me parece un poco agradable en el hecho de que le muestra información sobre el número de modelo de su CPU en particular. También le mostrará una sección para cada núcleo que pueda tener su CPU.Aquí está la salida para un solo núcleo:
Así es como se ven las primeras 3 líneas de cada sección para un núcleo:
La salida de
/proc/cpuinfo
también puede indicarle el tipo de arquitectura que proporciona su CPU a través de los distintos indicadores que muestra. Observe estas líneas del comando anterior:Los indicadores que terminan en le
_lm
dicen que su procesador admite "modo largo". El modo largo es otro nombre para 64 bits.tu nombre
Este comando se puede usar para determinar para qué plataforma fue compatible su núcleo. Por ejemplo:
Kernel de 64 bits
Kernel de 32 bits
Esta salida puede ser refinado un poco más usando los interruptores,
[-m|--machine]
,[-p|--processor]
, y[-i|--hardware-platform]
.Aquí está esa salida para los mismos sistemas anteriores.
64 bits
32 bits
NOTA: También hay una versión abreviada de la
uname -m
que se puede ejecutar como un solo comando de soporte,arch
. Devuelve exactamente lo mismo queuname -m
. Puede leer más sobre elarch
comando en la documentación de coreutils .extracto
hwinfo
Probablemente la mejor herramienta para analizar su hardware tiene que ser
hwinfo
. Este paquete puede mostrarle casi cualquier cosa que desee / necesite saber sobre cualquiera de su hardware, directamente desde el terminal. Me ahorró docenas de veces cuando necesitaba algo de información de un chip en la placa base de un sistema o necesitaba saber la revisión de una placa en una ranura PCI.Puede consultarlo en los diferentes subsistemas de una computadora. En nuestro caso, veremos el
cpu
subsistema.Una vez más, similar a
/proc/cpuinfo
este comando muestra la composición de cada núcleo individual en un sistema de múltiples núcleos. Aquí está la primera línea de cada sección de un núcleo, solo para darle una idea.getconf
Esta es probablemente la forma más obvia de saber qué arquitectura presenta su CPU al sistema operativo. Haciendo uso de
getconf
, consulta la variable del sistema LONG_BIT. Esta no es una variable de entorno.lshw
Otra herramienta más, similar en capacidades a
hwinfo
. Puede consultar casi cualquier cosa que desee saber sobre el hardware subyacente. Por ejemplo:¿Modo (s) de CPU?
Varios de los comandos informan que lo que parece ser una CPU de 32 bits es compatible con los modos de 32 y 64 bits. Esto puede ser un poco confuso y engañoso, pero si comprende el historial de las CPU, Intel específicamente, sabrá que tienen un historial de juegos con sus productos en los que una CPU puede tener un conjunto de instrucciones que admite 16 bits, pero puede abordar más RAM que 2 ^ 16.
Lo mismo está sucediendo con estas CPU. La mayoría de las personas saben que una CPU de 32 bits solo puede direccionar 2 ^ 32 = 4 GB de RAM. Pero hay versiones de CPU que pueden abordar más. Estas CPU a menudo utilizarían un kernel de Linux con el sufijo PAE - Extensión de dirección física . El uso de un núcleo habilitado para PAE junto con este hardware le permitiría direccionar hasta 64 GB en un sistema de 32 bits.
Quizás pienses bien, ¿por qué necesito una arquitectura de 64 bits? El problema con estas CPU es que un solo espacio de procesos está limitado a 2 ^ 32, por lo que si tiene una gran simulación o programa computacional que necesita más de 2 ^ 32 de espacio direccionable en RAM, esto no lo habría ayudado con ese.
Eche un vistazo a la página de Wikipedia en la microarquitectura P6 (i686) para obtener más información.
TL; DR - Entonces, ¿qué diablos es la arquitectura de mi CPU?
En general, puede ser confuso porque varios de los comandos y metodologías anteriores están usando el término "arquitectura" de manera general. Si está interesado en saber si el sistema operativo subyacente es de 32 bits o de 64 bits, use estos comandos:
Si, por otro lado, desea conocer la arquitectura de la CPU, use estos comandos:
Específicamente, desea buscar campos donde diga cosas como "ancho: 64" o "ancho: 32" si está utilizando una herramienta como
lshw
, o busque las banderas:lm
: Modo largo (x86-64: amd64, también conocido como Intel 64, es decir, compatible con 64 bits)lahf_lm
: LAHF / SAHF en modo largoLos presentes de estos 2 indicadores le dicen que la CPU es de 64 bits. Sus ausencias te dicen que es de 32 bits.
Consulte estas URL para obtener información adicional sobre los indicadores de la CPU.
Referencias
páginas man
artículos:
fuente
lscpu
es algo engañoso en que "Arquitectura: i686" en realidad se refiere a ejecutar un sistema operativo de 32 bits.Si su kernel es un kernel de Linux de 32 bits, no podrá ejecutar programas de 64 bits, incluso si su procesador lo admite.
Instale un núcleo de 64 bits (y todo el sistema operativo, por supuesto) para ejecutar 64 bits
fuente
Para completar: dado que en la mayoría de las arquitecturas de 64 bits es posible ejecutar código de 32 bits, tanto en el espacio del kernel como en el espacio del usuario, no se debe olvidar que en realidad hay 4 combinaciones posibles:
uname
es la forma habitual de determinar la variante del núcleo. Para el espacio de usuario,file
es bastante bueno para reconocer ejecutables:file $SHELL
ofile /sbin/init
son modismos convenientes. Solo la existencia de ambos,/lib/*.so
y/lib64/*.so
generalmente es una buena indicación, de que el sistema tiene ambas variantes de espacio de usuario.fuente
Para saber si el Ubuntu instalado es de 32 o 64 bits:
a) getconf LONG_BIT
b) uname -m
Si muestra i686 o i386, significa 32 bits. Si muestra x86_64 significa 64 bits.
Si la CPU es de 32 bits, Ubuntu debe ser de 32 bits. Si la CPU es de 64 bits, puede funcionar en 64 o 32 bits. Entonces podemos elegir: Ubuntu puede ser de 32 bits o de 64 bits.
Para saber si la CPU es de 32 o 64 bits:
a) grep -w lm / proc / cpuinfo
Si vemos que lm en rojo es de 64 bits. De lo contrario es de 32 bits.
b) sudo lshw | grep "descripción: CPU" -A 12 | ancho grep
Dice claramente lo que queremos saber.
Un comando para ambas informaciones:
lscpu
Solo necesitamos echar un vistazo a las primeras 2 líneas de la salida: “Arquitectura” informa sobre la versión de Linux instalada: “i686 ″ representa uno de 32 bits, mientras que“ x86_64 ″ representa uno de 64 bits. El "Modo (s) de CPU" informa sobre la CPU. "32 bits" representa uno de los 32 bits, mientras que "32 bits, 64 bits" o "64 bits" representa uno de 64 bits.
fuente