Estou confuso. Rodar o Fedora Linux, lscpu
gera:
Architecture: i686
CPU op-mode(s): 32-bit, 64-bit
...
Mas quando tento instalar um programa de 64 bits (Chrome), recebo um erro como:
O pacote /....x86_64.rpm possui uma arquitetura incompatível x86_64. As arquiteturas válidas são ['i686', 'i586', 'i486', i386 ']
Estou menos interessado em poder instalar o Chrome e mais interessado em lscpu
dizer por que minha CPU pode funcionar no modo de 64 bits; claramente isso não significa que eu possa executar programas de 64 bits. Alguém pode esclarecer?
cat /proc/cpu
, acho que na inicialização você pode selecionar se você quer inicializar no modo de 64 ou 32 bits/proc/cpuinfo
. Mas isso levanta questões mais curiosas. Os*_lm
sinalizadores indicam os meus processadores suportam modo longo, mas os tamanhos de endereço são "36 bits físico," ..Respostas:
lscpu
está lhe dizendo que sua arquitetura é i686 (uma CPU Intel de 32 bits) e que sua CPU suporta os modos operacionais de 32 e 64 bits. Você não poderá instalar aplicativos criados em x64, pois eles foram criados especificamente para arquiteturas x64.Sua CPU específica pode lidar com os pacotes construídos i386 ou i686. Existem várias maneiras de verificar sua arquitetura e preferências do sistema operacional.
lscpu
Como você já sabe, você pode usar o comando lscpu. Funciona bem em fornecer uma idéia aproximada do que sua CPU é capaz.
/ proc / cpuinfo
Na verdade, esses são os dados fornecidos pelo kernel que a maioria das ferramentas, como as
lscpu
usadas para exibir. Acho essa saída um pouco agradável no fato de mostrar algumas informações sobre o número do modelo sobre sua CPU em particular. Também mostrará uma seção para cada núcleo que sua CPU possa ter.Aqui está a saída para um único núcleo:
Aqui está a aparência das três primeiras linhas de cada seção para um núcleo:
A saída de
/proc/cpuinfo
também pode informar o tipo de arquitetura que sua CPU está fornecendo através dos vários sinalizadores que mostra. Observe estas linhas do comando acima:Os sinalizadores que terminam
_lm
indicam que seu processador suporta "modo longo". Modo longo é outro nome para 64 bits.uname
Este comando pode ser usado para determinar qual plataforma seu kernel foi construído para suportar. Por exemplo:
Kernel de 64 bits
Kernel de 32 bits
Esta saída pode ser refinados usando um pouco mais os interruptores,
[-m|--machine]
,[-p|--processor]
, e[-i|--hardware-platform]
.Aqui está essa saída para os mesmos sistemas acima.
64 bits
32 bits
NOTA: Também há uma versão resumida da
uname -m
qual você pode executar como um comando independentearch
. Retorna exatamente a mesma coisa queuname -m
. Você pode ler mais sobre oarch
comando na documentação do coreutils .excerto
hwinfo
Provavelmente a melhor ferramenta para analisar seu hardware precisa ser
hwinfo
. Este pacote pode mostrar praticamente qualquer coisa que você queira / precise saber sobre qualquer hardware, diretamente do terminal. Isso me salvou dezenas de vezes quando eu precisava de algumas informações de um chip na placa-mãe de um sistema ou precisava saber a revisão de uma placa em um slot PCI.Você pode consultá-lo nos diferentes subsistemas de um computador. No nosso caso, veremos o
cpu
subsistema.Novamente, semelhante a
/proc/cpuinfo
este comando mostra a composição de cada núcleo individual em um sistema multinúcleo. Aqui está a primeira linha de cada seção de um núcleo, apenas para lhe dar uma idéia.getconf
Essa é provavelmente a maneira mais óbvia de dizer qual arquitetura sua CPU está apresentando ao sistema operacional. Fazendo uso
getconf
, você está consultando a variável do sistema LONG_BIT. Esta não é uma variável de ambiente.lshw
Mais uma ferramenta, semelhante em recursos a
hwinfo
. Você pode consultar praticamente qualquer coisa que queira saber sobre o hardware subjacente. Por exemplo:Modos operacionais da CPU?
Vários dos comandos relatam que o que parece ser uma CPU de 32 bits suporta os modos de 32 e 64 bits. Isso pode ser um pouco confuso e enganoso, mas se você entender o histórico das CPUs, especificamente da Intel, saberá que elas têm um histórico de jogos com seus produtos, onde uma CPU pode ter um conjunto de instruções compatível com 16 bits, mas pode endereçar mais RAM que 2 ^ 16.
O mesmo está acontecendo com essas CPUs. A maioria das pessoas sabe que uma CPU de 32 bits pode endereçar apenas 2 ^ 32 = 4GB de RAM. Mas existem versões de CPUs que podem resolver mais. Essas CPUs costumavam usar um kernel Linux com o sufixo PAE - Extensão de Endereço Físico . O uso de um kernel habilitado para PAE junto com este hardware permitiria endereçar até 64 GB em um sistema de 32 bits.
Você pode pensar bem, por que preciso de uma arquitetura de 64 bits? O problema com essas CPUs é que um único espaço de processo é limitado a 2 ^ 32, portanto, se você tiver um grande programa computacional de simulação que necessite de mais do que os 2 ^ 32 de espaço endereçável na RAM, isso não ajudará você com isso.
Dê uma olhada na página da Wikipédia na microarquitetura P6 (i686) para obter mais informações.
TL; DR - Então, o que diabos é a arquitetura da minha CPU?
Em geral, pode ficar confuso porque vários dos comandos e metodologias acima estão usando o termo "arquitetura" livremente. Se você estiver interessado em saber se o SO subjacente é de 32 ou 64 bits, use estes comandos:
Se, por outro lado, você deseja conhecer a arquitetura da CPU, use estes comandos:
Especificamente, você deseja procurar campos em que ele diz coisas como "width: 64" ou "width: 32" se estiver usando uma ferramenta como
lshw
, ou procurar os sinalizadores:lm
: Modo longo (x86-64: amd64, também conhecido como Intel 64, ou seja, compatível com 64 bits)lahf_lm
: LAHF / SAHF no modo longoOs presentes desses 2 sinalizadores informam que a CPU é de 64 bits. A ausência deles diz que é de 32 bits.
Veja esses URLs para obter informações adicionais sobre os sinalizadores da CPU.
Referências
páginas de manual
artigos:
fonte
lscpu
é um pouco enganador, pois "Architecture: i686" se refere à execução de um sistema operacional de 32 bits.Se o seu kernel for um kernel linux de 32 bits, você não poderá executar programas de 64 bits, mesmo que seu processador o suporte.
Instale um kernel de 64 bits (e todo o SO, é claro) para executar 64 bits
fonte
Para completar: como na maioria das arquiteturas de 64 bits, é possível executar o código de 32 bits, tanto no espaço do kernel quanto no espaço do usuário, não se deve esquecer que, na verdade, existem 4 combinações possíveis:
uname
é a maneira usual de determinar a variante do kernel. Para o espaço do usuário,file
é muito bom em reconhecer executáveis:file $SHELL
oufile /sbin/init
são expressões convenientes. Apenas a existência de ambos/lib/*.so
e/lib64/*.so
geralmente é uma boa indicação de que o sistema ostenta as duas variantes de espaço do usuário.fonte
Para saber se o Ubuntu instalado é de 32 ou 64 bits:
a) getconf LONG_BIT
b) uname -m
Se mostrar i686 ou i386, significa 32 bits. Se mostrar x86_64, significa 64 bits.
Se a CPU é de 32 bits, o Ubuntu deve ser de 32 bits. Se a CPU é de 64 bits, pode funcionar em 64 ou 32 bits. Então, podemos escolher: o Ubuntu pode ter 32 bits ou 64 bits.
Para saber se a CPU é de 32 ou 64 bits:
a) grep -w lm / proc / cpuinfo
Se vemos lm em vermelho é de 64 bits. Caso contrário, é de 32 bits.
b) sudo lshw | grep "descrição: CPU" -A 12 | largura grep
Diz claramente o que queremos saber.
Um comando para as duas informações:
lscpu
Apenas precisamos dar uma olhada nas 2 primeiras linhas da saída: "Architecture" informa sobre a versão Linux instalada: "i686" representa um dos 32 bits, enquanto "x86_64" representa 64 bits. O “modo operacional da CPU” informa sobre a CPU. "32 bits" representa um dos 32 bits, enquanto "32 bits, 64 bits" ou "64 bits" representa um de 64 bits.
fonte