Ich bin verwirrt. Wenn Sie Fedora Linux lscpu
ausführen, erhalten Sie:
Architecture: i686
CPU op-mode(s): 32-bit, 64-bit
...
Aber wenn ich versuche, ein 64-Bit-Programm (Chrome) zu installieren, erhalte ich folgende Fehlermeldung:
Das Paket /....x86_64.rpm hat eine inkompatible Architektur x86_64. Gültige Architekturen sind ['i686', 'i586', 'i486', i386 ']
Ich bin weniger daran interessiert, Chrome zu installieren, als vielmehr daran, warum es lscpu
heißt, dass meine CPU im 64-Bit-Modus ausgeführt werden kann. Das kann natürlich nicht bedeuten, dass ich 64-Bit-Programme ausführen kann. Kann das jemand klären?
cat /proc/cpu
, ich denke, beim Booten können Sie auswählen, ob Sie im 64- oder 32-Bit-Modus booten möchten/proc/cpuinfo
. Dies wirft jedoch neugierigere Fragen auf. Die*_lm
Flags zeigen an, dass beide Prozessoren den Long-Modus unterstützen, aber die Adressgrößen sind "36 Bit physisch".Antworten:
lscpu
gibt an, dass Ihre Architektur i686 (eine Intel 32-Bit-CPU) ist und dass Ihre CPU sowohl den 32-Bit- als auch den 64-Bit-Betriebsmodus unterstützt. Sie können keine von x64 erstellten Anwendungen installieren, da diese speziell für x64-Architekturen erstellt wurden.Ihre spezielle CPU kann entweder die i386- oder i686-Pakete verarbeiten. Es gibt verschiedene Möglichkeiten, Ihre Architektur- und Betriebssystemeinstellungen zu überprüfen.
lscpu
Wie Sie bereits wissen, können Sie den Befehl lscpu verwenden. Es gibt Ihnen eine ungefähre Vorstellung davon, wozu Ihre CPU fähig ist.
/ proc / cpuinfo
Dies sind tatsächlich die vom Kernel bereitgestellten Daten, die die meisten Tools
lscpu
zum Anzeigen verwenden. Ich finde diese Ausgabe ein wenig schön, weil sie einige Informationen zur Modellnummer Ihrer jeweiligen CPU enthält. Außerdem wird ein Abschnitt für jeden Kern angezeigt, den Ihre CPU möglicherweise hat.Hier ist die Ausgabe für einen einzelnen Kern:
So sehen die ersten drei Zeilen jedes Abschnitts für einen Kern aus:
Die Ausgabe von
/proc/cpuinfo
kann Ihnen auch über die verschiedenen angezeigten Flags mitteilen, welche Art von Architektur Ihre CPU bereitstellt. Beachten Sie diese Zeilen aus dem obigen Befehl:Die Flags, die mit enden, zeigen an
_lm
, dass Ihr Prozessor den "Long Mode" unterstützt. Long Mode ist ein anderer Name für 64-Bit.dein Name
Mit diesem Befehl können Sie ermitteln, für welche Plattform Ihr Kernel Unterstützung bietet. Beispielsweise:
64-Bit-Kernel
32-Bit-Kernel
Dieser Ausgang kann ein wenig weiter verfeinert werden , um die Schalter verwenden,
[-m|--machine]
,[-p|--processor]
, und[-i|--hardware-platform]
.Hier ist die Ausgabe für die oben genannten Systeme.
64-Bit
32-Bit
HINWEIS: Es gibt auch eine Kurzversion
uname -m
, die Sie als eigenständigen Befehl ausführen könnenarch
. Es gibt genau das Gleiche zurück wieuname -m
. Weitere Informationen zu diesemarch
Befehl finden Sie in der Dokumentation zu coreutils .Auszug
hwinfo
Wahrscheinlich das beste Tool zur Analyse Ihrer Hardware
hwinfo
. Dieses Paket kann Ihnen so ziemlich alles zeigen, was Sie über Ihre Hardware wissen wollen / müssen, direkt vom Terminal aus. Es erspart mir Dutzende Male, wenn ich Informationen von einem Chip auf der Hauptplatine eines Systems oder die Revision einer Platine in einem PCI-Steckplatz benötige.Sie können es für die verschiedenen Subsysteme eines Computers abfragen. In unserem Fall schauen wir uns das
cpu
Subsystem an.Ähnlich wie bei
/proc/cpuinfo
diesem Befehl wird auch hier der Aufbau jedes einzelnen Kerns in einem Mehrkernsystem angezeigt. Hier ist die erste Zeile aus jedem Abschnitt eines Kerns, um Ihnen eine Idee zu geben.getconf
Dies ist wahrscheinlich die naheliegendste Methode, um festzustellen, welche Architektur Ihre CPU dem Betriebssystem präsentiert. Verwenden
getconf
Sie, um die Systemvariable LONG_BIT abzufragen. Dies ist keine Umgebungsvariable.lshw
Noch ein weiteres Tool, das in seinen Fähigkeiten ähnlich ist wie
hwinfo
. Sie können so ziemlich alles abfragen, was Sie über die zugrunde liegende Hardware wissen möchten. Beispielsweise:CPU-Betriebsmodus (e)?
Einige der Befehle geben an, dass eine 32-Bit-CPU 32-Bit- und 64-Bit-Modi unterstützt. Dies kann ein wenig verwirrend und irreführend sein. Wenn Sie jedoch die Geschichte der CPUs, insbesondere von Intel, verstehen, wissen Sie, dass sie bereits Spiele mit ihren Produkten gespielt haben, bei denen eine CPU möglicherweise über einen Befehlssatz verfügt, der 16-Bit unterstützt. kann aber mehr RAM adressieren als 2 ^ 16.
Das Gleiche gilt für diese CPUs. Die meisten Leute wissen, dass eine 32-Bit-CPU nur 2 ^ 32 = 4 GB RAM adressieren kann. Es gibt jedoch Versionen von CPUs, die mehr unterstützen. Diese CPUs verwenden häufig einen Linux-Kernel mit dem Suffix PAE - Physical Address Extension . Wenn Sie einen PAE-fähigen Kernel zusammen mit dieser Hardware verwenden, können Sie auf einem 32-Bit-System bis zu 64 GB adressieren.
Warum brauche ich dann eine 64-Bit-Architektur? Das Problem bei diesen CPUs ist, dass ein einzelner Prozessspeicherplatz auf 2 ^ 32 begrenzt ist. Wenn Sie also ein großes Simulations- oder Computerprogramm haben, das mehr als 2 ^ 32 adressierbaren Speicherplatz im RAM benötigt, hätte dies Ihnen nicht geholfen damit.
Weitere Informationen finden Sie auf der Wikipedia-Seite zur P6-Mikroarchitektur (i686) .
TL; DR - Was zum Teufel ist die Architektur meiner CPU?
Im Allgemeinen kann es verwirrend werden, da einige der oben genannten Befehle und Methoden den Begriff "Architektur" lose verwenden. Wenn Sie daran interessiert sind, ob das zugrunde liegende Betriebssystem 32-Bit oder 64-Bit ist, verwenden Sie diese Befehle:
Wenn Sie andererseits die Architektur der CPU kennen wollen, verwenden Sie diese Befehle:
Insbesondere möchten Sie nach Feldern suchen, in denen beispielsweise "width: 64" oder "width: 32" angezeigt wird, wenn Sie ein Tool wie dieses verwenden
lshw
, oder nach den Flags suchen:lm
: Long Mode (x86-64: amd64, auch als Intel 64 bekannt, dh 64-Bit-fähig)lahf_lm
: LAHF / SAHF im LangmodusDie Geschenke dieser 2 Flags zeigen an, dass die CPU 64-Bit ist. Ihre Abwesenheit sagt Ihnen, dass es 32-Bit ist.
Weitere Informationen zu den CPU-Flags finden Sie in diesen URLs.
Verweise
Manpages
Artikel:
quelle
lscpu
ist jedoch etwas irreführend, dass "Architektur: i686" sich auf die Ausführung eines 32-Bit-Betriebssystems bezieht.Wenn Ihr Kernel ein 32-Bit-Linux-Kernel ist, können Sie keine 64-Bit-Programme ausführen, selbst wenn Ihr Prozessor dies unterstützt.
Installieren Sie einen 64-Bit-Kernel (und natürlich das gesamte Betriebssystem), um 64-Bit auszuführen
quelle
Der Vollständigkeit halber: Da es auf den meisten 64-Bit-Architekturen möglich ist, 32-Bit-Code sowohl im Kernel-Space als auch im User-Space auszuführen, sollte man nicht vergessen, dass es tatsächlich 4 mögliche Kombinationen gibt:
uname
ist die übliche Methode zur Bestimmung der Kernelvariante. Im User-Spacefile
erkennt man ausführbare Dateien recht gut:file $SHELL
oderfile /sbin/init
es handelt sich um praktische Redewendungen. Gerade das Vorhandensein von beidem/lib/*.so
und/lib64/*.so
ist in der Regel ein gutes Indiz dafür, dass das System beide User-Space-Varianten aufweist.quelle
Um zu wissen, ob das installierte Ubuntu 32 oder 64 Bit hat:
a) getconf LONG_BIT
b) uname -m
Wenn es i686 oder i386 anzeigt, bedeutet dies 32 Bits. Wenn x86_64 angezeigt wird, bedeutet dies 64 Bit.
Wenn die CPU 32 Bit hat, muss Ubuntu 32 Bit haben. Wenn die CPU 64 Bit hat, kann sie in 64 oder 32 Bit arbeiten. Also können wir wählen: Ubuntu kann 32-Bit oder 64-Bit haben.
Um zu wissen, ob die CPU 32 oder 64 Bit hat:
a) grep -w lm / proc / cpuinfo
Wenn wir sehen, lm in rot ist von 64 Bit. Ansonsten ist von 32 Bit.
b) sudo lshw | grep "Beschreibung: CPU" -A 12 | grep width
Es sagt klar, was wir wissen wollen.
Ein Befehl für beide Infos:
lscpu
Wir müssen uns nur die ersten beiden Zeilen der Ausgabe ansehen: „Architecture“ informiert über die installierte Linux-Version: „i686“ steht für eines von 32 Bits, während „x86_64“ für ein 64-Bit-Bit steht. “CPU op-mode (s)” informiert über die CPU. "32-Bit" steht für eines von 32 Bits, während "32-Bit, 64-Bit" oder "64-Bit" für ein 64-Bit-Bit steht.
quelle