Bagaimana Linux `uname -m` mendapatkan informasinya?

15

Dari mana Linux uname -mmendapatkan informasinya?

Saya bertanya karena saya memiliki mesin yang 64-bit pasti, dan uname -adan uname -rmengkonfirmasi itu, tetapi uname -mdicetak i686. Dari mana asalnya?

pengguna322908
sumber

Jawaban:

23

Anda harus mempertimbangkan akun yang unamemencetak informasi dari perangkat lunak dan perangkat keras Anda. Mesin 64-bit Anda dapat menjalankan distribusi Linux 32-bit.

uname -amencetak informasi ini (secara berurutan): nama kernel, nama panggilan, rilis kernel, versi kernel, mesin, prosesor, platform perangkat keras, sistem operasi. Jika Anda melihat perangkat keras 64 bit dan kernel i686, maka Anda telah menginstal kernel Linux 32-bit.

Untuk menjawab seluruh pertanyaan Anda: uname adalah panggilan sistem dan alat baris perintah ini menggunakannya. Anda dapat memeriksa bahwa runing mudahstrace uname -a

$ strace uname -a
execve("/bin/uname", ["uname", "-a"], [/* 23 vars */]) = 0
brk(0)                                  = 0x9fa6000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b4abb365000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b4abb366000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
...
...
...
uname({sys="Linux", node="my_pc", ...}) = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b4abe953000
uname({sys="Linux", node="my_pc", ...}) = 0
uname({sys="Linux", node="my_pc", ...}) = 0
write(1, "Linux my_pc 2.6.18-371.8.1.el5 "..., 99Linux my_pc 2.6.18-371.8.1.el5 #1 SMP Thu Apr 24 18:19:36 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux
) = 99
close(1)                                = 0
munmap(0x2b4abe953000, 4096)            = 0
exit_group(0)                           = ?
drk.com.ar
sumber
2
Gunakan strace -vuntuk melihat nilai pengembalian penuh uname.
user1686
Saya telah menggunakan Linux dan UNIX selama 4 tahun terakhir dan tidak tahu tentang strace. Saya bertanya-tanya apakah itu menggunakan ptrace di bawah tenda ... Kalau saja ada program yang memungkinkan saya untuk dengan mudah memeriksa! ;)
Parthian Shot
2
@ ParthianShot Menggunakan ptrace. Untuk memverifikasi, gunakan strace strace uname -a. Dan arahkan output ke file sehingga Anda bisa membacanya dengan nyaman.
tbodt
@ParthianShot Dan mereka bahkan ltracebelum menyebutkan . :)
oakad