O utilitário uname
obtém suas informações da chamada do sistema uname()
. Ele preenche uma estrutura como essa (consulte man 2 uname
):
struct utsname {
char sysname[]; /* Operating system name (e.g., "Linux") */
char nodename[]; /* Name within "some implementation-defined
network" */
char release[]; /* Operating system release (e.g., "2.6.28") */
char version[]; /* Operating system version */
char machine[]; /* Hardware identifier */
#ifdef _GNU_SOURCE
char domainname[]; /* NIS or YP domain name */
#endif
};
Isso vem diretamente do kernel em execução. Eu diria que todas as informações são codificadas, exceto talvez domainname
(e, como se vê, também nodename
, machine
e release
, veja comentários). A string de lançamento, de uname -r
, pode ser definida através da configuração em tempo de compilação, mas duvido muito que o campo sysname possa - é o kernel do Linux e não há razão concebível para usar qualquer outra coisa.
No entanto, como é open source, você pode alterar o código fonte e recompilar o kernel para usar qualquer nome que você quiser.