Significado da plataforma de hardware no comando uname

3
 man uname
    -m, --machine             print the machine hardware name
    -i, --hardware-platform   print the hardware platform or "unknown"

O que exatamente significa a plataforma de hardware aqui e como ela é diferente do "nome de hardware da máquina"? Eu encontrei algumas questões relacionadas sobre SE, mas parece haver algumas contradições entre as respostas aceitas. Onde posso encontrar informações precisas sobre esta nomenclatura?

    
por Lavya 11.06.2015 / 16:56

2 respostas

2

Um pouco mais de informação em info uname :

'-i'
'--hardware-platform'
     Print the hardware platform name (sometimes called the hardware
     implementation).  Print 'unknown' if the kernel does not make this
     information easily available, as is the case with Linux kernels.

'-m'
'--machine'
     Print the machine hardware name (sometimes called the hardware
     class or hardware type).

Basicamente tipos de classificação - você pode ter diferentes implementações hw (-i), mas com / na mesma classe hw (-m).

Usado, por exemplo, para diferenciar módulos do kernel compartilhados pela mesma classe hw e módulos específicos para uma determinada implementação hw.

    
por 11.06.2015 / 17:23
2

POSIX uname define -m , mas não -i . -m exibe o nome da máquina conforme retornado pela uname(2) chamada do sistema, na machine da entrada da estrutura utsname . Os valores possíveis são dependentes da implementação; nos sistemas Linux é a arquitetura do kernel ( x86_64 , i686 ...).

Para ter uma idéia da variedade de nomes de máquinas usados, confira config.guess : o primeiro elemento de cada conjunto de valores é um nome de máquina e você verá macppc , alpha , Alpha , 21064 ...

O GNU coreutils ' uname define -i como saída do nome da plataforma de hardware, se puder ser determinado. Para entender o que isso significa, é necessário analisar o código-fonte . Se o sistema uname foi criado com suporte a sysinfo(SI_PLATFORM, ...) (que o autoconf macro reivindicações é POSIX, mas eu não fui capaz de verificar isso), então a plataforma de hardware retornada lá é usada. Isso funciona no SunOS e no Solaris, por exemplo, mas não no Linux. Se sysinfo não puder ser usado, a sys/sysctl.h include será verificada para HW_MODEL e HW_MACHINE_ARCH e, se ambos estiverem definidos, o modelo fornecido por sysctl() será usado. Isso funciona em algumas plataformas do tipo BSD.

Em resumo, ambos os valores são dependentes da implementação, por isso é difícil atribuir significado real a eles.

    
por 12.06.2015 / 07:09