it-swarm.com.de

Wie bestimme ich die Linux-Kernel-Architektur?

uname -m gibt i686 und uname -m gibt i686 i386-Ausgabe in Red Hat Enterprise Linux Server Version 5.4 (Tikanga) aus. Ich muss Oracle Database 10g Release 2 auf diesem Computer installieren. Wie kann ich entscheiden, ob die Kernel-Architektur 32-Bit oder 64-Bit ist?

105
user2914

i386 und i686 sind beide 32-Bit.
X86_64 ist 64-Bit

beispiel für 64 Bit:

[email protected]:~$ uname -a  
Linux behrooz 2.6.32-5-AMD64 #1 SMP Mon Mar 7 21:35:22 UTC 2011 **x86_64** GNU/Linux

BEARBEITEN:
Siehe ist mein Linux ARM 32 oder 64 Bit? für ARM

99
Behrooz

Es ist einfach! Verwenden Sie den Befehl Arch.

49
PHPst

@ behrooz ist korrekt. Leider erfordert uname, dass Sie Architekturen kennen. Eigentlich suchte ich nach einer Liste von Architekturen und fand diesen Artikel , der Ihre Frage beantwortet. In Bezug auf uname -m:

x86_64 GNU/Linux zeigt an, dass ein 64-Bit-Linux-Kernel ausgeführt wird. Wenn Sie siehe i386/i486/i586/i686 verwenden, handelt es sich um einen 32-Bit-Kernel.

Um festzustellen, ob die Hardware einen 64-Bit-Kernel ausführen kann

grep flags /proc/cpuinfo

Achten Sie in der Ausgabe auf Folgendes (alle Flags, die aus diese Stackoverflow-Antwort für dieselbe Frage abgerufen wurden)

  • lm Flag bedeutet Long Mode CPU - 64 Bit CPU
  • tm Flag bedeutet geschützter Modus - 32-Bit-CPU
  • rm Flag bedeutet Real Mode - 16 Bit CPU
32
xenoterracide

(BEARBEITEN: Diese Antwort ist FALSCH. Dank des Kommentars von @ Lizardx)

Verwenden Sie in Bash einen Ganzzahlüberlauf:

if ((1<<32)); then
  echo 64bits
else
  echo 32bits
fi

Es ist viel effizienter als das Aufrufen eines anderen Prozesses oder das Öffnen von Dateien.

21
Luchostein

Für Debian:

Auf meinem PC

 ~> Dpkg --print-Architektur 
 AMD64 
 ~> Dpkg --print-Foreign-Architectures 
 I386 

Mein Himbeer Pi 2

 ~> Dpkg --print-Architektur 
 Armhf 

Der einfachste Weg ist zu laufen:

getconf LONG_BIT

dies gibt 64 oder 32 aus, je nachdem, ob es sich um 32 oder 64 Bit handelt.

z.B:

[email protected]:~$ getconf LONG_BIT
64
13
dannyw

verwenden Sie syscap von Formake-Projekt

Mit syscap können viele Systemeigenschaften geprüft und Abhängigkeiten getestet werden. Es ist ein portables Shell-Skript.

Holen Sie sich die CPU-Architektur:

syscap info -Arch

Name und Version des Kernels abrufen:

syscap info -kernel -kernver
2
Alex

Eine andere Möglichkeit besteht darin, die Architektur zu überprüfen, für die eine Systemdatei kompiliert wurde, z

$ file /usr/bin/ld
/usr/bin/ld: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped
1
minaev

Oder Sie können die Art und Weise verwenden, wie der Befehl name intern funktioniert, wenn Sie einige Dinge selbst implementieren möchten:

#include <sys/utsname.h>
#include <stdio.h>

int main() {
    struct utsname name;
    uname(&name);
    printf("%s\n",name.machine);
    return 0;
}
0
Meow

Hier ist eine andere Methode mit uname.

Von man uname:

... -i, --hardware-platform print the hardware platform or "unknown" ...

# uname -i x86_64#

0
clusterdude

Wenn Sie nach einem einfachen Einzeiler suchen, ist dies die zuverlässigste Lösung, die ich gefunden habe und die 64 oder 2 zurückgibt. Es ist egal, ob Sie ARM oder nicht) ausführen, und es sollte auf jedem System funktionieren, das bash oder sh verwendet.

Beachten Sie, dass das System entweder 32-Bit oder 64-Bit ist. Siehe meine Erklärung unten, wenn Sie eine 8-16- oder eine andere Bit-Architektur erkennen müssen.

[$ ((0xffffffff)) -eq -1] && echo 32 || Echo 64

Was passiert hier?
Die Logik ist sehr einfach und alles läuft darauf hinaus, wie Computer signierte Ganzzahlen speichern. Eine 32-Bit-Architektur hat nur 32 Bit, die zum Speichern von vorzeichenbehafteten Ganzzahlen verwendet werden können, während eine 64-Bit-Architektur 64 Bit hat! Mit anderen Worten, die Menge der Ganzzahlen, die gespeichert werden können, ist endlich. Die Hälfte dieses Satzes steht für negative Zahlen und die Hälfte für positive Zahlen. Die vorzeichenbehaftete Ganzzahl gleich -1 wird als die größte Zahl dargestellt, die in einer bestimmten Anzahl von Bits für diese Architektur gespeichert werden kann. In einem 32-Bit-System kann -1 durch den Hex-Wert 0xFFFFFFFF dargestellt werden (dies sind 32 Binärbits, die alle gleich 1 sind). Auf einem 64-Bit-System bedeutet 0xFFFFFFFF 4.294.967.295, Basis 10, während 0xFFFFFFFFFFFFFF die Darstellung für -1 ist. Sie können sehen, wie sich dies leicht für 8- oder 16-Bit-Systeme skalieren lässt, die bei 0xFF bzw. 0xFFFF gleich -1 sind.

0
b_laoshi