Wie erhält Linux "uname -m" seine Informationen?

15

Woher bezieht Linux uname -mseine Informationen?

Ich frage, weil ich eine Maschine habe, die sicher 64-Bit ist, uname -aund uname -rbestätige, dass sie uname -mdruckt i686. Woher kommt das?

user322908
quelle

Antworten:

23

Sie müssen berücksichtigen, dass unameInformationen von Ihrer Software und Hardware gedruckt werden. Auf Ihrem 64-Bit-Computer wird möglicherweise eine 32-Bit-Linux-Distribution ausgeführt.

uname -adruckt diese Informationen (in der angegebenen Reihenfolge) aus: Kernel-Name, Knotenname, Kernel-Release, Kernel-Version, Maschine, Prozessor, Hardware-Plattform, Betriebssystem. Wenn Sie 64-Bit-Hardware und einen i686-Kernel sehen, haben Sie einen 32-Bit-Linux-Kernel installiert.

Zur Beantwortung Ihrer gesamten Frage: uname ist ein Systemaufruf, der von diesem Befehlszeilentool verwendet wird. Sie können überprüfen, ob dies problemlos möglich iststrace 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
quelle
2
Verwenden Sie strace -vdiese Option, um die vollständigen Rückgabewerte für uname anzuzeigen.
user1686
Ich benutze Linux und UNIX seit 4 Jahren und hatte keine Ahnung von Strace. Ich frage mich, ob es ptrace unter der Haube verwendet ... Wenn es nur ein Programm gäbe, mit dem ich es leicht überprüfen könnte! ;)
Parthian Shot
2
@ParthianShot Es wird ptrace verwendet. Verwenden Sie zum Überprüfen strace strace uname -a. Und leiten Sie die Ausgabe in eine Datei, damit Sie sie bequem lesen können.
2.
@ParthianShot Und sie haben noch nicht einmal erwähnt ltrace. :)
Oakad