¿Cómo obtiene Linux `uname -m` su información?

15

¿De dónde uname -mobtiene Linux su información?

Lo pregunto porque tengo una máquina que es de 64 bits con seguridad, uname -ay lo uname -rconfirmo, pero uname -mimprime i686. ¿De dónde saca eso?

usuario322908
fuente

Respuestas:

23

Debe tener en cuenta que unameimprime información de su software y hardware. Su máquina de 64 bits podría estar ejecutando una distribución de Linux de 32 bits.

uname -aimprime esta información (en orden): nombre del núcleo, nombre del núcleo, versión del núcleo, versión del núcleo, máquina, procesador, plataforma de hardware, sistema operativo. Si ve hardware de 64 bits y kernel i686, entonces ha instalado un kernel de Linux de 32 bits.

Para responder a toda su pregunta: uname es una llamada al sistema y esta herramienta de línea de comando la está utilizando. Puedes comprobar que se ejecuta fácilmentestrace 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
fuente
2
Use strace -vpara ver los valores completos de retorno de uname.
user1686
He estado usando Linux y UNIX durante los últimos 4 años y no tenía idea de strace. Me pregunto si usa ptrace debajo del capó ... ¡Ojalá hubiera un programa que me permitiera comprobarlo fácilmente! ;)
Parthian Shot
2
@ParthianShot Está usando ptrace. Para verificar, use strace strace uname -a. Y dirija la salida a un archivo para que pueda leerlo cómodamente.
tbodt
@ParthianShot Y ni siquiera lo han mencionado ltracetodavía. :)
oakad