Comment Linux `uname -m` obtient-il ses informations?


15

D'où Linux tire- uname -mt-il ses informations?

Je demande parce que j'ai une machine qui est de 64 bits pour sûr, et uname -aet uname -rconfirmer, mais des uname -mimpressions i686. D'où cela vient-il?

Réponses:


23

Vous devez prendre en compte qui unameimprime les informations de votre logiciel et matériel. Votre machine 64 bits peut exécuter une distribution Linux 32 bits.

uname -aaffiche ces informations (dans l'ordre): nom du noyau, nom du nœud, version du noyau, version du noyau, machine, processeur, plate-forme matérielle, système d'exploitation. Si vous voyez du matériel 64 bits et du noyau i686, alors vous avez installé un noyau Linux 32 bits.

Pour répondre à toute votre question: uname est un appel système et cet outil de ligne de commande l'utilise. Vous pouvez vérifier que cela fonctionne facilementstrace 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
Utilisez strace -vpour voir les valeurs de retour uname complètes.
user1686

J'utilise Linux et UNIX depuis 4 ans et je n'avais aucune idée de strace. Je me demande s'il utilise ptrace sous le capot ... Si seulement il y avait un programme qui me permettait de vérifier facilement! ;)
Parthian Shot

2
@ParthianShot Il utilise ptrace. Pour vérifier, utilisez strace strace uname -a. Et dirigez la sortie vers un fichier pour pouvoir le lire confortablement.
tbodt

@ParthianShot Et ils n'ont même pas encore mentionné ltrace. :)
oakad
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.