Skąd mam wiedzieć, czy mam 32-bitowy lub 64-bitowy system Linux?


Odpowiedzi:


37

„uname -m” to polecenie, którego szukasz. Możesz uruchomić zarówno 32-bitowy, jak i 64-bitowy na współczesnych procesorach Intel i AMD, więc „uname -p” ci nie pomoże (dodatkowo w większości nie działa obecnie, to tutaj core2 myśli odpowiedź na „uname -p” jest nieznany").

Szukanie istnienia / usr / lib64 (jak zasugerowano) też ci nie pomoże, ponieważ niektóre pakiety związane ze sprzętem i systemem zainstalują biblioteki 32-bitowe i 64-bitowe, aby być bezpiecznym. W moim systemie (debian) pakiet fakeroot właśnie to robi.

Jeśli chodzi o wyjście „uname -m”, jeśli jest to i386 lub i686, to jest 32-bitowe, jeśli jest to x86_64 (lub alfa, ia64 lub inna architektura 64-bitowa, której nigdy nie widziałem :) to 64-bitowe.

(na marginesie, mój 64-bitowy serwer FreeBSD zwraca „amd64”, co może być nieco dziwne jak na quadcore firmy Intel, ale całkowicie zrozumiałe, jeśli znasz historię architektury 64-bitowej x86)


1
czy to powie ci architekturę instalacji lub rzeczywistą architekturę procesora. Na przykład, jeśli zainstalowałeś 32-bitowy system operacyjny na 64-bitowym procesorze, czy to zwróci i686 lub x86_64?
monkut,

15

uname -a i poszukaj x86_64. Jeśli chcesz wiedzieć, czy Twój procesor obsługuje 64 bity, cat / proc / cpuinfo i poszukaj lm w obrębie flag.


3
cat / proc / cpuinfo | grep ^ flags | perl -e '$ _ = <>; print "x86_64 \ n": "not x86_64 \ n"'
Brad Gilbert

6

dla RedHat / CentOS:

$ uname -a
Linux cs-centos 2.6.18-92.1.22.el5 #1 SMP Tue Dec 16 12:03:43 EST 2008 i686 athlon i386 GNU/Linux

32-bitowy

  • i686 i / lub i386

64-bitowy

  • miałby x86_64 w wyjściu uname -a

6

Po prostu mylę rzeczy, możesz uruchomić 64-bitowe jądro z 32-bitowym obszarem użytkownika, co właśnie robię. W takim przypadku uname -mzwraca, x86_64ale nie mam zainstalowanych bibliotek 64-bitowych, więc większość programów 64-bitowych nie będzie działać.

Więc po sprawdzeniu uname, trzeba szukać /lib64/ld-linux-x86-64.so.2, /lib64/libc-2.7.soi /lib/ld-linux.so.2, /lib/libc-2.7.soaby zobaczyć, czy 64bit i 32bit biblioteki są dostępne. Aby się upewnić, uruchom te pliki i sprawdź, czy działają poprawnie.

Inną przydatną informacją jest wyjście, lsb_release -aktóre jest cross-distro i informuje, jakie moduły LSB specyficzne dla architektury są dostępne.


2
Niestety lsb_release -anie generuje architektury przestrzeni użytkownika
Joni


2

Innym sposobem na to jest zapytanie perla, który kompilator powiedział, że rozmiar długiej liczby całkowitej jest następujący:

$ perl -MConfig -e 'print $Config{longsize}*8 . "\n";'
64

vs.

$ perl -MConfig -e 'print $Config{longsize}*8 . "\n";'
32

Lub, jeśli masz zainstalowany gcc, to samo w C:

$ cat > bits.c <<EOC
> #include <stdlib.h>
> #include <stdio.h>
> 
> int main(void) {
>    printf("%d\n", (int)sizeof(long)*8);
> 
>    exit(0);
> }
> EOC
$ gcc -Wall -o bits bits.c
$ ./bits
64

vs.

[...]
> EOC
$ gcc -Wall -o bits bits.c
$ ./bits
32

:-)


To po prostu mówi ci, co robi domyślna wersja perla ..
pjc50

@ pjc50: I masz na myśli?
asjo

1
chodzi o to, że możesz mieć 32-bitowy Perl w systemie 64-bitowym
niXar 16.04.2010

@niXar: Wydaje mi się, że jest to możliwe, ale posiadanie tego byłoby dość ... dziwną dystrybucją Linuksa. W każdym razie skorzystaj z wersji C ;-)
asjo

1

Jako duplikat:

Linux + jak sprawdzić wersję 32-bitową lub 64-bitową systemu Linux

uname -m da ci tylko działającą architekturę / arch jądra. NIE powie ci, czy korzystasz z 32-bitowej dystrybucji GNU / Linux na procesorze obsługującym 64 bity.

Aby poznać swoje możliwości procesora:

 cat /proc/cpuinfo

Flaga „LM” powinna być obecna w systemach 64-bitowych, ponieważ reprezentuje „LONG MODE” (rozszerzenia 64-bitowe, AMD64 AMD lub EM64T Intela).




0

Komenda Brada Gilberta miała błąd perla. Naprawiłem to i działa poniższe polecenie: cat / proc / cpuinfo | grep ^ flags | perl -e '$ = <>; print ($ ? "x86_64 \ n": "nie x86_64 \ n")'

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.