In che modo Linux `uname -m` ottiene le sue informazioni?


15

Da dove Linux uname -mottiene le sue informazioni?

Lo sto chiedendo perché ho sicuramente una macchina a 64 bit, uname -ae lo uname -rconfermo, ma uname -mstampa i686. Da dove viene?

Risposte:


23

Devi prendere in considerazione che unamestampa le informazioni dal tuo software e hardware. La tua macchina a 64 bit potrebbe eseguire una distribuzione Linux a 32 bit.

uname -astampa queste informazioni (in ordine): nome kernel, nome nodo, versione kernel, versione kernel, macchina, processore, piattaforma hardware, sistema operativo. Se vedi hardware a 64 bit e kernel i686, hai installato un kernel Linux a 32 bit.

Per rispondere a tutta la tua domanda: uname è una chiamata di sistema e questo strumento da riga di comando lo sta utilizzando. Puoi verificarlo facilmentestrace 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)                           = ?

2
Utilizzare strace -vper visualizzare i valori di ritorno uname completi.
user1686

Ho usato Linux e UNIX negli ultimi 4 anni e non avevo idea di Strace. Mi chiedo se usi ptrace sotto il cofano ... Se solo ci fosse un programma che mi ha permesso di controllare facilmente! ;)
Parthian Shot

2
@ParthianShot Sta usando ptrace. Per verificare, utilizzare strace strace uname -a. E indirizza l'output su un file in modo da poterlo leggere comodamente.
martedì

@ParthianShot E non ne hanno ancora parlato ltrace. :)
Oakad,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.