Como o Linux `uname -m` obtém suas informações?

15

De onde o Linux uname -mobtém suas informações?

Estou perguntando porque tenho uma máquina de 64 bits, com certeza, uname -ae uname -rconfirmo isso, mas uname -mimprime i686. De onde ela tira isso?

user322908
fonte

Respostas:

23

Você deve levar em consideração que unameimprime informações do seu software e hardware. Sua máquina de 64 bits pode estar executando uma distribuição Linux de 32 bits.

uname -aimprime essas informações (em ordem): nome do kernel, nome do nó, versão do kernel, versão do kernel, máquina, processador, plataforma de hardware, sistema operacional. Se você vir o hardware de 64 bits e o kernel i686, instalou um kernel Linux de 32 bits.

Para responder a toda sua pergunta: uname é uma chamada do sistema e esta ferramenta de linha de comando está usando-a. Você pode verificar que 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)                           = ?
drk.com.ar
fonte
2
Use strace -vpara ver os valores de retorno uname completos.
usar o seguinte comando
Uso o Linux e o UNIX nos últimos 4 anos e não fazia ideia do strace. Gostaria de saber se ele usa ptrace sob o capô ... Se ao menos houvesse um programa que me permitisse verificar facilmente! ;)
Parthian Shot
2
@ParthianShot Está usando o ptrace. Para verificar, use strace strace uname -a. E direcione a saída para um arquivo para que você possa lê-lo confortavelmente.
tbodt
@ParthianShot E eles nem sequer mencionaram ltraceainda. :)
oakad