Je suis confus. L'exécution de Fedora Linux lscpu
donne:
Architecture: i686
CPU op-mode(s): 32-bit, 64-bit
...
Mais lorsque j'essaie d'installer un programme 64 bits (Chrome), j'obtiens une erreur comme:
Le package /....x86_64.rpm a une architecture incompatible x86_64. Les architectures valides sont ['i686', 'i586', 'i486', i386 ']
Je suis moins intéressé à pouvoir installer Chrome et plus intéressé par la raison pour lscpu
laquelle mon processeur peut fonctionner en mode 64 bits; clairement, cela ne signifie pas que je peux exécuter des programmes 64 bits. Quelqu'un peut-il clarifier?
cat /proc/cpu
, je pense qu'au démarrage, vous pouvez sélectionner si vous voulez démarrer en mode 64 ou 32 bits/proc/cpuinfo
. Mais cela soulève des questions plus curieuses. Les*_lm
drapeaux indiquent que mes deux processeurs prennent en charge le mode long, mais les tailles d'adresse sont "physiques 36 bits".Réponses:
lscpu
vous indique que votre architecture est i686 (un processeur Intel 32 bits) et que votre processeur prend en charge les modes de fonctionnement 32 bits et 64 bits. Vous ne pourrez pas installer d'applications construites x64 car elles sont conçues spécifiquement pour les architectures x64.Votre processeur particulier peut gérer les packages intégrés i386 ou i686. Il existe plusieurs façons de vérifier vos préférences d'architecture et de système d'exploitation.
lscpu
Comme vous le savez déjà, vous pouvez utiliser la commande lscpu. Il fonctionne bien pour vous donner une idée approximative de ce dont votre processeur est capable.
/ proc / cpuinfo
Il s'agit en fait des données fournies par le noyau que la plupart des outils tels que les
lscpu
utilisent pour afficher. Je trouve cette sortie un peu agréable dans le fait qu'elle vous montre des informations sur le numéro de modèle de votre processeur particulier. Il vous montrera également une section pour chaque cœur que votre processeur peut avoir.Voici la sortie pour un seul cœur:
Voici à quoi ressemblent les 3 premières lignes de chaque section pour un noyau:
La sortie de
/proc/cpuinfo
peut également vous indiquer le type d'architecture que votre processeur fournit à travers les différents indicateurs qu'il affiche. Notez ces lignes de la commande ci-dessus:Les drapeaux qui se terminent par
_lm
vous indiquent que votre processeur prend en charge le "mode long". Le mode long est un autre nom pour 64 bits.ton nom
Cette commande peut être utilisée pour déterminer quelle plateforme votre noyau a été conçu pour prendre en charge. Par exemple:
Noyau 64 bits
Noyau 32 bits
Cette sortie peut être affiné un peu plus loin en utilisant les commutateurs,
[-m|--machine]
,[-p|--processor]
et[-i|--hardware-platform]
.Voici cette sortie pour les mêmes systèmes ci-dessus.
64 bits
32 bits
NOTE: Il y a aussi une version abrégée de
uname -m
ce que vous pouvez exécuter en tant que commande autonome,arch
. Il renvoie exactement la même chose queuname -m
. Vous pouvez en savoir plus sur laarch
commande dans la documentation coreutils .extrait
hwinfo
Le meilleur outil pour analyser votre matériel doit probablement être
hwinfo
. Ce package peut vous montrer à peu près tout ce que vous voulez / devez savoir sur n'importe quel matériel, directement depuis le terminal. Cela me fait gagner des dizaines de fois lorsque j'aurais besoin d'informations sur une puce de la carte mère d'un système ou pour connaître la révision d'une carte dans un emplacement PCI.Vous pouvez l'interroger sur les différents sous-systèmes d'un ordinateur. Dans notre cas, nous examinerons le
cpu
sous - système.Encore une fois, semblable à
/proc/cpuinfo
cette commande vous montre la composition de chaque cœur individuel dans un système multicœur. Voici la première ligne de chaque section d'un noyau, juste pour vous donner une idée.getconf
C'est probablement le moyen le plus évident de savoir quelle architecture votre processeur présente au système d'exploitation. En utilisant
getconf
, votre requête sur la variable système LONG_BIT. Ce n'est pas une variable d'environnement.lshw
Encore un autre outil, similaire en capacités à
hwinfo
. Vous pouvez interroger à peu près tout ce que vous voulez savoir sur le matériel sous-jacent. Par exemple:Mode (s) opérationnel (s) du processeur?
Plusieurs commandes signalent que ce qui semble être un processeur 32 bits prend en charge les modes 32 bits et 64 bits. Cela peut être un peu déroutant et trompeur, mais si vous comprenez l'historique des processeurs, Intel en particulier, vous saurez qu'ils ont un historique de jeux avec leurs produits où un processeur peut avoir un jeu d'instructions qui prend en charge 16 bits, mais peut traiter plus de RAM que 2 ^ 16.
La même chose se passe avec ces processeurs. La plupart des gens savent qu'un processeur 32 bits ne peut traiter que 2 ^ 32 = 4 Go de RAM. Mais il existe des versions de CPU qui peuvent en traiter davantage. Ces CPU utiliseraient souvent un noyau Linux avec le suffixe PAE - Physical Address Extension . L'utilisation d'un noyau compatible PAE avec ce matériel vous permettrait d'adresser jusqu'à 64 Go sur un système 32 bits.
Vous pourriez bien penser alors pourquoi ai-je besoin d'une architecture 64 bits? Le problème avec ces processeurs est qu'un espace de processus unique est limité à 2 ^ 32, donc si vous avez un grand programme de simulation ou de calcul qui nécessitait plus que les 2 ^ 32 d'espace adressable en RAM, cela ne vous aurait pas aidé avec ça.
Jetez un œil à la page wikipedia sur la microarchitecture P6 (i686) pour plus d'informations.
TL; DR - Alors, quelle est l'architecture de mon processeur?
En général, cela peut prêter à confusion car un certain nombre des commandes et des méthodologies ci-dessus utilisent le terme «architecture» de manière lâche. Si vous souhaitez savoir si le système d'exploitation sous-jacent est 32 bits ou 64 bits, utilisez ces commandes:
Si par contre vous souhaitez connaître l'architecture du CPU, utilisez ces commandes:
Plus précisément, vous souhaitez rechercher des champs où il indique des choses comme "largeur: 64" ou "largeur: 32" si vous utilisez un outil comme
lshw
, ou recherchez les indicateurs:lm
: Mode long (x86-64: amd64, également appelé Intel 64, c'est-à-dire capable 64 bits)lahf_lm
: LAHF / SAHF en mode longLes présents de ces 2 drapeaux vous indiquent que le CPU est 64 bits. Leurs absences vous indiquent que c'est 32 bits.
Consultez ces URL pour plus d'informations sur les drapeaux CPU.
Les références
pages de manuel
des articles:
la source
lscpu
c'est quelque peu trompeur dans la mesure où "Architecture: i686" fait référence à l'exécution d'un système d'exploitation 32 bits.Si votre noyau est un noyau Linux 32 bits, vous ne pourrez pas exécuter de programmes 64 bits, même si votre processeur le prend en charge.
Installez un noyau 64 bits (et tout le système d'exploitation bien sûr) pour exécuter 64 bits
la source
Pour être complet: étant donné que sur la plupart des architectures 64 bits, il est possible d'exécuter du code 32 bits, à la fois dans l'espace noyau et dans l'espace utilisateur, il ne faut pas oublier qu'il existe en fait 4 combinaisons possibles:
uname
est la manière habituelle de déterminer la variante du noyau. Pour l'espace utilisateur,file
est assez bon pour reconnaître les exécutables:file $SHELL
oufile /sbin/init
sont des idiomes pratiques. L'existence des deux/lib/*.so
et/lib64/*.so
est généralement une bonne indication, que le système arbore les deux variantes d'espace utilisateur.la source
Pour savoir si Ubuntu installé est de 32 ou 64 bits:
a) getconf LONG_BIT
b) uname -m
S'il affiche i686 ou i386, cela signifie 32 bits. S'il affiche x86_64, cela signifie 64 bits.
Si le CPU est de 32 bits, Ubuntu doit être de 32 bits. Si le CPU est de 64 bits, il peut fonctionner en 64 ou 32 bits. On peut donc choisir: Ubuntu peut être de 32 bits ou de 64 bits.
Pour savoir si le CPU est de 32 ou 64 bits:
a) grep -w lm / proc / cpuinfo
Si nous voyons lm en rouge est de 64 bits. Sinon, il est de 32 bits.
b) sudo lshw | grep "description: CPU" -A 12 | largeur de grep
Cela dit clairement ce que nous voulons savoir.
Une commande pour les deux infos:
lscpu
Il suffit de jeter un œil aux 2 premières lignes de la sortie: «Architecture» renseigne sur la version Linux installée: «i686» représente l'un des 32 bits, tandis que «x86_64» signifie 64 bits. «CPU op-mode (s)» informe sur le CPU. «32 bits» représente l'un des 32 bits, tandis que «32 bits, 64 bits» ou «64 bits» représente un 64 bits.
la source