Bagaimana saya tahu jika saya menjalankan Linux 32 atau 64-bit?


Jawaban:


37

"uname -m" adalah perintah yang Anda cari. Anda dapat menjalankan 32bit dan 64bit pada prosesor intel dan AMD modern, jadi "uname -p" tidak akan membantu Anda (selain itu sebagian besar tidak berfungsi hari ini, ini di sini core2 memikirkan tanggapan untuk "uname -p" tidak diketahui").

Mencari keberadaan / usr / lib64 (seperti yang telah disarankan) juga tidak akan membantu Anda, karena beberapa paket perangkat keras dan sistem yang terkait akan menginstal pustaka 32bit dan 64bit agar aman. Pada sistem saya (debian) paket fakeroot tidak hanya itu.

Adapun output dari "uname -m", jika i386 atau i686 32bit, jika x86_64 (atau alpha, atau ia64 atau arsitektur 64bit lainnya yang belum pernah saya lihat :) ini 64bit.

(selain menyenangkan, server FreeBSD 64bit saya mengembalikan "amd64", yang mungkin sedikit aneh untuk intel quadcore tetapi benar-benar dapat dimengerti jika Anda mengetahui sejarah arsitektur x86 64bit)


1
apakah ini memberitahu Anda arsitektur instalasi atau arsitektur CPU yang sebenarnya. Misalnya, jika Anda menginstal OS 32-bit pada cpu 64bit, apakah ini akan mengembalikan i686 atau x86_64?
monkut

15

uname -a dan cari x86_64. Jika Anda ingin tahu apakah CPU Anda dapat menangani 64bit, cat / proc / cpuinfo dan cari lm di dalam flag.


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

6

untuk 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-bit

  • i686 dan / atau i386

64-bit

  • akan memiliki x86_64 di uname -a output

6

Hanya untuk membingungkan, Anda dapat menjalankan kernel 64bit dengan userland 32bit, itulah yang saya lakukan. Dalam hal ini, uname -mkembali x86_64tetapi saya tidak memiliki perpustakaan 64bit yang diinstal sehingga sebagian besar program 64bit tidak akan berjalan.

Jadi, sekali Anda memeriksa nama, Anda perlu mencari /lib64/ld-linux-x86-64.so.2, /lib64/libc-2.7.sodan /lib/ld-linux.so.2, /lib/libc-2.7.sountuk melihat apakah pustaka 64bit dan 32bit tersedia. Dan untuk benar-benar memastikan, jalankan file-file itu dan lihat apakah mereka mengeksekusi dengan benar.

Sepotong informasi lain yang bermanfaat adalah keluaran lsb_release -ayang cross-distro dan akan melaporkan modul LSB spesifik arsitektur apa yang tersedia.


2
Sayangnya lsb_release -atidak menampilkan arsitektur userland
Joni


2

Cara lain untuk melakukannya adalah dengan menanyakan perl apa yang dikatakan kompiler ukuran bilangan bulat panjang adalah:

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

vs.

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

Atau, jika Anda menginstal gcc, hal yang sama dalam 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

:-)


Itu hanya memberitahu Anda apa yang versi default perl tidak ..
pjc50

@ pjc50: Dan maksud Anda adalah?
asjo

1
maksudnya adalah bahwa Anda bisa memiliki Perl 32 bit pada sistem 64 bit
niXar

@niXar: Saya rasa itu mungkin, tetapi memiliki itu akan membuat ... distribusi Linux yang aneh. Pokoknya, gunakan versi C lalu ;-)
asjo

1

Sebagai duplikat dari:

Linux + cara memverifikasi versi linux 32 Bit atau 64 Bit

uname -m hanya akan memberi Anda arsitektur 'arch' / kernel yang sedang berjalan. Ini TIDAK akan memberi tahu Anda jika Anda menjalankan distribusi GNU / Linux 32 bit pada CPU berkemampuan 64bit.

Untuk mengetahui kemampuan CPU Anda:

 cat /proc/cpuinfo

Bendera 'LM' harus ada dalam sistem 64bits karena mewakili 'LONG MODE' (Ekstensi 64bit, AMD64 AMD atau EM64T Intel).


0
$ uname -p

x86_64

2
"uname p" kembali "athlon" pada sistem saya - tidak terlalu membantu ...
webwesen

3
Aku telah lari ke mesin di mana saya mendapatkan "tidak diketahui" dari p uname juga ..
Cube_Zombie

0

Jika Anda memiliki / usr / lib64 Anda menjalankan x86_64 ..


3
mkdir / usr / lib128 && echo "Lihat, aku punya komputer 128 bit!"
niXar

0

Perintah Brad Gilbert memiliki bug perl. Saya sudah memperbaikinya dan perintah di bawah ini berfungsi: cat / proc / cpuinfo | grep ^ flags | perl -e '$ = <>; cetak ($ ? "x86_64 \ n": "not x86_64 \ n")'

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.